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