Kaynağa Gözat

考勤修复task8380

zhonghuizhen 6 saat önce
ebeveyn
işleme
cfd2e0d749
1 değiştirilmiş dosya ile 83 ekleme ve 29 silme
  1. 83 29
      src/views/business/attendance/attendanceDetails.vue

+ 83 - 29
src/views/business/attendance/attendanceDetails.vue

@@ -216,7 +216,7 @@
       </template>
     </ibps-crud>
 
-    <!-- 编辑上下班时间的弹窗(排班类型改为下拉选择) -->
+    <!-- 编辑上下班时间的弹窗(排班类型下拉选择) -->
     <el-dialog
       title="修改上下班时间"
       :visible.sync="editDialogVisible"
@@ -224,6 +224,26 @@
       @close="closeEditDialog"
     >
       <el-form ref="editFormRef" :rules="editFormRules" :model="editForm" label-width="120px" size="small">
+        <el-form-item label="排班类型" prop="banCiMing">
+          <el-select
+            v-model="editForm.banCiMing"
+            placeholder="请选择排班类型"
+            clearable
+            filterable
+            style="width: 90%"
+            :loading="banCiOptionsLoading"
+          >
+            <el-option
+              v-for="item in banCiOptions"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value"
+            />
+          </el-select>
+        </el-form-item>
+         <el-form-item label="配置名称">
+          <el-input v-model="editConfigName" disabled style="width: 90%" />
+        </el-form-item>
         <el-form-item label="上班打卡时间">
           <el-date-picker
             v-model="editForm.daKaShiJian1"
@@ -242,27 +262,8 @@
             style="width: 90%"
           />
         </el-form-item>
-        <!-- 排班类型下拉(编辑弹窗使用,全局加载) -->
-        <el-form-item label="排班类型" prop="banCiMing">
-          <el-select
-            v-model="editForm.banCiMing"
-            placeholder="请选择排班类型"
-            clearable
-            filterable
-            style="width: 90%"
-            :loading="banCiOptionsLoading"
-          >
-            <el-option
-              v-for="item in banCiOptions"
-              :key="item.value"
-              :label="item.label"
-              :value="item.value"
-            />
-          </el-select>
-        </el-form-item>
-        <!-- 考勤状态(只读,固定为正常) -->
         <el-form-item label="考勤状态">
-          <span style="line-height: 32px; ">正常</span>
+          <span style="line-height: 32px;">正常</span>
         </el-form-item>
         <el-form-item label="备注" prop="beiZhu">
           <el-input
@@ -317,7 +318,6 @@
             />
           </el-select>
         </el-form-item>
-        <!-- 配置名称下拉(根据部门过滤) -->
         <el-form-item label="配置名称" prop="paiBanMingChen">
           <el-select
             v-model="addForm.paiBanMingChen"
@@ -336,7 +336,6 @@
             />
           </el-select>
         </el-form-item>
-        <!-- 排班类型下拉(根据部门过滤) -->
         <el-form-item label="排班类型" prop="banCiMing">
           <el-select
             v-model="addForm.banCiMing"
@@ -536,6 +535,9 @@ export default {
       saveLoading: false,
       banCiOptions: [],
       banCiOptionsLoading: false,
+      // 编辑弹窗新增:配置名称(只读)及配置列表
+      editConfigList: [],
+      editConfigName: '',
       // 新增弹窗相关
       addDialogVisible: false,
       addLoading: false,
@@ -616,6 +618,12 @@ export default {
       return toolbars
     }
   },
+  watch: {
+    // 监听编辑弹窗中排班类型变化,自动更新配置名称
+    'editForm.banCiMing'(newVal) {
+      this.updateEditConfigName(newVal)
+    }
+  },
   created() {
     this.loadData()
   },
@@ -797,6 +805,48 @@ export default {
       }
     },
 
