瀏覽代碼

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.
leo 1 月之前
父節點
當前提交
b93e22c45a
共有 1 個文件被更改,包括 5 次插入1 次删除
  1. 5 1
      packages/effects/layouts/src/basic/menu/use-navigation.ts

+ 5 - 1
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,