|
@@ -1,18 +1,16 @@
|
|
|
<template>
|
|
|
<div id="term-lesson">
|
|
|
<detail-frame :title="pageTitle" returns="/train/plan/lesson">
|
|
|
- <el-row type="flex">
|
|
|
- <el-col :span="8" v-if="t1.length > 0">
|
|
|
- <lesson-table :data="t1" batch="1"></lesson-table>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <lesson-table :data="t2" batch="2"></lesson-table>
|
|
|
- </el-col>
|
|
|
- <el-col :span="8">
|
|
|
- <lesson-table :data="t3" batch="3"></lesson-table>
|
|
|
+ <el-row type="flex" v-loading="loading" style="min-height:500px">
|
|
|
+ <el-col :span="8" v-for="(i, index) in list" :key="index">
|
|
|
+ <lesson-table :data="i" :batch="`${index + 1}`" @lesson="toLesson" @other="toOther"></lesson-table>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
</detail-frame>
|
|
|
+ <el-drawer title="课程安排" :visible.sync="lDrawer">
|
|
|
+ <lesson-form :data="form"></lesson-form>
|
|
|
+ </el-drawer>
|
|
|
+ <el-drawer title="其他安排" :visible.sync="oDrawer"></el-drawer>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -22,6 +20,7 @@ import axios from 'axios';
|
|
|
const moment = require('moment');
|
|
|
moment.locale('zh-cn');
|
|
|
import lessonTable from './parts/term-lesson-table';
|
|
|
+import lessonForm from './parts/term-lesson-form';
|
|
|
import detailFrame from '@frame/layout/admin/detail-frame';
|
|
|
import { mapState, createNamespacedHelpers } from 'vuex';
|
|
|
const { mapActions: lesson } = createNamespacedHelpers('lesson');
|
|
@@ -37,15 +36,17 @@ const { mapActions: director } = createNamespacedHelpers('director');
|
|
|
export default {
|
|
|
name: 'term-lesson',
|
|
|
props: {},
|
|
|
- components: { detailFrame, lessonTable },
|
|
|
+ components: { detailFrame, lessonTable, lessonForm },
|
|
|
data: function() {
|
|
|
return {
|
|
|
+ loading: true,
|
|
|
+ lDrawer: false,
|
|
|
+ oDrawer: false,
|
|
|
+ form: {},
|
|
|
options: {},
|
|
|
list: [],
|
|
|
- t1: [],
|
|
|
- t2: [],
|
|
|
- t3: [],
|
|
|
classList: [],
|
|
|
+ lessonList: [],
|
|
|
|
|
|
locationList: [],
|
|
|
lyTeacherList: [],
|
|
@@ -67,12 +68,16 @@ export default {
|
|
|
...mapDept({ getDept: 'query' }),
|
|
|
...teaplan(['findTeacher']),
|
|
|
async search() {
|
|
|
+ this.loading = true;
|
|
|
let termid = _.get(this.defaultOption, `termid`);
|
|
|
if (!termid) return;
|
|
|
let lessonList = [];
|
|
|
let classList = [];
|
|
|
let lessons = await this.getLesson({ termid });
|
|
|
- if (this.$checkRes(lessons)) lessonList = lessons.data;
|
|
|
+ if (this.$checkRes(lessons)) {
|
|
|
+ lessonList = lessons.data;
|
|
|
+ this.$set(this, `lessonList`, lessonList);
|
|
|
+ }
|
|
|
let classes = await this.getClass({ termid });
|
|
|
if (this.$checkRes(classes)) {
|
|
|
classList = classes.data;
|
|
@@ -97,31 +102,28 @@ export default {
|
|
|
)
|
|
|
)
|
|
|
).filter(f => _.isArray(f));
|
|
|
- arr.map((i, index) => {
|
|
|
+ arr = arr.map((i, index) => {
|
|
|
// 先转换lessons,此表的情况是:小批次下的班级都是一样的课程,只有教师,教室不一样
|
|
|
let a = this.changeLesson(i);
|
|
|
- let ht = this.setTeacher(a, 'headteacher');
|
|
|
- let lyt = this.setTeacher(a, 'lyteacher');
|
|
|
- let js = this.setTeacher(a, 'jslocation');
|
|
|
+ let last = this.setAllday(_.last(a));
|
|
|
+ let ht = this.setProp(a, 'headteacher');
|
|
|
+ let lyt = this.setProp(a, 'lyteacher');
|
|
|
+ let js = this.setProp(a, 'jslocation');
|
|
|
for (let ind = 0; ind < index; ind++) {
|
|
|
a.unshift({});
|
|
|
- // console.log(`ind`);
|
|
|
- // console.log(ind);
|
|
|
- // console.log(`index`);
|
|
|
- // console.log(index);
|
|
|
- // const element = array[index];
|
|
|
}
|
|
|
//找到该班额班主任和礼仪课教师
|
|
|
a.push(ht);
|
|
|
a.push(lyt);
|
|
|
a.push(js);
|
|
|
- for (let ind = 2; ind >= index; ind--) {
|
|
|
+ for (let ind = 2; ind > index; ind--) {
|
|
|
a.push({});
|
|
|
}
|
|
|
- this.$set(this, `t${index + 1}`, a);
|
|
|
+ a.push(last);
|
|
|
+ return a;
|
|
|
});
|
|
|
- // this.$set(this, `list`, arr);
|
|
|
- // this.getX();
|
|
|
+ this.$set(this, `list`, arr);
|
|
|
+ this.loading = false;
|
|
|
},
|
|
|
//课程数据=>页面数据形式
|
|
|
changeLesson(array) {
|
|
@@ -151,8 +153,8 @@ export default {
|
|
|
if (r) {
|
|
|
let { subname, subid, teaid, teaname, _id: lessonid, date } = r;
|
|
|
obj = { subname, subid };
|
|
|
- obj[`teaid_${index + 1}`] = teaid;
|
|
|
- obj[`teaname_${index + 1}`] = teaname;
|
|
|
+ obj[`id_${index + 1}`] = teaid;
|
|
|
+ obj[`name_${index + 1}`] = teaname;
|
|
|
obj[`lessonid_${index + 1}`] = lessonid;
|
|
|
obj[`date`] = date;
|
|
|
} else {
|
|
@@ -163,11 +165,10 @@ export default {
|
|
|
}
|
|
|
obj.batch = i.batch;
|
|
|
obj[`classid_${index + 1}`] = i._id;
|
|
|
+ obj['type'] = 'lesson';
|
|
|
return obj;
|
|
|
});
|
|
|
return t;
|
|
|
- // console.log(t);
|
|
|
- //按照例子处理数据
|
|
|
});
|
|
|
let l = _.get(_.head(res), 'length');
|
|
|
let arr = [];
|
|
@@ -181,7 +182,7 @@ export default {
|
|
|
return arr;
|
|
|
},
|
|
|
//班主任/礼仪课老师=>页面数据形式
|
|
|
- setTeacher(data, type) {
|
|
|
+ setProp(data, type) {
|
|
|
let head = _.head(data);
|
|
|
let res = { type };
|
|
|
res.date = type == 'headteacher' ? '班主任' : type == 'lyteacher' ? '礼仪课教师' : '教室';
|
|
@@ -191,13 +192,49 @@ export default {
|
|
|
let i = key.match(/\d+(.\d+)?/g)[0];
|
|
|
let r = this.classList.find(f => f._id == cla_id);
|
|
|
if (r) {
|
|
|
- res[`teaid_${i}`] = _.get(r, `${type}id`);
|
|
|
- res[`teaname_${i}`] = _.get(r, `${type}name`);
|
|
|
+ res[`id_${i}`] = _.get(r, `${type}id`);
|
|
|
+ res[`name_${i}`] = _.get(r, `${type}name`);
|
|
|
res[key] = cla_id;
|
|
|
}
|
|
|
}
|
|
|
return res;
|
|
|
},
|
|
|
+ setAllday(data) {
|
|
|
+ let ckeys = Object.keys(data).filter(f => f.includes('classid'));
|
|
|
+ let lkeys = Object.keys(data).filter(f => f.includes('lessonid'));
|
|
|
+ let arr = [];
|
|
|
+ for (let i = 0; i < ckeys.length; i++) {
|
|
|
+ if (data[`${ckeys[i]}`] && data[`${lkeys[i]}`]) {
|
|
|
+ let cla = this.classList.find(f => f._id == data[ckeys[i]]);
|
|
|
+ if (cla) {
|
|
|
+ let { lessons } = cla;
|
|
|
+ let r = lessons.find(f => f._id == data[lkeys[i]]);
|
|
|
+ if (r) {
|
|
|
+ let o = {};
|
|
|
+ o[ckeys[i]] = data[ckeys[i]];
|
|
|
+ o[`day`] = _.get(r, 'day');
|
|
|
+ arr.push(o);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ let obj = { type: 'allday' };
|
|
|
+ let r = arr.every(f => f.day == '0');
|
|
|
+ if (r) obj.date = '全天';
|
|
|
+ else {
|
|
|
+ r = arr.every(f => f.day == '1');
|
|
|
+ if (r) obj.date = '半天';
|
|
|
+ else {
|
|
|
+ let str = '';
|
|
|
+ arr.map((i, index) => {
|
|
|
+ str += i.day == '0' ? '全天' : '半天';
|
|
|
+ if (index != arr.length - 1) str += '/';
|
|
|
+ });
|
|
|
+ obj.date = str;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return obj;
|
|
|
+ },
|
|
|
async getSettingLists() {
|
|
|
let res;
|
|
|
let arr = [];
|
|
@@ -264,25 +301,16 @@ export default {
|
|
|
// arr.push(this.modelFetch({ model: 'director', id: _.get(obj, 'jslocationid') }));
|
|
|
// }
|
|
|
},
|
|
|
- //x轴:日期,查询出所有班级的日期为X轴
|
|
|
- getX() {
|
|
|
- let duplicate = _.cloneDeep(this.list);
|
|
|
- let arr = _.flatten(_.toPairs(_.groupBy(duplicate, `batch`))).filter(f => _.isArray(f));
|
|
|
- let { startdate: start } = _.head(_.head(arr));
|
|
|
- let { enddate: end } = _.last(_.last(arr));
|
|
|
- let day = moment(start)
|
|
|
- .from(moment(end))
|
|
|
- .match(/\d+(.\d+)?/g)[0];
|
|
|
- let res = [start];
|
|
|
- for (let i = 1; i < day; i++) {
|
|
|
- res.push(
|
|
|
- moment(start)
|
|
|
- .add(i, 'd')
|
|
|
- .format('YYYY-MM-DD')
|
|
|
- );
|
|
|
- }
|
|
|
- res.push(end);
|
|
|
- this.$set(this, `x`, res);
|
|
|
+ toLesson(data) {
|
|
|
+ console.log(`in lesson`);
|
|
|
+ this.$set(this, `form`, data);
|
|
|
+ this.lDrawer = true;
|
|
|
+ },
|
|
|
+ toOther(data) {
|
|
|
+ console.log(`in other`);
|
|
|
+ console.log(data);
|
|
|
+ this.$set(this, `form`, data);
|
|
|
+ this.oDrawer = true;
|
|
|
},
|
|
|
},
|
|
|
watch: {
|