Преглед изворни кода

feat:修改制定计划时主责部门支持多选,以及字段更改

sunqijun пре 3 недеља
родитељ
комит
1dfa4e84e9

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

@@ -350,7 +350,7 @@
     responsibleDeptPersonnelGroupCode: [{ required: true, message: '请选择责任部门人员分组', trigger: 'change' }],
     safetyEmergencyDeptId: [{ required: true, message: '请选择安全应急部门', trigger: 'change' }],
     safetyEmergencyGroupId: [{ required: true, message: '请选择安全应急部人员分组', trigger: 'change' }],
-    hospitalLeaderDeptId: [{ required: true, message: '请选择院领导部门', trigger: 'change' }],
+    // hospitalLeaderDeptId: [{ required: true, message: '请选择院领导部门', trigger: 'change' }],
     hospitalLeaderGroupId: [{ required: true, message: '请选择院领导人员分组', trigger: 'change' }],
     planStartTime: [{ required: true, message: '请选择计划开始日期', trigger: 'change' }],
     planEndTime: [{ required: true, message: '请选择计划结束时间', trigger: 'change' }],

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

@@ -1034,15 +1034,15 @@
   const RECORD_TABLE_COLUMNS: TableColumnProps[] = [
     { label: '编号', type: 'index', align: 'center', width: '80px' },
     { label: '检查时间', prop: 'checkTime', minWidth: '160px' },
-    { label: '检查人员', prop: 'checkPerson', minWidth: '100px' },
-    { label: '检查场所类别', prop: 'checkPlaceCategory', minWidth: '120px' },
-    { label: '检查场所', prop: 'checkPlace', minWidth: '120px' },
-    { label: '检查项总数', prop: 'checkItemTotal', align: 'center', width: '100px' },
-    { label: '合格项数', prop: 'qualifiedItemNum', align: 'center', width: '90px' },
-    { label: '不合格项数', prop: 'unqualifiedItemNum', slot: 'unqualifiedItemNum', align: 'center', width: '100px' },
+    { label: '检查人员', prop: 'checkPerson', minWidth: '120px',showOverflowTooltip: true },
+    { label: '检查场所类别', prop: 'checkPlaceCategory', minWidth: '160px' },
+    { label: '检查场所', prop: 'checkPlace', minWidth: '160px' },
+    { label: '检查项总数', prop: 'checkItemTotal', align: 'center', width: '160px' },
+    { label: '合格项数', prop: 'qualifiedItemNum', align: 'center', width: '120px' },
+    { label: '不合格项数', prop: 'unqualifiedItemNum', slot: 'unqualifiedItemNum', align: 'center', width: '180px' },
     { label: '整体检查情况描述', prop: 'overallCheckDesc', minWidth: '180px', showOverflowTooltip: true },
-    { label: '被检查人签字', slot: 'sign', align: 'center', width: '140px' },
-    { label: '操作', slot: 'action', align: 'center', width: '160px', fixed: 'right' },
+    { label: '被检查人签字', slot: 'sign', align: 'center', width: '200px' },
+    { label: '操作', slot: 'action', align: 'center', width: '200px', fixed: 'right' },
   ];
   const RECORD_TABLE_OPTIONS = {
     emptyText: '暂无检查记录',

+ 33 - 5
src/views/production-safety/hiddenTroubleInvestigationAndGovernance/areaCheckPlanManagement/components/areaCheckPlanRecordDetail.vue

@@ -26,12 +26,22 @@
           />
         </el-form-item>
         <el-form-item label="被检查人签字文件:">
-          <div class="upload-files-disabled">
+          <!-- <div class="upload-files-disabled">
             <UploadFiles
               label="上传附件"
               :file-list="signFileList"
             />
-          </div>
+          </div> -->
+            <div class="file-list" v-if="signFileList?.length">
+                <div class="file-item" v-for="li in signFileList" :key="li.fileId">
+                    <span class="file-item--name">{{ li.fileName }}</span>
+                    <div class="file-item--footer">
+                        <el-button link type="primary" @click="previewOnline(li.fileUrl, li.fileType)">预览</el-button>
+                        <el-button link type="primary" @click.stop="downloadFile(li.fileUrl, li.fileName)">下载</el-button>
+                    </div>
+                </div>
+            </div>
+            <span v-else>暂无签字文件</span>
         </el-form-item>
       </el-form>
 
@@ -50,6 +60,7 @@
         </div>
       </div>
     </main>
+    <PreviewOnline ref="previewOnlineRef" />
   </div>
 </template>
 
@@ -59,7 +70,9 @@
   import UploadFiles from '@/components/UploadFiles/UploadFiles.vue';
   import type { FileItem } from '@/components/UploadFiles/types';
   import { queryAreaCheckRecord } from '@/api/production-safety-system';
-
+  import PreviewOnline from '@/views/disaster/components/PreviewOnline.vue';
+  import { downloadFile } from '@/views/disaster/utils';
+  import { unformatAttachment } from '@/components/UploadFiles/utils';
   const route = useRoute();
   const recordId = computed(() => Number(route.query.recordId));
 
@@ -90,8 +103,16 @@
       return { fileId: index + 1, fileName, fileType, fileSize: '0', fileUrl: url };
     });
   }
