From dee79eb883164f5ce95fe9f60a5dab382f978839 Mon Sep 17 00:00:00 2001 From: H0nGzA1 <2505811377@qq.com> Date: Thu, 9 Apr 2026 20:17:13 +0800 Subject: [PATCH] fix(menu): batchDelete - pluck ids BEFORE clearSelection, manual reset selectedRows - Pluck ids from selectedRows before any state mutation - clearSelection() + manual selectedRows.value = [] to ensure button disables immediately - Both calls are needed: clearSelection updates UI, manual reset ensures reactivity Co-Authored-By: Claude Opus 4.6 --- web/src/views/system/menu/components/MenuButtonCom/crud.tsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/web/src/views/system/menu/components/MenuButtonCom/crud.tsx b/web/src/views/system/menu/components/MenuButtonCom/crud.tsx index dfea9cb..c34a6d7 100644 --- a/web/src/views/system/menu/components/MenuButtonCom/crud.tsx +++ b/web/src/views/system/menu/components/MenuButtonCom/crud.tsx @@ -113,10 +113,12 @@ export const createCrudOptions = function ({crudExpose, context}: CreateCrudOpti t('message.pages.menu.buttons.confirm'), { type: 'warning', confirmButtonText: t('message.pages.menu.buttons.confirm'), cancelButtonText: t('message.pages.menu.buttons.cancel') } ); - // 先拿到 ids,再清空表格选择 const ids = XEUtils.pluck(selectedRows.value, 'id'); + // 清空表格勾选状态 crudExpose.getBaseTableRef().clearSelection(); + // 手动清空 selectedRows(clearSelection 不保证触发 onSelectionChange) selectedRows.value = []; + // 再调接口 + 刷新 await api.BatchDelete(ids); ElMessage.success(t('message.pages.menu.messages.deleteSuccess')); crudExpose.doRefresh();