|
@@ -20,6 +20,7 @@
|
|
|
:style="setVS(date, month, bi, ci)"
|
|
|
:rowspan="toRowspan(date, month, bi, ci)"
|
|
|
:colspan="toColspan(date, month, bi, ci)"
|
|
|
+ :id="`${bi}-${ci}`"
|
|
|
>
|
|
|
{{ getContent(date, month, bi, ci) || '' }}
|
|
|
</td>
|
|
@@ -157,15 +158,8 @@ export default {
|
|
|
} else {
|
|
|
res = this.checkEvents(date, month, bi, true);
|
|
|
if (res) {
|
|
|
- let r = this.getEventsRowCol(date, month, res);
|
|
|
- console.log(r);
|
|
|
- // let { start, end } = res;
|
|
|
- // date = this.pointToCross(date);
|
|
|
- // let omr = this.outMonth(start, end);
|
|
|
- // if (omr) rs = this.outLotsMonth(date, start, end, omr);
|
|
|
- // //没跨越
|
|
|
- // else rs = this.notOutMonthPro(date, start, end);
|
|
|
- // console.log(rs);
|
|
|
+ let { row } = this.getEventsRowCol(date, month, res);
|
|
|
+ rs = row;
|
|
|
}
|
|
|
}
|
|
|
return rs;
|
|
@@ -175,9 +169,15 @@ export default {
|
|
|
if (date == '') return result;
|
|
|
date = this.pointToCross(date);
|
|
|
let ir = this.intersection(date);
|
|
|
- //不在假期中的直接返回1就行,不处理
|
|
|
- if (!ir) return result;
|
|
|
- if (ir.length < 2) {
|
|
|
+ //不在假期中的 查看是否在事件中
|
|
|
+ if (!ir) {
|
|
|
+ let res = this.checkEvents(date, month, bi, true);
|
|
|
+ console.log(res);
|
|
|
+ if (res) {
|
|
|
+ let { col } = this.getEventsRowCol(date, month, res, bi);
|
|
|
+ result = col;
|
|
|
+ }
|
|
|
+ } else if (ir.length < 2) {
|
|
|
//仅有1个假期,假期没有重合
|
|
|
let r = this.pure(date, ir);
|
|
|
result = r;
|
|
@@ -238,6 +238,7 @@ export default {
|
|
|
},
|
|
|
// '.' 日期转换 '-' 日期
|
|
|
pointToCross(date) {
|
|
|
+ if (date.includes('-')) return date;
|
|
|
let d = date.split('.');
|
|
|
return moment(`${this.year}-${d[0]}-${d[1]}`).format(format);
|
|
|
},
|
|
@@ -398,9 +399,8 @@ export default {
|
|
|
if (!this.events) return res;
|
|
|
date = this.pointToCross(date);
|
|
|
let dml = _.get(this.list, month, []);
|
|
|
- // let r = dml.find(f => f.find(ff => moment(date).isBetween(ff.start, ff.end, null, '[]')));
|
|
|
- let bInfo = dml[bi];
|
|
|
- let r = bInfo.find(ff => moment(date).isBetween(ff.start, ff.end, null, '[]'));
|
|
|
+ let bInfo = dml[bi]; //在不同期,同批次的数据 中 取出指定批次
|
|
|
+ let r = bInfo.find(ff => moment(date).isBetween(ff.start, ff.end, null, '[]')); //找到改时间点属于哪个期的数据
|
|
|
if (r) {
|
|
|
res = r;
|
|
|
}
|
|
@@ -409,10 +409,22 @@ export default {
|
|
|
//行列获取数据
|
|
|
getEventsRowCol(date, month, data) {
|
|
|
let { start, end, term, batch } = data;
|
|
|
+ let dml = _.get(this.list, month, []);
|
|
|
+ date = this.pointToCross(date);
|
|
|
//TODO 需要确定这个格子合不合并
|
|
|
//需要确定:1该天是这个批次的开始日期;2该格子是这个批次的第一行第一列
|
|
|
- date = this.pointToCross(date);
|
|
|
- let dml = _.get(this.list, month, []);
|
|
|
+ // 1: 将所有数据整理成一个列表
|
|
|
+ // 2: 将1的结果转换成按期分组;根据data可以知道 term,batch;使用term将期列表对应项取出来
|
|
|
+ // 3: 之后按batch 分组=>得到 期下批次列表=>批次列表按batch,name升序排序
|
|
|
+ // 4: 用data和期列表的第一项比较,如果不一致,说明不需要合并
|
|
|
+ let batchList = _.orderBy(
|
|
|
+ _.groupBy(dml.flat(), 'batch')[batch].filter(f => f.term == term),
|
|
|
+ ['batch', 'name'],
|
|
|
+ ['asc', 'asc']
|
|
|
+ );
|
|
|
+ if (!_.isEqual(data, _.head(batchList))) {
|
|
|
+ return { row: 0, col: 0 };
|
|
|
+ }
|
|
|
//行合并数 = 所有数据按 期+批次分组 找到对应数量的班级
|
|
|
let row = 1;
|
|
|
//列合并数 = 该时间的班级的 开始时间 - 结束时间
|
|
@@ -428,16 +440,22 @@ export default {
|
|
|
return { row, col };
|
|
|
},
|
|
|
getContent(date, month, bi, ci) {
|
|
|
- let res = this.vacation.filter(f => {
|
|
|
- let start = f.start;
|
|
|
- let end = _.get(f, `end`, moment(start).format(format));
|
|
|
- return moment(moment(`${this.year}-${date}`).format(format)).isBetween(start, end, null, '[]');
|
|
|
- });
|
|
|
- if (res.length > 0 && date != '') {
|
|
|
- let r = res.map(i => i.title);
|
|
|
- return r.join('/');
|
|
|
+ let r = this.checkVacation(date);
|
|
|
+ if (r) {
|
|
|
+ let res = this.vacation.filter(f => {
|
|
|
+ let start = f.start;
|
|
|
+ let end = _.get(f, `end`, moment(start).format(format));
|
|
|
+ return moment(moment(`${this.year}-${date}`).format(format)).isBetween(start, end, null, '[]');
|
|
|
+ });
|
|
|
+ if (res.length > 0 && date != '') {
|
|
|
+ let r = res.map(i => i.title);
|
|
|
+ return r.join('/');
|
|
|
+ }
|
|
|
+ return '';
|
|
|
+ } else {
|
|
|
+ r = this.checkEvents(date, month, bi);
|
|
|
+ if (r) return `第${r.term}期-第${r.batch}批`;
|
|
|
}
|
|
|
- return '';
|
|
|
},
|
|
|
//以下是html获取参数方法
|
|
|
getRowNumber(month) {
|
|
@@ -446,7 +464,7 @@ export default {
|
|
|
},
|
|
|
|
|
|
toDisplay(month) {
|
|
|
- return _.inRange(month, 7, 9);
|
|
|
+ return _.inRange(month, 6, 9);
|
|
|
},
|
|
|
},
|
|
|
filters: {
|