Files
crawler-plugin/admin-frontend-vue/src/router/menu-route-map.ts
T
huangzd1997 4c88964473 task-283(后台迁移收尾/发布): admin-vue 后台工程入库 + Flask 后台整体退役
- 新后台 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/
2026-09-06 10:41:47 +08:00

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 }
})
}