diff --git a/src/components/layout.vue b/src/components/layout.vue index c2bdd4d..a202132 100644 --- a/src/components/layout.vue +++ b/src/components/layout.vue @@ -95,15 +95,21 @@ const routeChange = (to: any) => { navPath.value = []; }; +/** 统一解析菜单项目标:容忍平台配置的尾空格/旧 /notice 前缀/外链,返回内部路由 path 或外链 URL。 + * 模板高亮与点击都走这里,避免「raw page(带尾空格)vs 解析后 path」不一致导致点不动/不高亮。 */ +const resolveItemPage = (item: any) => + resolveMenuPage(item?.page, item?.modId ?? item?.id, item?.name); +const pageOf = (item: any): string => resolveItemPage(item).path; + const linkMenu = (item: any) => { - const page: string = item?.page || ""; + const { path: page, external } = resolveItemPage(item); if (!page) { // 解析不出有效页面:显式提示,而不是静默不动或被重定向吞到默认页 Message.warning(`菜单「${item?.name || "未命名"}」未配置有效页面路径,请检查基础平台模块设置`); return; } // 平台配置的外部链接模块:整页跳转 - if (item?.external) { + if (external) { window.location.href = page; return; } @@ -183,7 +189,7 @@ function linkHomePage() {
  • @@ -194,7 +200,7 @@ function linkHomePage() {
  • -
  • +
  • {{ item.name }}