|
|
@@ -14,13 +14,27 @@
|
|
|
</template>
|
|
|
<template #fileUrl>
|
|
|
<UploadFiles
|
|
|
+ v-if="!isViewMode"
|
|
|
label="上传文件"
|
|
|
:maxCount="1"
|
|
|
:file-list="ruleFormData.fileUrlList"
|
|
|
- :disabled="isViewMode"
|
|
|
:allow-all-file-types="true"
|
|
|
- @uploadSuccess="(list: FileItem[]) => handleUploadSuccess(list)"
|
|
|
+ @uploadSuccess="(list: FileItem[]) => handleUploadSuccess(list)"
|
|
|
+ @preview="handlePreview"
|
|
|
/>
|
|
|
+ <div class="file-list" v-else>
|
|
|
+ <div class="file-item" v-for="file in ruleFormData.fileUrlList" :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>
|
|
|
</template>
|
|
|
<template #content>
|
|
|
<div class="editor-container" v-if="!isViewMode">
|
|
|
@@ -46,6 +60,7 @@
|
|
|
</el-radio-group>
|
|
|
</template>
|
|
|
</BasicForm>
|
|
|
+ <PreviewOnline ref="previewOnlineRef" />
|
|
|
</main>
|
|
|
<footer class="safety-platform-container__footer">
|
|
|
<el-button @click="router.back()">返回</el-button>
|
|
|
@@ -73,10 +88,13 @@
|
|
|
} from '@/api/production-safety-system';
|
|
|
import type { FileItem } from '@/components/UploadFiles/types';
|
|
|
import { formatAttachmentList } from '@/components/UploadFiles/utils';
|
|
|
+ import PreviewOnline from '@/views/disaster/components/PreviewOnline.vue';
|
|
|
|
|
|
const router = useRouter();
|
|
|
const route = useRoute();
|
|
|
|
|
|
+ const previewOnlineRef = ref<InstanceType<typeof PreviewOnline>>();
|
|
|
+
|
|
|
const operate = computed(() => (route.query.operate as string) || 'law-regulation-create');
|
|
|
const currentId = computed(() => Number(route.query.id));
|
|
|
|
|
|
@@ -235,8 +253,11 @@
|
|
|
// // 合并已有URL和新上传的URL,取第一个作为fileUrl
|
|
|
// const allUrls = [...existingFiles, ...uploadedUrls].filter((url: string) => url);
|
|
|
// fileUrl = allUrls.length > 0 ? allUrls[0] : '';
|
|
|
+ // debugger
|
|
|
// }
|
|
|
|
|
|
+ const uploadedFileList = await formatAttachmentList(ruleFormData.fileUrlList);
|
|
|
+
|
|
|
const basePayload: ProductionSafetyFile = {
|
|
|
fileName: ruleFormData.fileName,
|
|
|
classifyName: ruleFormData.classifyName,
|
|
|
@@ -244,7 +265,7 @@
|
|
|
fileVersion: ruleFormData.fileVersion,
|
|
|
fileFormat: ruleFormData.fileFormat,
|
|
|
releaseDate: ruleFormData.releaseDate,
|
|
|
- fileUrl: JSON.stringify(ruleFormData.fileUrlList) || undefined,
|
|
|
+ fileUrl: JSON.stringify(uploadedFileList) || undefined,
|
|
|
content: ruleFormData.content || undefined,
|
|
|
status: ruleFormData.status ?? 1,
|
|
|
};
|
|
|
@@ -267,6 +288,28 @@
|
|
|
}
|
|
|
};
|
|
|
|
|
|
+ const handlePreview = (url: string) => {
|
|
|
+ if (url) {
|
|
|
+ // 根据文件扩展名判断文件类型
|
|
|
+ const extension = url.split('.').pop()?.toLowerCase() || '';
|
|
|
+ let fileType: 'pdf' | 'word' | 'excel' | 'ppt' = 'pdf';
|
|
|
+ if (extension === 'doc' || extension === 'docx') {
|
|
|
+ fileType = 'word';
|
|
|
+ } else if (extension === 'xls' || extension === 'xlsx') {
|
|
|
+ fileType = 'excel';
|
|
|
+ } else if (extension === 'ppt' || extension === 'pptx') {
|
|
|
+ fileType = 'ppt';
|
|
|
+ }
|
|
|
+ previewOnlineRef.value?.open(url, fileType);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ const previewOnline = (url: string | undefined, type) => {
|
|
|
+ if (url) {
|
|
|
+ previewOnlineRef.value?.open(url, type);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
onMounted(() => {
|
|
|
cloneRuleFormData();
|
|
|
beforeRouteLeave();
|