+    // ========= 编辑弹窗:根据部门加载配置列表 =========
+    async loadEditConfigs(deptId) {
+      if (!deptId) {
+        this.editConfigList = []
+        this.editConfigName = ''
+        return
+      }
+      try {
+        const res = await queryScheduleConfigItem({
+          pageNo: 1,
+          limit: 999,
+          param: {
+            bianZhiBuMeng: deptId,
+            shengXiaoBiaoZhi: 'Y'
+          }
+        })
+        this.editConfigList = res.data.dataResult || []
+        // 初始化配置名称为当前行的配置名称
+        if (this.currentEditRow) {
+          this.editConfigName = this.currentEditRow.paiBanMingChen || ''
+        }
+        // 如果当前排班类型有值,尝试匹配更新配置名称(保证显示一致)
+        if (this.editForm.banCiMing) {
+          this.updateEditConfigName(this.editForm.banCiMing)
+        }
+      } catch (error) {
+        console.error('加载编辑配置列表失败', error)
+        this.editConfigList = []
+        this.editConfigName = ''
+      }
+    },
+
+    // ========= 编辑弹窗:根据排班类型更新配置名称 =========
+    updateEditConfigName(banCiType) {
+      if (!banCiType) {
+        this.editConfigName = ''
+        return
+      }
+      const found = this.editConfigList.find(item => item.paiBanLeiXing === banCiType)
+      this.editConfigName = found ? found.peiZhiMingChen : ''
+    },
+
     // ========= 新增:根据部门加载配置列表(按编制部门过滤) =========
     async loadConfigsByDept(deptId) {
       if (!deptId) {
@@ -812,7 +862,7 @@ export default {
           pageNo: 1,
           limit: 999,
           param: {
-            bianZhiBuMeng: deptId,    // 使用编制部门字段过滤
+            bianZhiBuMeng: deptId,
             shengXiaoBiaoZhi: 'Y'
           }
         })
@@ -835,7 +885,6 @@ export default {
           value: type
         }))
 
-        // 如果当前已有选中配置且编制部门匹配,则保留;否则清空
         if (this.selectedConfig && this.selectedConfig.bianZhiBuMen === deptId) {
           // 保持选中
         } else {
@@ -855,7 +904,7 @@ export default {
       }
     },
 
-    // ========= 部门变更处理 =========
+    // ========= 部门变更处理(新增) =========
     handleDeptChange(deptId) {
       this.addForm.paiBanMingChen = ''
       this.addForm.banCiMing = ''
@@ -865,7 +914,7 @@ export default {
       this.loadConfigsByDept(deptId)
     },
 
-    // ========= 配置名称变更处理 =========
+    // ========= 配置名称变更处理(新增) =========
     handleConfigChange(configId) {
       if (!configId) {
         this.selectedConfig = null
@@ -892,7 +941,7 @@ export default {
       }
     },
 
-    // ========= 日期变更处理 =========
+    // ========= 日期变更处理(新增) =========
     handleDateChange(date) {
       if (date && this.selectedConfig) {
         this.fillClockTime()
@@ -902,7 +951,7 @@ export default {
       }
     },
 
-    // ========= 根据日期和配置自动填充上下班打卡时间 =========
+    // ========= 根据日期和配置自动填充上下班打卡时间(新增) =========
     fillClockTime() {
       if (!this.selectedConfig || !this.addForm.riQi) {
         return
@@ -939,6 +988,8 @@ export default {
         beiZhu: row.beiZhu || '',
         banCiMing: row.banCiMing || ''
       }
+      this.editConfigName = row.paiBanMingChen || ''
+      await this.loadEditConfigs(row.buMen)
       this.editDialogVisible = true
       this.$nextTick(() => {
         if (this.$refs.editFormRef) {
@@ -950,6 +1001,8 @@ export default {
       this.editDialogVisible = false
       this.currentEditRow = null
       this.editForm = { id: '', daKaShiJian1: '', daKaShiJian2: '', beiZhu: '', banCiMing: '' }
+      this.editConfigList = []
+      this.editConfigName = ''
     },
     saveEditTime() {
       this.$refs.editFormRef.validate((valid) => {
@@ -962,6 +1015,7 @@ export default {
           daKaShiJian2: this.editForm.daKaShiJian2,
           beiZhu: this.editForm.beiZhu,
           banCiMing: this.editForm.banCiMing,
+          paiBanMingChen: this.editConfigName,   // 上传配置名称
           kaoQinZhuangTa: '正常'
         }
         gdUpdateAttendce(postData)