fix: normalize dashboard nav path matching
This commit is contained in:
@@ -661,9 +661,7 @@
|
|||||||
defaultPath: '/messages',
|
defaultPath: '/messages',
|
||||||
items: [
|
items: [
|
||||||
{ label: '消息列表', path: '/messages' },
|
{ label: '消息列表', path: '/messages' },
|
||||||
{ label: '定时推送', path: '/message_push' },
|
{ label: '定时推送', path: '/message_push' }
|
||||||
{ label: '运行日志', path: '/wx_logs' },
|
|
||||||
{ label: '错误日志', path: '/errors' }
|
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
@@ -710,7 +708,9 @@
|
|||||||
items: [
|
items: [
|
||||||
{ label: '用户统计', path: '/users' },
|
{ label: '用户统计', path: '/users' },
|
||||||
{ label: '资源监控', path: '/system_status' },
|
{ label: '资源监控', path: '/system_status' },
|
||||||
{ label: '文件浏览', path: '/file_browser' }
|
{ label: '文件浏览', path: '/file_browser' },
|
||||||
|
{ label: '运行日志', path: '/wx_logs' },
|
||||||
|
{ label: '错误日志', path: '/errors' }
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
@@ -726,9 +726,9 @@
|
|||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
activeGroup() {
|
activeGroup() {
|
||||||
const path = window.location.pathname;
|
const path = this.normalizePath(window.location.pathname);
|
||||||
const matched = this.navGroups.find(group =>
|
const matched = this.navGroups.find(group =>
|
||||||
group.items.some(item => item.path === path)
|
group.items.some(item => this.normalizePath(item.path) === path)
|
||||||
);
|
);
|
||||||
return matched ? matched.key : 'overview';
|
return matched ? matched.key : 'overview';
|
||||||
},
|
},
|
||||||
@@ -747,18 +747,25 @@
|
|||||||
document.querySelector('.app-container').classList.add('loaded');
|
document.querySelector('.app-container').classList.add('loaded');
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
|
normalizePath(path) {
|
||||||
|
if (!path) return '/';
|
||||||
|
if (path.length > 1 && path.endsWith('/')) {
|
||||||
|
return path.slice(0, -1);
|
||||||
|
}
|
||||||
|
return path;
|
||||||
|
},
|
||||||
isPathActive(path) {
|
isPathActive(path) {
|
||||||
return window.location.pathname === path;
|
return this.normalizePath(window.location.pathname) === this.normalizePath(path);
|
||||||
},
|
},
|
||||||
go(path) {
|
go(path) {
|
||||||
if (path && window.location.pathname !== path) {
|
if (path && this.normalizePath(window.location.pathname) !== this.normalizePath(path)) {
|
||||||
window.location.href = path;
|
window.location.href = path;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
goToPrimary(group) {
|
goToPrimary(group) {
|
||||||
if (!group) return;
|
if (!group) return;
|
||||||
const current = window.location.pathname;
|
const current = this.normalizePath(window.location.pathname);
|
||||||
const ownPaths = (group.items || []).map(item => item.path);
|
const ownPaths = (group.items || []).map(item => this.normalizePath(item.path));
|
||||||
if (ownPaths.includes(current)) return;
|
if (ownPaths.includes(current)) return;
|
||||||
this.go(group.defaultPath || (group.items && group.items[0] && group.items[0].path));
|
this.go(group.defaultPath || (group.items && group.items[0] && group.items[0].path));
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user