|
@@ -1,160 +1,179 @@
|
|
|
<template>
|
|
|
- <van-picker
|
|
|
- :columns="columns"
|
|
|
- show-toolbar
|
|
|
- @cancel="$listeners.close()"
|
|
|
- @confirm="onTeachingConfirm"
|
|
|
- />
|
|
|
+ <van-picker
|
|
|
+ :columns="columns"
|
|
|
+ show-toolbar
|
|
|
+ @cancel="$listeners.close()"
|
|
|
+ @confirm="onTeachingConfirm"
|
|
|
+ />
|
|
|
</template>
|
|
|
|
|
|
<script>
|
|
|
let minutes = []; // 分钟数
|
|
|
for (let i = 0; i < 60; i++) {
|
|
|
- let mi = i < 10 ? "0" + i : i;
|
|
|
- minutes.push(mi + "分");
|
|
|
+ let mi = i < 10 ? "0" + i : i;
|
|
|
+ minutes.push(mi + "分");
|
|
|
}
|
|
|
export default {
|
|
|
- props: ['scheduleList', 'singleClassMinutes'],
|
|
|
- data() {
|
|
|
- return {
|
|
|
- // 排课弹窗
|
|
|
- columns: [{
|
|
|
- // 课程选项
|
|
|
- values: ["线上", "线下"],
|
|
|
- className: "type",
|
|
|
- }, {
|
|
|
- values: ["周一", "周二", "周三", "周四", "周五", "周六", "周日"],
|
|
|
- className: "week",
|
|
|
- }, {
|
|
|
- values: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23],
|
|
|
- className: "hours",
|
|
|
- defaultIndex: 7,
|
|
|
- }, {
|
|
|
- values: minutes,
|
|
|
- className: "minutes",
|
|
|
- }],
|
|
|
- }
|
|
|
+ props: ["scheduleList", "singleClassMinutes"],
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ // 排课弹窗
|
|
|
+ columns: [
|
|
|
+ {
|
|
|
+ // 课程选项
|
|
|
+ values: ["线上", "线下"],
|
|
|
+ className: "type",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ values: ["周一", "周二", "周三", "周四", "周五", "周六", "周日"],
|
|
|
+ className: "week",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ values: [
|
|
|
+ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
|
|
|
+ 20, 21, 22, 23,
|
|
|
+ ],
|
|
|
+ className: "hours",
|
|
|
+ defaultIndex: 7,
|
|
|
+ },
|
|
|
+ {
|
|
|
+ values: minutes,
|
|
|
+ className: "minutes",
|
|
|
+ },
|
|
|
+ ],
|
|
|
+ };
|
|
|
+ },
|
|
|
+ watch: {
|
|
|
+ singleClassMinutes() {
|
|
|
+ this.scheduleList = [];
|
|
|
},
|
|
|
- watch: {
|
|
|
- 'singleClassMinutes'() {
|
|
|
- this.scheduleList = []
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ onTeachingConfirm(value) {
|
|
|
+ // 添加课程
|
|
|
+ let scheduleList = this.scheduleList;
|
|
|
+ let startTime =
|
|
|
+ (value[2] >= 10 ? value[2] : "0" + value[2]) +
|
|
|
+ ":" +
|
|
|
+ value[3].split("分")[0];
|
|
|
+ let endTime = this.MinutesTest(
|
|
|
+ value[2],
|
|
|
+ value[3],
|
|
|
+ this.singleClassMinutes
|
|
|
+ );
|
|
|
+
|
|
|
+ let isAdd = true;
|
|
|
+ scheduleList.forEach((item) => {
|
|
|
+ let isStartTime = this.timeIsRange(startTime, endTime, item.startTime);
|
|
|
+ let isEndTime = this.timeIsRange(startTime, endTime, item.endTime);
|
|
|
+ if (isAdd) {
|
|
|
+ if (value[1] == item.weekStr) {
|
|
|
+ if (isStartTime || isEndTime) {
|
|
|
+ isAdd = false;
|
|
|
+ } else {
|
|
|
+ isAdd = true;
|
|
|
+ }
|
|
|
+ } else if (value[1] != item.weekStr) {
|
|
|
+ isAdd = true;
|
|
|
+ }
|
|
|
}
|
|
|
- },
|
|
|
- methods: {
|
|
|
- onTeachingConfirm(value) {
|
|
|
- // 添加课程
|
|
|
- let scheduleList = this.scheduleList;
|
|
|
- let startTime =
|
|
|
- (value[2] >= 10 ? value[2] : "0" + value[2]) +
|
|
|
- ":" +
|
|
|
- value[3].split("分")[0];
|
|
|
- let endTime = this.MinutesTest(
|
|
|
- value[2],
|
|
|
- value[3],
|
|
|
- this.singleClassMinutes
|
|
|
- );
|
|
|
+ });
|
|
|
|
|
|
- let isAdd = true;
|
|
|
- scheduleList.forEach((item) => {
|
|
|
- let isStartTime = this.timeIsRange(startTime, endTime, item.startTime);
|
|
|
- let isEndTime = this.timeIsRange(startTime, endTime, item.endTime);
|
|
|
- if (isAdd) {
|
|
|
- if (value[1] == item.weekStr) {
|
|
|
- if (isStartTime || isEndTime) {
|
|
|
- isAdd = false;
|
|
|
- } else {
|
|
|
- isAdd = true;
|
|
|
- }
|
|
|
- } else if (value[1] != item.weekStr) {
|
|
|
- isAdd = true;
|
|
|
- }
|
|
|
- }
|
|
|
- });
|
|
|
+ // 判断结束时间
|
|
|
+ const endTime1 = endTime ? Number(endTime.split(":")[0]) : 0;
|
|
|
+ const endTime2 = endTime ? Number(endTime.split(":")[1]) : 0;
|
|
|
+ if (endTime1 >= 21 && endTime2 > 0) {
|
|
|
+ this.$toast("课程安排结束时间不可超过21:00");
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
- // 判断结束时间
|
|
|
- const endTime1 = endTime ? Number(endTime.split(":")[0]) : 0
|
|
|
- const endTime2 = endTime ? Number(endTime.split(":")[1]) : 0
|
|
|
- if(endTime1 >= 21 && endTime2 > 0) {
|
|
|
- this.$toast("课程安排结束时间不可超过21:00");
|
|
|
- return;
|
|
|
- }
|
|
|
+ const starTime1 = startTime
|
|
|
+ ? Number(startTime.split(":")[0])
|
|
|
+ : 0;
|
|
|
+ const starTime2 = startTime
|
|
|
+ ? Number(startTime.split(":")[1])
|
|
|
+ : 0;
|
|
|
+ if (starTime1 < 6 || (starTime1 == 6 && starTime2 <= 30)) {
|
|
|
+ this.$toast("课程安排开始时间不可早于06:30");
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
- if (isAdd) {
|
|
|
- // 判断时间范围是否有重复
|
|
|
- scheduleList.push({
|
|
|
- type: value[0], // 线上还是线下
|
|
|
- weekStr: value[1],
|
|
|
- weekIndex: this.getWeek(value[1]),
|
|
|
- startTime: startTime,
|
|
|
- endTime: endTime,
|
|
|
- id: Date.now(),
|
|
|
- });
|
|
|
+ if (isAdd) {
|
|
|
+ // 判断时间范围是否有重复
|
|
|
+ scheduleList.push({
|
|
|
+ type: value[0], // 线上还是线下
|
|
|
+ weekStr: value[1],
|
|
|
+ weekIndex: this.getWeek(value[1]),
|
|
|
+ startTime: startTime,
|
|
|
+ endTime: endTime,
|
|
|
+ id: Date.now(),
|
|
|
+ });
|
|
|
|
|
|
- // this.courseForm.teachingStatus = false;
|
|
|
- this.$listeners.close()
|
|
|
+ // this.courseForm.teachingStatus = false;
|
|
|
+ this.$listeners.close();
|
|
|
|
|
|
- // this.setTimeTable();
|
|
|
- } else {
|
|
|
- this.$toast("该时间段已排课请重选时间");
|
|
|
- return;
|
|
|
- }
|
|
|
- },
|
|
|
- // 分钟小时相加减
|
|
|
- MinutesTest(hour, mins, interval) {
|
|
|
- let min = mins.split("分")[0];
|
|
|
- let sDate1 = new Date(1900, 1, 1, hour, min);
|
|
|
- sDate1.setMinutes(sDate1.getMinutes() + parseInt(interval));
|
|
|
- let H = sDate1.getHours();
|
|
|
- let M = sDate1.getMinutes();
|
|
|
- if (H < 10) H = "0" + H;
|
|
|
- if (M < 10) M = "0" + M;
|
|
|
- return H + ":" + M;
|
|
|
- },
|
|
|
- // 判断时间是否在时间段内
|
|
|
- timeIsRange(beginTime, endTime, nowTime) {
|
|
|
- var strB = beginTime.split(":");
|
|
|
- if (strB.length != 2) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- var strE = endTime.split(":");
|
|
|
- if (strE.length != 2) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- var strN = nowTime.split(":");
|
|
|
- if (strE.length != 2) {
|
|
|
- return false;
|
|
|
- }
|
|
|
- var b = new Date();
|
|
|
- var e = new Date();
|
|
|
- var n = new Date();
|
|
|
- b.setHours(strB[0]);
|
|
|
- b.setMinutes(strB[1]);
|
|
|
- e.setHours(strE[0]);
|
|
|
- e.setMinutes(strE[1]);
|
|
|
- n.setHours(strN[0]);
|
|
|
- n.setMinutes(strN[1]);
|
|
|
+ // this.setTimeTable();
|
|
|
+ } else {
|
|
|
+ this.$toast("该时间段已排课请重选时间");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 分钟小时相加减
|
|
|
+ MinutesTest(hour, mins, interval) {
|
|
|
+ let min = mins.split("分")[0];
|
|
|
+ let sDate1 = new Date(1900, 1, 1, hour, min);
|
|
|
+ sDate1.setMinutes(sDate1.getMinutes() + parseInt(interval));
|
|
|
+ let H = sDate1.getHours();
|
|
|
+ let M = sDate1.getMinutes();
|
|
|
+ if (H < 10) H = "0" + H;
|
|
|
+ if (M < 10) M = "0" + M;
|
|
|
+ return H + ":" + M;
|
|
|
+ },
|
|
|
+ // 判断时间是否在时间段内
|
|
|
+ timeIsRange(beginTime, endTime, nowTime) {
|
|
|
+ var strB = beginTime.split(":");
|
|
|
+ if (strB.length != 2) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ var strE = endTime.split(":");
|
|
|
+ if (strE.length != 2) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ var strN = nowTime.split(":");
|
|
|
+ if (strE.length != 2) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ var b = new Date();
|
|
|
+ var e = new Date();
|
|
|
+ var n = new Date();
|
|
|
+ b.setHours(strB[0]);
|
|
|
+ b.setMinutes(strB[1]);
|
|
|
+ e.setHours(strE[0]);
|
|
|
+ e.setMinutes(strE[1]);
|
|
|
+ n.setHours(strN[0]);
|
|
|
+ n.setMinutes(strN[1]);
|
|
|
|
|
|
- if (n.getTime() - b.getTime() >= 0 && n.getTime() - e.getTime() <= 0) {
|
|
|
- // 在时间范围内
|
|
|
- return true;
|
|
|
- } else {
|
|
|
- // 不在时间范围内
|
|
|
- return false;
|
|
|
- }
|
|
|
- },
|
|
|
- getWeek(str) {
|
|
|
- // 获取周几索引值
|
|
|
- let template = {
|
|
|
- '周一': 1,
|
|
|
- '周二': 2,
|
|
|
- '周三': 3,
|
|
|
- '周四': 4,
|
|
|
- '周五': 5,
|
|
|
- '周六': 6,
|
|
|
- '周日': 0,
|
|
|
- };
|
|
|
- return template[str];
|
|
|
- },
|
|
|
- }
|
|
|
-}
|
|
|
+ if (n.getTime() - b.getTime() >= 0 && n.getTime() - e.getTime() <= 0) {
|
|
|
+ // 在时间范围内
|
|
|
+ return true;
|
|
|
+ } else {
|
|
|
+ // 不在时间范围内
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getWeek(str) {
|
|
|
+ // 获取周几索引值
|
|
|
+ let template = {
|
|
|
+ 周一: 1,
|
|
|
+ 周二: 2,
|
|
|
+ 周三: 3,
|
|
|
+ 周四: 4,
|
|
|
+ 周五: 5,
|
|
|
+ 周六: 6,
|
|
|
+ 周日: 0,
|
|
|
+ };
|
|
|
+ return template[str];
|
|
|
+ },
|
|
|
+ },
|
|
|
+};
|
|
|
</script>
|