From ea6ad9ddc3d5b33897e93276282245f7023836ff Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期四, 28 八月 2025 17:45:28 +0800
Subject: [PATCH] 大数据市场分析

---
 src/components/PIMTable/PIMTable.vue |   76 +++++++++++++++++++------------------
 1 files changed, 39 insertions(+), 37 deletions(-)

diff --git a/src/components/PIMTable/PIMTable.vue b/src/components/PIMTable/PIMTable.vue
index 955173d..985ab54 100644
--- a/src/components/PIMTable/PIMTable.vue
+++ b/src/components/PIMTable/PIMTable.vue
@@ -40,7 +40,7 @@
       :fixed="item.fixed"
       :label="item.label"
       :prop="item.prop"
-      show-overflow-tooltip
+      :show-overflow-tooltip="item.dataType !== 'multiTagLink'"
       :align="item.align"
       :sortable="!!item.sortable"
       :type="item.type"
@@ -80,43 +80,22 @@
             style="width: 40px; height: 40px; margin-top: 10px"
           />
         </div>
-
-        <!-- tag -->
-        <div v-else-if="item.dataType == 'tag'">
-          <el-tag
-            v-if="
-              typeof dataTypeFn(scope.row[item.prop], item.formatData) ===
-              'string'
-            "
-            :title="formatters(scope.row[item.prop], item.formatData)"
-            :type="formatType(scope.row[item.prop], item.formatType)"
+        <div v-else-if="item.dataType === 'multiTagLink'">
+          <el-tooltip
+              v-for="(file, index) in dataTypeFnArray(scope.row[item.prop], item.formatData)"
+              :key="index"
+              :content="file.name"
+              effect="dark"
+              placement="top"
           >
-            {{ formatters(scope.row[item.prop], item.formatData) }}
-          </el-tag>
-
-          <el-tag
-            v-for="(tag, index) in dataTypeFn(
-              scope.row[item.prop],
-              item.formatData
-            )"
-            v-else-if="
-              typeof dataTypeFn(scope.row[item.prop], item.formatData) ===
-              'object'
-            "
-            :key="index"
-            :title="formatters(scope.row[item.prop], item.formatData)"
-            :type="formatType(tag, item.formatType)"
-          >
-            {{ item.tagGroup ? tag[item.tagGroup.label] ?? tag : tag }}
-          </el-tag>
-
-          <el-tag
-            v-else
-            :title="formatters(scope.row[item.prop], item.formatData)"
-            :type="formatType(scope.row[item.prop], item.formatType)"
-          >
-            {{ formatters(scope.row[item.prop], item.formatData) }}
-          </el-tag>
+            <el-tag
+                type="info"
+                style="margin-right: 4px;margin-top: 4px; cursor: pointer;"
+                @click="downloadFile(file)"
+            >
+              {{ truncateName(file.name, 5) }}
+            </el-tag>
+          </el-tooltip>
         </div>
 
         <!-- 鎸夐挳 -->
@@ -351,6 +330,29 @@
     return format(val);
   } else return val;
 };
+const dataTypeFnArray = (val, format) => {
+  if (!val) return [];
+  if (typeof format === "function") {
+    return format(val);
+  }
+  // 淇濊瘉杩斿洖鐨勬槸鏁扮粍
+  return Array.isArray(val) ? val : [];
+};
+
+const truncateName = (name, length = 5) => {
+  if (!name) return '';
+  return name.length > length ? name.slice(0, length) + '...' : name;
+};
+
+
+const downloadFile = (file) => {
+  const link = document.createElement("a");
+  link.href = file.url;
+  // 璁剧疆涓嬭浇鏂囦欢鍚嶄负 file.name
+  link.download = file.name;
+  link.click();
+};
+
 
 const formatType = (val, format) => {
   if (typeof format === "function") {

--
Gitblit v1.9.3