diff --git a/template/src/features/Console.ts b/template/src/features/Console.ts index 67e5618..44e3d17 100644 --- a/template/src/features/Console.ts +++ b/template/src/features/Console.ts @@ -3,18 +3,19 @@ import { EntityDict } from '@project/oak-app-domain'; import { groupBy } from 'oak-domain/lib/utils/lodash'; import { ConsoleModeIllegalException } from '@project/types/Exception'; - type GroupName = 'System'; type Groups = { icon: string; name: GroupName; + order?: number; }[]; interface IMenu extends Menu { name: string; icon: string; parent: GroupName; + order?: number; }; export interface OMenu { @@ -30,6 +31,7 @@ const groups: Groups = [ { name: 'System', // 系统级别配置 icon: 'setup_fill', + order: 0, }, ]; @@ -40,12 +42,14 @@ const menus: IMenu[] = [ url: '/userRelation/manage', parent: 'System', destEntity: 'userRelation', + order: 1, }, { name: 'relationManage', icon: 'share', url: '/relation/entityList', parent: 'System', + order: 2, }, ]; @@ -57,15 +61,26 @@ export default class Console extends BaseConsole { const menus = this.getAvailMenus(); const menuGroup = groupBy(menus, 'parent'); - return groups.map((ele) => { - const { name, icon } = ele; - const children = menuGroup[name]; - return { - name, - icon, - children, - }; - }).filter((ele) => !!ele.children); + const groupedMenus = groups + .map((ele) => { + const { name, icon, order } = ele; + const children = menuGroup[name]; + return children + ? { + name, + icon, + 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() {