Przeglądaj źródła

排班日期变更后排班数据重置

zhonghuizhen 1 rok temu
rodzic
commit
ba94eafee6

+ 2 - 2
src/views/business/​scheduleManage/components/statistic.vue

@@ -99,7 +99,7 @@ export default {
             const avgText = Object.entries(avg).map(([shift, avg]) => `${shift}【${avg}】`).join(',')
             const userOption = JSON.parse(JSON.stringify(chartOption))
             userOption.title.text = '人员班次统计'
-            userOption.title.subtext = `人数共计:${this.userList.length},班次共计:${series.length},人均班次为:${avgText}`
+            userOption.title.subtext = `人数共计:${this.userList.length},班次共计:${series.length},人均班次为:${avgText}`
             userOption.legend.data = Object.keys(seriesData)
             userOption.xAxis.data = categories
             userOption.series = series
@@ -157,7 +157,7 @@ export default {
             const avgText = Object.entries(avg).map(([shift, avg]) => `${shift}【${avg}】`).join(',')
             const dateOption = JSON.parse(JSON.stringify(chartOption))
             dateOption.title.text = '日期班次统计'
-            dateOption.title.subtext = `日期共计:${this.userList.length},班次共计:${series.length},日均班次为:${avgText}`
+            dateOption.title.subtext = `日期共计:${this.userList.length},班次共计:${series.length},日均班次为:${avgText}`
             dateOption.legend.data = Object.keys(seriesData)
             dateOption.xAxis.data = categories
             dateOption.series = series

+ 42 - 3
src/views/business/​scheduleManage/edit.vue

@@ -410,6 +410,8 @@ export default {
                 scheduleShift: [],
                 scheduleRule: []
             },
+            isDateChanged: false, // 用于标识日期是否已经改变过
+            prevDateRange: [],
             rules: {},
             scheduleColumn,
             title: this.readonly ? '创建排班' : '编辑排班',
@@ -496,6 +498,17 @@ export default {
         //     return mapValues(keyBy(this.ordinateList, 'value'), () => Array.from({ length: this.dateList.length }, () => []))
         // }
     },
+    watch: {
+        'formData.dateRange': {
+            handler (newValue, oldValue) {
+                if (oldValue.length > 0) {
+                    this.isDateChanged = true
+                    this.prevDateRange = oldValue
+                }
+            },
+            immediate: false // 不需要在组件初始化时执行,仅在日期真正改变时执行
+        }
+    },
     created () {
         this.loadData()
     },
@@ -724,10 +737,36 @@ export default {
             }))
         },
         handleDateChange (dates) {
-            if (this.$utils.isEmpty(dates)) {
-                this.pickerOptions.disabledDate = (time) => {
-                    return false
+            if (!this.isDateChanged) {
+                // 第一次选择日期,直接处理业务逻辑,不弹出确认框
+                if (this.$utils.isEmpty(dates)) {
+                    this.pickerOptions.disabledDate = (time) => {
+                        return false
+                    }
                 }
+            } else {
+                // 不是第一次选择日期,弹出确认框
+                this.$confirm(
+                    `确定更改排班时间吗?排班数据将会重置`,
+                    '提示:',
+                    {
+                        confirmButtonText: '确定',
+                        cancelButtonText: '取消',
+                        type: 'warning'
+                    }
+                ).then(() => {
+                    if (this.$utils.isEmpty(dates)) {
+                        this.pickerOptions.disabledDate = (time) => {
+                            return false
+                        }
+                    }
+                    this.scheduleData = mapValues(keyBy(this.ordinateList, 'value'), () => Array.from({ length: this.dateList.length }, () => []))
+                }).catch(() => {
+                    // 取消操作时的逻辑处理,日期复原
+                    if (this.prevDateRange) {
+                        this.formData.dateRange = this.prevDateRange
+                    }
+                })
             }
         },
         getDateList (dateRange) {