import type { NavItem } from '@/config/nav' import type { CmsNavigation } from '@/api/cms/cmsNavigation/model' /** * 获取菜单状态 (响应式) * 与模板项目的 useMenu() 对齐,使用 useState 跨组件共享 */ export const useMenu = () => { return useState('menu', () => []) } /** * 将 CmsNavigation 树映射为 NavItem 树 */ export function mapNavItem(tree: CmsNavigation[]): NavItem[] { return (tree || []) .filter(item => !item.hide) // 过滤隐藏项 .sort((a, b) => (a.sortNumber ?? 0) - (b.sortNumber ?? 0)) .map(item => ({ key: item.code || String(item.navigationId), label: item.title || '', to: item.path || '/', href: item.target === '_blank' ? item.path : undefined, badge: undefined, // 后端暂无 badge 字段,按需扩展 children: item.children?.length ? mapNavItem(item.children) : undefined, })) }