给空模板的menu添加排序和单项不展开的功能

This commit is contained in:
pqcqaq 2024-10-27 12:49:25 +08:00
parent b7505c52f4
commit 9f6476673a
1 changed files with 25 additions and 10 deletions

View File

@ -3,18 +3,19 @@ import { EntityDict } from '@project/oak-app-domain';
import { groupBy } from 'oak-domain/lib/utils/lodash'; import { groupBy } from 'oak-domain/lib/utils/lodash';
import { ConsoleModeIllegalException } from '@project/types/Exception'; import { ConsoleModeIllegalException } from '@project/types/Exception';
type GroupName = 'System'; type GroupName = 'System';
type Groups = { type Groups = {
icon: string; icon: string;
name: GroupName; name: GroupName;
order?: number;
}[]; }[];
interface IMenu extends Menu<EntityDict, keyof EntityDict> { interface IMenu extends Menu<EntityDict, keyof EntityDict> {
name: string; name: string;
icon: string; icon: string;
parent: GroupName; parent: GroupName;
order?: number;
}; };
export interface OMenu { export interface OMenu {
@ -30,6 +31,7 @@ const groups: Groups = [
{ {
name: 'System', // 系统级别配置 name: 'System', // 系统级别配置
icon: 'setup_fill', icon: 'setup_fill',
order: 0,
}, },
]; ];
@ -40,12 +42,14 @@ const menus: IMenu[] = [
url: '/userRelation/manage', url: '/userRelation/manage',
parent: 'System', parent: 'System',
destEntity: 'userRelation', destEntity: 'userRelation',
order: 1,
}, },
{ {
name: 'relationManage', name: 'relationManage',
icon: 'share', icon: 'share',
url: '/relation/entityList', url: '/relation/entityList',
parent: 'System', parent: 'System',
order: 2,
}, },
]; ];
@ -57,15 +61,26 @@ export default class Console extends BaseConsole<EntityDict, IMenu> {
const menus = this.getAvailMenus(); const menus = this.getAvailMenus();
const menuGroup = groupBy(menus, 'parent'); const menuGroup = groupBy(menus, 'parent');
return groups.map((ele) => { const groupedMenus = groups
const { name, icon } = ele; .map((ele) => {
const children = menuGroup[name]; const { name, icon, order } = ele;
return { const children = menuGroup[name];
name, return children
icon, ? {
children, name,
}; icon,
}).filter((ele) => !!ele.children); children,
order,
}
: null;
})
.filter((ele) => !!ele);
// 添加没有父分组的菜单项
const ungroupedMenus = menuGroup['undefined'] || [];
const allMenus = [...groupedMenus, ...ungroupedMenus];
return allMenus.sort((a, b) => (a.order || 0) - (b.order || 0));
} }
getName() { getName() {