From 54274cf2cb44da9b7eac1f324cee9ad653936aef Mon Sep 17 00:00:00 2001
From: zhangwencui <1064582902@qq.com>
Date: 星期四, 30 四月 2026 11:58:25 +0800
Subject: [PATCH] Merge branch 'dev_NEW_pro' of http://114.132.189.42:9002/r/product-inventory-management into dev_NEW_pro

---
 src/components/Dialog/FileList.vue |  308 ++++++++++++++++++++++++++------------------------
 1 files changed, 159 insertions(+), 149 deletions(-)

diff --git a/src/components/Dialog/FileList.vue b/src/components/Dialog/FileList.vue
index 136ff8b..1506b25 100644
--- a/src/components/Dialog/FileList.vue
+++ b/src/components/Dialog/FileList.vue
@@ -13,13 +13,15 @@
       </el-button>
     </div>
     <!-- 涓婁紶缁勪欢寮圭獥 -->
-    <el-dialog v-model="uploadDialogVisible"
-               title="涓婁紶闄勪欢"
-               width="50%"
-               @close="handleUploadClose">
-      <AttachmentUpload v-model:file-list="newFileList" />
+    <el-dialog
+        v-model="uploadDialogVisible"
+        title="涓婁紶闄勪欢"
+        width="50%"
+        @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>
     <!-- 鏂囦欢鍒楄〃琛ㄦ牸 -->
@@ -30,7 +32,7 @@
                 :height="tableData.length > 0 ? 'auto' : '120px'">
         <el-table-column label="闄勪欢鍚嶇О"
                          prop="originalFilename"
-                         show-overflow-tooltip />
+                         show-overflow-tooltip/>
         <el-table-column v-if="showActions"
                          fixed="right"
                          label="鎿嶄綔"
@@ -40,8 +42,8 @@
             <el-button link
                        type="primary"
                        size="small"
-                       :href="scope.row.downloadURL"
-                       class="download-link">
+                       class="download-link"
+                       @click="downloadFile(scope.row.downloadURL)">
               涓嬭浇
             </el-button>
             <el-button link
@@ -58,173 +60,181 @@
 </template>
 
 <script setup>
-  import { ref, computed, getCurrentInstance, onMounted, watch } from "vue";
-  import AttachmentUpload from "@/components/AttachmentUpload/file/index.vue";
-  import {
-    attachmentList,
-    deleteAttachment,
-    createAttachment,
-  } from "@/api/basicData/storageAttachment.js";
+import {ref, computed, getCurrentInstance, onMounted, watch} from "vue";
+import AttachmentUpload from "@/components/AttachmentUpload/file/index.vue";
+import {
+  attachmentList,
+  deleteAttachment,
+  createAttachment,
+} from "@/api/basicData/storageAttachment.js";
 
-  const props = defineProps({
-    visible: {
-      type: Boolean,
-      required: true,
-    },
-    recordType: {
-      type: String,
-      default: "",
-      required: true,
-    },
-    recordId: {
-      type: Number,
-      default: 0,
-      required: true,
-    },
-    title: {
-      type: String,
-      default: "闄勪欢",
-    },
-    width: {
-      type: String,
-      default: "50%",
-    },
-    showActions: {
-      type: Boolean,
-      default: true,
-    },
-  });
+const props = defineProps({
+  visible: {
+    type: Boolean,
+    required: true,
+  },
+  recordType: {
+    type: String,
+    default: "",
+    required: true,
+  },
+  recordId: {
+    type: Number,
+    default: 0,
+    required: true,
+  },
+  title: {
+    type: String,
+    default: "闄勪欢",
+  },
+  width: {
+    type: String,
+    default: "50%",
+  },
+  showActions: {
+    type: Boolean,
+    default: true,
+  },
+});
 
-  const emit = defineEmits(["close", "download", "upload", "delete"]);
+const emit = defineEmits(["close", "download", "upload", "delete"]);
 
-  const { proxy } = getCurrentInstance();
-  const tableData = ref([]);
-  const uploadDialogVisible = ref(false);
-  const newFileList = ref([]);
+const {proxy} = getCurrentInstance();
+const tableData = ref([]);
+const uploadDialogVisible = ref(false);
+const newFileList = ref([]);
 
-  const isShow = computed({
-    get() {
-      return props.visible;
-    },
-    set(val) {
-      emit("update:visible", val);
-    },
-  });
+const isShow = computed({
+  get() {
+    return props.visible;
+  },
+  set(val) {
+    emit("update:visible", val);
+  },
+});
 
-  const handleClose = () => {
-    isShow.value = false;
-  };
+const handleClose = () => {
+  isShow.value = false;
+};
 
-  const handleUpload = () => {
-    uploadDialogVisible.value = true;
-  };
+const handleUpload = () => {
+  uploadDialogVisible.value = true;
+};
 
