From dacc95761cf7090c628fc37a5d4f8bb825ccbbb0 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期六, 16 五月 2026 15:41:45 +0800
Subject: [PATCH] 企业新闻和通知公告
---
src/components/Dialog/FileList.vue | 95 ++++++++++++++++++++++++++++++++---------------
1 files changed, 64 insertions(+), 31 deletions(-)
diff --git a/src/components/Dialog/FileList.vue b/src/components/Dialog/FileList.vue
index 136ff8b..b0e78cf 100644
--- a/src/components/Dialog/FileList.vue
+++ b/src/components/Dialog/FileList.vue
@@ -5,7 +5,8 @@
@close="handleClose"
class="attachment-dialog">
<!-- 宸ュ叿鏍� -->
- <div class="toolbar">
+ <div v-if="editable"
+ class="toolbar">
<el-button type="primary"
size="small"
@click="handleUpload">
@@ -16,10 +17,11 @@
<el-dialog v-model="uploadDialogVisible"
title="涓婁紶闄勪欢"
width="50%"
- @close="handleUploadClose">
+ @close="closeUpload">
<AttachmentUpload v-model:file-list="newFileList" />
<template #footer>
- <el-button @click="handleUploadClose">鍏抽棴</el-button>
+ <el-button @click="saveUpload">淇濆瓨</el-button>
+ <el-button @click="closeUpload">鍏抽棴</el-button>
</template>
</el-dialog>
<!-- 鏂囦欢鍒楄〃琛ㄦ牸 -->
@@ -34,17 +36,25 @@
<el-table-column v-if="showActions"
fixed="right"
label="鎿嶄綔"
- :width="120"
+ :width="150"
align="center">
<template #default="scope">
<el-button link
type="primary"
size="small"
- :href="scope.row.downloadURL"
- class="download-link">
- 涓嬭浇
+ class="download-link"
+ @click="previewFile(scope.row.previewURL)">
+ 棰勮
</el-button>
<el-button link
+ type="primary"
+ size="small"
+ class="download-link"
+ @click="downloadFile(scope.row.downloadURL)">
+ 涓嬭浇
+ </el-button>
+ <el-button v-if="editable"
+ link
type="danger"
size="small"
@click="handleDelete(scope.row)">
@@ -55,9 +65,11 @@
</el-table>
</div>
</el-dialog>
+ <filePreview ref="filePreviewRef" />
</template>
<script setup>
+import { ElMessage } from 'element-plus'
import { ref, computed, getCurrentInstance, onMounted, watch } from "vue";
import AttachmentUpload from "@/components/AttachmentUpload/file/index.vue";
import {
@@ -65,6 +77,8 @@
deleteAttachment,
createAttachment,
} from "@/api/basicData/storageAttachment.js";
+ import filePreview from '@/components/filePreview/index.vue'
+ const filePreviewRef = ref()
const props = defineProps({
visible: {
@@ -93,6 +107,10 @@
type: Boolean,
default: true,
},
+ editable: {
+ type: Boolean,
+ default: true,
+ },
});
const emit = defineEmits(["close", "download", "upload", "delete"]);
@@ -115,38 +133,52 @@
isShow.value = false;
};
+ // 棰勮鏂囦欢
+ const previewFile = (url) => {
+ if (url) {
+ filePreviewRef.value.open(url)
+ } else {
+ ElMessage.warning('鏂囦欢鍦板潃鏃犳晥锛屾棤娉曢瑙�')
+ }
+ }
+
const handleUpload = () => {
uploadDialogVisible.value = true;
};
- const handleUploadClose = async () => {
+ const saveUpload = async () => {
// 妫�鏌ユ槸鍚︽湁鏂颁笂浼犵殑鏂囦欢
if (newFileList.value.length > 0) {
- try {
- await createAttachment({
- application: "file",
- recordType: props.recordType,
- recordId: props.recordId,
- storageBlobDTOs: [...newFileList.value, ...tableData.value],
- });
- newFileList.value = [];
- // 鍒锋柊鍒楄〃
- setList();
- } catch (error) {
- proxy?.$modal?.msgError("涓婁紶澶辫触");
- }
+ createAttachment({
+ application: "file",
+ recordType: props.recordType,
+ recordId: props.recordId,
+ storageBlobDTOs: [...newFileList.value, ...tableData.value],
+ }).then((res) => {
+ if (res && res.code === 200) {
+ proxy?.$modal?.msgSuccess("涓婁紶鎴愬姛");
+ newFileList.value = [];
+ // 鍒锋柊鍒楄〃
+ setList();
+ }
+ }).finally(() => {
+ uploadDialogVisible.value = false;
+ })
}
+ }
+
+ const closeUpload = () => {
+ newFileList.value = [];
uploadDialogVisible.value = false;
};
const handleDelete = async (row, index) => {
- try {
- await deleteAttachment([row.storageAttachmentId]);
- proxy?.$modal?.msgSuccess("鍒犻櫎鎴愬姛");
- setList();
- } catch (error) {
- proxy?.$modal?.msgError("鍒犻櫎澶辫触");
- }
+ deleteAttachment([row.storageAttachmentId]).then((res) => {
+ if (res && res.code === 200) {
+ proxy?.$modal?.msgSuccess("鍒犻櫎鎴愬姛");
+ setList();
+ }
+ })
};
const setList = () => {
@@ -154,12 +186,13 @@
recordType: props.recordType,
recordId: props.recordId,
}).then(res => {
- if (res && res.data) {
- tableData.value = res.data || [];
- }
+ tableData.value = (res && res.data) || [];
});
};
+ const downloadFile = url => {
+ window.open(url, "_blank");
+ };
onMounted(() => {
setList();
});
--
Gitblit v1.9.3