Эх сурвалжийг харах

Update 优化外链内链菜单显示,支持外链带参数

Yue 2 өдөр өмнө
parent
commit
4472b0c839

+ 10 - 3
SERVER/VberAdminPlusV3/vber-modules/vber-system/src/main/java/com/vber/system/domain/SysMenu.java

@@ -126,8 +126,15 @@ public class SysMenu extends BaseEntity {
      * 内链域名特殊字符替换
      */
     public static String innerLinkReplaceEach(String path) {
-        return StringUtils.replaceEach(path, new String[] { Constants.HTTP, Constants.HTTPS, Constants.WWW, ".", ":" },
-                new String[] { "", "", "", "/", "/" });
+        // 移除URL查询参数
+        int queryIndex = path.indexOf('?');
+        if (queryIndex > 0) {
+            path = path.substring(0, queryIndex);
+        }
+        String replacedPath = StringUtils.replaceEach(path,
+                new String[]{Constants.HTTP, Constants.HTTPS, Constants.WWW, ".", ":"},
+                new String[]{"", "", "", "/", "/"});
+        return replacedPath.startsWith("/") ? replacedPath : "/" + replacedPath;
     }
 
     /**
@@ -137,7 +144,7 @@ public class SysMenu extends BaseEntity {
         String routerName = StringUtils.capitalize(path);
         // 非外链并且是一级目录(类型为目录)
         if (isMenuFrame()) {
-            routerName = StringUtils.EMPTY;
+            routerName = "FRAME";
         }
         return routerName;
     }

+ 10 - 9
SERVER/VberAdminPlusV3/vber-modules/vber-system/src/main/java/com/vber/system/service/impl/SysMenuServiceImpl.java

@@ -209,7 +209,7 @@ public class SysMenuServiceImpl implements ISysMenuService {
                 continue;
             }
             String name = menu.getRouteName() + menu.getMenuId();
-            
+
             RouterVo router = new RouterVo();
             router.setHidden("1".equals(menu.getVisible()));
             router.setName(name);
@@ -223,8 +223,16 @@ public class SysMenuServiceImpl implements ISysMenuService {
                 router.setAlwaysShow(true);
                 router.setRedirect("noRedirect");
                 router.setChildren(buildMenus(cMenus));
+            } else if (menu.isInnerLink()) {
+                String routerPath = SysMenu.innerLinkReplaceEach(menu.getPath());
+                String innerLinkName = StringUtils.capitalize(routerPath) + menu.getMenuId();
+                router.setPath(routerPath);
+                router.setComponent(SystemConstants.INNER_LINK);
+                router.setName(innerLinkName);
+                router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), menu.getPath()));
             } else if (menu.isMenuFrame()) {
                 String frameName = StringUtils.capitalize(menu.getPath()) + menu.getMenuId();
+                router.setComponent(SystemConstants.LAYOUT);
                 router.setMeta(null);
                 List<RouterVo> childrenList = new ArrayList<>();
                 RouterVo children = new RouterVo();
@@ -232,17 +240,10 @@ public class SysMenuServiceImpl implements ISysMenuService {
                 children.setComponent(menu.getComponent());
                 children.setName(frameName);
                 children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(),
-                        StringUtils.equals("1", menu.getIsCache())));
+                        StringUtils.equals("1", menu.getIsCache()), menu.getPath()));
                 children.setQuery(menu.getQueryParam());
                 childrenList.add(children);
                 router.setChildren(childrenList);
-            } else if (menu.isInnerLink()) {
-                String routerPath = SysMenu.innerLinkReplaceEach(menu.getPath());
-                String innerLinkName = StringUtils.capitalize(routerPath) + menu.getMenuId();
-                router.setPath(routerPath);
-                router.setComponent(SystemConstants.INNER_LINK);
-                router.setName(innerLinkName);
-                router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon(), menu.getPath()));
             }
             routers.add(router);
         }

+ 6 - 4
UI/VAP_V3.VUE/src/stores/_menu.ts

@@ -142,7 +142,6 @@ export const useMenuStore = defineStore("menu", () => {
 				parent.pages?.push(item)
 			}
 		})
-		console.log("menu", parent)
 		sidebarMenus.value.push(parent)
 	}
 	const filterMenuItem = (menu: Menu) => {
@@ -193,11 +192,14 @@ export const useMenuStore = defineStore("menu", () => {
 					: typeof menu?.component == "string"
 						? loadView(menu.component)
 						: menu.component,
-				meta: Object.assign({}, menu.meta || {}, {
-					breadcrumbs: getBreadcrumbs(menu)
-				}),
+				meta: null,
 				children: []
 			}
+			if (menu.meta) {
+				item.meta = Object.assign({}, menu.meta, {
+					breadcrumbs: getBreadcrumbs(menu)
+				})
+			}
 
 			if (
 				menu.parentName == "0" &&