-  const handleUploadClose = 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("涓婁紶澶辫触");
-      }
-    }
-    uploadDialogVisible.value = false;
-  };
-
-  const handleDelete = async (row, index) => {
+const saveUpload = async () => {
+  // 妫�鏌ユ槸鍚︽湁鏂颁笂浼犵殑鏂囦欢
+  if (newFileList.value.length > 0) {
     try {
-      await deleteAttachment([row.storageAttachmentId]);
-      proxy?.$modal?.msgSuccess("鍒犻櫎鎴愬姛");
+      await createAttachment({
+        application: "file",
+        recordType: props.recordType,
+        recordId: props.recordId,
+        storageBlobDTOs: [...newFileList.value, ...tableData.value],
+      });
+      newFileList.value = [];
+      // 鍒锋柊鍒楄〃
       setList();
     } catch (error) {
-      proxy?.$modal?.msgError("鍒犻櫎澶辫触");
+      proxy?.$modal?.msgError("涓婁紶澶辫触");
     }
-  };
+  }
+  uploadDialogVisible.value = false;
+};
 
-  const setList = () => {
-    attachmentList({
-      recordType: props.recordType,
-      recordId: props.recordId,
-    }).then(res => {
-      if (res && res.data) {
-        tableData.value = res.data || [];
-      }
-    });
-  };
+const closeUpload = () => {
+  newFileList.value = [];
+  uploadDialogVisible.value = false;
+}
 
-  onMounted(() => {
+const handleDelete = async (row, index) => {
+  try {
+    await deleteAttachment([row.storageAttachmentId]);
+    proxy?.$modal?.msgSuccess("鍒犻櫎鎴愬姛");
     setList();
+  } catch (error) {
+    proxy?.$modal?.msgError("鍒犻櫎澶辫触");
+  }
+};
+
+const setList = () => {
+  attachmentList({
+    recordType: props.recordType,
+    recordId: props.recordId,
+  }).then(res => {
+    if (res && res.data) {
+      tableData.value = res.data || [];
+    }
   });
+};
+
+const downloadFile = (url) => {
+  window.open(url, "_blank");
+};
+onMounted(() => {
+  setList();
+});
 </script>
 
 <style scoped>
-  .attachment-dialog {
-    border-radius: 12px;
-  }
+.attachment-dialog {
+  border-radius: 12px;
+}
 
-  .toolbar {
-    margin-bottom: 16px;
-    text-align: right;
-  }
+.toolbar {
+  margin-bottom: 16px;
+  text-align: right;
+}
 
-  .table-container {
-    max-height: 40vh;
-    overflow-y: auto;
-    min-height: 120px;
-    padding-bottom: 16px;
-    box-sizing: border-box;
-    will-change: scroll-position;
-    transform: translateZ(0);
-    -webkit-overflow-scrolling: touch;
-  }
+.table-container {
+  max-height: 40vh;
+  overflow-y: auto;
+  min-height: 120px;
+  padding-bottom: 16px;
+  box-sizing: border-box;
+  will-change: scroll-position;
+  transform: translateZ(0);
+  -webkit-overflow-scrolling: touch;
+}
 
-  :deep(.el-table) {
-    margin-bottom: 0;
-  }
+:deep(.el-table) {
+  margin-bottom: 0;
+}
 
-  :deep(.el-table__body-wrapper) {
-    overflow-y: auto;
-    will-change: transform;
-    transform: translateZ(0);
-  }
+:deep(.el-table__body-wrapper) {
+  overflow-y: auto;
+  will-change: transform;
+  transform: translateZ(0);
+}
 
-  :deep(.el-table__body tr) {
-    transition: none;
-  }
+:deep(.el-table__body tr) {
+  transition: none;
+}
 
-  :deep(.el-dialog__footer) {
-    padding-top: 12px;
-    border-top: 1px solid #e9ecef;
-  }
+:deep(.el-dialog__footer) {
+  padding-top: 12px;
+  border-top: 1px solid #e9ecef;
+}
 
-  .attachment-table {
-    border-radius: 8px;
-  }
+.attachment-table {
+  border-radius: 8px;
+}
 
-  :deep(.el-dialog__header) {
-    background-color: #f8f9fa;
-    border-bottom: 1px solid #e9ecef;
-    padding: 16px 20px;
-  }
+:deep(.el-dialog__header) {
+  background-color: #f8f9fa;
+  border-bottom: 1px solid #e9ecef;
+  padding: 16px 20px;
+}
 
-  :deep(.el-dialog__title) {
-    font-size: 16px;
-    font-weight: 600;
-  }
+:deep(.el-dialog__title) {
+  font-size: 16px;
+  font-weight: 600;
+}
 
-  :deep(.el-dialog__body) {
-    padding: 16px 20px;
-  }
+:deep(.el-dialog__body) {
+  padding: 16px 20px;
+}
 
-  :deep(.el-table__empty-text) {
-    color: #999;
-  }
+:deep(.el-table__empty-text) {
+  color: #999;
+}
 </style>
\ No newline at end of file

--
Gitblit v1.9.3