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