|
|
@@ -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();
|