给空模板的menu添加排序和单项不展开的功能
This commit is contained in:
parent
b7505c52f4
commit
9f6476673a
|
|
@ -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() {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue