Pārlūkot izejas kodu

考勤功能-限制排班日期只能在今天之后

zhonghuizhen 1 gadu atpakaļ
vecāks
revīzija
54388e963c

+ 4 - 2
src/views/business/attendance/dakaDialog.vue

@@ -3,14 +3,16 @@
         :visible.sync="visible"
         title="选择打卡班次"
         width="400px"
-        @close="handleClose">
+        @close="handleClose"
+    >
         <div class="schedule-dialog">
             <el-radio-group v-model="selectedValue">
                 <el-radio
                     v-for="schedule in schedules"
                     :key="schedule"
                     :label="schedule"
-                    style="display: block; margin: 10px 0;">
+                    style="display: block; margin: 10px 0;"
+                >
                     {{ schedule }}
                 </el-radio>
             </el-radio-group>

+ 23 - 6
src/views/business/​scheduleManage/edit.vue

@@ -508,20 +508,37 @@ export default {
             pickerOptions: {
                 disabledDate: (time) => {
                     const { dateRange } = this.formData
+                    const today = new Date()
+                    today.setHours(0, 0, 0, 0) // 标准化今天的时间到00:00:00
+                    // 禁用所有今天之前的日期
+                    if (time < today) {
+                        return true
+                    }
                     if (!dateRange.length) {
                         return false
                     }
                     const startDate = dateRange[0]
                     const endDate = dateRange[1] || time
-                    // 日期差超过45天则禁用
-                    const diffDays = (endDate - startDate) / (1000 * 60 * 60 * 24)
-                    return diffDays > 45 || diffDays < -45
+                    const diffDays = Math.abs((endDate - startDate) / (86400000)) // 使用绝对值简化判断
+                    return diffDays > 45 // 超过45天禁用
                 },
                 onPick: ({ minDate, maxDate }) => {
                     if (minDate && !maxDate) {
+                        const today = new Date()
+                        today.setHours(0, 0, 0, 0)
+                        // 如果选择的开始日期早于今天,自动修正为今天
+                        if (minDate < today) {
+                            minDate = new Date(today)
+                            this.formData.dateRange[0] = minDate // 同步更新表单数据
+                        }
                         this.pickerOptions.disabledDate = (time) => {
-                            const dayDifference = (time - minDate) / (1000 * 60 * 60 * 24)
-                            return dayDifference > 45 || dayDifference < -45
+                            // 保持今天之前的日期不可选
+                            if (time < today) {
+                                return true
+                            }
+                            // 计算与开始日期的绝对差值
+                            const dayDifference = Math.abs((time - minDate) / 86400000)
+                            return dayDifference > 45
                         }
                     }
                 }
@@ -694,7 +711,7 @@ export default {
                 self.scheduleData = self.transformScheduleData(records, overview, temp)
                 self.responseData = { ...self.responseData, records, overview, temp }
                 console.log('scheduleData', self.scheduleData)
-                self.ifFaBu = (status == '已发布' ? true : false)
+                self.ifFaBu = (status === '已发布' ? true : false)
                 self.loading = false
             }).catch(() => {
                 self.loading = false