From 8bba0a2d08c7abc07604a0654661efc884e5d751 Mon Sep 17 00:00:00 2001
From: yyb <995253665@qq.com>
Date: 星期六, 16 五月 2026 15:23:17 +0800
Subject: [PATCH] 审批列表和审批模板页面

---
 src/components/Dialog/FileList.vue |   70 ++++++++++++++++++++++-------------
 1 files changed, 44 insertions(+), 26 deletions(-)

diff --git a/src/components/Dialog/FileList.vue b/src/components/Dialog/FileList.vue
index 6e0ca23..b0e78cf 100644
--- a/src/components/Dialog/FileList.vue
+++ b/src/components/Dialog/FileList.vue
@@ -36,9 +36,16 @@
         <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"
+                       class="download-link"
+                       @click="previewFile(scope.row.previewURL)">
+              棰勮
+            </el-button>
             <el-button link
                        type="primary"
                        size="small"
@@ -58,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 {
@@ -68,6 +77,8 @@
     deleteAttachment,
     createAttachment,
   } from "@/api/basicData/storageAttachment.js";
+  import filePreview from '@/components/filePreview/index.vue'
+  const filePreviewRef = ref()
 
   const props = defineProps({
     visible: {
@@ -122,6 +133,15 @@
     isShow.value = false;
   };
 
+  // 棰勮鏂囦欢
+  const previewFile = (url) => {
+    if (url) {
+      filePreviewRef.value.open(url)
+    } else {
+      ElMessage.warning('鏂囦欢鍦板潃鏃犳晥锛屾棤娉曢瑙�')
+    }
+  }
+
   const handleUpload = () => {
     uploadDialogVisible.value = true;
   };
@@ -129,22 +149,23 @@
   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;
+      })
     }
-    uploadDialogVisible.value = false;
-  };
+  }
 
   const closeUpload = () => {
     newFileList.value = [];
@@ -152,13 +173,12 @@
   };
 
   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 = () => {
@@ -166,9 +186,7 @@
       recordType: props.recordType,
       recordId: props.recordId,
     }).then(res => {
-      if (res && res.data) {
-        tableData.value = res.data || [];
-      }
+      tableData.value = (res && res.data) || [];
     });
   };
 

--
Gitblit v1.9.3