Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
啊嘞嘞EC
vue-vben-admin
提交
e2cc5af9
V
vue-vben-admin
项目概览
啊嘞嘞EC
/
vue-vben-admin
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
V
vue-vben-admin
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
e2cc5af9
编写于
3月 23, 2021
作者:
V
Vben
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(route): ensure that the first level menu can be hidden
上级
908116dd
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
26 addition
and
20 deletion
+26
-20
CHANGELOG.zh_CN.md
CHANGELOG.zh_CN.md
+1
-0
src/router/helper/routeHelper.ts
src/router/helper/routeHelper.ts
+16
-12
src/router/menus/index.ts
src/router/menus/index.ts
+1
-0
src/router/routes/index.ts
src/router/routes/index.ts
+0
-4
src/store/modules/permission.ts
src/store/modules/permission.ts
+8
-4
未找到文件。
CHANGELOG.zh_CN.md
浏览文件 @
e2cc5af9
...
...
@@ -19,6 +19,7 @@
-
修复后台权限指令不生效
-
确保 progress 进度条正确关闭
-
修复表格勾选列配置失效问题
-
确保一级菜单可以被隐藏
## 2.1.0 (2021-03-15)
...
...
src/router/helper/routeHelper.ts
浏览文件 @
e2cc5af9
...
...
@@ -79,27 +79,28 @@ export function transformObjToRoute<T = AppRouteModule>(routeList: AppRouteModul
/**
* Convert multi-level routing to level 2 routing
*/
export
function
flatRoutes
(
routeModules
:
AppRouteModule
[])
{
for
(
let
index
=
0
;
index
<
routeModules
.
length
;
index
++
)
{
const
routeModule
=
routeModules
[
index
];
export
function
flatMultiLevelRoutes
(
routeModules
:
AppRouteModule
[])
{
const
modules
:
AppRouteModule
[]
=
cloneDeep
(
routeModules
);
for
(
let
index
=
0
;
index
<
modules
.
length
;
index
++
)
{
const
routeModule
=
modules
[
index
];
if
(
!
isMultipleRoute
(
routeModule
))
{
continue
;
}
promoteRouteLevel
(
routeModule
);
}
return
modules
;
}
// Routing level upgrade
function
promoteRouteLevel
(
routeModule
:
AppRouteModule
)
{
// Use vue-router to splice menus
let
router
:
Router
|
null
=
createRouter
({
routes
:
[
routeModule
as
any
],
routes
:
[
(
routeModule
as
unknown
)
as
RouteRecordNormalized
],
history
:
createWebHashHistory
(),
});
const
routes
=
router
.
getRoutes
();
const
children
=
cloneDeep
(
routeModule
.
children
);
addToChildren
(
routes
,
children
||
[],
routeModule
);
addToChildren
(
routes
,
routeModule
.
children
||
[],
routeModule
);
router
=
null
;
routeModule
.
children
=
routeModule
.
children
?.
filter
((
item
)
=>
!
item
.
children
?.
length
);
...
...
@@ -114,12 +115,15 @@ function addToChildren(
for
(
let
index
=
0
;
index
<
children
.
length
;
index
++
)
{
const
child
=
children
[
index
];
const
route
=
routes
.
find
((
item
)
=>
item
.
name
===
child
.
name
);
if
(
route
)
{
routeModule
.
children
=
routeModule
.
children
||
[];
routeModule
.
children
?.
push
(
route
as
any
);
if
(
child
.
children
?.
length
)
{
addToChildren
(
routes
,
child
.
children
,
routeModule
);
}
if
(
!
route
)
{
continue
;
}
routeModule
.
children
=
routeModule
.
children
||
[];
if
(
!
routeModule
.
children
.
find
((
item
)
=>
item
.
name
===
route
.
name
))
{
routeModule
.
children
?.
push
((
route
as
unknown
)
as
AppRouteModule
);
}
if
(
child
.
children
?.
length
)
{
addToChildren
(
routes
,
child
.
children
,
routeModule
);
}
}
}
...
...
src/router/menus/index.ts
浏览文件 @
e2cc5af9
...
...
@@ -45,6 +45,7 @@ async function getAsyncMenus() {
export
const
getMenus
=
async
():
Promise
<
Menu
[]
>
=>
{
const
menus
=
await
getAsyncMenus
();
const
routes
=
router
.
getRoutes
();
return
!
isBackMode
()
?
filter
(
menus
,
basicFilter
(
routes
))
:
menus
;
};
...
...
src/router/routes/index.ts
浏览文件 @
e2cc5af9
...
...
@@ -5,7 +5,6 @@ import { PAGE_NOT_FOUND_ROUTE, REDIRECT_ROUTE } from '/@/router/routes/basic';
import
{
mainOutRoutes
}
from
'
./mainOut
'
;
import
{
PageEnum
}
from
'
/@/enums/pageEnum
'
;
import
{
t
}
from
'
/@/hooks/web/useI18n
'
;
import
{
flatRoutes
}
from
'
/@/router/helper/routeHelper
'
;
const
modules
=
import
.
meta
.
globEager
(
'
./modules/**/*.ts
'
);
...
...
@@ -17,9 +16,6 @@ Object.keys(modules).forEach((key) => {
routeModuleList
.
push
(...
modList
);
});
// Multi-level routing conversion
flatRoutes
(
routeModuleList
);
export
const
asyncRoutes
=
[
PAGE_NOT_FOUND_ROUTE
,
...
routeModuleList
];
export
const
RootRoute
:
AppRouteRecordRaw
=
{
...
...
src/store/modules/permission.ts
浏览文件 @
e2cc5af9
...
...
@@ -15,7 +15,7 @@ import { toRaw } from 'vue';
import
{
getMenuListById
}
from
'
/@/api/sys/menu
'
;
import
{
getPermCodeByUserId
}
from
'
/@/api/sys/user
'
;
import
{
transformObjToRoute
,
flatRoutes
}
from
'
/@/router/helper/routeHelper
'
;
import
{
transformObjToRoute
,
flat
MultiLevel
Routes
}
from
'
/@/router/helper/routeHelper
'
;
import
{
transformRouteToMenu
}
from
'
/@/router/helper/menuHelper
'
;
import
{
useMessage
}
from
'
/@/hooks/web/useMessage
'
;
...
...
@@ -99,12 +99,16 @@ class Permission extends VuexModule {
// role permissions
if
(
permissionMode
===
PermissionModeEnum
.
ROLE
)
{
routes
=
filter
(
asyncRoutes
,
(
route
)
=>
{
const
routeFilter
=
(
route
)
=>
{
const
{
meta
}
=
route
as
AppRouteRecordRaw
;
const
{
roles
}
=
meta
||
{};
if
(
!
roles
)
return
true
;
return
roleList
.
some
((
role
)
=>
roles
.
includes
(
role
));
});
};
routes
=
filter
(
asyncRoutes
,
routeFilter
);
routes
=
routes
.
filter
(
routeFilter
);
// Convert multi-level routing to level 2 routing
routes
=
flatMultiLevelRoutes
(
routes
);
// If you are sure that you do not need to do background dynamic permissions, please comment the entire judgment below
}
else
if
(
permissionMode
===
PermissionModeEnum
.
BACK
)
{
createMessage
.
loading
({
...
...
@@ -131,7 +135,7 @@ class Permission extends VuexModule {
const
backMenuList
=
transformRouteToMenu
(
routeList
);
this
.
commitBackMenuListState
(
backMenuList
);
flat
Routes
(
routeList
);
routeList
=
flatMultiLevel
Routes
(
routeList
);
routes
=
[
PAGE_NOT_FOUND_ROUTE
,
...
routeList
];
}
routes
.
push
(
ERROR_LOG_ROUTE
);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录