Commit b8353fe1f262b87cc20af56aaf380ae1a5599724

Authored by vben
1 parent 9abba7af

fix: fix menu permission failure

src/router/menus/index.ts
@@ -6,6 +6,7 @@ import { transformMenuModule, flatMenus, getAllParentPath } from '/@/utils/helpe @@ -6,6 +6,7 @@ import { transformMenuModule, flatMenus, getAllParentPath } from '/@/utils/helpe
6 import { filter } from '/@/utils/helper/treeHelper'; 6 import { filter } from '/@/utils/helper/treeHelper';
7 import router from '/@/router'; 7 import router from '/@/router';
8 import { PermissionModeEnum } from '/@/enums/appEnum'; 8 import { PermissionModeEnum } from '/@/enums/appEnum';
  9 +import { pathToRegexp } from 'path-to-regexp';
9 10
10 // =========================== 11 // ===========================
11 // ==========module import==== 12 // ==========module import====
@@ -106,9 +107,14 @@ export async function getFlatChildrenMenus(children: Menu[]) { @@ -106,9 +107,14 @@ export async function getFlatChildrenMenus(children: Menu[]) {
106 // 通用过滤方法 107 // 通用过滤方法
107 function basicFilter(routes: RouteRecordNormalized[]) { 108 function basicFilter(routes: RouteRecordNormalized[]) {
108 return (menu: Menu) => { 109 return (menu: Menu) => {
109 - const matchRoute = routes.find((route) => route.path === menu.path);  
110 -  
111 - if (!matchRoute) return true; 110 + const matchRoute = routes.find((route) => {
  111 + if (route.meta && route.meta.carryParam) {
  112 + return pathToRegexp(route.path).test(menu.path);
  113 + }
  114 + return route.path === menu.path;
  115 + });
  116 +
  117 + if (!matchRoute) return false;
112 menu.icon = menu.icon || matchRoute.meta.icon; 118 menu.icon = menu.icon || matchRoute.meta.icon;
113 menu.meta = matchRoute.meta; 119 menu.meta = matchRoute.meta;
114 return true; 120 return true;
src/router/routes/modules/demo/feat.ts
@@ -102,6 +102,7 @@ export default { @@ -102,6 +102,7 @@ export default {
102 component: () => import('/@/views/demo/feat/tab-params/index.vue'), 102 component: () => import('/@/views/demo/feat/tab-params/index.vue'),
103 meta: { 103 meta: {
104 title: 'Tab带参', 104 title: 'Tab带参',
  105 + carryParam: true,
105 }, 106 },
106 }, 107 },
107 ], 108 ],
src/router/types.d.ts
@@ -29,8 +29,10 @@ export interface RouteMeta { @@ -29,8 +29,10 @@ export interface RouteMeta {
29 29
30 // close loading 30 // close loading
31 afterCloseLoading?: boolean; 31 afterCloseLoading?: boolean;
32 - 32 + // Is it in the tab
33 inTab?: boolean; 33 inTab?: boolean;
  34 + // Carrying parameters
  35 + carryParam?: boolean;
34 } 36 }
35 37
36 export interface AppRouteRecordRaw extends Omit<RouteRecordRaw, 'meta'> { 38 export interface AppRouteRecordRaw extends Omit<RouteRecordRaw, 'meta'> {