| | |
| | | <!-- |
| | | * @Date: 2024-05-04 16:37:48 |
| | | * @LastEditors: gaoshp |
| | | * @LastEditTime: 2024-10-08 22:02:06 |
| | | * @LastEditTime: 2024-10-09 22:50:13 |
| | | * @FilePath: /cps-web/src/views/console/base/Add.vue |
| | | --> |
| | | <template> |
| | |
| | | 当前排班优先 |
| | | </el-col> |
| | | <el-col :span="4"> |
| | | <el-switch v-model="isHighPriority" active-text="优先" inactive-text="不优先" /> |
| | | <el-switch v-model="isHighPriority" @change="changeHigh" active-text="优先" inactive-text="不优先" /> |
| | | </el-col> |
| | | <el-col :span="2"> |
| | | <el-button type="primary" @click="plan">排班</el-button> |
| | |
| | | }, |
| | | data() { |
| | | return { |
| | | currentDate: '', |
| | | currentDateItem: null, |
| | | disabled: false, |
| | | modelId: '', |
| | | isHighPriority: false, |
| | |
| | | } |
| | | this.form.date = [moment().format('YYYY-MM-DD'), moment(`${currentYear}-12-31`).format('YYYY-MM-DD')] |
| | | } else { |
| | | console.log('>>>>>>>>>>', this.drawerInfo) |
| | | this.disabled = true |
| | | this.form.code = this.drawerInfo.code |
| | | this.form.name = this.drawerInfo.name |
| | |
| | | let list = this.drawerInfo.calendarDayVOList.filter(v => v.modelId === item) |
| | | let ext = { |
| | | modelId: item, |
| | | isHighPriority: list[0].isHighPriority, |
| | | // isHighPriority: list[0].isHighPriority, |
| | | } |
| | | console.log(list) |
| | | this.setDayRange(list, ext) |
| | | }) |
| | | }, 1000) |
| | |
| | | } |
| | | }, |
| | | setDay() { |
| | | console.log('setDay1') |
| | | let currentYear = moment(this.form.year, 'YYYY').format('YYYY') - 0 |
| | | this.months.forEach((item, i) => { |
| | | let start = moment(`${currentYear}-${i + 1}-01`) |
| | |
| | | label: `${ban?.code}-${ban?.name}` |
| | | }, |
| | | }) |
| | | // 优先 |
| | | this.months[i].attributes.push({ |
| | | dates: dates.filter(v => v.isHighPriority === 1).map(v => v.calendarDate), |
| | | bar: { |
| | | style: { |
| | | backgroundColor: 'red', |
| | | } |
| | | }, |
| | | }) |
| | | this.months[i].attributes[1] = { |
| | | highlight: true, |
| | | dates: [] |
| | | } |
| | | } |
| | | |
| | | |
| | | }) |
| | | console.log(this.months, 'rll') |
| | | console.log(this.months, 'rllllllll') |
| | | }, |
| | | pushDate(start) { |
| | | if (start.unix() >= moment(this.form.date[0]).unix() && start.unix() <= moment(this.form.date[1]).unix()) { |
| | |
| | | } |
| | | return false |
| | | }, |
| | | dayclick(day, item) { |
| | | changeHigh(val) { |
| | | if (this.currentDateItem) { |
| | | // 设置优先 |
| | | let index = this.currentDateItem.attributes.findIndex(item => !!item.bar) |
| | | if (val) { |
| | | if (index === -1) { |
| | | this.currentDateItem.attributes.push({ |
| | | bar: { |
| | | style: { |
| | | backgroundColor: 'red', |
| | | } |
| | | }, |
| | | dates: [this.currentDate] |
| | | }) |
| | | } else { |
| | | this.currentDateItem.attributes[index].dates.push(this.currentDate) |
| | | } |
| | | } else { |
| | | let i = this.currentDateItem.attributes[index].dates.findIndex(v => v === this.currentDate) |
| | | this.currentDateItem.attributes[index].dates.splice(i, 1) |
| | | } |
| | | |
| | | } else { |
| | | this.isHighPriority = false |
| | | } |
| | | console.log(this.months) |
| | | }, |
| | | dayclick(day, item) { |
| | | let index = item.attributes[1].dates.findIndex(v => v === day.id) |
| | | if (index >= 0) { |
| | | item.attributes[1].dates.splice(index, 1) |
| | | } else { |
| | | item.attributes[1].dates.push(day.id) |
| | | } |
| | | let list = this.getPlanDate() |
| | | let highDates = this.getHighDate() |
| | | this.currentDate = day.id |
| | | if (list.find(v => v.calendarDate === day.id)) { |
| | | this.currentDateItem = item |
| | | if (highDates.indexOf(this.currentDate) > -1) { |
| | | this.isHighPriority = true |
| | | } else { |
| | | this.isHighPriority = false |
| | | } |
| | | } else { |
| | | this.currentDateItem = null |
| | | this.isHighPriority = false |
| | | } |
| | | |
| | | console.log('------currentDate', this.currentDate, item, highDates) |
| | | }, |
| | | getHighDate() { |
| | | let list = [] |
| | | this.months.forEach(item => { |
| | | item.attributes.forEach((v, i) => { |
| | | if (i > 1 && v.bar) { |
| | | v.dates.forEach(child => { |
| | | list.push(child) |
| | | }) |
| | | |
| | | } |
| | | }) |
| | | }) |
| | | return list |
| | | }, |
| | | getPlanDate() { |
| | | // 优先级 |
| | | let list = [] |
| | | this.months.forEach(item => { |
| | | item.attributes.forEach((v, i) => { |
| | | if (i > 1 && v.modelId) { |
| | | |
| | | v.dates.forEach(child => { |
| | | // 重复排班去重 |
| | | let repeatIndex = list.findIndex(v => v.calendarDate === child) |
| | | if (repeatIndex > -1) { |
| | | list.splice(repeatIndex, 1, { |
| | | modelId: v.modelId, |
| | | // isHighPriority: v.isHighPriority, |
| | | calendarDate: child, |
| | | ...this.setOffDay(child) |
| | | }) |
| | | } else { |
| | | list.push({ |
| | | modelId: v.modelId, |
| | | // isHighPriority: v.isHighPriority, |
| | | calendarDate: child, |
| | | ...this.setOffDay(child) |
| | | }) |
| | | } |
| | | |
| | | }) |
| | | |
| | | } |
| | | }) |
| | | }) |
| | | return list |
| | | }, |
| | | plan() { |
| | | if (!this.modelId) { |
| | | return this.$message.warning('请选择班次方案'); |
| | | } |
| | | let dateDTOList = this.months.map(item => item.attributes[1].dates) |
| | | console.log('------plan', dateDTOList) |
| | | let list = dateDTOList.flat(2).map(v => { |
| | | return { |
| | | modelId: this.modelId, |
| | | isHighPriority: this.isHighPriority ? 1 : 0, |
| | | // isHighPriority: this.isHighPriority ? 1 : 0, |
| | | calendarDate: v, |
| | | ...this.setOffDay(v) |
| | | } |
| | | }) |
| | | let ext = { |
| | | modelId: this.modelId, |
| | | isHighPriority: this.isHighPriority ? 1 : 0, |
| | | // isHighPriority: this.isHighPriority ? 1 : 0, |
| | | } |
| | | |
| | | this.setDayRange(list, ext) |
| | | }, |
| | | setOffDay(time) { |
| | |
| | | }) |
| | | }, |
| | | save() { |
| | | let list = [] |
| | | this.months.forEach(item => { |
| | | item.attributes.forEach((v, i) => { |
| | | if (i > 1) { |
| | | v.dates.forEach(child => { |
| | | list.push({ |
| | | modelId: v.modelId, |
| | | isHighPriority: v.isHighPriority, |
| | | calendarDate: child, |
| | | ...this.setOffDay(child) |
| | | }) |
| | | }) |
| | | |
| | | let highDates = this.getHighDate() |
| | | let list = this.getPlanDate().map(v => { |
| | | if (highDates.indexOf(v.calendarDate) > -1) { |
| | | return { |
| | | ...v, |
| | | isHighPriority: 1 |
| | | } |
| | | }) |
| | | } else { |
| | | return { |
| | | ...v, |
| | | isHighPriority: 0 |
| | | } |
| | | } |
| | | }) |
| | | this.$refs.dialogForm.validate(async (valid) => { |
| | | if (valid) { |