Sfoglia il codice sorgente

fix: 隐患排查治理-区域检查计划管理 查看编号不换行,下发 部门自动带出

hewei 1 mese fa
parent
commit
3e2f61dad4

+ 86 - 37
src/views/production-safety/hiddenTroubleInvestigationAndGovernance/areaCheckPlanManagement/areaCheckPlanManagement.vue

@@ -7,12 +7,8 @@
       <div class="search-table-container">
         <header>
           <div style="position: relative">
-            <el-button type="primary" class="search-table-container--button" @click="handleCreate">
-              添加
-            </el-button>
-            <el-button plain class="search-table-container--button" @click="handleImport">
-              导入
-            </el-button>
+            <el-button type="primary" class="search-table-container--button" @click="handleCreate"> 添加 </el-button>
+            <el-button plain class="search-table-container--button" @click="handleImport"> 导入 </el-button>
           </div>
 
           <div class="act-search">
@@ -28,11 +24,7 @@
               </div>
               <div class="select-box--item">
                 <span>状态:</span>
-                <el-select
-                  v-model="tableQuery.queryParam.status"
-                  placeholder="请选择状态"
-                  clearable
-                >
+                <el-select v-model="tableQuery.queryParam.status" placeholder="请选择状态" clearable>
                   <el-option
                     v-for="item in AREA_CHECK_PLAN_STATUS_OPTIONS"
                     :key="String(item.value)"
@@ -73,9 +65,7 @@
             <section class="search-btn">
               <el-button type="primary" @click="handleSearch">查询</el-button>
               <el-button @click="handleReset">重置</el-button>
-              <el-button plain  @click="handleDownload">
-                导出
-              </el-button>
+              <el-button plain @click="handleDownload"> 导出 </el-button>
             </section>
           </div>
         </header>
@@ -92,10 +82,14 @@
               <span>{{ AREA_CHECK_PLAN_STATUS_LABEL[String(scope.row.status)] ?? '-' }}</span>
             </template>
             <template #needOverallDesc="scope">
-              <span>{{ scope.row.needOverallDesc === true ? '是' : scope.row.needOverallDesc === false ? '否' : '-' }}</span>
+              <span>{{
+                scope.row.needOverallDesc === true ? '是' : scope.row.needOverallDesc === false ? '否' : '-'
+              }}</span>
             </template>
             <template #needSigneeSign="scope">
-              <span>{{ scope.row.needSigneeSign === true ? '是' : scope.row.needSigneeSign === false ? '否' : '-' }}</span>
+              <span>{{
+                scope.row.needSigneeSign === true ? '是' : scope.row.needSigneeSign === false ? '否' : '-'
+              }}</span>
             </template>
             <template #action="scope">
               <div class="action-container--div" style="justify-content: left">
@@ -200,12 +194,7 @@
             clearable
             style="width: 100%"
           >
-            <el-option
-              v-for="item in userGroupOptions"
-              :key="item.id"
-              :label="item.name"
-              :value="item.id"
-            />
+            <el-option v-for="item in userGroupOptions" :key="item.id" :label="item.name" :value="item.id" />
           </el-select>
         </el-form-item>
         <el-form-item label="院领导部门:" prop="hospitalLeaderDeptId">
@@ -228,12 +217,7 @@
             clearable
             style="width: 100%"
           >
-            <el-option
-              v-for="item in userGroupOptions"
-              :key="item.id"
-              :label="item.name"
-              :value="item.id"
-            />
+            <el-option v-for="item in userGroupOptions" :key="item.id" :label="item.name" :value="item.id" />
           </el-select>
         </el-form-item>
         <el-form-item label="计划开始日期:" prop="planStartTime">
@@ -295,7 +279,12 @@
   import BasicTable from '@/components/BasicTable.vue';
   import useTableConfig from '@/hooks/useTableConfigHook';
   import ActionButton from '@/components/ActionButton.vue';
