From c6d13e58d85fbaaceb49d4c24401b50143050173 Mon Sep 17 00:00:00 2001
From: zhang_12370 <z2864490065@outlook.com>
Date: 星期四, 26 六月 2025 18:01:24 +0800
Subject: [PATCH] 调整 基础管理煤种生产人 更改采购数计算逻辑 处理供应商数据回显问题

---
 src/hooks/useDelete.js |  162 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 162 insertions(+), 0 deletions(-)

diff --git a/src/hooks/useDelete.js b/src/hooks/useDelete.js
new file mode 100644
index 0000000..60615b3
--- /dev/null
+++ b/src/hooks/useDelete.js
@@ -0,0 +1,162 @@
+/**
+ * 閫氱敤鍒犻櫎鍔熻兘缁勫悎寮忓嚱鏁�
+ * 鎻愪緵缁熶竴鐨勫垹闄ょ‘璁ゃ�丄PI璋冪敤銆佹暟鎹洿鏂伴�昏緫
+ */
+import { ElMessage, ElMessageBox } from "element-plus";
+
+/**
+ * 鍒涘缓鍒犻櫎鍔熻兘
+ * @param {Object} options 閰嶇疆閫夐」
+ * @param {Function|Function} options.deleteApi 鍒犻櫎API鍑芥暟鎴栬繑鍥濧PI鍑芥暟鐨勫嚱鏁�
+ * @param {Function|Function} options.getList 閲嶆柊鑾峰彇鍒楄〃鏁版嵁鐨勫嚱鏁版垨杩斿洖鍑芥暟鐨勫嚱鏁�
+ * @param {Ref} options.selectedRows 閫変腑琛岀殑鍝嶅簲寮忓紩鐢�
+ * @param {Ref} options.tableData 琛ㄦ牸鏁版嵁鐨勫搷搴斿紡寮曠敤
+ * @param {Ref} options.total 鎬绘暟鐨勫搷搴斿紡寮曠敤
+ * @param {String} options.confirmText 纭鍒犻櫎鐨勬彁绀烘枃鏈�
+ * @param {String} options.successText 鍒犻櫎鎴愬姛鐨勬彁绀烘枃鏈�
+ * @param {Boolean} options.useLocalUpdate 鏄惁浣跨敤鏈湴鏇存柊锛堜笉閲嶆柊璇锋眰鎺ュ彛锛�
+ * @returns {Object} 杩斿洖鍒犻櫎鐩稿叧鐨勬柟娉�
+ */
+export function useDelete(options = {}) {
+  const {
+    deleteApi,
+    getList,
+    selectedRows,
+    tableData,
+    total,
+    confirmText = "纭畾鍒犻櫎閫変腑鐨勬暟鎹悧锛�",
+    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;
+  };
+
+  /**
+   * 鎵归噺鍒犻櫎鏂规硶
+   * @param {Array} customIds 鑷畾涔夎鍒犻櫎鐨処D鏁扮粍锛屽鏋滀笉浼犲垯浣跨敤selectedRows
+   */
+  const handleDelete = async (customIds = null) => {
+    // 纭畾瑕佸垹闄ょ殑琛�
+    const rowsToDelete = customIds ? 
+      tableData.value.filter(item => customIds.includes(item.id)) : 
+      selectedRows.value;
+
+    // 妫�鏌ユ槸鍚︽湁閫変腑鏁版嵁
+    if (rowsToDelete.length === 0) {
+      ElMessage.warning("璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁");
+      return false;
+    }
+
+    try {
+      // 纭鍒犻櫎
+      await ElMessageBox.confirm(confirmText, "鎻愮ず", {
+        confirmButtonText: "纭畾",
+        cancelButtonText: "鍙栨秷",
+        type: "warning",
+      });
+
+      // 鎻愬彇ID
+      const ids = rowsToDelete.map(item => item.id);
+      
+      // 鑾峰彇褰撳墠鐨勫垹闄PI鍑芥暟
+      const currentDeleteApi = getDeleteApi();
+      if (!currentDeleteApi) {
+        ElMessage.error("鍒犻櫎API鏈厤缃�");
+        return false;
+      }
+
+      // 璋冪敤鍒犻櫎API
+      const res = await currentDeleteApi(ids);
+
+      if (res.code === 200) {
+        // 鏍规嵁閰嶇疆閫夋嫨鏇存柊鏂瑰紡
+        if (useLocalUpdate) {
+          // 鏈湴鏇存柊锛氫粠琛ㄦ牸鏁版嵁涓Щ闄ゅ凡鍒犻櫎鐨勯」
+          tableData.value = tableData.value.filter(item => !ids.includes(item.id));
+          if (total && total.value !== undefined) {
+            total.value = tableData.value.length;
+          }
+        } else {
+          // 閲嶆柊鑾峰彇鏁版嵁
+          const currentGetList = getListFunction();
+          if (currentGetList) {
+            await currentGetList();
+          }
+        }
+
+        // 娓呯┖閫変腑鐘舵��
+        if (selectedRows && selectedRows.value) {
+          selectedRows.value = [];
+        }
+
+        ElMessage.success(successText);
+        return true;
+      } else {
+        ElMessage.error("鍒犻櫎澶辫触锛�" + (res.msg || "鏈煡閿欒"));
+        return false;
+      }
+    } catch (error) {
+      if (error !== "cancel") {
+        console.error("鍒犻櫎鎿嶄綔澶辫触:", error);
+        ElMessage.error("鍒犻櫎澶辫触锛�" + (error.message || "璇风◢鍚庨噸璇�"));
+      } else {
+        ElMessage.info("宸插彇娑堝垹闄�");
+      }
+      return false;
+    }
+  };
+
+  /**
+   * 鍒犻櫎鍗曚釜椤圭洰
+   * @param {Object} row 瑕佸垹闄ょ殑琛屾暟鎹�
+   */
+  const handleDeleteSingle = async (row) => {
+    return await handleDelete([row.id]);
+  };
+
+  /**
+   * 鍒犻櫎澶氫釜椤圭洰锛堟壒閲忓垹闄わ級
+   */
+  const handleDeleteBatch = async () => {
+    return await handleDelete();
+  };
+
+  return {
+    handleDelete,
+    handleDeleteSingle,
+    handleDeleteBatch
+  };
+}

--
Gitblit v1.9.3