From 2c9fbc6f1a3ccd1418efa9c348ec12faf1ab3258 Mon Sep 17 00:00:00 2001
From: zhang_12370 <z2864490065@outlook.com>
Date: 星期三, 23 七月 2025 16:33:06 +0800
Subject: [PATCH] 1、完善表格逻辑 2、完善配煤计算器 3、完善设备管理 4、完善采购管理

---
 src/components/Table/ETable.vue |   71 ++++++++++++++++++++++++++++-------
 1 files changed, 57 insertions(+), 14 deletions(-)

diff --git a/src/components/Table/ETable.vue b/src/components/Table/ETable.vue
index 24fe060..3921d6b 100644
--- a/src/components/Table/ETable.vue
+++ b/src/components/Table/ETable.vue
@@ -2,7 +2,7 @@
     v-loading="loading" 
     :data="tableData" 
     :border="border" 
-    :show-selection="showSelection" 
+    :show-selection="showSelection"
     :max-height="maxHeight"
     :header-cell-style="{ background: '#EBEEF5', color: '#3D3D3D' }" 
     @selection-change="handleSelectionChange"
@@ -15,10 +15,10 @@
     :show-overflow-tooltip="showOverflowTooltip"
     ref="tableRef" 
     :row-key="rowKey"
-    style="width: 100%"
+    style="width: 100%;"
   >
-    <el-table-column v-if="showSelection" type="selection" width="55" align="center" />
-    <el-table-column v-if="showIndex" label="搴忓彿" width="60" align="center" fixed="left">
+    <el-table-column v-if="showSelection" type="selection" width="55" align="center" :show-overflow-tooltip="false" />
+    <el-table-column v-if="showIndex" label="搴忓彿" width="60" align="center" fixed="left" :show-overflow-tooltip="false">
       <template #default="scope">
         {{ getRowIndex(scope.$index) }}
       </template>
@@ -32,18 +32,31 @@
       </el-table-column>
     </template>
     <!-- 鎿嶄綔鍒� -->
-    <el-table-column v-if="showOperations" :label="operationsLabel" :width="operationsWidth" fixed="right" align="center">
+    <el-table-column v-if="showOperations" :label="operationsLabel" :width="operationsWidth" :show-overflow-tooltip="false" fixed="right" align="center">
       <template #default="scope">
         <slot name="operations" :row="scope.row">
+          <!-- 鑷畾涔夋寜閽� - 鏀惧湪榛樿鎸夐挳涔嬪墠 -->
+          <el-button 
+            v-for="button in customButtons" 
+            :key="button.name"
+            v-show="!button.show || button.show(scope.row)"
+            :link="button.link !== false"
+            :type="button.type || 'primary'" 
+            :size="button.size || 'small'"
+            :icon="button.icon"
+            :disabled="button.disabled && button.disabled(scope.row)"
+            @click="handleCustomClick(button.name, scope.row)"
+          >
+            {{ button.label }}
+          </el-button>
+          
+          <!-- 榛樿鎿嶄綔鎸夐挳 -->
           <el-button v-if="operations.includes('edit')" link type="primary" size="small"
             @click="handleEdit(scope.row)">缂栬緫</el-button>
-          <!--            <el-button-->
-          <!--              v-if="operations.includes('delete')"-->
-          <!--              link-->
-          <!--              type="danger"-->
-          <!--              size="small"-->
-          <!--              @click="handleDelete(scope.row)"-->
-          <!--            >鍒犻櫎</el-button>-->
+          <el-button v-if="operations.includes('viewRow')" link type="primary" size="small"
+            @click="handleView(scope.row)">鏌ョ湅</el-button>
+          <el-button v-if="operations.includes('viewFile')" link type="primary" size="small"
+            @click="handleViewFile(scope.row)">鏌ョ湅闄勪欢</el-button>
         </slot>
       </template>
     </el-table-column>
@@ -129,7 +142,25 @@
   operations: {
     type: Array,
     default: () => ['edit', 'delete', 'export']
-  },  // 鍒犻櫎纭淇℃伅
+  },
+  // 鑷畾涔夋寜閽厤缃�
+  customButtons: {
+    type: Array,
+    default: () => []
+    // 绀轰緥閰嶇疆锛�
+    // [
+    //   {
+    //     name: 'return',      // 鎸夐挳鏍囪瘑
+    //     label: '褰掕繕',       // 鎸夐挳鏄剧ず鏂囨湰
+    //     type: 'success',     // 鎸夐挳绫诲瀷
+    //     size: 'small',       // 鎸夐挳澶у皬
+    //     icon: '',            // 鍥炬爣(鍙��)
+    //     show: (row) => true, // 鏄剧ず鏉′欢鍑芥暟(鍙��)
+    //     disabled: (row) => false, // 绂佺敤鏉′欢鍑芥暟(鍙��)
+    //   }
+    // ]
+  },
+  // 鍒犻櫎纭淇℃伅
   deleteConfirmText: {
     type: String,
     default: '纭鍒犻櫎璇ヨ褰曪紵'
@@ -166,13 +197,25 @@
 };
 
 // 澶勭悊閫夋嫨鍙樺寲銆佺紪杈戙�佸垹闄ゅ拰瀵煎嚭鎿嶄綔
-const emit = defineEmits(['selection-change', 'edit', 'delete', 'export'])
+const emit = defineEmits(['selection-change', 'edit', 'delete', 'export', 'viewRow', 'viewFile', 'custom-click'])
 const handleSelectionChange = (selection) => {
   emit('selection-change', selection)
 }
 const handleEdit = (row) => {
   emit('edit', row)
 }
+const handleView = (row) => {
+  emit('viewRow', row)
+}
+const handleViewFile = (row) => {
+  emit('viewFile', row)
+}
+
+// 澶勭悊鑷畾涔夋寜閽偣鍑�
+const handleCustomClick = (buttonName, row) => {
+  emit('custom-click', { buttonName, row })
+}
+
 const handleDelete = (row) => {
   ElMessageBox.confirm(
     props.deleteConfirmText,

--
Gitblit v1.9.3