fix: 删除菜单包括子级
This commit is contained in:
@@ -49,8 +49,8 @@ export async function updateMenu(data: SystemMenuApi.Menu) {
|
||||
}
|
||||
|
||||
/** 删除菜单 */
|
||||
export async function deleteMenu(id: number) {
|
||||
return requestClient.delete(`/system/menu/delete?id=${id}`);
|
||||
export async function deleteMenu(id: number, cascade?: boolean) {
|
||||
return requestClient.delete(`/system/menu/delete?id=${id}&cascade=${cascade || false}`);
|
||||
}
|
||||
|
||||
/** 批量删除菜单 */
|
||||
|
||||
@@ -8,7 +8,7 @@ import { Page, useVbenModal } from '@vben/common-ui';
|
||||
import { SystemMenuTypeEnum } from '@vben/constants';
|
||||
import { IconifyIcon } from '@vben/icons';
|
||||
|
||||
import { message } from 'antdv-next';
|
||||
import { message, Modal } from 'antdv-next';
|
||||
|
||||
import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table';
|
||||
import { deleteMenu, getMenuList } from '#/api/system/menu';
|
||||
@@ -43,13 +43,35 @@ function handleEdit(row: SystemMenuApi.Menu) {
|
||||
}
|
||||
|
||||
/** 删除菜单 */
|
||||
async function handleDelete(row: SystemMenuApi.Menu) {
|
||||
function handleDelete(row: SystemMenuApi.Menu) {
|
||||
const hasChildren = (row as any).children?.length > 0;
|
||||
if (hasChildren) {
|
||||
Modal.confirm({
|
||||
title: '提示',
|
||||
content: '该菜单存在子菜单,是否连子级一起删除?',
|
||||
okText: '是',
|
||||
cancelText: '否',
|
||||
onOk: () => doDelete(row, true),
|
||||
});
|
||||
} else {
|
||||
Modal.confirm({
|
||||
title: '提示',
|
||||
content: $t('ui.actionMessage.deleteConfirm', [row.name]),
|
||||
okText: '确认',
|
||||
cancelText: '取消',
|
||||
onOk: () => doDelete(row, false),
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
/** 执行菜单删除 */
|
||||
async function doDelete(row: SystemMenuApi.Menu, cascade: boolean) {
|
||||
const hideLoading = message.loading({
|
||||
content: $t('ui.actionMessage.deleting', [row.name]),
|
||||
duration: 0,
|
||||
});
|
||||
try {
|
||||
await deleteMenu(row.id!);
|
||||
await deleteMenu(row.id!, cascade);
|
||||
message.success($t('ui.actionMessage.deleteSuccess', [row.name]));
|
||||
handleRefresh();
|
||||
} finally {
|
||||
@@ -161,10 +183,7 @@ const [Grid, gridApi] = useVbenVxeGrid({
|
||||
danger: true,
|
||||
icon: ACTION_ICON.DELETE,
|
||||
auth: ['system:menu:delete'],
|
||||
popConfirm: {
|
||||
title: $t('ui.actionMessage.deleteConfirm', [row.name]),
|
||||
confirm: handleDelete.bind(null, row),
|
||||
},
|
||||
onClick: handleDelete.bind(null, row),
|
||||
},
|
||||
]"
|
||||
/>
|
||||
|
||||
Reference in New Issue
Block a user