Skip to content
Toggle navigation
Toggle navigation
This project
Loading...
Sign in
csbr-daop
/
fe-data-trusted-space
Go to a project
Toggle navigation
Toggle navigation pinning
Projects
Groups
Snippets
Help
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Issue Boards
Files
Commits
Network
Compare
Branches
Tags
d6ef3200
authored
2025-02-19 17:01:44 +0800
by
lihua
Browse Files
Options
Browse Files
Tag
Download
Email Patches
Plain Diff
路由菜单根据路径匹配显示
1 parent
b94ad0cd
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
85 additions
and
120 deletions
src/router/routes.ts
src/store/modules/route.ts
src/store/modules/user.ts
src/router/routes.ts
View file @
d6ef320
...
...
@@ -103,70 +103,15 @@ const systemRoutes: RouteRecordRaw[] = [
]
// 动态路由(异步路由、导航栏路由)
const
asyncRoutes
:
Route
.
recordMainRaw
[]
=
[
{
meta
:{
title
:
'数据资产看板'
,
},
children
:
[
...
AssetIndex
,
],
},
{
meta
:
{
title
:
'数据产品管理'
,
},
children
:
[
...
DataAssess
,
],
},
{
meta
:
{
title
:
'数据资产登记'
,
},
children
:
[
...
DataAssetRegistry
,
],
},
{
meta
:
{
title
:
'数据资产入表'
,
},
children
:
[
...
DataEntry
,
],
},
{
meta
:
{
title
:
'法律风险意见'
,
},
children
:
[
...
SecurityMenu
,
],
},
{
meta
:
{
title
:
'元数据'
,
},
children
:
[
...
DataMeta
,
],
},
{
meta
:
{
title
:
'数据质量'
,
},
children
:
[
...
DataQuality
,
],
},
{
meta
:
{
title
:
'数据盘点'
,
},
children
:
[
...
DataInventory
,
],
},
const
asyncRoutes
:
RouteRecordRaw
[]
=
[
...
AssetIndex
,
...
DataAssess
,
...
DataAssetRegistry
,
...
DataEntry
,
...
SecurityMenu
,
...
DataMeta
,
...
DataQuality
,
...
DataInventory
]
const
constantRoutesByFilesystem
=
generatedRoutes
.
filter
((
item
)
=>
{
...
...
src/store/modules/route.ts
View file @
d6ef320
...
...
@@ -3,7 +3,6 @@ import type { RouteMeta, RouteRecordRaw } from 'vue-router'
import
useSettingsStore
from
'./settings'
import
useUserStore
from
'./user'
import
{
resolveRoutePath
}
from
'@/utils'
import
{
getImageContent
}
from
"@/api/modules/queryService"
;
import
{
createSVG
}
from
"@/utils/common"
import
{
systemRoutes
}
from
'@/router/routes'
import
apiApp
from
'@/api/modules/app'
...
...
@@ -91,17 +90,15 @@ const useRouteStore = defineStore(
const
returnRoutes
:
RouteRecordRaw
[]
=
[]
if
(
routesRaw
.
value
)
{
if
(
settingsStore
.
settings
.
app
.
routeBaseOn
!==
'filesystem'
)
{
routesRaw
.
value
.
forEach
((
item
)
=>
{
const
tmpRoutes
=
cloneDeep
(
item
.
children
)
as
RouteRecordRaw
[]
tmpRoutes
.
map
((
v
)
=>
{
if
(
!
v
.
meta
)
{
v
.
meta
=
{}
}
v
.
meta
.
auth
=
item
.
meta
?.
auth
??
v
.
meta
?.
auth
return
v
})
returnRoutes
.
push
(...
tmpRoutes
)
const
tmpRoutes
=
cloneDeep
(
routesRaw
.
value
)
as
RouteRecordRaw
[]
tmpRoutes
.
map
((
v
)
=>
{
if
(
!
v
.
meta
)
{
v
.
meta
=
{}
}
v
.
meta
.
auth
=
v
.
meta
?.
auth
return
v
})
returnRoutes
.
push
(...
tmpRoutes
)
returnRoutes
.
forEach
(
item
=>
flatAsyncRoutes
(
item
))
}
else
{
...
...
@@ -155,17 +152,27 @@ const useRouteStore = defineStore(
if
(
p
&&
p
.
productRoute
)
{
path
=
p
.
productRoute
+
p
.
path
;
}
m
.
meta
=
{
title
:
m
.
productName
||
m
.
menuName
};
}
r
=
routes
.
find
((
route
:
any
)
=>
route
.
path
===
path
||
route
.
path
===
m
.
path
||
`/
${
route
.
path
}
`
===
m
.
path
);
if
(
r
&&
m
.
icon
&&
m
.
icon
!==
"{}"
)
{
r
.
meta
.
title
=
m
.
menuName
||
r
.
meta
.
title
;
r
.
meta
.
icon
=
m
.
icon
r
.
meta
.
isEle
=
true
}
}
else
{
r
=
routes
.
find
((
route
:
any
)
=>
route
.
meta
.
title
===
m
.
productName
);
if
(
r
&&
m
.
icon
&&
m
.
icon
!==
"{}"
)
{
r
.
meta
.
title
=
m
.
menuName
||
r
.
meta
.
title
;
// r = routes.find((route: any) => route.meta.title === m.productName);
// if(m.icon && m.icon !== "{}") {
// r.meta.icon = m.icon
// r.meta.isEle = true
// }
m
.
meta
=
{
title
:
m
.
productName
};
r
=
m
;
if
(
m
.
icon
&&
m
.
icon
!==
"{}"
)
{
r
.
meta
.
icon
=
m
.
icon
r
.
meta
.
isEle
=
true
}
...
...
@@ -173,25 +180,34 @@ const useRouteStore = defineStore(
if
(
r
&&
hasPermission
(
permissions
,
r
))
{
const
tmpRoute
=
cloneDeep
(
r
);
if
(
m
.
menuType
===
'C'
)
{
tmpRoute
.
meta
.
title
=
m
.
menuName
;
tmpRoute
.
meta
.
title
=
m
.
productName
??
m
.
menuName
;
}
if
(
tmpRoute
.
children
)
{
let
children
=
m
.
productName
?
m
.
menuList
:
m
.
children
;
if
(
children
)
{
if
(
m
.
menuType
===
'C'
)
{
tmpRoute
.
children
=
tmpRoute
.
children
.
filter
(
child
=>
{
let
cc
:
any
=
[];
children
.
forEach
(
child
=>
{
if
(
!
child
.
path
)
{
return
true
;
}
if
(
child
.
sidebar
===
false
)
{
return
true
;
}
return
filterAsyncRoutes
([
child
],
permissions
,
m
.
children
||
[],
parentPath
+
m
.
path
)?.
length
>
0
;
let
result
=
filterAsyncRoutes
(
tmpRoute
.
children
||
[],
permissions
,
[
child
],
parentPath
+
m
.
path
);
if
(
result
.
length
>
0
)
{
cc
.
push
(
result
[
0
]);
}
});
tmpRoute
.
children
=
cc
;
}
else
{
tmpRoute
.
children
=
filterAsyncRoutes
(
tmpRoute
.
children
,
permissions
,
(
m
.
productName
?
m
.
menuList
:
m
.
children
)
||
[],
m
.
productRoute
??
""
)
tmpRoute
.
children
=
filterAsyncRoutes
(
routes
,
permissions
,
(
m
.
productName
?
m
.
menuList
:
m
.
children
)
||
[],
m
.
productRoute
??
""
)
}
tmpRoute
.
children
.
length
&&
res
.
push
(
tmpRoute
)
}
else
{
if
(
m
.
menuType
===
'C'
&&
tmpRoute
.
children
?.
length
)
{
tmpRoute
.
children
=
tmpRoute
.
children
?.
filter
(
t
=>
t
.
path
==
''
)
||
[];
}
res
.
push
(
tmpRoute
)
}
}
...
...
src/store/modules/user.ts
View file @
d6ef320
...
...
@@ -224,45 +224,49 @@ const useUserStore = defineStore(
async
function
setTabbarInfo
(
list
)
{
let
obj
:
any
=
{}
list
.
map
(
item
=>
{
let
mark
=
''
if
(
item
.
meta
.
title
==
'数据标准'
)
{
mark
=
'data-standards'
}
else
if
(
item
.
meta
.
title
==
'元数据'
)
{
mark
=
'data-meta'
}
else
if
(
item
.
meta
.
title
==
'数据目录'
)
{
mark
=
'data-catalog'
}
else
if
(
item
.
meta
.
title
==
'数据同步'
)
{
mark
=
'data-sync'
}
else
if
(
item
.
meta
.
title
==
'数据质量'
)
{
mark
=
'data-quality'
}
else
if
(
item
.
meta
.
title
==
'数据盘点'
)
{
mark
=
'data-inventory'
}
else
if
(
item
.
meta
.
title
==
'数据资产看板'
)
{
mark
=
'data-asset-index'
}
else
if
(
item
.
meta
.
title
==
'数据资产登记'
)
{
mark
=
'data-asset-register'
}
else
if
(
item
.
meta
.
title
==
'数据产品管理'
)
{
mark
=
'data-asset'
}
else
if
(
item
.
meta
.
title
==
'入表交易融资'
)
{
mark
=
'data-transaction'
}
else
if
(
item
.
meta
.
title
==
'入表融资指南'
)
{
mark
=
'data-guide'
}
else
if
(
item
.
meta
.
title
==
'入表服务管理'
)
{
mark
=
'data-entry'
}
else
if
(
item
.
meta
.
title
==
'数据资产入表'
)
{
mark
=
'data-entry'
}
else
if
(
item
.
meta
.
title
==
'法律风险意见'
)
{
mark
=
'data-security'
}
else
if
(
item
.
meta
.
title
==
'金融服务'
)
{
mark
=
'data-finance'
}
else
if
(
item
.
meta
.
title
==
'系统管理'
)
{
mark
=
'system-manage'
}
else
{
mark
=
'app-scenes'
}
let
mark
=
item
.
path
.
split
(
'/'
)[
1
];
obj
.
activePath
=
''
obj
.
tabbar
=
[]
tabbarMap
.
value
[
mark
]
=
obj
// let mark = ''
// if (item.meta.title == '数据标准') {
// mark = 'data-standards'
// } else if (item.meta.title == '元数据') {
// mark = 'data-meta'
// } else if (item.meta.title == '数据目录') {
// mark = 'data-catalog'
// } else if (item.meta.title == '数据同步') {
// mark = 'data-sync'
// } else if (item.meta.title == '数据质量') {
// mark = 'data-quality'
// } else if (item.meta.title == '数据盘点') {
// mark = 'data-inventory'
// } else if (item.meta.title == '数据资产看板') {
// mark = 'data-asset-index'
// } else if (item.meta.title == '数据资产登记') {
// mark = 'data-asset-register'
// } else if (item.meta.title == '数据产品管理') {
// mark = 'data-asset'
// } else if (item.meta.title == '入表交易融资') {
// mark = 'data-transaction'
// } else if (item.meta.title == '入表融资指南') {
// mark = 'data-guide'
// } else if (item.meta.title == '入表服务管理') {
// mark = 'data-entry'
// } else if (item.meta.title == '数据资产入表') {
// mark = 'data-entry'
// } else if (item.meta.title == '法律风险意见') {
// mark = 'data-security'
// } else if (item.meta.title == '金融服务') {
// mark = 'data-finance'
// } else if (item.meta.title == '系统管理') {
// mark = 'system-manage'
// } else {
// mark = 'app-scenes'
// }
// obj.activePath = ''
// obj.tabbar = []
// tabbarMap.value[mark] = obj
})
}
function
setTabbar
(
val
:
any
=
null
)
{
...
...
Write
Preview
Styling with
Markdown
is supported
Attach a file
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to post a comment