gaoshp
2024-10-09 9ccaa7a607481405ee22519aa49c786a46b95e22
优先
已修改2个文件
166 ■■■■ 文件已修改
src/views/console/base/Add.vue 147 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/console/base/CalenderTab.vue 19 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/console/base/Add.vue
@@ -1,7 +1,7 @@
<!--
 * @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>
@@ -98,7 +98,7 @@
                    当前排班优先
                </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>
@@ -141,6 +141,8 @@
    },
    data() {
        return {
            currentDate: '',
            currentDateItem: null,
            disabled: false,
            modelId: '',
            isHighPriority: false,
@@ -284,7 +286,6 @@
                }
                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
@@ -299,9 +300,8 @@
                        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)
@@ -325,7 +325,6 @@
            }
        },
        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`)
@@ -375,15 +374,22 @@
                            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()) {
@@ -391,32 +397,123 @@
            }
            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) {
@@ -433,21 +530,19 @@
            })
        },
        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) {
src/views/console/base/CalenderTab.vue
@@ -1,7 +1,7 @@
<!--
 * @Date: 2024-04-04 22:45:43
 * @LastEditors: gaoshp
 * @LastEditTime: 2024-10-08 22:01:18
 * @LastEditTime: 2024-10-09 22:59:25
 * @FilePath: /cps-web/src/views/console/base/CalenderTab.vue
-->
<template>
@@ -282,7 +282,7 @@
                    })
                    for (let i = 0; i < 12; i++) {
                        data.calendarDayVOList.map(v => v.modelId)
                        let modelIds = [...new Set(data.calendarDayVOList.map(v => v.modelId))]
                        let ext = modelIds.map(v => {
                            let ban = this.shiftListName.find(item => item.id === v)
@@ -303,6 +303,8 @@
                                },
                            }
                        })
                        console.log('---------youxian')
                        this.months.push({
                            year: year,
                            month: i,
@@ -314,7 +316,18 @@
                                        return moment(item).month() === i
                                    })
                                },
                                ...ext
                                ...ext,
                                // 优先
                                {
                                    dates: data.calendarDayVOList.filter(item => {
                                        return moment(item.calendarDate).month() === i
                                    }).filter(item => item.isHighPriority).map(item => item.calendarDate),
                                    bar: {
                                        style: {
                                            backgroundColor: 'red',
                                        }
                                    },
                                }
                            ]
                        })
                    }