-
-  const signFileList = computed<FileItem[]>(() => convertSignFileToFileItems(formData.value.signFile || ''));
+  const previewOnlineRef = ref<InstanceType<typeof PreviewOnline>>();
+  const previewOnline = (url: string | undefined, type) => {
+    if (url) {
+      previewOnlineRef.value?.open(url, type);
+    }
+  };
+  const signFileList = computed(() => {
+    if (!formData.value.signFile) return [];
+    return unformatAttachment(formData.value.signFile);
+  });
 
   const checkItems = ref<Array<{
     checkContent?: string;
@@ -174,5 +195,12 @@
       display: none;
     }
   }
+  .file-list {
+    .file-item--name {
+      padding: 6px 14px;
+      border: 1px solid #efefef;
+      border-radius: 8px;
+    }
+  }
 </style>
 

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

@@ -681,15 +681,15 @@
   const RECORD_TABLE_COLUMNS: TableColumnProps[] = [
     { label: '编号', type: 'index', align: 'center', width: '80px' },
     { label: '检查时间', prop: 'checkTime', minWidth: '160px' },
-    { label: '检查人员', prop: 'checkPerson', minWidth: '100px' },
-    { label: '检查场所类别', prop: 'checkPlaceCategory', minWidth: '120px' },
-    { label: '检查场所', prop: 'checkPlace', minWidth: '120px' },
-    { label: '检查项总数', prop: 'checkItemTotal', align: 'center', width: '100px' },
-    { label: '合格项数', prop: 'qualifiedItemNum', align: 'center', width: '90px' },
-    { label: '不合格项数', prop: 'unqualifiedItemNum', slot: 'unqualifiedItemNum', align: 'center', width: '100px' },
-    { label: '整体检查情况描述', prop: 'overallCheckDesc', minWidth: '180px', showOverflowTooltip: true },
-    { label: '被检查人签字', slot: 'sign', align: 'center', width: '140px' },
-    { label: '操作', slot: 'action', align: 'center', width: '160px', fixed: 'right' },
+    { label: '检查人员', prop: 'checkPerson', minWidth: '140px' },
+    { label: '检查场所类别', prop: 'checkPlaceCategory', minWidth: '160px' },
+    { label: '检查场所', prop: 'checkPlace', minWidth: '180px' },
+    { label: '检查项总数', prop: 'checkItemTotal', align: 'center', width: '160px' },
+    { label: '合格项数', prop: 'qualifiedItemNum', align: 'center', width: '140px' },
+    { label: '不合格项数', prop: 'unqualifiedItemNum', slot: 'unqualifiedItemNum', align: 'center', width: '160px' },
+    { label: '整体检查情况描述', prop: 'overallCheckDesc', minWidth: '190px', showOverflowTooltip: true },
+    { label: '被检查人签字', slot: 'sign', align: 'center', width: '180px' },
+    { label: '操作', slot: 'action', align: 'center', width: '180px', fixed: 'right' },
   ];
   const RECORD_TABLE_OPTIONS = {
     emptyText: '暂无检查记录',