From b93e22c45a73a25b3147c83400125e85d2342cde Mon Sep 17 00:00:00 2001 From: leo Date: Tue, 29 Jul 2025 13:46:05 +0800 Subject: [PATCH] fix(@vben/layouts): respect base URL when opening route in new window (#6583) Previously, the generated URL for opening routes in a new window did not include the router base, which led to incorrect paths when the app was deployed under a subdirectory (e.g., /admin/). This change ensures that the resolved path includes the configured base by using router.resolve(path).href. --- packages/effects/layouts/src/basic/menu/use-navigation.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/packages/effects/layouts/src/basic/menu/use-navigation.ts b/packages/effects/layouts/src/basic/menu/use-navigation.ts index 7b88de8f..6ba484a4 100644 --- a/packages/effects/layouts/src/basic/menu/use-navigation.ts +++ b/packages/effects/layouts/src/basic/menu/use-navigation.ts @@ -32,6 +32,10 @@ function useNavigation() { return route?.meta?.openInNewWindow ?? false; }; + const resolveHref = (path: string): string => { + return router.resolve(path).href; + }; + const navigation = async (path: string) => { try { const route = routeMetaMap.get(path); @@ -40,7 +44,7 @@ function useNavigation() { if (isHttpUrl(path)) { openWindow(path, { target: '_blank' }); } else if (openInNewWindow) { - openRouteInNewWindow(path); + openRouteInNewWindow(resolveHref(path)); } else { await router.push({ path,