Răsfoiți Sursa

考勤功能-排班调整:已发布排班不可调整、我的排班需筛选已发布数据

zhonghuizhen 1 an în urmă
părinte
comite
26cdcb2fd3

+ 24 - 7
src/views/business/​scheduleManage/edit.vue

@@ -51,10 +51,10 @@
                     <el-form-item label="选择历史排班" prop="oldScheduleId" :show-message="false">
                         <el-select
                             v-model="formData.oldScheduleId"
-                            :disabled="readonly"
+                            :disabled="(readonly || ifFaBu)"
                             filterable
                             clearable
-                            :placeholder=" readonly ? '' : '请选择历史排班'"
+                            :placeholder=" (readonly || ifFaBu) ? '' : '请选择历史排班'"
                             @change="handleScheduleChange"
                         >
                             <el-option
@@ -91,7 +91,7 @@
                         </template>
                         <el-date-picker
                             v-model="formData.dateRange"
-                            :disabled="readonly"
+                            :disabled="(readonly || ifFaBu)"
                             type="daterange"
                             range-separator="至"
                             start-placeholder="开始日期"
@@ -107,7 +107,7 @@
                     <el-form-item label="排班配置" prop="config" required :show-message="false">
                         <el-select
                             v-model="formData.config"
-                            :disabled="readonly"
+                            :disabled="(readonly || ifFaBu)"
                             filterable
                             placeholder="请选择排班配置"
                             @change="handleConfigChange"
@@ -132,7 +132,7 @@
             <el-form-item label="排班人员" prop="scheduleStaff" required :show-message="false">
                 <el-select
                     v-model="formData.scheduleStaff"
-                    :disabled="readonly"
+                    :disabled="(readonly || ifFaBu)"
                     multiple
                     filterable
                     placeholder="请选择排班人员"
@@ -150,7 +150,7 @@
                     <el-form-item label="调班审批人" prop="approver" :show-message="false">
                         <el-select
                             v-model="formData.approver"
-                            :disabled="readonly"
+                            :disabled="(readonly || ifFaBu)"
                             multiple
                             filterable
                             placeholder="请选择"
@@ -344,7 +344,7 @@
                                 :style="{ display: viewType === 'users' ? 'grid' : 'flex'}"
                                 @mouseenter=" hoveredIndex = !readonly && `${row.value}-${cIndex}`"
                                 @mouseleave=" hoveredIndex = !readonly && null"
-                                @click.prevent="!readonly && handleShiftClick($event, {row, rIndex, column, cIndex})"
+                                @click.prevent="!readonly && ( !ifFaBu || getCompareTime(cIndex) ) && handleShiftClick($event, {row, rIndex, column, cIndex})"
                             >
                                 <div
                                     v-for="(shift, sIndex) in scheduleData[row.value][cIndex]"
@@ -442,6 +442,7 @@ export default {
             formLabelWidth: '120px',
             loading: false,
             activeStep: 1,
+            ifFaBu: false, // 是否发布,发布后的数据部分字段不可修改。
             formData: {
                 title: '',
                 id: '',
@@ -688,6 +689,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.loading = false
             }).catch(() => {
                 self.loading = false
@@ -701,6 +703,21 @@ export default {
                 isWeekend: dayIndex === 0 || dayIndex === 6 // 判断是否是周末
             }
         },
+        getCompareTime (index) {
+            // 先把编辑菜单关闭
+            this.handleClose()
+            const date = new Date()
+            // 提取时间组件
+            const year = date.getFullYear()
+            const month = String(date.getMonth() + 1).padStart(2, '0') // 月份从0开始,需+1
+            const day = String(date.getDate()).padStart(2, '0')
+            const today = `${year}-${month}-${day} `
+            if (this.dateList[index] > today) {
+                return true
+            }
+            this.$message.warning('已发布的排班表,今日前的排班信息无法修改!')
+            return false
+        },
         transformConfigData (data) {
             return data.reduce((acc, item) => {
                 const { scheduleType } = item

+ 1 - 1
src/views/system/dashboard/components/util.js

@@ -589,7 +589,7 @@ export function buildComponent (name, column, preview, vm) {
                 },
                 getScheduleData () {
                     const { first, second } = this.$store.getters.level || {}
-                    const sql = `select a.*, b.title_,b.type_, b.start_date_, b.end_date_, b.config_, b.overview_ from t_schedule_detail a, t_schedule b where a.parent_id_ = b.id_ and b.di_dian_ = '${second || first}' and a.user_id_ = '${this.userId}'`
+                    const sql = `select a.*, b.title_,b.type_, b.start_date_, b.end_date_, b.config_, b.overview_ from t_schedule_detail a, t_schedule b where a.parent_id_ = b.id_ and b.di_dian_ = '${second || first}' and a.user_id_ = '${this.userId}' and b.status_ = '已发布'`
                     return new Promise((resolve, reject) => {
                         this.$common.request('sql', sql).then(res => {
                             const { data = [] } = res.variables || {}