4c88964473
- 新后台 admin-frontend-vue 整工程入库(base=/admin-vue/、History 路由、Nginx 静态托管方案与 verify-dist 校验) - Java AdminConsoleController 改为入口重定向: /admin|/admin.html、/login|/login.html -> /admin-vue/; 删除 classpath:static 旧 admin.html/login.html 单页与 admin.js 副本 - Flask 后台整体退役: 删除 admin_api/auth/main 蓝图、web_source 页面、static 脚本与 admin 相关测试; app.py 收敛为仅注册 version_bp(/api/version、/api/version/latest, 供桌面端更新检查) - AdminApiGuardFilterTest 豁免样例路径 /admin.html -> /admin-vue/
28 lines
1.3 KiB
TypeScript
28 lines
1.3 KiB
TypeScript
/** 菜单树 route 归一:column_key → 前端注册的规范页面路径。
|
|
* 共享库 columns.route_path 仍是旧式 slug(切机迁移未应用),这里按注册表 key 映射为新 Vue 路由,
|
|
* 保证侧边栏/面包屑/首页跳转都能命中已注册页面,无需改写共享库。纯逻辑。 */
|
|
import { adminPages } from './routes'
|
|
import type { AdminMenuNode } from '@/types/admin'
|
|
|
|
const CANONICAL_BY_KEY = new Map<string, string>()
|
|
for (const page of adminPages) {
|
|
if (page.menuKey) {
|
|
CANONICAL_BY_KEY.set(page.menuKey, `/${page.path.replace(/^\/+/, '')}`)
|
|
}
|
|
}
|
|
|
|
/** column_key → 规范路由(带前导 /,无 base 前缀);未登记返回 undefined。 */
|
|
export function canonicalRouteOf(key: string | undefined | null): string | undefined {
|
|
return typeof key === 'string' ? CANONICAL_BY_KEY.get(key) : undefined
|
|
}
|
|
|
|
/** 递归把菜单树节点的 route 替换为规范路由;分组/未登记节点保持原值。 */
|
|
export function canonicalizeMenuTree(nodes: AdminMenuNode[] | null | undefined): AdminMenuNode[] {
|
|
return (nodes || []).map((node) => {
|
|
const canonical = canonicalRouteOf(node.key)
|
|
const children = canonicalizeMenuTree(node.children)
|
|
const route = canonical && node.route != null ? canonical : node.route
|
|
return { ...node, route, children }
|
|
})
|
|
}
|