d6ef3200 by lihua

路由菜单根据路径匹配显示

1 parent b94ad0cd
......@@ -103,70 +103,15 @@ const systemRoutes: RouteRecordRaw[] = [
]
// 动态路由(异步路由、导航栏路由)
const asyncRoutes: Route.recordMainRaw[] = [
{
meta:{
title: '数据资产看板',
},
children: [
const asyncRoutes: RouteRecordRaw[] = [
...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,
],
},
...DataInventory
]
const constantRoutesByFilesystem = generatedRoutes.filter((item) => {
......
......@@ -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[]
const tmpRoutes = cloneDeep(routesRaw.value) as RouteRecordRaw[]
tmpRoutes.map((v) => {
if (!v.meta) {
v.meta = {}
}
v.meta.auth = item.meta?.auth ?? v.meta?.auth
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)
}
}
......
......@@ -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) {
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!