|
@@ -2,24 +2,30 @@
|
|
<div class='course-container'>
|
|
<div class='course-container'>
|
|
<div class="left">
|
|
<div class="left">
|
|
<el-form :model="leftFrom"
|
|
<el-form :model="leftFrom"
|
|
|
|
+ ref='leftFrom'
|
|
|
|
+ :rules="leftRules"
|
|
:inline="true">
|
|
:inline="true">
|
|
- <el-form-item label="合奏班">
|
|
|
|
- <el-select v-model="leftFrom.all">
|
|
|
|
|
|
+ <el-form-item label="合奏班"
|
|
|
|
+ prop='all'>
|
|
|
|
+ <el-select v-model="leftFrom.all"
|
|
|
|
+ @change="changeMixClass">
|
|
<el-option v-for="(item,index) in maxClassList"
|
|
<el-option v-for="(item,index) in maxClassList"
|
|
:key='index'
|
|
:key='index'
|
|
:value="item.id"
|
|
:value="item.id"
|
|
:label="item.name"></el-option>
|
|
:label="item.name"></el-option>
|
|
</el-select>
|
|
</el-select>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="排课起始时间">
|
|
|
|
|
|
+ <el-form-item label="排课起始时间"
|
|
|
|
+ prop="time">
|
|
|
|
+ <!-- value-format="yyyy-MM-dd" -->
|
|
<el-date-picker v-model="leftFrom.time"
|
|
<el-date-picker v-model="leftFrom.time"
|
|
align="right"
|
|
align="right"
|
|
type="date"
|
|
type="date"
|
|
- value-format="yyyy-MM-dd"
|
|
|
|
placeholder="选择日期">
|
|
placeholder="选择日期">
|
|
</el-date-picker>
|
|
</el-date-picker>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
- <el-form-item label="排课次数">
|
|
|
|
|
|
+ <el-form-item label="排课次数"
|
|
|
|
+ prop="num">
|
|
<el-input type="number"
|
|
<el-input type="number"
|
|
v-model="leftFrom.num"></el-input>
|
|
v-model="leftFrom.num"></el-input>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
@@ -27,10 +33,13 @@
|
|
<p>周次循环<span style="margin-left:10px;">上课时间</span></p>
|
|
<p>周次循环<span style="margin-left:10px;">上课时间</span></p>
|
|
<div class="checkWrap">
|
|
<div class="checkWrap">
|
|
<el-checkbox-group v-model="checkList">
|
|
<el-checkbox-group v-model="checkList">
|
|
- <div class="chioseday">
|
|
|
|
- <el-checkbox label="周一"></el-checkbox>
|
|
|
|
|
|
+ <div class="chioseday"
|
|
|
|
+ v-for="(item,index) in week"
|
|
|
|
+ :key="index">
|
|
|
|
+ <el-checkbox :label="index"
|
|
|
|
+ v-model="item.isCheck">{{item.name}}</el-checkbox>
|
|
<el-time-select placeholder="起始"
|
|
<el-time-select placeholder="起始"
|
|
- v-model="week.Monday.startTime"
|
|
|
|
|
|
+ v-model="item.startTime"
|
|
:picker-options="{
|
|
:picker-options="{
|
|
start: '06:30',
|
|
start: '06:30',
|
|
step: '00:05',
|
|
step: '00:05',
|
|
@@ -39,140 +48,15 @@
|
|
</el-time-select>
|
|
</el-time-select>
|
|
|
|
|
|
<el-time-select placeholder="结束"
|
|
<el-time-select placeholder="结束"
|
|
- v-model="week.Monday.endTime"
|
|
|
|
|
|
+ v-model="item.endTime"
|
|
:picker-options="{
|
|
:picker-options="{
|
|
start: '08:30',
|
|
start: '08:30',
|
|
step: '00:15',
|
|
step: '00:15',
|
|
end: '23:30',
|
|
end: '23:30',
|
|
- minTime: week.Monday.startTime
|
|
|
|
|
|
+ minTime: item.startTime
|
|
}">
|
|
}">
|
|
</el-time-select>
|
|
</el-time-select>
|
|
</div>
|
|
</div>
|
|
- <div class="chioseday">
|
|
|
|
- <el-checkbox label="周二"></el-checkbox>
|
|
|
|
- <el-time-select placeholder="起始"
|
|
|
|
- v-model="week.Tuesday.startTime"
|
|
|
|
- :picker-options="{
|
|
|
|
- start: '06:30',
|
|
|
|
- step: '00:05',
|
|
|
|
- end: '18:30'
|
|
|
|
- }">
|
|
|
|
- </el-time-select>
|
|
|
|
- <el-time-select placeholder="结束"
|
|
|
|
- v-model="week.Tuesday.endTime"
|
|
|
|
- :picker-options="{
|
|
|
|
- start: '08:30',
|
|
|
|
- step: '00:15',
|
|
|
|
- end: '23:30',
|
|
|
|
- minTime: week.Tuesday.startTime
|
|
|
|
- }">
|
|
|
|
- </el-time-select>
|
|
|
|
- </div>
|
|
|
|
- <div class="chioseday">
|
|
|
|
- <el-checkbox label="周三"></el-checkbox>
|
|
|
|
- <el-time-select placeholder="起始"
|
|
|
|
- v-model="week.Wednesday.startTime"
|
|
|
|
- :picker-options="{
|
|
|
|
- start: '06:30',
|
|
|
|
- step: '00:05',
|
|
|
|
- end: '18:30'
|
|
|
|
- }">
|
|
|
|
- </el-time-select>
|
|
|
|
-
|
|
|
|
- <el-time-select placeholder="结束"
|
|
|
|
- v-model="week.Wednesday.endTime"
|
|
|
|
- :picker-options="{
|
|
|
|
- start: '08:30',
|
|
|
|
- step: '00:15',
|
|
|
|
- end: '23:30',
|
|
|
|
- minTime: week.Monday.startTime
|
|
|
|
- }">
|
|
|
|
- </el-time-select>
|
|
|
|
- </div>
|
|
|
|
- <div class="chioseday">
|
|
|
|
- <el-checkbox label="周四"></el-checkbox>
|
|
|
|
- <el-time-select placeholder="起始"
|
|
|
|
- v-model="week.Thursday.startTime"
|
|
|
|
- :picker-options="{
|
|
|
|
- start: '06:30',
|
|
|
|
- step: '00:05',
|
|
|
|
- end: '18:30'
|
|
|
|
- }">
|
|
|
|
- </el-time-select>
|
|
|
|
-
|
|
|
|
- <el-time-select placeholder="结束"
|
|
|
|
- v-model="week.Thursday.endTime"
|
|
|
|
- :picker-options="{
|
|
|
|
- start: '08:30',
|
|
|
|
- step: '00:15',
|
|
|
|
- end: '23:30',
|
|
|
|
- minTime: week.Thursday.startTime
|
|
|
|
- }">
|
|
|
|
- </el-time-select>
|
|
|
|
- </div>
|
|
|
|
- <div class="chioseday">
|
|
|
|
- <el-checkbox label="周五"></el-checkbox>
|
|
|
|
- <el-time-select placeholder="起始"
|
|
|
|
- v-model="week.Friday.startTime"
|
|
|
|
- :picker-options="{
|
|
|
|
- start: '06:30',
|
|
|
|
- step: '00:05',
|
|
|
|
- end: '18:30'
|
|
|
|
- }">
|
|
|
|
- </el-time-select>
|
|
|
|
-
|
|
|
|
- <el-time-select placeholder="结束"
|
|
|
|
- v-model="week.Friday.endTime"
|
|
|
|
- :picker-options="{
|
|
|
|
- start: '08:30',
|
|
|
|
- step: '00:15',
|
|
|
|
- end: '23:30',
|
|
|
|
- minTime: week.Friday.startTime
|
|
|
|
- }">
|
|
|
|
- </el-time-select>
|
|
|
|
- </div>
|
|
|
|
- <div class="chioseday">
|
|
|
|
- <el-checkbox label="周六"></el-checkbox>
|
|
|
|
- <el-time-select placeholder="起始"
|
|
|
|
- v-model="week.Saturday.startTime"
|
|
|
|
- :picker-options="{
|
|
|
|
- start: '06:30',
|
|
|
|
- step: '00:05',
|
|
|
|
- end: '18:30'
|
|
|
|
- }">
|
|
|
|
- </el-time-select>
|
|
|
|
-
|
|
|
|
- <el-time-select placeholder="结束"
|
|
|
|
- v-model="week.Saturday.endTime"
|
|
|
|
- :picker-options="{
|
|
|
|
- start: '08:30',
|
|
|
|
- step: '00:15',
|
|
|
|
- end: '23:30',
|
|
|
|
- minTime: week.Saturday.startTime
|
|
|
|
- }">
|
|
|
|
- </el-time-select>
|
|
|
|
- </div>
|
|
|
|
- <div class="chioseday">
|
|
|
|
- <el-checkbox label="周日"></el-checkbox>
|
|
|
|
- <el-time-select placeholder="起始"
|
|
|
|
- v-model="week.Sunday.startTime"
|
|
|
|
- :picker-options="{
|
|
|
|
- start: '06:30',
|
|
|
|
- step: '00:10',
|
|
|
|
- end: '18:30'
|
|
|
|
- }">
|
|
|
|
- </el-time-select>
|
|
|
|
-
|
|
|
|
- <el-time-select placeholder="结束"
|
|
|
|
- v-model="week.Sunday.endTime"
|
|
|
|
- :picker-options="{
|
|
|
|
- start: '08:30',
|
|
|
|
- step: '00:10',
|
|
|
|
- end: '23:30',
|
|
|
|
- minTime: week.Sunday.startTime
|
|
|
|
- }">
|
|
|
|
- </el-time-select>
|
|
|
|
- </div>
|
|
|
|
</el-checkbox-group>
|
|
</el-checkbox-group>
|
|
<div class="holidayWrap">
|
|
<div class="holidayWrap">
|
|
<el-checkbox v-model="isholiday">跳过节假日</el-checkbox>
|
|
<el-checkbox v-model="isholiday">跳过节假日</el-checkbox>
|
|
@@ -187,32 +71,34 @@
|
|
</div>
|
|
</div>
|
|
<div class="right">
|
|
<div class="right">
|
|
<el-table :data='tableList'>
|
|
<el-table :data='tableList'>
|
|
- <el-table-column prop="date"
|
|
|
|
- label="课次"
|
|
|
|
- width="180">
|
|
|
|
|
|
+ <el-table-column label="课次">
|
|
|
|
+ <template slot-scope="scope">
|
|
|
|
+ <div>
|
|
|
|
+ {{ scope.$index+1 }}
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="date"
|
|
|
|
|
|
+ <el-table-column prop="dateString"
|
|
label="日期"
|
|
label="日期"
|
|
width="180">
|
|
width="180">
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="date"
|
|
|
|
|
|
+ <el-table-column prop="week"
|
|
label="星期"
|
|
label="星期"
|
|
width="180">
|
|
width="180">
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="date"
|
|
|
|
|
|
+ <el-table-column prop="type"
|
|
label="课程类型"
|
|
label="课程类型"
|
|
width="180">
|
|
width="180">
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="date"
|
|
|
|
|
|
+ <el-table-column prop="name"
|
|
label="课程名称"
|
|
label="课程名称"
|
|
width="180">
|
|
width="180">
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="date"
|
|
|
|
|
|
+ <el-table-column prop="classTime"
|
|
label="上课时间"
|
|
label="上课时间"
|
|
width="180">
|
|
width="180">
|
|
</el-table-column>
|
|
</el-table-column>
|
|
- <el-table-column prop="date"
|
|
|
|
- label="操作"
|
|
|
|
|
|
+ <el-table-column label="操作"
|
|
width="180">
|
|
width="180">
|
|
<template slot-scope="scope">
|
|
<template slot-scope="scope">
|
|
<div>
|
|
<div>
|
|
@@ -231,7 +117,7 @@
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
<script>
|
|
<script>
|
|
-import { getAllClass, getHolidays } from '@/api/buildTeam'
|
|
|
|
|
|
+import { getAllClass, getAllSignClass } from '@/api/buildTeam'
|
|
import axios from 'axios'
|
|
import axios from 'axios'
|
|
import qs from 'qs'
|
|
import qs from 'qs'
|
|
export default {
|
|
export default {
|
|
@@ -250,38 +136,63 @@ export default {
|
|
},
|
|
},
|
|
tableList: [],
|
|
tableList: [],
|
|
checkList: [],
|
|
checkList: [],
|
|
- week: {
|
|
|
|
- Monday: {
|
|
|
|
|
|
+ week: [
|
|
|
|
+ {
|
|
startTime: '',
|
|
startTime: '',
|
|
- endTime: ''
|
|
|
|
|
|
+ endTime: '',
|
|
|
|
+ isCheck: false,
|
|
|
|
+ name: '星期日'
|
|
},
|
|
},
|
|
- Tuesday: {
|
|
|
|
|
|
+ {
|
|
startTime: '',
|
|
startTime: '',
|
|
- endTime: ''
|
|
|
|
|
|
+ endTime: '',
|
|
|
|
+ isCheck: false,
|
|
|
|
+ name: '星期一'
|
|
},
|
|
},
|
|
- Wednesday: {
|
|
|
|
|
|
+ {
|
|
startTime: '',
|
|
startTime: '',
|
|
- endTime: ''
|
|
|
|
|
|
+ endTime: '',
|
|
|
|
+ isCheck: false,
|
|
|
|
+ name: '星期二'
|
|
},
|
|
},
|
|
- Thursday: {
|
|
|
|
|
|
+ {
|
|
startTime: '',
|
|
startTime: '',
|
|
- endTime: ''
|
|
|
|
|
|
+ endTime: '',
|
|
|
|
+ isCheck: false,
|
|
|
|
+ name: '星期三'
|
|
},
|
|
},
|
|
- Friday: {
|
|
|
|
|
|
+ {
|
|
startTime: '',
|
|
startTime: '',
|
|
- endTime: ''
|
|
|
|
|
|
+ endTime: '',
|
|
|
|
+ isCheck: false,
|
|
|
|
+ name: '星期四'
|
|
},
|
|
},
|
|
- Saturday: {
|
|
|
|
|
|
+ {
|
|
startTime: '',
|
|
startTime: '',
|
|
- endTime: ''
|
|
|
|
|
|
+ endTime: '',
|
|
|
|
+ isCheck: false,
|
|
|
|
+ name: '星期五'
|
|
},
|
|
},
|
|
- Sunday: {
|
|
|
|
|
|
+ {
|
|
startTime: '',
|
|
startTime: '',
|
|
- endTime: ''
|
|
|
|
- }
|
|
|
|
- },
|
|
|
|
- maxClassList: [],
|
|
|
|
- isholiday: false
|
|
|
|
|
|
+ endTime: '',
|
|
|
|
+ isCheck: false,
|
|
|
|
+ name: '星期六'
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ ],
|
|
|
|
+ weekDay: ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"],
|
|
|
|
+ maxClassList: [], // 所有的合奏班
|
|
|
|
+ activeSingleList: [], // 合奏班下的所有单技班
|
|
|
|
+ isholiday: false,
|
|
|
|
+ classCardList: [], //这个是传给后台的真正数据集合
|
|
|
|
+ allChioseDate: [], // 记录所有准备排课的日期
|
|
|
|
+ holidayList: [],
|
|
|
|
+ leftRules: {
|
|
|
|
+ all: [{ required: true, message: '请输选择合奏班', trigger: 'blur' }],
|
|
|
|
+ time: [{ required: true, message: '请选择排课时间', trigger: 'blur' }],
|
|
|
|
+ num: [{ required: true, message: '请输入排课次数', trigger: 'blur' }]
|
|
|
|
+ }
|
|
}
|
|
}
|
|
},
|
|
},
|
|
mounted () {
|
|
mounted () {
|
|
@@ -294,17 +205,124 @@ export default {
|
|
// getHolidays({ d: '20191016' }).then(res => {
|
|
// getHolidays({ d: '20191016' }).then(res => {
|
|
|
|
|
|
// })
|
|
// })
|
|
- axios.post('/jiari/', qs.stringify({ d: '20191016,20191017' })).then(res => {
|
|
|
|
- console.log(res.data);
|
|
|
|
|
|
+ let year = new Date().getFullYear();
|
|
|
|
+ axios.post('/jiari/', qs.stringify({ d: year })).then(res => {
|
|
|
|
+ this.holidayList = Object.keys(res.data[year])
|
|
|
|
+ // this.holidayList = res.data[year]
|
|
|
|
+ // console.log(this.holidayList)
|
|
})
|
|
})
|
|
|
|
+
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
classCard () {
|
|
classCard () {
|
|
- // 首先拍出合奏班的课程
|
|
|
|
- // 1.从什么时候开始排
|
|
|
|
- // 2.周几排
|
|
|
|
- // 3.一共排多少节
|
|
|
|
- console.log(this.leftFrom.time)
|
|
|
|
|
|
+ let flag = false
|
|
|
|
+ this.$refs['leftFrom'].validate(val => {
|
|
|
|
+ if (val) {
|
|
|
|
+ flag = true
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ if (!flag) {
|
|
|
|
+ this.$message.error('请填写必要参数在进行排课')
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ let classCount = parseInt(this.leftFrom.num);
|
|
|
|
+ let date = this.leftFrom.time;
|
|
|
|
+ let startWeekday = this.leftFrom.time.getDay();
|
|
|
|
+ // 第一次循环把所有要排的时间记录下来 请求接口 判断是否节假日
|
|
|
|
+ while (classCount && classCount > 0) {
|
|
|
|
+
|
|
|
|
+ for (let i in this.checkList) {
|
|
|
|
+ let num; // 下次上课上几天后
|
|
|
|
+ this.checkList[i] - date.getDay() >= 0 ? num = this.checkList[i] : num = this.checkList[i] - date.getDay() + 7
|
|
|
|
+ let dataStr = this.getThinkDate(date, num);
|
|
|
|
+ let monthDay = this.getThinkDate(date, num, 2)
|
|
|
|
+ if (this.isholiday) {
|
|
|
|
+ if (this.holidayList.indexOf(monthDay) != -1) {
|
|
|
|
+ // 这里说明有节假日
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ let className;
|
|
|
|
+ this.maxClassList.map(item => {
|
|
|
|
+ if (item.id == this.leftFrom.all) {
|
|
|
|
+ className = item.name;
|
|
|
|
+ return item.name
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ // 排的是合奏班
|
|
|
|
+ this.tableList.push({
|
|
|
|
+ 'dateString': dataStr,
|
|
|
|
+ 'week': this.week[this.checkList[i]].name,
|
|
|
|
+ 'type': 'SINGLE',
|
|
|
|
+ 'id': this.leftFrom.all,
|
|
|
|
+ date,
|
|
|
|
+ 'name': className,
|
|
|
|
+ 'classTime': this.week[this.checkList[i]].startTime + '-' + this.week[this.checkList[i]].endTime
|
|
|
|
+ })
|
|
|
|
+ // 这里我排单技课
|
|
|
|
+ for (let j in this.activeSingleList) {
|
|
|
|
+ this.classCardList.push({
|
|
|
|
+ 'classDate': dataStr,
|
|
|
|
+ 'classGroupId': this.activeSingleList[j].id,
|
|
|
|
+ 'startClassTime': this.week[this.checkList[i]].startTime,
|
|
|
|
+ 'endClassTime': this.week[this.checkList[i]].endTime,
|
|
|
|
+ 'type': 'SINGLE',
|
|
|
|
+ 'mixid': this.activeSingleList[j].mixid
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ classCount--
|
|
|
|
+ if (classCount == 0) break
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ // console.log(this.tableList)
|
|
|
|
+ // 清除现在所选的值
|
|
|
|
+ this.$refs['leftFrom'].resetFields();
|
|
|
|
+ this.week = this.$options.data().week;
|
|
|
|
+ this.checkList = [];
|
|
|
|
+ },
|
|
|
|
+ chioseWeek (val) {
|
|
|
|
+ },
|
|
|
|
+ getThinkDate (date, num, type = 1) {
|
|
|
|
+
|
|
|
|
+ let Stamp = date;
|
|
|
|
+ Stamp.setDate(date.getDate() + num) // 获取当前月数的第几天
|
|
|
|
+ // console.log(date.getMonth() + 1)
|
|
|
|
+ // console.log(Stamp.getMonth() + 1)
|
|
|
|
+ var year = Stamp.getFullYear(); //获取完整的年份(4位,1970-????)
|
|
|
|
+ var month = Stamp.getMonth() + 1; //获取当前月份(0-11,0代表1月)
|
|
|
|
+ var mvar = '';
|
|
|
|
+ if (month < 10) {
|
|
|
|
+ mvar = '0' + month;
|
|
|
|
+ } else {
|
|
|
|
+ mvar = month + '';
|
|
|
|
+ }
|
|
|
|
+ var day = Stamp.getDate();
|
|
|
|
+ var dvar = '';
|
|
|
|
+ if (day < 10) {
|
|
|
|
+ dvar = '0' + day;
|
|
|
|
+ } else {
|
|
|
|
+ dvar = day + '';
|
|
|
|
+ }
|
|
|
|
+ if (type == 2) {
|
|
|
|
+ return mvar + dvar;
|
|
|
|
+ } else {
|
|
|
|
+ return year + "-" + mvar + '-' + dvar;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ changeMixClass (val) {
|
|
|
|
+ // 根据合奏班id获取合奏班下的所有单技班
|
|
|
|
+ this.activeSingleList = [];
|
|
|
|
+ getAllSignClass({ musicGroupId: this.teamid, mixClassGroupId: val }).then(res => {
|
|
|
|
+ if (res.code == 200) {
|
|
|
|
+ this.activeSingleList = res.data.map(item => {
|
|
|
|
+ item.mixid = val
|
|
|
|
+ return item;
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ })
|
|
}
|
|
}
|
|
},
|
|
},
|
|
|
|
|
|
@@ -318,8 +336,8 @@ export default {
|
|
flex-direction: row;
|
|
flex-direction: row;
|
|
justify-content: flex-start;
|
|
justify-content: flex-start;
|
|
.left {
|
|
.left {
|
|
- width: 300px;
|
|
|
|
- min-width: 300px;
|
|
|
|
|
|
+ width: 330px;
|
|
|
|
+ min-width: 330px;
|
|
margin-right: 90px;
|
|
margin-right: 90px;
|
|
.chioseday {
|
|
.chioseday {
|
|
margin-top: 20px;
|
|
margin-top: 20px;
|