¶Ô±ÈÐÂÎļþ |
| | |
| | | /** |
| | | * éç¨å é¤åè½ç»åå¼å½æ° |
| | | * æä¾ç»ä¸çå é¤ç¡®è®¤ãAPIè°ç¨ãæ°æ®æ´æ°é»è¾ |
| | | */ |
| | | import { ElMessage, ElMessageBox } from "element-plus"; |
| | | |
| | | /** |
| | | * å建å é¤åè½ |
| | | * @param {Object} options é
ç½®é项 |
| | | * @param {Function} options.deleteApi å é¤API彿° |
| | | * @param {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; |
| | | |
| | | /** |
| | | * æ¹éå 餿¹æ³ |
| | | * @param {Array} customIds èªå®ä¹è¦å é¤çIDæ°ç»ï¼å¦æä¸ä¼ å使ç¨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); |
| | | |
| | | // è°ç¨å é¤API |
| | | const res = await deleteApi(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 { |
| | | // éæ°è·åæ°æ® |
| | | if (getList) { |
| | | await getList(); |
| | | } |
| | | } |
| | | |
| | | // æ¸
空éä¸ç¶æ |
| | | 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 |
| | | }; |
| | | } |