From a175709baa7777575d054f928d4d2d029a04bd60 Mon Sep 17 00:00:00 2001
From: gaoluyang <2820782392@qq.com>
Date: 星期一, 29 十二月 2025 17:41:06 +0800
Subject: [PATCH] 陕西昭德-app巡检上传修改
---
src/hooks/useDelete.js | 167 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 167 insertions(+), 0 deletions(-)
diff --git a/src/hooks/useDelete.js b/src/hooks/useDelete.js
new file mode 100644
index 0000000..5ab9595
--- /dev/null
+++ b/src/hooks/useDelete.js
@@ -0,0 +1,167 @@
+/**
+ * 閫氱敤鍒犻櫎鍔熻兘缁勫悎寮忓嚱鏁帮紙APP鐗堟湰锛�
+ * 鎻愪緵缁熶竴鐨勫垹闄ょ‘璁ゃ�丄PI璋冪敤銆佹暟鎹洿鏂伴�昏緫锛岄�傞厤uni-app鍜寀viewplus
+ */
+import { useToast } from "@/utils/uviewplus";
+
+/**
+ * 鍒涘缓鍒犻櫎鍔熻兘
+ * @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) {
+ useToast().warning("璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁");
+ return false;
+ }
+
+ try {
+ // 纭鍒犻櫎 - 浣跨敤uni-app鐨剆howModal鏇夸唬Element Plus鐨凪essageBox
+ const result = await uni.showModal({
+ title: '鎻愮ず',
+ content: confirmText,
+ confirmText: '纭畾',
+ cancelText: '鍙栨秷',
+ confirmColor: '#2979ff'
+ });
+
+ // 鐢ㄦ埛鐐瑰嚮鍙栨秷
+ if (!result.confirm) {
+ useToast().info("宸插彇娑堝垹闄�");
+ return false;
+ }
+
+ // 鎻愬彇ID
+ const ids = rowsToDelete.map(item => item.id);
+
+ // 鑾峰彇褰撳墠鐨勫垹闄PI鍑芥暟
+ const currentDeleteApi = getDeleteApi();
+ if (!currentDeleteApi) {
+ useToast().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 = [];
+ }
+
+ useToast().success(successText);
+ return true;
+ } else {
+ return false;
+ }
+ } catch (error) {
+ if (error !== "cancel") {
+ // 鍏朵粬閿欒澶勭悊
+ console.error("鍒犻櫎鎿嶄綔澶辫触:", error);
+ }
+ return false;
+ }
+ };
+
+ /**
+ * 鍒犻櫎鍗曚釜椤圭洰
+ * @param {Object} row 瑕佸垹闄ょ殑琛屾暟鎹�
+ */
+ const handleDeleteSingle = async (row) => {
+ return await handleDelete([row.id]);
+ };
+
+ /**
+ * 鍒犻櫎澶氫釜椤圭洰锛堟壒閲忓垹闄わ級
+ */
+ const handleDeleteBatch = async () => {
+ return await handleDelete();
+ };
+
+ return {
+ handleDelete,
+ handleDeleteSingle,
+ handleDeleteBatch
+ };
+}
\ No newline at end of file
--
Gitblit v1.9.3