fix:router push 无法使用 name 的问题
This commit is contained in:
@@ -93,11 +93,13 @@ function generateMenus(
|
|||||||
* 转换后端菜单数据为路由数据
|
* 转换后端菜单数据为路由数据
|
||||||
* @param menuList 后端菜单数据
|
* @param menuList 后端菜单数据
|
||||||
* @param parent 父级菜单
|
* @param parent 父级菜单
|
||||||
|
* @param nameSet 用于跟踪已使用的 name,防止重复
|
||||||
* @returns 路由数据
|
* @returns 路由数据
|
||||||
*/
|
*/
|
||||||
function convertServerMenuToRouteRecordStringComponent(
|
function convertServerMenuToRouteRecordStringComponent(
|
||||||
menuList: AppRouteRecordRaw[],
|
menuList: AppRouteRecordRaw[],
|
||||||
parent = '',
|
parent = '',
|
||||||
|
nameSet: Set<string> = new Set(),
|
||||||
): RouteRecordStringComponent[] {
|
): RouteRecordStringComponent[] {
|
||||||
const menus: RouteRecordStringComponent[] = [];
|
const menus: RouteRecordStringComponent[] = [];
|
||||||
menuList.forEach((menu) => {
|
menuList.forEach((menu) => {
|
||||||
@@ -139,6 +141,14 @@ function convertServerMenuToRouteRecordStringComponent(
|
|||||||
menu.path = `/${menu.path}`;
|
menu.path = `/${menu.path}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// add by 芋艿:防止 name 重复,只有在 name 重复时,才自动添加 id
|
||||||
|
let finalName = menu.componentName || menu.name;
|
||||||
|
if (nameSet.has(finalName)) {
|
||||||
|
finalName = menu.name + menu.id;
|
||||||
|
console.error(`menu name duplicate: ${menu.name}, id: ${menu.id}`, menu);
|
||||||
|
}
|
||||||
|
nameSet.add(finalName);
|
||||||
|
|
||||||
const buildMenu: RouteRecordStringComponent = {
|
const buildMenu: RouteRecordStringComponent = {
|
||||||
component: menu.component,
|
component: menu.component,
|
||||||
meta: {
|
meta: {
|
||||||
@@ -148,7 +158,7 @@ function convertServerMenuToRouteRecordStringComponent(
|
|||||||
orderNo: menu.sort,
|
orderNo: menu.sort,
|
||||||
title: menu.name,
|
title: menu.name,
|
||||||
},
|
},
|
||||||
name: menu.name + menu.id, // add by 芋艿:防止 name 重复,加上 id
|
name: finalName,
|
||||||
path: menu.path,
|
path: menu.path,
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -156,6 +166,7 @@ function convertServerMenuToRouteRecordStringComponent(
|
|||||||
buildMenu.children = convertServerMenuToRouteRecordStringComponent(
|
buildMenu.children = convertServerMenuToRouteRecordStringComponent(
|
||||||
menu.children,
|
menu.children,
|
||||||
menu.path,
|
menu.path,
|
||||||
|
nameSet,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user