| 123456789101112131415161718192021222324252627282930313233343536373839404142 |
- import type { SystemModel, TransformData } from '#/api';
- export function fromMenus(menus: TransformData[]): SystemModel.Menu[] {
- const getType = (menu: TransformData): SystemModel.Menu['type'] => {
- if (menu.type) return menu.type;
- if (menu.component && menu.children === null) return 'menu';
- return menu.component ? 'catalog' : 'button';
- };
- return Array.isArray(menus)
- ? menus
- .map((menu: TransformData) => {
- menu.meta ??= {};
- menu.meta.order ??= menu?.orderNum ?? -1;
- return {
- type: getType(menu),
- id: menu.id ?? menu.meta.id,
- pid: menu.parentId,
- name: menu.name,
- path: menu.path,
- component: menu.component,
- meta: fromMenuMeta(menu.meta),
- children: fromMenus(menu.children),
- } satisfies SystemModel.Menu;
- })
- .sort((a, b) => (a.meta.order ?? -1) - (b.meta.order ?? -1))
- : [];
- }
- type MenuMeta = SystemModel.Menu['meta'];
- export function getDefaultMenuMeta(meta?: MenuMeta): MenuMeta {
- return Object.assign(
- {
- keepAlive: true,
- },
- meta,
- );
- }
- function fromMenuMeta(meta: TransformData): MenuMeta {
- return getDefaultMenuMeta(meta satisfies MenuMeta);
- }
|