From 1c4e88c1cb0639663f77a33dbab26c3cac71ad93 Mon Sep 17 00:00:00 2001
From: zhang_12370 <z2864490065@outlook.com>
Date: 星期四, 26 六月 2025 13:28:05 +0800
Subject: [PATCH] 开发通用 删除 优化文档管理模块

---
 src/hooks/useDelete.js |   53 ++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 48 insertions(+), 5 deletions(-)

diff --git a/src/hooks/useDelete.js b/src/hooks/useDelete.js
index 7c6df82..60615b3 100644
--- a/src/hooks/useDelete.js
+++ b/src/hooks/useDelete.js
@@ -7,8 +7,8 @@
 /**
  * 鍒涘缓鍒犻櫎鍔熻兘
  * @param {Object} options 閰嶇疆閫夐」
- * @param {Function} options.deleteApi 鍒犻櫎API鍑芥暟
- * @param {Function} options.getList 閲嶆柊鑾峰彇鍒楄〃鏁版嵁鐨勫嚱鏁�
+ * @param {Function|Function} options.deleteApi 鍒犻櫎API鍑芥暟鎴栬繑鍥濧PI鍑芥暟鐨勫嚱鏁�
+ * @param {Function|Function} options.getList 閲嶆柊鑾峰彇鍒楄〃鏁版嵁鐨勫嚱鏁版垨杩斿洖鍑芥暟鐨勫嚱鏁�
  * @param {Ref} options.selectedRows 閫変腑琛岀殑鍝嶅簲寮忓紩鐢�
  * @param {Ref} options.tableData 琛ㄦ牸鏁版嵁鐨勫搷搴斿紡寮曠敤
  * @param {Ref} options.total 鎬绘暟鐨勫搷搴斿紡寮曠敤
@@ -28,6 +28,41 @@
     successText = "鍒犻櫎鎴愬姛",
     useLocalUpdate = false
   } = options;
+
+  /**
+   * 鑾峰彇瀹為檯鐨勫垹闄PI鍑芥暟
+   * 鏀寔鐩存帴浼犲叆鍑芥暟鎴栬繑鍥炲嚱鏁扮殑鍑芥暟
+   */
+  const getDeleteApi = () => {
+    if (typeof deleteApi === 'function') {
+      // 灏濊瘯璋冪敤鐪嬫槸鍚﹁繑鍥炲嚱鏁�
+      try {
+        const result = deleteApi();
+        return typeof result === 'function' ? result : deleteApi;
+      } catch (error) {
+        // 濡傛灉璋冪敤鍑洪敊锛岃鏄庤繖鏈韩灏辨槸API鍑芥暟
+        return deleteApi;
+      }
+    }
+    return deleteApi;
+  };
+
+  /**
+   * 鑾峰彇瀹為檯鐨勮幏鍙栧垪琛ㄥ嚱鏁�
+   * 鏀寔鐩存帴浼犲叆鍑芥暟鎴栬繑鍥炲嚱鏁扮殑鍑芥暟
+   */
+  const getListFunction = () => {
+    if (typeof getList === 'function') {
+      try {
+        const result = getList();
+        return typeof result === 'function' ? result : getList;
+      } catch (error) {
+        // 濡傛灉璋冪敤鍑洪敊锛岃鏄庤繖鏈韩灏辨槸鍒楄〃鍑芥暟
+        return getList;
+      }
+    }
+    return getList;
+  };
 
   /**
    * 鎵归噺鍒犻櫎鏂规硶
@@ -55,9 +90,16 @@
 
       // 鎻愬彇ID
       const ids = rowsToDelete.map(item => item.id);
+      
+      // 鑾峰彇褰撳墠鐨勫垹闄PI鍑芥暟
+      const currentDeleteApi = getDeleteApi();
+      if (!currentDeleteApi) {
+        ElMessage.error("鍒犻櫎API鏈厤缃�");
+        return false;
+      }
 
       // 璋冪敤鍒犻櫎API
-      const res = await deleteApi(ids);
+      const res = await currentDeleteApi(ids);
 
       if (res.code === 200) {
         // 鏍规嵁閰嶇疆閫夋嫨鏇存柊鏂瑰紡
@@ -69,8 +111,9 @@
           }
         } else {
           // 閲嶆柊鑾峰彇鏁版嵁
-          if (getList) {
-            await getList();
+          const currentGetList = getListFunction();
+          if (currentGetList) {
+            await currentGetList();
           }
         }
 

--
Gitblit v1.9.3