Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
basic-vue-admin
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Basic
basic-vue-admin
Commits
e2cc5af9
提交
e2cc5af9
authored
3月 23, 2021
作者:
Vben
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix(route): ensure that the first level menu can be hidden
上级
908116dd
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
26 行增加
和
20 行删除
+26
-20
CHANGELOG.zh_CN.md
CHANGELOG.zh_CN.md
+1
-0
routeHelper.ts
src/router/helper/routeHelper.ts
+16
-12
index.ts
src/router/menus/index.ts
+1
-0
index.ts
src/router/routes/index.ts
+0
-4
permission.ts
src/store/modules/permission.ts
+8
-4
没有找到文件。
CHANGELOG.zh_CN.md
浏览文件 @
e2cc5af9
...
@@ -19,6 +19,7 @@
...
@@ -19,6 +19,7 @@
-
修复后台权限指令不生效
-
修复后台权限指令不生效
-
确保 progress 进度条正确关闭
-
确保 progress 进度条正确关闭
-
修复表格勾选列配置失效问题
-
修复表格勾选列配置失效问题
-
确保一级菜单可以被隐藏
## 2.1.0 (2021-03-15)
## 2.1.0 (2021-03-15)
...
...
src/router/helper/routeHelper.ts
浏览文件 @
e2cc5af9
...
@@ -79,27 +79,28 @@ export function transformObjToRoute<T = AppRouteModule>(routeList: AppRouteModul
...
@@ -79,27 +79,28 @@ export function transformObjToRoute<T = AppRouteModule>(routeList: AppRouteModul
/**
/**
* Convert multi-level routing to level 2 routing
* Convert multi-level routing to level 2 routing
*/
*/
export
function
flatRoutes
(
routeModules
:
AppRouteModule
[])
{
export
function
flatMultiLevelRoutes
(
routeModules
:
AppRouteModule
[])
{
for
(
let
index
=
0
;
index
<
routeModules
.
length
;
index
++
)
{
const
modules
:
AppRouteModule
[]
=
cloneDeep
(
routeModules
);
const
routeModule
=
routeModules
[
index
];
for
(
let
index
=
0
;
index
<
modules
.
length
;
index
++
)
{
const
routeModule
=
modules
[
index
];
if
(
!
isMultipleRoute
(
routeModule
))
{
if
(
!
isMultipleRoute
(
routeModule
))
{
continue
;
continue
;
}
}
promoteRouteLevel
(
routeModule
);
promoteRouteLevel
(
routeModule
);
}
}
return
modules
;
}
}
// Routing level upgrade
// Routing level upgrade
function
promoteRouteLevel
(
routeModule
:
AppRouteModule
)
{
function
promoteRouteLevel
(
routeModule
:
AppRouteModule
)
{
// Use vue-router to splice menus
// Use vue-router to splice menus
let
router
:
Router
|
null
=
createRouter
({
let
router
:
Router
|
null
=
createRouter
({
routes
:
[
routeModule
as
any
],
routes
:
[
(
routeModule
as
unknown
)
as
RouteRecordNormalized
],
history
:
createWebHashHistory
(),
history
:
createWebHashHistory
(),
});
});
const
routes
=
router
.
getRoutes
();
const
routes
=
router
.
getRoutes
();
const
children
=
cloneDeep
(
routeModule
.
children
);
addToChildren
(
routes
,
routeModule
.
children
||
[],
routeModule
);
addToChildren
(
routes
,
children
||
[],
routeModule
);
router
=
null
;
router
=
null
;
routeModule
.
children
=
routeModule
.
children
?.
filter
((
item
)
=>
!
item
.
children
?.
length
);
routeModule
.
children
=
routeModule
.
children
?.
filter
((
item
)
=>
!
item
.
children
?.
length
);
...
@@ -114,12 +115,15 @@ function addToChildren(
...
@@ -114,12 +115,15 @@ function addToChildren(
for
(
let
index
=
0
;
index
<
children
.
length
;
index
++
)
{
for
(
let
index
=
0
;
index
<
children
.
length
;
index
++
)
{
const
child
=
children
[
index
];
const
child
=
children
[
index
];
const
route
=
routes
.
find
((
item
)
=>
item
.
name
===
child
.
name
);
const
route
=
routes
.
find
((
item
)
=>
item
.
name
===
child
.
name
);
if
(
route
)
{
if
(
!
route
)
{
routeModule
.
children
=
routeModule
.
children
||
[];
continue
;
routeModule
.
children
?.
push
(
route
as
any
);
}
if
(
child
.
children
?.
length
)
{
routeModule
.
children
=
routeModule
.
children
||
[];
addToChildren
(
routes
,
child
.
children
,
routeModule
);
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() {
...
@@ -45,6 +45,7 @@ async function getAsyncMenus() {
export
const
getMenus
=
async
():
Promise
<
Menu
[]
>
=>
{
export
const
getMenus
=
async
():
Promise
<
Menu
[]
>
=>
{
const
menus
=
await
getAsyncMenus
();
const
menus
=
await
getAsyncMenus
();
const
routes
=
router
.
getRoutes
();
const
routes
=
router
.
getRoutes
();
return
!
isBackMode
()
?
filter
(
menus
,
basicFilter
(
routes
))
:
menus
;
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';
...
@@ -5,7 +5,6 @@ import { PAGE_NOT_FOUND_ROUTE, REDIRECT_ROUTE } from '/@/router/routes/basic';
import
{
mainOutRoutes
}
from
'./mainOut'
;
import
{
mainOutRoutes
}
from
'./mainOut'
;
import
{
PageEnum
}
from
'/@/enums/pageEnum'
;
import
{
PageEnum
}
from
'/@/enums/pageEnum'
;
import
{
t
}
from
'/@/hooks/web/useI18n'
;
import
{
t
}
from
'/@/hooks/web/useI18n'
;
import
{
flatRoutes
}
from
'/@/router/helper/routeHelper'
;
const
modules
=
import
.
meta
.
globEager
(
'./modules/**/*.ts'
);
const
modules
=
import
.
meta
.
globEager
(
'./modules/**/*.ts'
);
...
@@ -17,9 +16,6 @@ Object.keys(modules).forEach((key) => {
...
@@ -17,9 +16,6 @@ Object.keys(modules).forEach((key) => {
routeModuleList
.
push
(...
modList
);
routeModuleList
.
push
(...
modList
);
});
});
// Multi-level routing conversion
flatRoutes
(
routeModuleList
);
export
const
asyncRoutes
=
[
PAGE_NOT_FOUND_ROUTE
,
...
routeModuleList
];
export
const
asyncRoutes
=
[
PAGE_NOT_FOUND_ROUTE
,
...
routeModuleList
];
export
const
RootRoute
:
AppRouteRecordRaw
=
{
export
const
RootRoute
:
AppRouteRecordRaw
=
{
...
...
src/store/modules/permission.ts
浏览文件 @
e2cc5af9
...
@@ -15,7 +15,7 @@ import { toRaw } from 'vue';
...
@@ -15,7 +15,7 @@ import { toRaw } from 'vue';
import
{
getMenuListById
}
from
'/@/api/sys/menu'
;
import
{
getMenuListById
}
from
'/@/api/sys/menu'
;
import
{
getPermCodeByUserId
}
from
'/@/api/sys/user'
;
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
{
transformRouteToMenu
}
from
'/@/router/helper/menuHelper'
;
import
{
useMessage
}
from
'/@/hooks/web/useMessage'
;
import
{
useMessage
}
from
'/@/hooks/web/useMessage'
;
...
@@ -99,12 +99,16 @@ class Permission extends VuexModule {
...
@@ -99,12 +99,16 @@ class Permission extends VuexModule {
// role permissions
// role permissions
if
(
permissionMode
===
PermissionModeEnum
.
ROLE
)
{
if
(
permissionMode
===
PermissionModeEnum
.
ROLE
)
{
routes
=
filter
(
asyncRoutes
,
(
route
)
=>
{
const
routeFilter
=
(
route
)
=>
{
const
{
meta
}
=
route
as
AppRouteRecordRaw
;
const
{
meta
}
=
route
as
AppRouteRecordRaw
;
const
{
roles
}
=
meta
||
{};
const
{
roles
}
=
meta
||
{};
if
(
!
roles
)
return
true
;
if
(
!
roles
)
return
true
;
return
roleList
.
some
((
role
)
=>
roles
.
includes
(
role
));
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
// 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
)
{
}
else
if
(
permissionMode
===
PermissionModeEnum
.
BACK
)
{
createMessage
.
loading
({
createMessage
.
loading
({
...
@@ -131,7 +135,7 @@ class Permission extends VuexModule {
...
@@ -131,7 +135,7 @@ class Permission extends VuexModule {
const
backMenuList
=
transformRouteToMenu
(
routeList
);
const
backMenuList
=
transformRouteToMenu
(
routeList
);
this
.
commitBackMenuListState
(
backMenuList
);
this
.
commitBackMenuListState
(
backMenuList
);
flat
Routes
(
routeList
);
routeList
=
flatMultiLevel
Routes
(
routeList
);
routes
=
[
PAGE_NOT_FOUND_ROUTE
,
...
routeList
];
routes
=
[
PAGE_NOT_FOUND_ROUTE
,
...
routeList
];
}
}
routes
.
push
(
ERROR_LOG_ROUTE
);
routes
.
push
(
ERROR_LOG_ROUTE
);
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论