From bb1324a70ae25bac00eadbd4d14bb0c1faf5d2df Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期二, 26 五月 2020 14:33:45 +0800 Subject: [PATCH] 支持一级菜单(和主页同级)在main区域显示 --- ruoyi-ui/src/store/modules/permission.js | 4 ++ ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java | 53 ++++++++++++++++++++++++-- ruoyi/src/main/java/com/ruoyi/common/constant/UserConstants.java | 12 ++++++ 3 files changed, 65 insertions(+), 4 deletions(-) diff --git a/ruoyi-ui/src/store/modules/permission.js b/ruoyi-ui/src/store/modules/permission.js index deed451..bfd5988 100644 --- a/ruoyi-ui/src/store/modules/permission.js +++ b/ruoyi-ui/src/store/modules/permission.js @@ -32,6 +32,10 @@ // 閬嶅巻鍚庡彴浼犳潵鐨勮矾鐢卞瓧绗︿覆锛岃浆鎹负缁勪欢瀵硅薄 function filterAsyncRouter(asyncRouterMap) { return asyncRouterMap.filter(route => { + if(!route.path){ + // 闃叉绌鸿矾鐢卞嚭鐜扮殑璀﹀憡锛岃缃粯璁ath + route.path = '/path'; + } if (route.component) { // Layout缁勪欢鐗规畩澶勭悊 if (route.component === 'Layout') { diff --git a/ruoyi/src/main/java/com/ruoyi/common/constant/UserConstants.java b/ruoyi/src/main/java/com/ruoyi/common/constant/UserConstants.java index df6992a..69c2b96 100644 --- a/ruoyi/src/main/java/com/ruoyi/common/constant/UserConstants.java +++ b/ruoyi/src/main/java/com/ruoyi/common/constant/UserConstants.java @@ -42,6 +42,18 @@ /** 鏄惁鑿滃崟澶栭摼锛堝惁锛� */ public static final String NO_FRAME = "1"; + /** 鑿滃崟绫诲瀷锛堢洰褰曪級 */ + public static final String TYPE_DIR = "M"; + + /** 鑿滃崟绫诲瀷锛堣彍鍗曪級 */ + public static final String TYPE_MENU = "C"; + + /** 鑿滃崟绫诲瀷锛堟寜閽級 */ + public static final String TYPE_BUTTON = "F"; + + /** Layout缁勪欢鏍囪瘑 */ + public final static String LAYOUT = "Layout"; + /** 鏍¢獙杩斿洖缁撴灉鐮� */ public final static String UNIQUE = "0"; public final static String NOT_UNIQUE = "1"; diff --git a/ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java b/ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java index d5aff8e..f4933fa 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java +++ b/ruoyi/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java @@ -142,14 +142,25 @@ router.setHidden("1".equals(menu.getVisible())); router.setName(StringUtils.capitalize(menu.getPath())); router.setPath(getRouterPath(menu)); - router.setComponent(StringUtils.isEmpty(menu.getComponent()) ? "Layout" : menu.getComponent()); + router.setComponent(getComponent(menu)); router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon())); List<SysMenu> cMenus = menu.getChildren(); - if (!cMenus.isEmpty() && cMenus.size() > 0 && "M".equals(menu.getMenuType())) + if (!cMenus.isEmpty() && cMenus.size() > 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType())) { router.setAlwaysShow(true); router.setRedirect("noRedirect"); router.setChildren(buildMenus(cMenus)); + } + else if (isMeunFrame(menu)) + { + List<RouterVo> childrenList = new ArrayList<RouterVo>(); + RouterVo children = new RouterVo(); + children.setPath(menu.getPath()); + children.setComponent(menu.getComponent()); + children.setName(StringUtils.capitalize(menu.getPath())); + children.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon())); + childrenList.add(children); + router.setChildren(childrenList); } routers.add(router); } @@ -297,15 +308,49 @@ public String getRouterPath(SysMenu menu) { String routerPath = menu.getPath(); - // 闈炲閾惧苟涓旀槸涓�绾х洰褰� - if (0 == menu.getParentId() && UserConstants.NO_FRAME.equals(menu.getIsFrame())) + // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓虹洰褰曪級 + if (0 == menu.getParentId().intValue() && UserConstants.TYPE_DIR.equals(menu.getMenuType()) + && UserConstants.NO_FRAME.equals(menu.getIsFrame())) { routerPath = "/" + menu.getPath(); } + // 闈炲閾惧苟涓旀槸涓�绾х洰褰曪紙绫诲瀷涓鸿彍鍗曪級 + else if (isMeunFrame(menu)) + { + routerPath = StringUtils.EMPTY; + } return routerPath; } /** + * 鑾峰彇缁勪欢淇℃伅 + * + * @param menu 鑿滃崟淇℃伅 + * @return 缁勪欢淇℃伅 + */ + public String getComponent(SysMenu menu) + { + String component = UserConstants.LAYOUT; + if (StringUtils.isNotEmpty(menu.getComponent()) && !isMeunFrame(menu)) + { + component = menu.getComponent(); + } + return component; + } + + /** + * 鏄惁涓鸿彍鍗曞唴閮ㄨ烦杞� + * + * @param menu 鑿滃崟淇℃伅 + * @return 缁撴灉 + */ + public boolean isMeunFrame(SysMenu menu) + { + return menu.getParentId().intValue() == 0 && UserConstants.TYPE_MENU.equals(menu.getMenuType()) + && menu.getIsFrame().equals(UserConstants.NO_FRAME); + } + + /** * 鏍规嵁鐖惰妭鐐圭殑ID鑾峰彇鎵�鏈夊瓙鑺傜偣 * * @param list 鍒嗙被琛� -- Gitblit v1.9.3