提交 b8353fe1 作者: vben

fix: fix menu permission failure

上级 9abba7af
...@@ -6,6 +6,7 @@ import { transformMenuModule, flatMenus, getAllParentPath } from '/@/utils/helpe ...@@ -6,6 +6,7 @@ import { transformMenuModule, flatMenus, getAllParentPath } from '/@/utils/helpe
import { filter } from '/@/utils/helper/treeHelper'; import { filter } from '/@/utils/helper/treeHelper';
import router from '/@/router'; import router from '/@/router';
import { PermissionModeEnum } from '/@/enums/appEnum'; import { PermissionModeEnum } from '/@/enums/appEnum';
import { pathToRegexp } from 'path-to-regexp';
// =========================== // ===========================
// ==========module import==== // ==========module import====
...@@ -106,9 +107,14 @@ export async function getFlatChildrenMenus(children: Menu[]) { ...@@ -106,9 +107,14 @@ export async function getFlatChildrenMenus(children: Menu[]) {
// 通用过滤方法 // 通用过滤方法
function basicFilter(routes: RouteRecordNormalized[]) { function basicFilter(routes: RouteRecordNormalized[]) {
return (menu: Menu) => { return (menu: Menu) => {
const matchRoute = routes.find((route) => route.path === menu.path); const matchRoute = routes.find((route) => {
if (route.meta && route.meta.carryParam) {
if (!matchRoute) return true; return pathToRegexp(route.path).test(menu.path);
}
return route.path === menu.path;
});
if (!matchRoute) return false;
menu.icon = menu.icon || matchRoute.meta.icon; menu.icon = menu.icon || matchRoute.meta.icon;
menu.meta = matchRoute.meta; menu.meta = matchRoute.meta;
return true; return true;
......
...@@ -102,6 +102,7 @@ export default { ...@@ -102,6 +102,7 @@ export default {
component: () => import('/@/views/demo/feat/tab-params/index.vue'), component: () => import('/@/views/demo/feat/tab-params/index.vue'),
meta: { meta: {
title: 'Tab带参', title: 'Tab带参',
carryParam: true,
}, },
}, },
], ],
......
...@@ -29,8 +29,10 @@ export interface RouteMeta { ...@@ -29,8 +29,10 @@ export interface RouteMeta {
// close loading // close loading
afterCloseLoading?: boolean; afterCloseLoading?: boolean;
// Is it in the tab
inTab?: boolean; inTab?: boolean;
// Carrying parameters
carryParam?: boolean;
} }
export interface AppRouteRecordRaw extends Omit<RouteRecordRaw, 'meta'> { export interface AppRouteRecordRaw extends Omit<RouteRecordRaw, 'meta'> {
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论