-  import { TABLE_OPTIONS, AREA_CHECK_PLAN_TABLE_COLUMNS, AREA_CHECK_PLAN_STATUS_OPTIONS, AREA_CHECK_PLAN_STATUS_LABEL } from './configs/tables';
+  import {
+    TABLE_OPTIONS,
+    AREA_CHECK_PLAN_TABLE_COLUMNS,
+    AREA_CHECK_PLAN_STATUS_OPTIONS,
+    AREA_CHECK_PLAN_STATUS_LABEL,
+  } from './configs/tables';
   import { useRouter } from 'vue-router';
   import type { QueryPageRequest } from '@/types/basic-query';
   import type { AreaCheckPlanQuery, AreaCheckPlanRecord } from './configs/types';
@@ -397,9 +386,36 @@
     }
   };
 
-  const onIssueDialogOpen = () => {
-    loadIssueDeptTree();
-    loadUserGroupOptions();
+  const onIssueDialogOpen = async () => {
+    await Promise.all([loadIssueDeptTree(), loadUserGroupOptions()]);
+
+    if (!currentIssuePlanId.value) return;
+
+    try {
+      const raw = await queryAreaCheckPlanManageDetail(currentIssuePlanId.value);
+      const detail = mapAreaCheckPlanApiRecordToUi(raw);
+
+      const responsibleDeptIdsByCode = parseNumberList(
+        detail.primaryResponsibleDeptCode ?? (detail as Record<string, unknown>).responsibleDeptCode,
+      );
+
+      issueForm.responsibleDeptIds = responsibleDeptIdsByCode.length
+        ? responsibleDeptIdsByCode
+        : (detail.primaryResponsibleDeptName || '')
+            .split(',')
+            .map((name) => findDeptIdByName(issueDeptTree.value, name.trim()))
+            .filter((id): id is number => id != null);
+
+      const safetyEmergencyDeptIdByCode = parseNumber(detail.safetyEmergencyDeptCode);
+      issueForm.safetyEmergencyDeptId =
+        safetyEmergencyDeptIdByCode ?? findDeptIdByName(issueDeptTree.value, detail.safetyEmergencyDeptName);
+
+      const hospitalLeaderDeptIdByCode = parseNumber(detail.hospitalLeaderDeptCode);
+      issueForm.hospitalLeaderDeptId =
+        hospitalLeaderDeptIdByCode ?? findDeptIdByName(issueDeptTree.value, detail.hospitalLeaderDeptName);
+    } catch (e) {
+      console.error('加载下发默认数据失败:', e);
+    }
   };
 
   const findDeptNameById = (nodes: DeptTree[] | undefined, id: number | undefined): string | undefined => {
@@ -412,6 +428,30 @@
     return undefined;
   };
 
+  const findDeptIdByName = (nodes: DeptTree[] | undefined, name: string | undefined): number | undefined => {
+    if (!nodes?.length || !name) return undefined;
+    for (const n of nodes) {
+      if (n.deptName === name) return n.id ?? undefined;
+      const found = findDeptIdByName(n.children, name);
+      if (found != null) return found;
+    }
+    return undefined;
+  };
+
+  const parseNumber = (val: unknown): number | undefined => {
+    if (val == null || val === '') return undefined;
+    const n = Number(val);
+    return Number.isFinite(n) ? n : undefined;
+  };
+
+  const parseNumberList = (val: unknown): number[] => {
+    if (val == null || val === '') return [];
+    return String(val)
+      .split(',')
+      .map((s) => parseNumber(s.trim()))
+      .filter((n): n is number => n != null);
+  };
+
   const findDeptNamesByIds = (nodes: DeptTree[] | undefined, ids: number[] | undefined): string[] => {
     const list = (ids ?? []).filter((v) => v != null);
     if (!list.length) return [];
@@ -548,7 +588,11 @@
     if (!issueFormRef.value || !currentIssuePlanId.value) return;
     const valid = await issueFormRef.value.validate().catch(() => false);
     if (!valid) return;
-    if (issueForm.planStartTime && issueForm.planEndTime && new Date(issueForm.planStartTime) > new Date(issueForm.planEndTime)) {
+    if (
+      issueForm.planStartTime &&
+      issueForm.planEndTime &&
+      new Date(issueForm.planStartTime) > new Date(issueForm.planEndTime)
+    ) {
       ElMessage.error('计划开始日期不能大于计划结束日期');
       return;
     }
@@ -580,13 +624,15 @@
         safetyEmergencyDeptName,
         safetyEmergencyDeptId: issueForm.safetyEmergencyDeptId,
         safetyEmergencyExecutorGroupName: findGroupNameById(issueForm.safetyEmergencyGroupId),
-        safetyEmergencyExecGroupCode: issueForm.safetyEmergencyGroupId != null ? String(issueForm.safetyEmergencyGroupId) : undefined,
+        safetyEmergencyExecGroupCode:
+          issueForm.safetyEmergencyGroupId != null ? String(issueForm.safetyEmergencyGroupId) : undefined,
 
         // 院领导部门
         hospitalLeaderDeptName,
         hospitalLeaderDeptId: issueForm.hospitalLeaderDeptId,
         hospitalLeaderExecutorGroupName: findGroupNameById(issueForm.hospitalLeaderGroupId),
-        hospitalLeaderExecGroupCode: issueForm.hospitalLeaderGroupId != null ? String(issueForm.hospitalLeaderGroupId) : undefined,
+        hospitalLeaderExecGroupCode:
+          issueForm.hospitalLeaderGroupId != null ? String(issueForm.hospitalLeaderGroupId) : undefined,
 
         // 计划时间与开关项
         planStartTime: issueForm.planStartTime,
@@ -651,7 +697,10 @@
       { label: '日常安全', value: '日常安全' },
       { label: '各级危险点', value: '各级危险点' },
       { label: '试验室及试验过程', value: '试验室及试验过程' },
-      { label: '办公区域(含地下车库、图书馆、档案库房、仓库等)', value: '办公区域(含地下车库、图书馆、档案库房、仓库等)' },
+      {
+        label: '办公区域(含地下车库、图书馆、档案库房、仓库等)',
+        value: '办公区域(含地下车库、图书馆、档案库房、仓库等)',
+      },
       { label: '老旧厂房', value: '老旧厂房' },
       { label: '施工现场', value: '施工现场' },
       { label: '职工食堂', value: '职工食堂' },
@@ -673,7 +722,7 @@
       { label: '危险化学品', value: '危险化学品' },
       { label: '设施设备应急操作流程', value: '设施设备应急操作流程' },
       { label: '堆场、物资库房', value: '堆场、物资库房' },
-      { label: '室内外停车场', value: '室内外停车场' }
+      { label: '室内外停车场', value: '室内外停车场' },
     ];
     getTableData();
   });

