|
@@ -3,7 +3,7 @@
|
|
|
<step-bar :step-number="2" />
|
|
|
<!--课程基本信息-->
|
|
|
<div class="task-course-info">
|
|
|
- <div class="cover"><img :src="picture_url" alt="封面" /></div>
|
|
|
+ <div class="cover"><el-image fit="fill" :src="picture_url" alt="封面" /></div>
|
|
|
<div class="info">
|
|
|
<div class="name">{{ name }}</div>
|
|
|
<div class="date">{{ begin_date }}<span>-</span>{{ end_date }}</div>
|
|
@@ -48,20 +48,193 @@
|
|
|
<div class="title">课节信息</div>
|
|
|
<div class="item-info-name">
|
|
|
<div>课节名称</div>
|
|
|
- <el-input />
|
|
|
+ <el-input v-model="itemInfoBox.name" readonly />
|
|
|
</div>
|
|
|
<div class="item-info-date">
|
|
|
<div>时间</div>
|
|
|
<el-date-picker
|
|
|
- type="daterange"
|
|
|
+ v-model="itemInfoBox.date"
|
|
|
+ readonly
|
|
|
+ type="datetimerange"
|
|
|
range-separator="~"
|
|
|
- value-format="yyyy-MM-dd"
|
|
|
+ value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
unlink-panels
|
|
|
/>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="item-task">
|
|
|
- <div class="title">课节任务</div>
|
|
|
+ <div class="title">
|
|
|
+ <span class="number-tag">{{ taskLength }}</span>
|
|
|
+ <span>课节任务</span>
|
|
|
+ </div>
|
|
|
+ <div class="item-task-pre task-container">
|
|
|
+ <!--课前任务-->
|
|
|
+ <div class="item-task-pre-title">
|
|
|
+ <span class="number-tag pre">{{ itemInfoBox.pre_task_list.length }}</span>
|
|
|
+ <span>课前任务</span>
|
|
|
+ </div>
|
|
|
+ <div class="item-task-pre-list item-task-list">
|
|
|
+ <el-card v-for="(item, i) in itemInfoBox.pre_task_list" :key="item.id">
|
|
|
+ <el-collapse>
|
|
|
+ <el-collapse-item>
|
|
|
+ <template slot="title">
|
|
|
+ <div class="card-title">
|
|
|
+ <div class="name">{{ i + 1 }}. {{ item.name }}</div>
|
|
|
+ <div class="info">
|
|
|
+ {{ item.time_space_view_txt }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <div class="task-info">
|
|
|
+ <div>
|
|
|
+ <span class="label">要求</span>
|
|
|
+ <div>{{ item.content }}</div>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span class="label">课件</span>
|
|
|
+ <div>
|
|
|
+ <el-tag
|
|
|
+ v-for="li in item.courseware_list"
|
|
|
+ :key="li.courseware_id"
|
|
|
+ color="#fff"
|
|
|
+ >
|
|
|
+ {{ li.courseware_id }}
|
|
|
+ </el-tag>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span class="label">其他文件</span>
|
|
|
+ <div>
|
|
|
+ <el-tag v-for="li in item.accessory_list" :key="li.file_id" color="#fff">
|
|
|
+ <a target="_blank" :href="li.file_url">
|
|
|
+ {{ li.file_name }} {{ li.file_url }}
|
|
|
+ </a>
|
|
|
+ </el-tag>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-collapse-item>
|
|
|
+ </el-collapse>
|
|
|
+ </el-card>
|
|
|
+ <el-button @click="newTask(0)"><i class="el-icon-plus" /> 新建任务</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!--课中任务-->
|
|
|
+ <div class="item-task-mid task-container">
|
|
|
+ <div class="item-task-mid-title">
|
|
|
+ <span class="number-tag mid">{{ itemInfoBox.mid_task_list.length }}</span>
|
|
|
+ <span>课中任务</span>
|
|
|
+ </div>
|
|
|
+ <div class="item-task-mid-list item-task-list">
|
|
|
+ <el-card v-for="(item, i) in itemInfoBox.mid_task_list" :key="item.id">
|
|
|
+ <el-collapse>
|
|
|
+ <el-collapse-item>
|
|
|
+ <template slot="title">
|
|
|
+ <div class="card-title">
|
|
|
+ <div class="name">
|
|
|
+ {{ itemInfoBox.pre_task_list.length + i + 1 }}. {{ item.name }}
|
|
|
+ </div>
|
|
|
+ <div class="info">
|
|
|
+ {{ item.time_space_view_txt }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <div class="task-info">
|
|
|
+ <div>
|
|
|
+ <span class="label">要求</span>
|
|
|
+ <div>{{ item.content }}</div>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span class="label">课件</span>
|
|
|
+ <div>
|
|
|
+ <el-tag
|
|
|
+ v-for="li in item.courseware_list"
|
|
|
+ :key="li.courseware_id"
|
|
|
+ color="#fff"
|
|
|
+ >
|
|
|
+ {{ li.courseware_id }}
|
|
|
+ </el-tag>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span class="label">其他文件</span>
|
|
|
+ <div>
|
|
|
+ <el-tag v-for="li in item.accessory_list" :key="li.file_id" color="#fff">
|
|
|
+ <a target="_blank" :href="li.file_url">
|
|
|
+ {{ li.file_name }} {{ li.file_url }}
|
|
|
+ </a>
|
|
|
+ </el-tag>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-collapse-item>
|
|
|
+ </el-collapse>
|
|
|
+ </el-card>
|
|
|
+ <el-button @click="newTask(1)"><i class="el-icon-plus" /> 新建任务</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <!--课后任务-->
|
|
|
+ <div class="item-task-after task-container">
|
|
|
+ <div class="item-task-after-title">
|
|
|
+ <span class="number-tag after">{{ itemInfoBox.after_task_list.length }}</span>
|
|
|
+ <span>课后任务</span>
|
|
|
+ </div>
|
|
|
+ <div class="item-task-after-list item-task-list">
|
|
|
+ <el-card v-for="(item, i) in itemInfoBox.after_task_list" :key="item.id">
|
|
|
+ <el-collapse>
|
|
|
+ <el-collapse-item>
|
|
|
+ <template slot="title">
|
|
|
+ <div class="card-title">
|
|
|
+ <div class="name">
|
|
|
+ {{
|
|
|
+ itemInfoBox.pre_task_list.length +
|
|
|
+ itemInfoBox.mid_task_list.length +
|
|
|
+ i +
|
|
|
+ 1
|
|
|
+ }}. {{ item.name }}
|
|
|
+ </div>
|
|
|
+ <div class="info">
|
|
|
+ {{ item.time_space_view_txt }}
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <div class="task-info">
|
|
|
+ <div>
|
|
|
+ <span class="label">要求</span>
|
|
|
+ <div>{{ item.content }}</div>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span class="label">课件</span>
|
|
|
+ <div>
|
|
|
+ <el-tag
|
|
|
+ v-for="li in item.courseware_list"
|
|
|
+ :key="li.courseware_id"
|
|
|
+ color="#fff"
|
|
|
+ >
|
|
|
+ {{ li.courseware_id }}
|
|
|
+ </el-tag>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div>
|
|
|
+ <span class="label">其他文件</span>
|
|
|
+ <div>
|
|
|
+ <el-tag v-for="li in item.accessory_list" :key="li.file_id" color="#fff">
|
|
|
+ <a target="_blank" :href="li.file_url">
|
|
|
+ {{ li.file_name }} {{ li.file_url }}
|
|
|
+ </a>
|
|
|
+ </el-tag>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </el-collapse-item>
|
|
|
+ </el-collapse>
|
|
|
+ </el-card>
|
|
|
+ <el-button @click="newTask(2)"><i class="el-icon-plus" /> 新建任务</el-button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
</div>
|
|
|
<div class="learning-materials">
|
|
|
<div class="title">学习资料</div>
|
|
@@ -74,9 +247,10 @@
|
|
|
|
|
|
<!--添加课节弹出页-->
|
|
|
<el-dialog
|
|
|
+ v-loading="loading"
|
|
|
:visible.sync="dialogVisible"
|
|
|
title="课节信息"
|
|
|
- width="490px"
|
|
|
+ width="525px"
|
|
|
top="25vh"
|
|
|
:close-on-click-modal="false"
|
|
|
:show-close="false"
|
|
@@ -94,9 +268,9 @@
|
|
|
<el-form-item label="课节周期" prop="date">
|
|
|
<el-date-picker
|
|
|
v-model="itemForm.date"
|
|
|
- type="daterange"
|
|
|
+ type="datetimerange"
|
|
|
range-separator="~"
|
|
|
- value-format="yyyy-MM-dd"
|
|
|
+ value-format="yyyy-MM-dd HH:mm:ss"
|
|
|
unlink-panels
|
|
|
/>
|
|
|
</el-form-item>
|
|
@@ -142,13 +316,28 @@ export default {
|
|
|
date: { required: true, message: '课节周期不能为空', trigger: 'blur' }
|
|
|
},
|
|
|
itemInfoBox: {
|
|
|
- name: ''
|
|
|
- }
|
|
|
+ name: '',
|
|
|
+ date: [],
|
|
|
+ pre_task_list: [],
|
|
|
+ mid_task_list: [],
|
|
|
+ after_task_list: [],
|
|
|
+ learning_material_list: []
|
|
|
+ },
|
|
|
+ loading: false
|
|
|
};
|
|
|
},
|
|
|
+ computed: {
|
|
|
+ taskLength: function () {
|
|
|
+ return (
|
|
|
+ this.itemInfoBox.pre_task_list.length +
|
|
|
+ this.itemInfoBox.mid_task_list.length +
|
|
|
+ this.itemInfoBox.after_task_list.length
|
|
|
+ );
|
|
|
+ }
|
|
|
+ },
|
|
|
watch: {
|
|
|
curItemID: function () {
|
|
|
- console.log(2);
|
|
|
+ this.getCSItemInfoBox();
|
|
|
}
|
|
|
},
|
|
|
created() {
|
|
@@ -171,19 +360,41 @@ export default {
|
|
|
this.$router.push({ path: `/create_course_step_table/select_book/${this.id}` });
|
|
|
},
|
|
|
addCSItem() {
|
|
|
- let data = {
|
|
|
- course_id: this.id,
|
|
|
- name: this.itemForm.name,
|
|
|
- begin_time: this.itemForm.date[0],
|
|
|
- end_time: this.itemForm.date[1]
|
|
|
- };
|
|
|
- AddCSItemToCourse(data).then(() => {
|
|
|
- this.dialogVisible = false;
|
|
|
- this.getCourseInfo();
|
|
|
+ this.$refs.itemForm.validate(valid => {
|
|
|
+ if (valid) {
|
|
|
+ let data = {
|
|
|
+ course_id: this.id,
|
|
|
+ name: this.itemForm.name,
|
|
|
+ begin_time: this.itemForm.date[0],
|
|
|
+ end_time: this.itemForm.date[1]
|
|
|
+ };
|
|
|
+ this.loading = true;
|
|
|
+ AddCSItemToCourse(data)
|
|
|
+ .then(() => {
|
|
|
+ this.dialogVisible = false;
|
|
|
+ this.loading = false;
|
|
|
+ this.getCourseInfo();
|
|
|
+ // 重置itemForm
|
|
|
+ this.itemForm = { name: '', date: [] };
|
|
|
+ })
|
|
|
+ .catch(() => {
|
|
|
+ this.loading = false;
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
});
|
|
|
},
|
|
|
getCSItemInfoBox() {
|
|
|
- GetCSItemInfoBox({ id: this.curItemID }).then(res => {});
|
|
|
+ GetCSItemInfoBox({ id: this.curItemID }).then(
|
|
|
+ ({ name, begin_time, end_time, pre_task_list, mid_task_list, after_task_list }) => {
|
|
|
+ this.itemInfoBox.name = name;
|
|
|
+ this.itemInfoBox.date = [begin_time, end_time];
|
|
|
+ this.itemInfoBox.pre_task_list = pre_task_list;
|
|
|
+ this.itemInfoBox.mid_task_list = mid_task_list;
|
|
|
+ this.itemInfoBox.after_task_list = after_task_list;
|
|
|
+ }
|
|
|
+ );
|
|
|
},
|
|
|
deleteCSItem(id) {
|
|
|
this.$confirm('您确定要删除该课节吗?', '提示', {
|
|
@@ -196,6 +407,11 @@ export default {
|
|
|
this.getCourseInfo();
|
|
|
});
|
|
|
});
|
|
|
+ },
|
|
|
+ newTask(time_type) {
|
|
|
+ this.$router.push({
|
|
|
+ path: `/create_course_step_table/new_task/${time_type}/${this.id}/${this.curItemID}`
|
|
|
+ });
|
|
|
}
|
|
|
}
|
|
|
};
|
|
@@ -222,7 +438,7 @@ export default {
|
|
|
height: 100%;
|
|
|
border-right: 1px solid #e5e5e5;
|
|
|
|
|
|
- img {
|
|
|
+ .el-image {
|
|
|
width: 100%;
|
|
|
height: 100%;
|
|
|
}
|
|
@@ -269,12 +485,11 @@ export default {
|
|
|
// 下部的课节
|
|
|
&-item {
|
|
|
display: flex;
|
|
|
+ align-items: stretch;
|
|
|
border-radius: 8px;
|
|
|
- height: calc(100vh - #{$header-h} - #{$step-h} - 240px);
|
|
|
|
|
|
&-list {
|
|
|
flex: 3;
|
|
|
- height: 100%;
|
|
|
background-color: #eee;
|
|
|
|
|
|
&-title {
|
|
@@ -302,13 +517,14 @@ export default {
|
|
|
&-container {
|
|
|
flex: 7;
|
|
|
background-color: #fff;
|
|
|
- box-shadow: 0 0 3px 0 rgba(0, 0, 0, 0.15);
|
|
|
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.12), 0 0 6px rgba(0, 0, 0, 0.04);
|
|
|
|
|
|
.learning-materials {
|
|
|
padding: 24px 32px;
|
|
|
|
|
|
.title {
|
|
|
- font-size: 20px;
|
|
|
+ font-size: 18px;
|
|
|
+ font-weight: 700;
|
|
|
margin-bottom: 24px;
|
|
|
}
|
|
|
}
|
|
@@ -335,17 +551,160 @@ export default {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ // 课节任务
|
|
|
.item-task {
|
|
|
@extend .learning-materials;
|
|
|
|
|
|
border-bottom: 1px solid #d9d9d9;
|
|
|
+
|
|
|
+ .title {
|
|
|
+ margin-bottom: 24px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .number-tag {
|
|
|
+ display: inline-block;
|
|
|
+ vertical-align: bottom;
|
|
|
+ line-height: 0;
|
|
|
+ padding: 12px 9px;
|
|
|
+ margin-right: 8px;
|
|
|
+ font-size: 12px;
|
|
|
+ background-color: #000;
|
|
|
+ color: #fff;
|
|
|
+ border-radius: 50%;
|
|
|
+ }
|
|
|
+
|
|
|
+ .task-container {
|
|
|
+ .number-tag {
|
|
|
+ padding: 10px 7px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .item-task-list {
|
|
|
+ .el-card {
|
|
|
+ border-radius: 8px;
|
|
|
+ margin-bottom: 16px;
|
|
|
+
|
|
|
+ .card-title {
|
|
|
+ display: flex;
|
|
|
+ justify-content: space-between;
|
|
|
+ width: calc(100% - 36px);
|
|
|
+
|
|
|
+ .name {
|
|
|
+ font-weight: 600;
|
|
|
+ }
|
|
|
+
|
|
|
+ .info {
|
|
|
+ color: #929292;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-card,
|
|
|
+ .el-collapse-item__wrap {
|
|
|
+ background-color: #f7f7f7;
|
|
|
+
|
|
|
+ .el-collapse-item__content {
|
|
|
+ padding: 15px 24px 9px;
|
|
|
+ background-color: #fff;
|
|
|
+ color: #000;
|
|
|
+
|
|
|
+ .task-info > div {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ padding: 8px 0;
|
|
|
+
|
|
|
+ span.label {
|
|
|
+ width: 80px;
|
|
|
+ margin-right: 16px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-tag {
|
|
|
+ border-color: #dbdbdb;
|
|
|
+ margin-right: 16px;
|
|
|
+ color: #000;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-card.is-always-shadow,
|
|
|
+ .el-card.is-hover-shadow:focus,
|
|
|
+ .el-card.is-hover-shadow:hover {
|
|
|
+ box-shadow: 0 0;
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-card__body {
|
|
|
+ padding: 0;
|
|
|
+ background-color: #f7f7f7;
|
|
|
+
|
|
|
+ .el-collapse-item__header {
|
|
|
+ height: 22px;
|
|
|
+ line-height: 22px;
|
|
|
+ background-color: #f9f9f9;
|
|
|
+ border-bottom-width: 0;
|
|
|
+
|
|
|
+ &.focusing:focus:not(:hover) {
|
|
|
+ color: #000;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .el-collapse-item > div:first-child {
|
|
|
+ background-color: #f9f9f9;
|
|
|
+ border-bottom: 1px solid #e7e7e7;
|
|
|
+ padding: 10px 20px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ // 课前任务
|
|
|
+ &-pre {
|
|
|
+ &-title {
|
|
|
+ .pre {
|
|
|
+ background-color: #4a99ea;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ &-list {
|
|
|
+ margin: 16px 9px;
|
|
|
+ border-left: 2px solid #4a99ea;
|
|
|
+ padding-left: 19px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 课中任务
|
|
|
+ &-mid {
|
|
|
+ &-title {
|
|
|
+ .mid {
|
|
|
+ background-color: $basicColor;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ &-list {
|
|
|
+ margin: 16px 9px;
|
|
|
+ border-left: 2px solid $basicColor;
|
|
|
+ padding-left: 19px;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // 课后任务
|
|
|
+ &-after {
|
|
|
+ &-title {
|
|
|
+ .after {
|
|
|
+ background-color: #2ece5b;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ &-list {
|
|
|
+ margin: 16px 9px;
|
|
|
+ border-left: 2px solid #2ece5b;
|
|
|
+ padding-left: 19px;
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
.el-dialog {
|
|
|
.item-name {
|
|
|
- width: 350px;
|
|
|
+ width: 400px;
|
|
|
}
|
|
|
}
|
|
|
}
|