From 7d46889c4a9a33bdc3605a5cfe5d9c8180e99719 Mon Sep 17 00:00:00 2001 From: weizong song Date: Mon, 8 Jun 2026 23:41:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=90=8E=E5=8F=B0=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E5=90=8E=E9=A6=96=E9=A1=B5=E7=A9=BA=E7=99=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/admin/registerDynamicRoutes.ts | 12 ------------ src/router/index.ts | 20 ++++++++++++-------- src/views/admin/AdminLoginView.vue | 16 ++++++++++++++-- 3 files changed, 26 insertions(+), 22 deletions(-) diff --git a/src/router/admin/registerDynamicRoutes.ts b/src/router/admin/registerDynamicRoutes.ts index 7c79699..2e60141 100644 --- a/src/router/admin/registerDynamicRoutes.ts +++ b/src/router/admin/registerDynamicRoutes.ts @@ -82,18 +82,6 @@ export async function registerAdminDynamicRoutes(router: Router) { } useAdminMenuStore().setMenus(menus) - router.addRoute('AdminLayout', { - path: '', - alias: 'dashboard', - name: 'admin-dashboard', - component: ADMIN_COMPONENT_LOADERS['admin-dashboard'], - meta: { - title: '首页', - permissionCode: 'admin.dashboard', - }, - }) - remember('admin-dashboard') - walkMenuRoutes(router, 'AdminLayout', menus) router.addRoute('AdminLayout', { diff --git a/src/router/index.ts b/src/router/index.ts index 309f9b4..71e21da 100644 --- a/src/router/index.ts +++ b/src/router/index.ts @@ -109,7 +109,18 @@ const router = createRouter({ path: '/admin', name: 'AdminLayout', component: () => import('../layouts/AdminLayout.vue'), - children: [], + children: [ + { + path: '', + name: 'admin-dashboard', + component: () => import('../views/admin/AdminDashboardView.vue'), + meta: { title: '首页', permissionCode: 'admin.dashboard' }, + }, + { + path: 'dashboard', + redirect: { name: 'admin-dashboard' }, + }, + ], }, ], }) @@ -164,16 +175,9 @@ router.beforeEach(async (to) => { if (!adminDynamicRoutesRegistered()) { await registerAdminDynamicRoutes(router) - if (to.name === 'AdminLayout' || to.path === '/admin') { - return { name: 'admin-dashboard', replace: true } - } return { ...to, replace: true } } - if (to.name === 'AdminLayout' || to.path === '/admin') { - return { name: 'admin-dashboard', replace: true } - } - return true } diff --git a/src/views/admin/AdminLoginView.vue b/src/views/admin/AdminLoginView.vue index 60d5dd8..b81e466 100644 --- a/src/views/admin/AdminLoginView.vue +++ b/src/views/admin/AdminLoginView.vue @@ -19,10 +19,22 @@ function loginErrorMessage(e: unknown): string { return '登录失败' } +function normalizeAdminRedirectPath(path: string): string { + const baseUrl = import.meta.env.BASE_URL || '/' + const basePrefix = baseUrl.endsWith('/') ? baseUrl.slice(0, -1) : baseUrl + + if (basePrefix && basePrefix !== '/' && path.startsWith(`${basePrefix}/admin`)) { + return path.slice(basePrefix.length) || '/admin' + } + + return path +} + function resolvePostLoginPath(): string { const redir = typeof route.query.redirect === 'string' ? route.query.redirect : '' - if (redir && redir.startsWith('/admin') && !redir.includes('/login')) { - return redir + const normalized = normalizeAdminRedirectPath(redir) + if (normalized && normalized.startsWith('/admin') && !normalized.includes('/login')) { + return normalized } return '/admin' }