|
|
@@ -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) {
|