Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
B
basic-vue-admin
概览
概览
详情
活动
周期分析
版本库
存储库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
Basic
basic-vue-admin
Commits
72ac240f
提交
72ac240f
authored
7月 01, 2021
作者:
无木
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
feat: routers support `ignoreRoute` option
为路由配置添加`meta`.`ignoreRoute`配置,允许在`ROUTE_MAPPING`及`BACK`模式下配置纯菜单数据 fixed:
上级
b5046f07
隐藏空白字符变更
内嵌
并排
正在显示
4 个修改的文件
包含
40 行增加
和
1 行删除
+40
-1
menuHelper.ts
src/router/helper/menuHelper.ts
+5
-1
feat.ts
src/router/routes/modules/demo/feat.ts
+22
-0
permission.ts
src/store/modules/permission.ts
+12
-0
vue-router.d.ts
types/vue-router.d.ts
+1
-0
没有找到文件。
src/router/helper/menuHelper.ts
浏览文件 @
72ac240f
...
@@ -9,6 +9,10 @@ export function getAllParentPath<T = Recordable>(treeData: T[], path: string) {
...
@@ -9,6 +9,10 @@ export function getAllParentPath<T = Recordable>(treeData: T[], path: string) {
return
(
menuList
||
[]).
map
((
item
)
=>
item
.
path
);
return
(
menuList
||
[]).
map
((
item
)
=>
item
.
path
);
}
}
function
isPlainPath
(
path
:
string
)
{
return
path
.
indexOf
(
':'
)
===
-
1
;
}
function
joinParentPath
(
menus
:
Menu
[],
parentPath
=
''
)
{
function
joinParentPath
(
menus
:
Menu
[],
parentPath
=
''
)
{
for
(
let
index
=
0
;
index
<
menus
.
length
;
index
++
)
{
for
(
let
index
=
0
;
index
<
menus
.
length
;
index
++
)
{
const
menu
=
menus
[
index
];
const
menu
=
menus
[
index
];
...
@@ -20,7 +24,7 @@ function joinParentPath(menus: Menu[], parentPath = '') {
...
@@ -20,7 +24,7 @@ function joinParentPath(menus: Menu[], parentPath = '') {
menu
.
path
=
`
${
parentPath
}
/
${
menu
.
path
}
`
;
menu
.
path
=
`
${
parentPath
}
/
${
menu
.
path
}
`
;
}
}
if
(
menu
?.
children
?.
length
)
{
if
(
menu
?.
children
?.
length
)
{
joinParentPath
(
menu
.
children
,
menu
.
p
ath
);
joinParentPath
(
menu
.
children
,
isPlainPath
(
menu
.
path
)
?
menu
.
path
:
parentP
ath
);
}
}
}
}
}
}
...
...
src/router/routes/modules/demo/feat.ts
浏览文件 @
72ac240f
...
@@ -241,6 +241,28 @@ const feat: AppRouteModule = {
...
@@ -241,6 +241,28 @@ const feat: AppRouteModule = {
title
:
t
(
'routes.demo.feat.tab'
),
title
:
t
(
'routes.demo.feat.tab'
),
carryParam
:
true
,
carryParam
:
true
,
},
},
children
:
[
{
path
:
'testTab/id1'
,
name
:
'TestTab1'
,
component
:
()
=>
import
(
'/@/views/demo/feat/tab-params/index.vue'
),
meta
:
{
title
:
t
(
'routes.demo.feat.tab1'
),
carryParam
:
true
,
ignoreRoute
:
true
,
},
},
{
path
:
'testTab/id2'
,
name
:
'TestTab2'
,
component
:
()
=>
import
(
'/@/views/demo/feat/tab-params/index.vue'
),
meta
:
{
title
:
t
(
'routes.demo.feat.tab2'
),
carryParam
:
true
,
ignoreRoute
:
true
,
},
},
],
},
},
],
],
};
};
...
...
src/store/modules/permission.ts
浏览文件 @
72ac240f
...
@@ -111,6 +111,12 @@ export const usePermissionStore = defineStore({
...
@@ -111,6 +111,12 @@ export const usePermissionStore = defineStore({
return
roleList
.
some
((
role
)
=>
roles
.
includes
(
role
));
return
roleList
.
some
((
role
)
=>
roles
.
includes
(
role
));
};
};
const
routeRmoveIgnoreFilter
=
(
route
:
AppRouteRecordRaw
)
=>
{
const
{
meta
}
=
route
;
const
{
ignoreRoute
}
=
meta
||
{};
return
!
ignoreRoute
;
};
switch
(
permissionMode
)
{
switch
(
permissionMode
)
{
case
PermissionModeEnum
.
ROLE
:
case
PermissionModeEnum
.
ROLE
:
routes
=
filter
(
asyncRoutes
,
routeFilter
);
routes
=
filter
(
asyncRoutes
,
routeFilter
);
...
@@ -123,6 +129,8 @@ export const usePermissionStore = defineStore({
...
@@ -123,6 +129,8 @@ export const usePermissionStore = defineStore({
routes
=
filter
(
asyncRoutes
,
routeFilter
);
routes
=
filter
(
asyncRoutes
,
routeFilter
);
routes
=
routes
.
filter
(
routeFilter
);
routes
=
routes
.
filter
(
routeFilter
);
const
menuList
=
transformRouteToMenu
(
routes
,
true
);
const
menuList
=
transformRouteToMenu
(
routes
,
true
);
routes
=
filter
(
routes
,
routeRmoveIgnoreFilter
);
routes
=
routes
.
filter
(
routeRmoveIgnoreFilter
);
menuList
.
sort
((
a
,
b
)
=>
{
menuList
.
sort
((
a
,
b
)
=>
{
return
(
a
.
meta
?.
orderNo
||
0
)
-
(
b
.
meta
?.
orderNo
||
0
);
return
(
a
.
meta
?.
orderNo
||
0
)
-
(
b
.
meta
?.
orderNo
||
0
);
});
});
...
@@ -158,6 +166,10 @@ export const usePermissionStore = defineStore({
...
@@ -158,6 +166,10 @@ export const usePermissionStore = defineStore({
const
backMenuList
=
transformRouteToMenu
(
routeList
);
const
backMenuList
=
transformRouteToMenu
(
routeList
);
this
.
setBackMenuList
(
backMenuList
);
this
.
setBackMenuList
(
backMenuList
);
// remove meta.ignoreRoute item
routeList
=
filter
(
routeList
,
routeRmoveIgnoreFilter
);
routeList
=
routeList
.
filter
(
routeRmoveIgnoreFilter
);
routeList
=
flatMultiLevelRoutes
(
routeList
);
routeList
=
flatMultiLevelRoutes
(
routeList
);
routes
=
[
PAGE_NOT_FOUND_ROUTE
,
...
routeList
];
routes
=
[
PAGE_NOT_FOUND_ROUTE
,
...
routeList
];
break
;
break
;
...
...
types/vue-router.d.ts
浏览文件 @
72ac240f
...
@@ -33,5 +33,6 @@ declare module 'vue-router' {
...
@@ -33,5 +33,6 @@ declare module 'vue-router' {
// Never show in menu
// Never show in menu
hideMenu
?:
boolean
;
hideMenu
?:
boolean
;
isLink
?:
boolean
;
isLink
?:
boolean
;
ignoreRoute
?:
boolean
;
}
}
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论