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() {