From 6735ee5fec84b96a2484a784e37d4cefb4f7c34c Mon Sep 17 00:00:00 2001
From: gongchunyi <deslre0381@gmail.com>
Date: 星期五, 14 八月 2026 10:32:56 +0800
Subject: [PATCH] fix: 去除小数限制

---
 src/components/PIMTable/PIMTable.vue |   38 ++++++++++++++++++++++++++++++++------
 1 files changed, 32 insertions(+), 6 deletions(-)

diff --git a/src/components/PIMTable/PIMTable.vue b/src/components/PIMTable/PIMTable.vue
index 61df179..d9cfdda 100644
--- a/src/components/PIMTable/PIMTable.vue
+++ b/src/components/PIMTable/PIMTable.vue
@@ -11,6 +11,7 @@
             :row-key="rowKey"
             :style="tableStyle"
             tooltip-effect="dark"
+            :tooltip-options="{ appendTo: 'body' }"
             :expand-row-keys="expandRowKeys"
             :show-summary="isShowSummary"
             :summary-method="summaryMethod"
@@ -21,6 +22,7 @@
             class="lims-table">
     <el-table-column align="center"
                      type="selection"
+                     :selectable="selectable"
                      width="55"
                      v-if="isSelection" />
     <el-table-column align="center"
@@ -116,8 +118,9 @@
           <template v-for="(o, key) in item.operation"
                     :key="key">
             <el-button v-show="o.type != 'upload'"
-                       v-if="o.showHide ? o.showHide(scope.row) : true"
+                       v-if="isOperationVisible(o, scope.row)"
                        :disabled="isOperationDisabled(o, scope.row)"
+                       :loading="isOperationLoading(o, scope.row)"
                        :plain="o.plain"
                        type="primary"
                        :style="{
@@ -146,7 +149,7 @@
               "
                        v-if="o.type == 'upload'"
                        style="display: inline-block; width: 50px"
-                       v-show="o.showHide ? o.showHide(scope.row) : true"
+                       v-show="isOperationVisible(o, scope.row)"
                        :headers="uploadHeader"
                        :before-upload="(file) => beforeUpload(file, scope.$index)"
                        :on-change="
@@ -221,7 +224,9 @@
   };
 
   const formatters = (val, format) => {
-    return typeof format === "function" ? format(val) : val;
+    if (typeof format === "function") return format(val);
+    if (format && typeof format === "object") return format[val] ?? val;
+    return val;
   };
 
   // Props锛堜娇鐢� defineProps 鐨勯潪 TS 褰㈠紡锛�
@@ -257,6 +262,10 @@
     isSelection: {
       type: Boolean,
       default: false,
+    },
+    selectable: {
+      type: Function,
+      default: () => true,
     },
     isShowPagination: {
       type: Boolean,
@@ -324,6 +333,7 @@
   const uploadRefs = ref([]);
   const currentFiles = ref({});
   const uploadKeys = ref({});
+  const parentMethods = inject("parentMethods", {});
 
   const indexMethod = index => {
     return (props.page.current - 1) * props.page.size + index + 1;
@@ -333,6 +343,10 @@
   const goLink = (row, linkMethod) => {
     if (!linkMethod) {
       return ElMessage.warning("璇烽厤缃� link 浜嬩欢");
+    }
+    if (typeof linkMethod === "function") {
+      linkMethod(row);
+      return;
     }
     const parentMethod = getParentMethod(linkMethod);
     if (typeof parentMethod === "function") {
@@ -344,8 +358,7 @@
 
   // 鑾峰彇鐖剁粍浠舵柟娉曪紙绀轰緥瀹炵幇锛�
   const getParentMethod = methodName => {
-    const parentMethods = inject("parentMethods", {});
-    return parentMethods[methodName];
+    return parentMethods?.[methodName];
   };
 
   const dataTypeFn = (val, format) => {
@@ -365,6 +378,19 @@
     return typeof operation.disabled === "function"
       ? !!operation.disabled(row)
       : !!operation.disabled;
+  };
+
+  const isOperationVisible = (operation, row) => {
+    const visibleHandler = operation?.showHide ?? operation?.show;
+    if (visibleHandler === undefined) return true;
+    return typeof visibleHandler === "function" ? !!visibleHandler(row) : !!visibleHandler;
+  };
+
+  const isOperationLoading = (operation, row) => {
+    if (!operation?.loading) return false;
+    return typeof operation.loading === "function"
+      ? !!operation.loading(row)
+      : !!operation.loading;
   };
 
   const parseHexToRgb = hex => {
@@ -441,7 +467,7 @@
   // 鏂囦欢涓婁紶鍓嶆牎楠�
   const beforeUpload = (rawFile, index) => {
     currentFiles.value[index] = {};
-    if (rawfile.size > 1024 * 1024 * 10 * 10) {
+    if (rawFile.size > 1024 * 1024 * 10 * 10) {
       ElMessage.error("涓婁紶鏂囦欢涓嶈秴杩�10M");
       return false;
     }

--
Gitblit v1.9.3