+ 1 - 1
src/views/production-safety/hiddenTroubleInvestigationAndGovernance/areaCheckPlanManagement/components/areaCheckPlanManagementDetail.vue

@@ -690,7 +690,7 @@ import { id } from 'element-plus/es/locale';
   });
 
   const RECORD_TABLE_COLUMNS: TableColumnProps[] = [
-    { label: '编号', type: 'index', align: 'center', width: '60px' },
+    { label: '编号', type: 'index', align: 'center', width: '80px' },
     { label: '检查时间', prop: 'checkTime', minWidth: '160px' },
     { label: '检查人员', prop: 'checkPerson', minWidth: '100px' },
     { label: '检查场所类别', prop: 'checkPlaceCategory', minWidth: '120px' },

+ 1 - 1
src/views/production-safety/hiddenTroubleInvestigationAndGovernance/areaCheckPlanManagementDept/components/areaCheckPlanManagementDeptDetail.vue

@@ -409,7 +409,7 @@
   });
 
   const RECORD_TABLE_COLUMNS: TableColumnProps[] = [
-    { label: '编号', type: 'index', align: 'center', width: '60px' },
+    { label: '编号', type: 'index', align: 'center', width: '80px' },
     { label: '检查时间', prop: 'checkTime', minWidth: '160px' },
     { label: '检查人员', prop: 'checkPerson', minWidth: '100px' },
     { label: '检查场所类别', prop: 'checkPlaceCategory', minWidth: '120px' },