mirror of
https://gitee.com/yudaocode/yudao-ui-admin-vben.git
synced 2025-12-30 10:32:25 +00:00
fix:router push 无法使用 name 的问题
This commit is contained in:
@@ -93,11 +93,13 @@ function generateMenus(
|
||||
* 转换后端菜单数据为路由数据
|
||||
* @param menuList 后端菜单数据
|
||||
* @param parent 父级菜单
|
||||
* @param nameSet 用于跟踪已使用的 name,防止重复
|
||||
* @returns 路由数据
|
||||
*/
|
||||
function convertServerMenuToRouteRecordStringComponent(
|
||||
menuList: AppRouteRecordRaw[],
|
||||
parent = '',
|
||||
nameSet: Set<string> = new Set(),
|
||||
): RouteRecordStringComponent[] {
|
||||
const menus: RouteRecordStringComponent[] = [];
|
||||
menuList.forEach((menu) => {
|
||||
@@ -139,6 +141,14 @@ function convertServerMenuToRouteRecordStringComponent(
|
||||
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 = {
|
||||
component: menu.component,
|
||||
meta: {
|
||||
@@ -148,7 +158,7 @@ function convertServerMenuToRouteRecordStringComponent(
|
||||
orderNo: menu.sort,
|
||||
title: menu.name,
|
||||
},
|
||||
name: menu.name + menu.id, // add by 芋艿:防止 name 重复,加上 id
|
||||
name: finalName,
|
||||
path: menu.path,
|
||||
};
|
||||
|
||||
@@ -156,6 +166,7 @@ function convertServerMenuToRouteRecordStringComponent(
|
||||
buildMenu.children = convertServerMenuToRouteRecordStringComponent(
|
||||
menu.children,
|
||||
menu.path,
|
||||
nameSet,
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user