Quellcode durchsuchen

fix: 修改参数信息

xiaweibo vor 2 Monaten
Ursprung
Commit
791a8d4a97

+ 1 - 1
src/views/production-safety/productionSafetySystem/safetyTraining/safetyTraining.vue

@@ -231,7 +231,7 @@
   // 批量导入
   const batchImportVisible = ref(false);
   const { urlPrefix } = useGlobSetting();
-  const importApiUrl = ref(urlJoin(urlPrefix, '/api/admin/prod/industryStandard/importIndustryStandard'));
+  const importApiUrl = ref(urlJoin(urlPrefix, '/admin/prod/industryStandard/importIndustryStandard'));
   const templateUrl = ref('./skyeye-file-upload/sfysecurity/TEMPLATE/import-industry-standard-template.xlsx');
 
   const handleImport = () => {

+ 198 - 28
src/views/production-safety/risk-identification-and-control/work-injury-apply-manage/components/detail.vue

@@ -39,77 +39,215 @@
           @change="handleChangeDept"
         />
       </template>
+
       <template #accidentReport>
         <UploadFiles
+          v-if="!isViewMode && !isAuditMode"
           label="上传事故报告"
+          :maxCount="1"
           :file-list="accidentCertUrl"
           :disabled="isViewMode || isAuditMode"
           @uploadSuccess="handleAccidentReportUploadSuccess"
-          @preview="handlePreview"
         />
+        <div class="file-list" v-else>
+          <div v-if="accidentCertUrl && accidentCertUrl.length > 0">
+            <div class="file-item" v-for="file in accidentCertUrl" :key="file.fileId">
+              <span class="file-item--name">{{ file.fileName }}</span>
+              <div class="file-item--footer">
+                <el-button link type="primary" @click="previewOnline(file.fileUrl, file.fileType)"
+                  >预览</el-button
+                >
+                <el-button link type="primary" @click.stop="downloadFile(file.fileUrl, file.fileName)"
+                  >下载</el-button
+                >
+              </div>
+            </div>
+          </div>
+          <div v-else class="no-attachment">暂无附件</div>
+        </div>
       </template>
+
       <template #powerOfAttorney>
         <UploadFiles
+          v-if="!isViewMode && !isAuditMode"
           label="上传委托书"
+          :maxCount="1"
           :file-list="powerAttorneyUrl"
           :disabled="isViewMode || isAuditMode"
           @uploadSuccess="handlePowerOfAttorneyUploadSuccess"
-          @preview="handlePreview"
         />
+        <div class="file-list" v-else>
+          <div v-if="powerAttorneyUrl && powerAttorneyUrl.length > 0">
+            <div class="file-item" v-for="file in powerAttorneyUrl" :key="file.fileId">
+              <span class="file-item--name">{{ file.fileName }}</span>
+              <div class="file-item--footer">
+                <el-button link type="primary" @click="previewOnline(file.fileUrl, file.fileType)"
+                  >预览</el-button
+                >
+                <el-button link type="primary" @click.stop="downloadFile(file.fileUrl, file.fileName)"
+                  >下载</el-button
+                >
+              </div>
+            </div>
+          </div>
+          <div v-else class="no-attachment">暂无附件</div>
+        </div>
       </template>
       <template #addressConfirmation>
         <UploadFiles
+          v-if="!isViewMode && !isAuditMode"
           label="上传地址确认书"
+          :maxCount="1"
           :file-list="addressConfirmUrl"
           :disabled="isViewMode || isAuditMode"
           @uploadSuccess="handleAddressConfirmationUploadSuccess"
-          @preview="handlePreview"
         />
+        <div class="file-list" v-else>
+          <div v-if="addressConfirmUrl && addressConfirmUrl.length > 0">
+            <div class="file-item" v-for="file in addressConfirmUrl" :key="file.fileId">
+              <span class="file-item--name">{{ file.fileName }}</span>
+              <div class="file-item--footer">
+                <el-button link type="primary" @click="previewOnline(file.fileUrl, file.fileType)"
+                  >预览</el-button
+                >
+                <el-button link type="primary" @click.stop="downloadFile(file.fileUrl, file.fileName)"
+                  >下载</el-button
+                >
+              </div>
+            </div>
+          </div>
+          <div v-else class="no-attachment">暂无附件</div>
+        </div>
       </template>
       <template #applicationForm>
         <UploadFiles
+          v-if="!isViewMode && !isAuditMode"
           label="上传申请表"
+          :maxCount="1"
           :file-list="applicationFormUrl"
           :disabled="isViewMode || isAuditMode"
           @uploadSuccess="handleApplicationFormUploadSuccess"
-          @preview="handlePreview"
         />
+        <div class="file-list" v-else>
+          <div v-if="applicationFormUrl && applicationFormUrl.length > 0">
+            <div class="file-item" v-for="file in applicationFormUrl" :key="file.fileId">
+              <span class="file-item--name">{{ file.fileName }}</span>
+              <div class="file-item--footer">
+                <el-button link type="primary" @click="previewOnline(file.fileUrl, file.fileType)"
+                  >预览</el-button
+                >
+                <el-button link type="primary" @click.stop="downloadFile(file.fileUrl, file.fileName)"
+                  >下载</el-button
+                >
+              </div>
+            </div>
+          </div>
+          <div v-else class="no-attachment">暂无附件</div>
+        </div>
       </template>
       <template #idCard>
         <UploadFiles
+          v-if="!isViewMode && !isAuditMode"
           label="上传身份证正反面"
+          :maxCount="1"
           :file-list="idCardUrl"
           :disabled="isViewMode || isAuditMode"
           @uploadSuccess="handleIdCardUploadSuccess"
-          @preview="handlePreview"
         />
+        <div class="file-list" v-else>
+          <div v-if="idCardUrl && idCardUrl.length > 0">
+            <div class="file-item" v-for="file in idCardUrl" :key="file.fileId">
+              <span class="file-item--name">{{ file.fileName }}</span>
+              <div class="file-item--footer">
+                <el-button link type="primary" @click="previewOnline(file.fileUrl, file.fileType)"
+                  >预览</el-button
+                >
+                <el-button link type="primary" @click.stop="downloadFile(file.fileUrl, file.fileName)"
+                  >下载</el-button
+                >
+              </div>
+            </div>
+          </div>
+          <div v-else class="no-attachment">暂无附件</div>
+        </div>
       </template>
       <template #laborContract>
         <UploadFiles
+          v-if="!isViewMode && !isAuditMode"
           label="上传劳动合同"
+          :maxCount="1"
           :file-list="laborContractUrl"
           :disabled="isViewMode || isAuditMode"
           @uploadSuccess="handleLaborContractUploadSuccess"
-          @preview="handlePreview"
         />
+        <div class="file-list" v-else>
+          <div v-if="laborContractUrl && laborContractUrl.length > 0">
+            <div class="file-item" v-for="file in laborContractUrl" :key="file.fileId">
+              <span class="file-item--name">{{ file.fileName }}</span>
+              <div class="file-item--footer">
+                <el-button link type="primary" @click="previewOnline(file.fileUrl, file.fileType)"
+                  >预览</el-button
+                >
+                <el-button link type="primary" @click.stop="downloadFile(file.fileUrl, file.fileName)"
+                  >下载</el-button
+                >
+              </div>
+            </div>
+          </div>
+          <div v-else class="no-attachment">暂无附件</div>
+        </div>
       </template>
       <template #initialMedicalCertificate>
         <UploadFiles
+          v-if="!isViewMode && !isAuditMode"
           label="上传初次医疗证明"
+          :maxCount="1"
           :file-list="initialMedicalCertUrl"
           :disabled="isViewMode || isAuditMode"
           @uploadSuccess="handleInitialMedicalCertificateUploadSuccess"
-          @preview="handlePreview"
         />
+        <div class="file-list" v-else>
+          <div v-if="initialMedicalCertUrl && initialMedicalCertUrl.length > 0">
+            <div class="file-item" v-for="file in initialMedicalCertUrl" :key="file.fileId">
+              <span class="file-item--name">{{ file.fileName }}</span>
+              <div class="file-item--footer">
+                <el-button link type="primary" @click="previewOnline(file.fileUrl, file.fileType)"
+                  >预览</el-button
+                >
+                <el-button link type="primary" @click.stop="downloadFile(file.fileUrl, file.fileName)"
+                  >下载</el-button
+                >
+              </div>
+            </div>
+          </div>
+          <div v-else class="no-attachment">暂无附件</div>
+        </div>
       </template>
       <template #agentIdCard>
         <UploadFiles
+          v-if="!isViewMode && !isAuditMode"
           label="上传被委托人员身份证正反面"
+          :maxCount="1"
           :file-list="trusteeIdCardUrl"
           :disabled="isViewMode || isAuditMode"
           @uploadSuccess="handleAgentIdCardUploadSuccess"
-          @preview="handlePreview"
         />
+        <div class="file-list" v-else>
+          <div v-if="trusteeIdCardUrl && trusteeIdCardUrl.length > 0">
+            <div class="file-item" v-for="file in trusteeIdCardUrl" :key="file.fileId">
+              <span class="file-item--name">{{ file.fileName }}</span>
+              <div class="file-item--footer">
+                <el-button link type="primary" @click="previewOnline(file.fileUrl, file.fileType)"
+                  >预览</el-button
+                >
+                <el-button link type="primary" @click.stop="downloadFile(file.fileUrl, file.fileName)"
+                  >下载</el-button
+                >
+              </div>
+            </div>
+          </div>
+          <div v-else class="no-attachment">暂无附件</div>
+        </div>
       </template>
       <template #status>
         <el-radio-group v-model="ruleFormData.status" :disabled="isViewMode">
@@ -245,7 +383,9 @@
   import { useEmergencySuppliesHook } from '@/views/emergency/emergency-supplies/src/hook';
   import { useEmergencyHook } from '@/views/emergency/src/hoos';
   import { getApprovalNodeInstanceList } from '@/api/approval/approval';
-import { template } from 'lodash-es';
+  import { template } from 'lodash-es';
+  import { downloadFile } from '@/views/disaster/utils';
+
 
   const router = useRouter();
   const route = useRoute();
@@ -456,9 +596,12 @@ import { template } from 'lodash-es';
     try {
       const list = await formatAttachmentList(files);
       const jsonArr = (list || []).map((r) => ({
-        file_name: r.fileName,
-        url: r.fileUrl || '',
-      })).filter((x) => x.url);
+        fileName: r.fileName,
+        fileId: r.fileId || '',
+        fileSize: r.fileSize || '',
+        fileType: r.fileType || '',
+        fileUrl: r.fileUrl || '',
+      })).filter((x) => x.fileId);
       ruleFormData.accidentCertUrl = JSON.stringify(jsonArr);
     } catch (e) {
       console.error('事故报告上传失败:', e);
@@ -474,9 +617,12 @@ import { template } from 'lodash-es';
     try {
       const list = await formatAttachmentList(files);
       const jsonArr = (list || []).map((r) => ({
-        file_name: r.fileName,
-        url: r.fileUrl || '',
-      })).filter((x) => x.url);
+        fileName: r.fileName,
+        fileId: r.fileId || '',
+        fileSize: r.fileSize || '',
+        fileType: r.fileType || '',
+        fileUrl: r.fileUrl || '',
+      })).filter((x) => x.fileId);
       ruleFormData.powerAttorneyUrl = JSON.stringify(jsonArr);
     } catch (e) {
       console.error('委托书上传失败:', e);
@@ -493,8 +639,11 @@ import { template } from 'lodash-es';
       const list = await formatAttachmentList(files);
       const jsonArr = (list || []).map((r) => ({
         file_name: r.fileName,
-        url: r.fileUrl || '',
-      })).filter((x) => x.url);
+        fileId: r.fileId || '',
+        fileSize: r.fileSize || '',
+        fileType: r.fileType || '',
+        fileUrl: r.fileUrl || '',
+      })).filter((x) => x.fileId);
       ruleFormData.addressConfirmUrl = JSON.stringify(jsonArr);
     } catch (e) {
       console.error('地址确认书上传失败:', e);
@@ -511,8 +660,11 @@ import { template } from 'lodash-es';
       const list = await formatAttachmentList(files);
       const jsonArr = (list || []).map((r) => ({
         file_name: r.fileName,
-        url: r.fileUrl || '',
-      })).filter((x) => x.url);
+        fileId: r.fileId || '',
+        fileSize: r.fileSize || '',
+        fileType: r.fileType || '',
+        fileUrl: r.fileUrl || '',
+      })).filter((x) => x.fileId);
       ruleFormData.applicationFormUrl = JSON.stringify(jsonArr);
     } catch (e) {
       console.error('申请表上传失败:', e);
@@ -528,9 +680,12 @@ import { template } from 'lodash-es';
     try {
       const list = await formatAttachmentList(files);
       const jsonArr = (list || []).map((r) => ({
-        file_name: r.fileName,
-        url: r.fileUrl || '',
-      })).filter((x) => x.url);
+        fileName: r.fileName,
+        fileId: r.fileId || '',
+        fileSize: r.fileSize || '',
+        fileType: r.fileType || '',
+        fileUrl: r.fileUrl || '',
+      })).filter((x) => x.fileId);
       ruleFormData.idCardUrl = JSON.stringify(jsonArr);
     } catch (e) {
       console.error('身份证正反面上传失败:', e);
@@ -547,8 +702,11 @@ import { template } from 'lodash-es';
       const list = await formatAttachmentList(files);
       const jsonArr = (list || []).map((r) => ({
         file_name: r.fileName,
-        url: r.fileUrl || '',
-      })).filter((x) => x.url);
+        fileId: r.fileId || '',
+        fileSize: r.fileSize || '',
+        fileType: r.fileType || '',
+        fileUrl: r.fileUrl || '',
+      })).filter((x) => x.fileId);
       ruleFormData.laborContractUrl = JSON.stringify(jsonArr);
     } catch (e) {
       console.error('劳动合同上传失败:', e);
@@ -565,8 +723,11 @@ import { template } from 'lodash-es';
       const list = await formatAttachmentList(files);
       const jsonArr = (list || []).map((r) => ({
         file_name: r.fileName,
-        url: r.fileUrl || '',
-      })).filter((x) => x.url);
+        fileId: r.fileId || '',
+        fileSize: r.fileSize || '',
+        fileType: r.fileType || '',
+        fileUrl: r.fileUrl || '',
+      })).filter((x) => x.fileId);
       ruleFormData.initialMedicalCertUrl = JSON.stringify(jsonArr);
     } catch (e) {
       console.error('初次医疗证明上传失败:', e);
@@ -583,8 +744,11 @@ import { template } from 'lodash-es';
       const list = await formatAttachmentList(files);
       const jsonArr = (list || []).map((r) => ({
         file_name: r.fileName,
-        url: r.fileUrl || '',
-      })).filter((x) => x.url);
+        fileId: r.fileId || '',
+        fileSize: r.fileSize || '',
+        fileType: r.fileType || '',
+        fileUrl: r.fileUrl || '',
+      })).filter((x) => x.fileId);
       ruleFormData.trusteeIdCardUrl = JSON.stringify(jsonArr);
     } catch (e) {
       console.error('被委托人员身份证正反面上传失败:', e);
@@ -671,6 +835,12 @@ import { template } from 'lodash-es';
     }
   }
 
+  const previewOnline = (url: string | undefined, type) => {
+    if (url) {
+      previewOnlineRef.value?.open(url, type);
+    }
+  };
+
   onMounted(() => {
     cloneRuleFormData();
     beforeRouteLeave();