diff --git a/src/layouts/Sider/Menu/index.tsx b/src/layouts/Sider/Menu/index.tsx index 5f6e340da9f5a21de5d9b8f36d88b4f0cde1ce0d..f65370771884ca221487fd71a56d9947e47f1119 100644 --- a/src/layouts/Sider/Menu/index.tsx +++ b/src/layouts/Sider/Menu/index.tsx @@ -3,17 +3,16 @@ import { Menu } from 'antd' import SubMenu from 'antd/lib/menu/SubMenu' import { Link, useLocation } from 'react-router-dom' import { IRoute, MenuInfo } from '@/interface/router' -import router from '@/router' import Icon from '@/components/Icon' import { useStore } from '@/store' import { observer } from 'mobx-react' -// import useRouters from '@/hooks/user' +import { addRoutes } from '@/router/addRoutes' +import useUserInfo from '@/hooks/user' const SiderMenu: FC = () => { const { appStore } = useStore() - // const { menus } = useRouters() - console.log(appStore) - // console.log(menus) + const { userData } = useUserInfo() + const { menu } = userData let openMenu: Array = [] let openKey: Array = [] @@ -39,13 +38,13 @@ const SiderMenu: FC = () => { return pre }, []) } - - const menuTree = getMenuTree(router) + const asyncRoutes = addRoutes(menu) + const menuTree = getMenuTree(asyncRoutes) const selectBreadcrumb = (currentKey: string, pathname: string) => { const currentMenu: any = [] - router.forEach((item) => { + asyncRoutes.forEach((item) => { if (item.path === currentKey) { currentMenu.push({ title: item.title, path: pathname }) } diff --git a/src/router/addRoutes.ts b/src/router/addRoutes.ts new file mode 100644 index 0000000000000000000000000000000000000000..1a9f4b6b58cfaf99906e371561d26aeaa534c1b8 --- /dev/null +++ b/src/router/addRoutes.ts @@ -0,0 +1,32 @@ +import { IRoute } from '@/interface/router' +import asyncRoutes from './asyncRoutes' + +function formatRoutes(menus: any): Array { + const ret: IRoute[] = [] + if (!menus?.length) { + return [] + } + + menus.forEach((menu) => { + const { name, code, path, iconClass } = menu + const temp: IRoute = { + title: name, + path, + name: code, + icon: iconClass, + key: code, + component: asyncRoutes[code], + } + if (menu?.children?.length) { + temp.children = [] + temp.children.push(...formatRoutes(menu.children)) + } + ret.push(temp) + }) + return ret +} + +export function addRoutes(menus: any[]) { + const routes = formatRoutes(menus) + return routes +} diff --git a/src/router/asyncRoutes.ts b/src/router/asyncRoutes.ts new file mode 100644 index 0000000000000000000000000000000000000000..0218fca838b20ed0e16809ad16bc989dd0263ced --- /dev/null +++ b/src/router/asyncRoutes.ts @@ -0,0 +1,7 @@ +import { lazy } from 'react' + +export default { + // 根据后端返回数据code字段映射组件 + overview: lazy(() => import('@/views/dashboard')), + orderProfile: lazy(() => import('@/views/shop/decoration')), +} diff --git a/src/views/dashboard/components/ShortCut.tsx b/src/views/dashboard/components/ShortCut.tsx index d69400b8fa29baff15280ca9a417e36e6b025f23..0a0d3e9e86a34589afb888d4bb244dfb899a69f3 100644 --- a/src/views/dashboard/components/ShortCut.tsx +++ b/src/views/dashboard/components/ShortCut.tsx @@ -49,9 +49,9 @@ const ShortCut: FC = () => { return ( - {shortcutData.map(({ icon, title }) => { + {shortcutData.map(({ icon, title }, index) => { return ( - +
{title}