| | |
| | | import { AppRouteModule } from '/@/router/types'; |
| | | import type { MenuModule, Menu, AppRouteRecordRaw } from '/@/router/types'; |
| | | |
| | | import { findPath, treeMap } from '/@/utils/helper/treeHelper'; |
| | | import { cloneDeep } from 'lodash-es'; |
| | | import { isUrl } from '/@/utils/is'; |
| | |
| | | menu.path = `${parentPath}/${menu.path}`; |
| | | } |
| | | if (menu?.children?.length) { |
| | | joinParentPath(menu.children, menu.path); |
| | | joinParentPath(menu.children, menu.meta?.hidePathForChildren ? parentPath : menu.path); |
| | | } |
| | | } |
| | | } |
| | |
| | | return menuList[0]; |
| | | } |
| | | |
| | | export function transformRouteToMenu(routeModList: AppRouteModule[]) { |
| | | export function transformRouteToMenu(routeModList: AppRouteModule[], routerMapping = false) { |
| | | const cloneRouteModList = cloneDeep(routeModList); |
| | | const routeList: AppRouteRecordRaw[] = []; |
| | | |
| | | cloneRouteModList.forEach((item) => { |
| | | if (routerMapping && item.meta.hideChildrenInMenu && typeof item.redirect === 'string') { |
| | | item.path = item.redirect; |
| | | } |
| | | if (item.meta?.single) { |
| | | const realItem = item?.children?.[0]; |
| | | realItem && routeList.push(realItem); |
| | |
| | | |
| | | return { |
| | | ...(node.meta || {}), |
| | | meta: node.meta, |
| | | name: title, |
| | | hideMenu, |
| | | path: node.path, |