Forráskód Böngészése

Merge branch 'feat/production-safety' of http://14.103.151.10:8888/product-group-fe/sfy-safety-group/sfy-safety into feat/production-safety

sunqijun 3 hete
szülő
commit
9d31b7a9e3

+ 8 - 0
src/api/production-safety-system/index.ts

@@ -776,7 +776,15 @@ const LABEL_TO_FREQUENCY: Record<string, number> = {
 export interface AreaCheckPlanManageApiRecord {
   id?: number; // 主键ID
   areaCheckPlanName?: string; // 区域检查计划名称
+  checkPersonName?: string; // 检查人名称(兼容后端返回)
   checkPlace?: string; // 检查场所
+  checkPerson?: string; // 检查人(兼容后端返回)
+  checkedCompany?: string; // 被检查单位
+  checkedCompanyName?: string; // 被检查单位名称(兼容后端返回)
+  overallDesc?: string; // 整体检查情况描述
+  overallCheckDesc?: string; // 整体检查情况描述(兼容后端返回)
+  checkTime?: string; // 检查时间
+  checkAddress?: string; // 检查场所地址
   checkPlaceCategory?: string; // 检查场所所属类别
   checkCategory?: string; // 检查类别
   status?: number | string; // 状态:0=未开始 1=进行中 2=已完成 3=已终止

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

@@ -500,7 +500,8 @@
 
   import type { CascaderInstance } from 'element-plus'
   import { STATUS_OPTIONS, STATUS_LABEL } from '../configs/status'
-
+  import { useUserInfoHook } from '@/views/disaster/hooks';
+  const { id } = useUserInfoHook();
   const router = useRouter();
   const route = useRoute();
 
@@ -510,7 +511,6 @@
   const viewDetail = computed(() => {
     const d = viewDetailData.value;
     const status = d?.status as number | undefined;
-    console.log(d,'d')
     return {
       ...d,
       responsibleDeptName: d?.responsibleDeptName ?? '-',
@@ -727,6 +727,7 @@
           startDate: start || undefined,
           endDate: end || undefined,
           id: currentId.value,
+          userId: id,
         },
       });
       const raw = (res as { data?: { records?: Array<Record<string, unknown>>; totalRow?: number } })?.data ?? res;
@@ -975,6 +976,7 @@ const onReviewDept = (row)=>{
         operate: 'area-check-plan-record-view',
         recordId: row.id,
         planId: currentId.value,
+        areaPlanId: row.areaPlanId,
         needOverallDesc,
         needSigneeSign,
       },

+ 28 - 10
src/views/production-safety/hiddenTroubleInvestigationAndGovernance/areaCheckPlanManagementDept/components/areaCheckPlanRecordDetailDept.vue

@@ -5,7 +5,7 @@
         <el-input v-model="formData.inspectedUnit" :disabled="!isAddMode || checkType===1" placeholder="请输入被检查单位" clearable />
       </el-form-item>
       <el-form-item label="检查人员:" prop="inspector">
-        <el-input v-model="formData.inspector" :disabled="!isAddMode" placeholder="请输入检查人员" clearable />
+        <el-input v-model="formData.inspector" :disabled="true" placeholder="请输入检查人员" clearable />
       </el-form-item>
       <el-form-item label="检查时间:" prop="checkTime">
         <el-date-picker
@@ -298,9 +298,19 @@
       const res = await fetchDeptAreaCheckRecord(recordId.value);
       const list = res.areaCheckRecords || [];
       checkItemData = res
+
       if(checkType.value === 1){
-        formData.value.inspectedUnit = res.checkedCompanyName || ''
+        formData.value.inspectedUnit = res.checkedCompanyName ?? res.checkedCompany ?? ''
+      }
+      formData.value.inspector = res.checkPersonName ?? res.checkPerson ?? ''
+      formData.value.checkTime = res.checkTime ?? ''
+      formData.value.checkPlace = res.checkAddress ?? res.checkPlace ?? ''
+      formData.value.overallDesc = res.overallCheckDesc || ''
+      if(res.checkedPersonSign){
+       formData.value.signFile = JSON.stringify(convertSignFileToFileItems(String(res.checkedPersonSign || '')))
       }
+      signFileList.value = convertSignFileToFileItems(String(res.checkedPersonSign || ''))
+
       if (Array.isArray(list) && list.length > 0) {
         checkItems.value = list;
       } else {
@@ -339,7 +349,7 @@
   };
   const viewDetailData = ref<Record<string, unknown>>({});
   const authority = ref(false)
-  const currentId = computed(() => Number(route.query.recordId));
+  const currentId = computed(() => Number(route.query.areaPlanId));
   const getDetail = async () => {
     if (!currentId.value) return;
     try {
@@ -348,15 +358,23 @@
       // 若是自查,则被检查单位默认就是本单位,不需要手动输入。
       if(checkType.value === 1){
         authority.value = true
-        formData.value.inspectedUnit = res.responsibleDeptName || ''
+        formData.value.inspectedUnit = res.checkedCompanyName ?? res.checkedCompany ?? ''
       }
+      formData.value.inspector = res.checkPersonName ?? res.checkPerson ?? ''
+      formData.value.checkTime = res.checkTime || ''
+      formData.value.checkPlace = res.checkAddress ?? res.checkPlace ?? ''
+      formData.value.overallDesc = res.overallCheckDesc || ''
+      if(res.checkedPersonSign){
+       formData.value.signFile = JSON.stringify(convertSignFileToFileItems(String(res.checkedPersonSign || '')))
+      }
+      signFileList.value = convertSignFileToFileItems(String(res.checkedPersonSign || ''))
       // 如果主责部门责任人ID包含当前登录人ID,则直接回填(被检查单位、 检查人员、检查时间、检查地点),且不可更改
-    //   let primaryResponsibleDeptPersonCode = res.primaryResponsibleDeptPersonCode?.split(',').map(Number)
-    //   if(primaryResponsibleDeptPersonCode?.includes(id)){
-    //     authority.value = true
-    //     formData.value.inspectedUnit = res.responsibleDeptName || ''
-    //     formData.value.inspector = String(res.primaryResponsibleDeptPersonName) || ''
-    //   }
+      let primaryResponsibleDeptPersonCode = res.primaryResponsibleDeptPersonCode?.split(',').map(Number)
+      if(primaryResponsibleDeptPersonCode?.includes(id)){
+        authority.value = true
+        formData.value.inspectedUnit = res.responsibleDeptName || ''
+        formData.value.inspector = String(res.primaryResponsibleDeptPersonName) || ''
+      }
     } catch (e) {
       console.error('获取详情失败:', e);
     }

+ 25 - 9
src/views/production-safety/hiddenTroubleInvestigationAndGovernance/areaCheckPlanTaskDept/components/areaCheckPlanRecordDetail.vue

@@ -5,7 +5,7 @@
         <el-input v-model="formData.inspectedUnit" :disabled="!isAddMode || checkType===1" placeholder="请输入被检查单位" clearable />
       </el-form-item>
       <el-form-item label="检查人员:" prop="inspector">
-        <el-input v-model="formData.inspector" :disabled="!isAddMode" placeholder="请输入检查人员" clearable />
+        <el-input v-model="formData.inspector" :disabled="true" placeholder="请输入检查人员" clearable />
       </el-form-item>
       <el-form-item label="检查时间:" prop="checkTime">
         <el-date-picker
@@ -313,8 +313,16 @@
       const list = res.areaCheckRecords || [];
       checkItemData = res
       if(checkType.value === 1){
-        formData.value.inspectedUnit = res.checkedCompanyName || ''
+        formData.value.inspectedUnit = res.responsibleDeptName || ''
+      }
+      formData.value.inspector = res.checkPersonName ?? res.checkPerson ?? ''
+      formData.value.checkTime = res.checkTime || ''
+      formData.value.checkPlace = res.checkAddress ?? res.checkPlace ?? ''
+      formData.value.overallDesc = res.overallCheckDesc || ''
+      if(res.checkedPersonSign){
+       formData.value.signFile = JSON.stringify(convertSignFileToFileItems(String(res.checkedPersonSign || '')))
       }
+      signFileList.value = convertSignFileToFileItems(String(res.checkedPersonSign || ''))
       if (Array.isArray(list) && list.length > 0) {
         checkItems.value = list;
       } else {
@@ -352,7 +360,7 @@
   };
 
   const authority = ref(false)
-  const currentId = computed(() => Number(route.query.recordId));
+  const currentId = computed(() => Number(route.query.planId));
   const getDetail = async () => {
     if (!currentId.value) return;
     try {
@@ -363,13 +371,21 @@
         authority.value = true
         formData.value.inspectedUnit = res.responsibleDeptName || ''
       }
+      formData.value.inspector = res.checkPersonName ?? res.checkPerson ?? ''
+      formData.value.checkTime = res.checkTime || ''
+      formData.value.checkPlace = res.checkAddress ?? res.checkPlace ?? ''
+      formData.value.overallDesc = res.overallCheckDesc || ''
+      if(res.checkedPersonSign){
+       formData.value.signFile = JSON.stringify(convertSignFileToFileItems(String(res.checkedPersonSign || '')))
+      }
+      signFileList.value = convertSignFileToFileItems(String(res.checkedPersonSign || ''))
       // 如果主责部门责任人ID包含当前登录人ID,则直接回填(被检查单位、 检查人员、检查时间、检查地点),且不可更改
-    //   let primaryResponsibleDeptPersonCode = res.primaryResponsibleDeptPersonCode?.split(',').map(Number)
-    //   if(primaryResponsibleDeptPersonCode?.includes(id)){
-    //     authority.value = true
-    //     formData.value.inspectedUnit = res.responsibleDeptName || ''
-    //     formData.value.inspector = String(res.primaryResponsibleDeptPersonName) || ''
-    //   }
+      let primaryResponsibleDeptPersonCode = res.primaryResponsibleDeptPersonCode?.split(',').map(Number)
+      if(primaryResponsibleDeptPersonCode?.includes(id)){
+        authority.value = true
+        formData.value.inspectedUnit = res.responsibleDeptName || ''
+        formData.value.inspector = String(res.primaryResponsibleDeptPersonName) || ''
+      }
     } catch (e) {
       console.error('获取详情失败:', e);
     }

+ 4 - 2
src/views/production-safety/hiddenTroubleInvestigationAndGovernance/hiddenTroubleAccountManagement/components/hiddenTroubleAccountManagementDetail.vue

@@ -33,6 +33,8 @@
           placeholder="请输入隐患问题描述"
           :disabled="isViewMode"
           style="width: 450px"
+          type="textarea"
+          :autosize="{ minRows: 3, maxRows: 6 }"
         />
       </el-form-item>
 
@@ -72,7 +74,7 @@
         />
       </el-form-item>
 
-      <el-form-item label="整改责任部门:" prop="rectificationDepartmentId" v-if="ruleFormData.statusId !== 1 && !isCreateMode">
+      <el-form-item label="整改责任部门:" prop="rectificationDepartmentId" v-if="ruleFormData.statusId !== 1 && !isCreateMode && !isEditMode">
         <el-input
           v-model="ruleFormData.rectificationDepartmentNames"
           placeholder="整改责任部门"
@@ -81,7 +83,7 @@
         />
       </el-form-item>
 
-      <el-form-item label="整改负责人:" prop="rectificationResponsibleUserId" v-if="ruleFormData.statusId !== 1 && !isCreateMode">
+      <el-form-item label="整改负责人:" prop="rectificationResponsibleUserId" v-if="ruleFormData.statusId !== 1 && !isCreateMode && !isEditMode">
         <el-input
           v-model="ruleFormData.rectificationResponsiblePerson"
           placeholder="整改负责人"

+ 11 - 3
src/views/production-safety/hiddenTroubleInvestigationAndGovernance/hiddenTroubleAccountManagement/configs/tables.ts

@@ -1,3 +1,10 @@
+/*
+ * @Author: liuJie
+ * @Date: 2026-03-24 10:58:31
+ * @LastEditors: liuJie
+ * @LastEditTime: 2026-04-13 14:16:58
+ * @Describe: file describe
+ */
 import type { TableColumnProps } from '@/types/basic-table';
 
 // 基础表格样式配置
@@ -26,18 +33,19 @@ export const HIDDEN_DANGER_TABLE_COLUMNS: TableColumnProps[] = [
     prop: 'dangerProblem',
     align: 'left',
     minWidth: '200px',
+    showOverflowTooltip: true,
   },
   {
     label: '问题主要原因',
     prop: 'reasonName',
     align: 'left',
-    minWidth: '140px',
+    minWidth: '160px',
   },
   {
     label: '入账时间',
     prop: 'createdAt',
     align: 'left',
-    minWidth: '160px',
+    minWidth: '200px',
   },
   {
     label: '任务来源',
@@ -84,7 +92,7 @@ export const HIDDEN_DANGER_TABLE_COLUMNS: TableColumnProps[] = [
     // prop: 'currentNode',
     slot: 'currentNode',
     align: 'center',
-    minWidth: '150px',
+    minWidth: '180px',
   },
   {
     label: '操作',

+ 2 - 2
src/views/production-safety/productionSafetySystem/safetySystemConstructionWorkPlanManagement/configs/tables.ts

@@ -2,7 +2,7 @@
  * @Author: liuJie
  * @Date: 2026-01-28 11:03:32
  * @LastEditors: liuJie
- * @LastEditTime: 2026-04-09 10:15:53
+ * @LastEditTime: 2026-04-13 17:26:51
  * @Describe: file describe
  */
 import type { TableColumnProps } from '@/types/basic-table';
@@ -69,7 +69,7 @@ export const WORK_PLAN_TABLE_COLUMNS: TableColumnProps[] = [
     minWidth: '200px',
   },
   {
-    label: '培训计划名称',
+    label: '安全体系计划名称',
     prop: 'trainingPlanName',
     align: 'left',
     minWidth: '220px',

+ 3 - 3
src/views/production-safety/productionSafetySystem/safetySystemConstructionWorkPlanManagementDept/configs/tables.ts

@@ -2,7 +2,7 @@
  * @Author: liuJie
  * @Date: 2026-01-28 11:03:32
  * @LastEditors: liuJie
- * @LastEditTime: 2026-04-09 15:09:20
+ * @LastEditTime: 2026-04-13 17:27:42
  * @Describe: file describe
  */
 import type { TableColumnProps } from '@/types/basic-table';
@@ -60,10 +60,10 @@ export const WORK_PLAN_TABLE_COLUMNS: TableColumnProps[] = [
     minWidth: '140px',
   },
   {
-    label: '培训计划名称',
+    label: '安全体系计划名称',
     prop: 'trainingPlanName',
     align: 'left',
-    minWidth: '150px',
+    minWidth: '220px',
     showOverflowTooltip: true,
   },
   {