diff --git a/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/enumeration/ResourceTypeEnum.java b/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/enumeration/ResourceTypeEnum.java
index 8e63c76..21152a8 100644
--- a/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/enumeration/ResourceTypeEnum.java
+++ b/java/cloud/common/src/main/java/cn/toesbieya/jxc/common/enumeration/ResourceTypeEnum.java
@@ -1,7 +1,7 @@
package cn.toesbieya.jxc.common.enumeration;
public enum ResourceTypeEnum {
- FOLDER(1), LEAF(2), API(3);
+ ROOT(0), FOLDER(1), LEAF(2), API(3);
private final int code;
diff --git a/java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/service/ResourceService.java b/java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/service/ResourceService.java
index 8e5e8f3..0cf4013 100644
--- a/java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/service/ResourceService.java
+++ b/java/cloud/web/web-modules/system/src/main/java/cn/toesbieya/jxc/system/service/ResourceService.java
@@ -43,7 +43,11 @@ public class ResourceService implements ResourceApi {
return Collections.emptyList();
}
- return getEnableResourceTree(ids, i -> !i.getType().equals(ResourceTypeEnum.FOLDER.getCode()));
+ return getEnableResourceTree(ids, i -> {
+ Integer type = i.getType();
+ return !type.equals(ResourceTypeEnum.ROOT.getCode())
+ && !type.equals(ResourceTypeEnum.FOLDER.getCode());
+ });
}
public R add(SysResource entity) {
@@ -100,7 +104,7 @@ public class ResourceService implements ResourceApi {
}
String path = r.getPath();
- int index = path.indexOf("//");
+ int index = path.lastIndexOf("//");
if (index != -1 && !path.startsWith("http")) {
//去掉'//'前拼接的父节点的path
r.setPath(path.substring(index + 1));
@@ -116,11 +120,9 @@ public class ResourceService implements ResourceApi {
Integer pid = entity.getPid();
Integer type = entity.getType();
- boolean isApi = type.equals(ResourceTypeEnum.API.getCode());
-
- //根节点不能为数据接口
- if (pid.equals(0)) {
- return isApi ? "数据接口不能作为根节点" : null;
+ //顶部菜单的pid必须为0
+ if (type.equals(ResourceTypeEnum.ROOT.getCode())) {
+ return pid.equals(0) ? null : "顶部菜单不能有父节点";
}
//校验父节点
@@ -130,6 +132,7 @@ public class ResourceService implements ResourceApi {
}
Integer parentType = parent.getType();
//1.待添加的节点为数据接口且父节点必须为叶子菜单
+ boolean isApi = type.equals(ResourceTypeEnum.API.getCode());
if (isApi) {
if (!parentType.equals(ResourceTypeEnum.LEAF.getCode())) {
return "数据接口只能以页面菜单为父节点";
@@ -144,22 +147,23 @@ public class ResourceService implements ResourceApi {
//数据转换
private void transform(SysResource entity) {
- Integer pid = entity.getPid();
Integer type = entity.getType();
+ boolean isRoot = type.equals(ResourceTypeEnum.ROOT.getCode());
boolean isFolder = type.equals(ResourceTypeEnum.FOLDER.getCode());
+ boolean isLeaf = type.equals(ResourceTypeEnum.LEAF.getCode());
+ boolean isApi = type.equals(ResourceTypeEnum.API.getCode());
//能自定义component的只有叶子菜单
- if (!type.equals(ResourceTypeEnum.LEAF.getCode())) {
- //根节点的聚合菜单的组件只能为'Layout'
- boolean isRootFolder = isFolder && pid.equals(0);
- entity.setComponent(isRootFolder ? "Layout" : null);
+ if (!isLeaf) {
+ //顶部菜单的组件只能为'Layout'
+ entity.setComponent(isRoot ? "Layout" : null);
}
- //聚合菜单不能设置name
- if (isFolder) {
+ //顶部或聚合菜单不能设置name(此处的name是路由名称)
+ if (isRoot || isFolder) {
entity.setName(null);
}
//数据接口不能设置meta
- if (type.equals(ResourceTypeEnum.API.getCode())) {
+ if (isApi) {
entity.setMeta(null);
}
}
diff --git a/java/db/my.rar b/java/db/my.rar
index 7c458dd..62f75a0 100644
Binary files a/java/db/my.rar and b/java/db/my.rar differ
diff --git a/java/local/src/main/java/cn/toesbieya/jxc/enumeration/ResourceTypeEnum.java b/java/local/src/main/java/cn/toesbieya/jxc/enumeration/ResourceTypeEnum.java
index e0f1bc7..42d9f33 100644
--- a/java/local/src/main/java/cn/toesbieya/jxc/enumeration/ResourceTypeEnum.java
+++ b/java/local/src/main/java/cn/toesbieya/jxc/enumeration/ResourceTypeEnum.java
@@ -1,7 +1,7 @@
package cn.toesbieya.jxc.enumeration;
public enum ResourceTypeEnum {
- FOLDER(1), LEAF(2), API(3);
+ ROOT(0), FOLDER(1), LEAF(2), API(3);
private final int code;
diff --git a/java/local/src/main/java/cn/toesbieya/jxc/service/sys/SysResourceService.java b/java/local/src/main/java/cn/toesbieya/jxc/service/sys/SysResourceService.java
index 714bda0..2ba7c95 100644
--- a/java/local/src/main/java/cn/toesbieya/jxc/service/sys/SysResourceService.java
+++ b/java/local/src/main/java/cn/toesbieya/jxc/service/sys/SysResourceService.java
@@ -41,7 +41,11 @@ public class SysResourceService {
return Collections.emptyList();
}
- return getEnableResourceTree(ids, i -> !i.getType().equals(ResourceTypeEnum.FOLDER.getCode()));
+ return getEnableResourceTree(ids, i -> {
+ Integer type = i.getType();
+ return !type.equals(ResourceTypeEnum.ROOT.getCode())
+ && !type.equals(ResourceTypeEnum.FOLDER.getCode());
+ });
}
public R add(SysResource entity) {
@@ -99,7 +103,7 @@ public class SysResourceService {
}
String path = r.getPath();
- int index = path.indexOf("//");
+ int index = path.lastIndexOf("//");
if (index != -1 && !path.startsWith("http")) {
//去掉'//'前拼接的父节点的path
r.setPath(path.substring(index + 1));
@@ -115,11 +119,9 @@ public class SysResourceService {
Integer pid = entity.getPid();
Integer type = entity.getType();
- boolean isApi = type.equals(ResourceTypeEnum.API.getCode());
-
- //根节点不能为数据接口
- if (pid.equals(0)) {
- return isApi ? "数据接口不能作为根节点" : null;
+ //顶部菜单的pid必须为0
+ if (type.equals(ResourceTypeEnum.ROOT.getCode())) {
+ return pid.equals(0) ? null : "顶部菜单不能有父节点";
}
//校验父节点
@@ -129,6 +131,7 @@ public class SysResourceService {
}
Integer parentType = parent.getType();
//1.待添加的节点为数据接口且父节点必须为叶子菜单
+ boolean isApi = type.equals(ResourceTypeEnum.API.getCode());
if (isApi) {
if (!parentType.equals(ResourceTypeEnum.LEAF.getCode())) {
return "数据接口只能以页面菜单为父节点";
@@ -143,22 +146,23 @@ public class SysResourceService {
//数据转换
private void transform(SysResource entity) {
- Integer pid = entity.getPid();
Integer type = entity.getType();
+ boolean isRoot = type.equals(ResourceTypeEnum.ROOT.getCode());
boolean isFolder = type.equals(ResourceTypeEnum.FOLDER.getCode());
+ boolean isLeaf = type.equals(ResourceTypeEnum.LEAF.getCode());
+ boolean isApi = type.equals(ResourceTypeEnum.API.getCode());
//能自定义component的只有叶子菜单
- if (!type.equals(ResourceTypeEnum.LEAF.getCode())) {
- //根节点的聚合菜单的组件只能为'Layout'
- boolean isRootFolder = isFolder && pid.equals(0);
- entity.setComponent(isRootFolder ? "Layout" : null);
+ if (!isLeaf) {
+ //顶部菜单的组件只能为'Layout'
+ entity.setComponent(isRoot ? "Layout" : null);
}
- //聚合菜单不能设置name
- if (isFolder) {
+ //顶部或聚合菜单不能设置name(此处的name是路由名称)
+ if (isRoot || isFolder) {
entity.setName(null);
}
//数据接口不能设置meta
- if (type.equals(ResourceTypeEnum.API.getCode())) {
+ if (isApi) {
entity.setMeta(null);
}
}
diff --git a/vue/element-ui-personal/component/Menu/Submenu.vue b/vue/element-ui-personal/component/Menu/Submenu.vue
index 1369cc4..fcef7d1 100644
--- a/vue/element-ui-personal/component/Menu/Submenu.vue
+++ b/vue/element-ui-personal/component/Menu/Submenu.vue
@@ -272,7 +272,3 @@ export default {
}
}
-
-
diff --git a/vue/src/App.vue b/vue/src/App.vue
index 69fb943..0ef3762 100644
--- a/vue/src/App.vue
+++ b/vue/src/App.vue
@@ -1,8 +1,6 @@