diff --git a/apps/web-antd/src/views/system/dept/index.vue b/apps/web-antd/src/views/system/dept/index.vue index f8d875af9..638865004 100644 --- a/apps/web-antd/src/views/system/dept/index.vue +++ b/apps/web-antd/src/views/system/dept/index.vue @@ -61,12 +61,14 @@ function handleEdit(row: SystemDeptApi.Dept) { async function handleDelete(row: SystemDeptApi.Dept) { const hideLoading = message.loading({ content: $t('ui.actionMessage.deleting', [row.name]), - duration: 0, - key: 'action_process_msg', + key: 'action_key_msg', }); try { await deleteDept(row.id as number); - message.success($t('ui.actionMessage.deleteSuccess', [row.name])); + message.success({ + content: $t('ui.actionMessage.deleteSuccess', [row.name]), + key: 'action_key_msg', + }); onRefresh(); } finally { hideLoading(); diff --git a/apps/web-antd/src/views/system/dict/modules/data-grid.vue b/apps/web-antd/src/views/system/dict/modules/data-grid.vue index d94351ff4..7079c8adb 100644 --- a/apps/web-antd/src/views/system/dict/modules/data-grid.vue +++ b/apps/web-antd/src/views/system/dict/modules/data-grid.vue @@ -58,12 +58,14 @@ function handleEdit(row: SystemDictDataApi.DictData) { async function handleDelete(row: SystemDictDataApi.DictData) { const hideLoading = message.loading({ content: $t('ui.actionMessage.deleting', [row.label]), - duration: 0, - key: 'action_process_msg', + key: 'action_key_msg', }); try { await deleteDictData(row.id as number); - message.success($t('ui.actionMessage.deleteSuccess', [row.label])); + message.success({ + content: $t('ui.actionMessage.deleteSuccess', [row.label]), + key: 'action_key_msg', + }); onRefresh(); } finally { hideLoading(); diff --git a/apps/web-antd/src/views/system/dict/modules/type-grid.vue b/apps/web-antd/src/views/system/dict/modules/type-grid.vue index 2c6fce228..98600900c 100644 --- a/apps/web-antd/src/views/system/dict/modules/type-grid.vue +++ b/apps/web-antd/src/views/system/dict/modules/type-grid.vue @@ -56,12 +56,14 @@ function handleEdit(row: any) { async function handleDelete(row: SystemDictTypeApi.DictType) { const hideLoading = message.loading({ content: $t('ui.actionMessage.deleting', [row.name]), - duration: 0, - key: 'action_process_msg', + key: 'action_key_msg', }); try { await deleteDictType(row.id as number); - message.success($t('ui.actionMessage.deleteSuccess', [row.name])); + message.success({ + content: $t('ui.actionMessage.deleteSuccess', [row.name]), + key: 'action_key_msg', + }); onRefresh(); } finally { hideLoading(); diff --git a/apps/web-antd/src/views/system/mail/account/index.vue b/apps/web-antd/src/views/system/mail/account/index.vue index 3da0308b9..e7344f424 100644 --- a/apps/web-antd/src/views/system/mail/account/index.vue +++ b/apps/web-antd/src/views/system/mail/account/index.vue @@ -44,12 +44,14 @@ function handleEdit(row: SystemMailAccountApi.MailAccount) { async function handleDelete(row: SystemMailAccountApi.MailAccount) { const hideLoading = message.loading({ content: $t('ui.actionMessage.deleting', [row.mail]), - duration: 0, - key: 'action_process_msg', + key: 'action_key_msg', }); try { await deleteMailAccount(row.id as number); - message.success($t('ui.actionMessage.deleteSuccess', [row.mail])); + message.success({ + content: $t('ui.actionMessage.deleteSuccess', [row.mail]), + key: 'action_key_msg', + }); onRefresh(); } finally { hideLoading(); diff --git a/apps/web-antd/src/views/system/mail/template/index.vue b/apps/web-antd/src/views/system/mail/template/index.vue index b0bf5fcce..c45b3e714 100644 --- a/apps/web-antd/src/views/system/mail/template/index.vue +++ b/apps/web-antd/src/views/system/mail/template/index.vue @@ -57,18 +57,17 @@ function handleSend(row: SystemMailTemplateApi.MailTemplate) { /** 删除邮件模板 */ async function handleDelete(row: SystemMailTemplateApi.MailTemplate) { - const hideLoading = message.loading({ + message.loading({ content: $t('ui.actionMessage.deleting', [row.name]), duration: 0, key: 'action_process_msg', }); - try { - await deleteMailTemplate(row.id as number); - message.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); - } finally { - hideLoading(); - } + await deleteMailTemplate(row.id as number); + message.success({ + content: $t('ui.actionMessage.deleteSuccess', [row.name]), + key: 'action_key_msg', + }); + onRefresh(); } const checkedIds = ref([]); diff --git a/apps/web-antd/src/views/system/menu/data.ts b/apps/web-antd/src/views/system/menu/data.ts index 0c9c49f2e..0cc5a6a86 100644 --- a/apps/web-antd/src/views/system/menu/data.ts +++ b/apps/web-antd/src/views/system/menu/data.ts @@ -268,7 +268,6 @@ export function useFormSchema(): VbenFormSchema[] { /** 列表的字段 */ export function useGridColumns(): VxeTableGridOptions['columns'] { return [ - { type: 'checkbox', width: 40 }, { field: 'name', title: '菜单名称', diff --git a/apps/web-antd/src/views/system/menu/index.vue b/apps/web-antd/src/views/system/menu/index.vue index cbf432907..9519bb277 100644 --- a/apps/web-antd/src/views/system/menu/index.vue +++ b/apps/web-antd/src/views/system/menu/index.vue @@ -6,12 +6,11 @@ import { ref } from 'vue'; import { DocAlert, Page, useVbenModal } from '@vben/common-ui'; import { IconifyIcon } from '@vben/icons'; -import { isEmpty } from '@vben/utils'; import { message } from 'ant-design-vue'; import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table'; -import { deleteMenu, deleteMenuList, getMenuList } from '#/api/system/menu'; +import { deleteMenu, getMenuList } from '#/api/system/menu'; import { $t } from '#/locales'; import { SystemMenuTypeEnum } from '#/utils'; @@ -29,8 +28,13 @@ function onRefresh() { } /** 创建菜单 */ -function handleCreate(parentId?: number) { - formModalApi.setData({ parentId: parentId || 0 }).open(); +function handleCreate() { + formModalApi.setData({}).open(); +} + +/** 添加下级菜单 */ +function handleAppend(row: SystemMenuApi.Menu) { + formModalApi.setData({ pid: row.id }).open(); } /** 编辑菜单 */ @@ -42,74 +46,55 @@ function handleEdit(row: SystemMenuApi.Menu) { async function handleDelete(row: SystemMenuApi.Menu) { const hideLoading = message.loading({ content: $t('ui.actionMessage.deleting', [row.name]), - duration: 0, - key: 'action_process_msg', + key: 'action_key_msg', }); try { - await deleteMenu(row.id); - message.success($t('ui.actionMessage.deleteSuccess', [row.name])); + await deleteMenu(row.id as number); + message.success({ + content: $t('ui.actionMessage.deleteSuccess', [row.name]), + key: 'action_key_msg', + }); onRefresh(); } finally { hideLoading(); } } -const checkedIds = ref([]); -function handleRowCheckboxChange({ - records, -}: { - records: SystemMenuApi.Menu[]; -}) { - checkedIds.value = records.map((item) => item.id); -} - -/** 批量删除菜单 */ -async function handleDeleteBatch() { - const hideLoading = message.loading({ - content: $t('ui.actionMessage.deleting'), - duration: 0, - key: 'action_process_msg', - }); - try { - await deleteMenuList(checkedIds.value); - message.success($t('ui.actionMessage.deleteSuccess')); - onRefresh(); - } finally { - hideLoading(); - } +/** 切换树形展开/收缩状态 */ +const isExpanded = ref(false); +function toggleExpand() { + isExpanded.value = !isExpanded.value; + gridApi.grid.setAllTreeExpand(isExpanded.value); } const [Grid, gridApi] = useVbenVxeGrid({ gridOptions: { columns: useGridColumns(), height: 'auto', + keepSource: true, + pagerConfig: { + enabled: false, + }, proxyConfig: { ajax: { - query: async () => { + query: async (_params) => { return await getMenuList(); }, }, }, - treeConfig: { - transform: true, - rowField: 'id', - parentField: 'parentId', - expandAll: true, - accordion: false, - }, rowConfig: { keyField: 'id', - isHover: true, }, toolbarConfig: { refresh: { code: 'query' }, - search: true, }, - } as VxeTableGridOptions, - gridEvents: { - checkboxAll: handleRowCheckboxChange, - checkboxChange: handleRowCheckboxChange, - }, + treeConfig: { + parentField: 'parentId', + rowField: 'id', + transform: true, + reserve: true, + }, + } as VxeTableGridOptions, }); @@ -124,7 +109,7 @@ const [Grid, gridApi] = useVbenVxeGrid({ - + -