沙钢智慧能源系统前端代码
houzhongjian
2024-10-09 314507f8ddadd9c66e98d260c3b2a5dad1a04015
提交 | 用户 | 时间
314507 1 import { ElSubMenu, ElMenuItem } from 'element-plus'
H 2 import { hasOneShowingChild } from '../helper'
3 import { isUrl } from '@/utils/is'
4 import { useRenderMenuTitle } from './useRenderMenuTitle'
5 import { pathResolve } from '@/utils/routerHelper'
6
7 const { renderMenuTitle } = useRenderMenuTitle()
8
9 export const useRenderMenuItem = () =>
10   // allRouters: AppRouteRecordRaw[] = [],
11   {
12     const renderMenuItem = (routers: AppRouteRecordRaw[], parentPath = '/') => {
13       return routers
14         .filter((v) => !v.meta?.hidden)
15         .map((v) => {
16           const meta = v.meta ?? {}
17           const { oneShowingChild, onlyOneChild } = hasOneShowingChild(v.children, v)
18           const fullPath = isUrl(v.path) ? v.path : pathResolve(parentPath, v.path) // getAllParentPath<AppRouteRecordRaw>(allRouters, v.path).join('/')
19
20           if (
21             oneShowingChild &&
22             (!onlyOneChild?.children || onlyOneChild?.noShowingChildren) &&
23             !meta?.alwaysShow
24           ) {
25             return (
26               <ElMenuItem
27                 index={onlyOneChild ? pathResolve(fullPath, onlyOneChild.path) : fullPath}
28               >
29                 {{
30                   default: () => renderMenuTitle(onlyOneChild ? onlyOneChild?.meta : meta)
31                 }}
32               </ElMenuItem>
33             )
34           } else {
35             return (
36               <ElSubMenu index={fullPath}>
37                 {{
38                   title: () => renderMenuTitle(meta),
39                   default: () => renderMenuItem(v.children!, fullPath)
40                 }}
41               </ElSubMenu>
42             )
43           }
44         })
45     }
46
47     return {
48       renderMenuItem
49     }
50   }