diff --git a/src/components/Menu/WebMenu/index.tsx b/src/components/Menu/WebMenu/index.tsx index 9ffad96..28d52ec 100644 --- a/src/components/Menu/WebMenu/index.tsx +++ b/src/components/Menu/WebMenu/index.tsx @@ -1,17 +1,29 @@ +import IconFont from "@/components/IconFont"; import MenuTagContext from "@/contexts/MenuTagContext"; import { getLocalStorageMenus, getOpenKeysByUrls, getShowMenus, setLocalStorage } from "@/utils/menuUtils"; +import { AppstoreOutlined } from "@ant-design/icons"; import { Menu } from "antd"; import { toNumber } from "lodash-es"; -import React, { useContext, useEffect, useState } from "react"; +import { useContext, useEffect, useState } from "react"; import { useLocation, useNavigate } from "react-router-dom"; +const createIcon = item => { + item.icon = item.icon ? : ; +}; +const createMenuIcon = item => { + return item.map(v => { + createIcon(v); + if (v.children) createMenuIcon(v.children); + return v; + }); +}; + const WebMenu = () => { const { addTag } = useContext(MenuTagContext); const navigate = useNavigate(); const { pathname } = useLocation(); const menusList = JSON.parse(getLocalStorageMenus() || ""); - const newmenus = getShowMenus(menusList.concat()); - + const newmenus = createMenuIcon(getShowMenus(menusList.concat())); const [selectedKeys, setSelectedKeys] = useState([]); const [openKeys, setOpenkeys] = useState([]); @@ -57,7 +69,7 @@ const WebMenu = () => { return (
- +
); }; diff --git a/src/layout/DefaultLayout/index.tsx b/src/layout/DefaultLayout/index.tsx index b208df4..53d5515 100644 --- a/src/layout/DefaultLayout/index.tsx +++ b/src/layout/DefaultLayout/index.tsx @@ -1,13 +1,14 @@ -import { Alert, Layout, Spin } from "antd"; -import { Outlet } from "react-router-dom"; +import { ErrorBoundary } from "@/components/ErrorBoundary"; +import Copyright from "@/components/Footer/Copyright"; import DefaultLayoutHeader from "@/components/Header/DefaultLayoutHeader"; import WebMenu from "@/components/Menu/WebMenu"; -import { Suspense, useContext, useEffect } from "react"; -import Copyright from "@/components/Footer/Copyright"; import TagsView from "@/components/TagsView"; import MenuTagContext from "@/contexts/MenuTagContext"; -import { ErrorBoundary } from "@/components/ErrorBoundary"; import FailContainer from "@/pages/FailPage/FailContainer"; +import { Alert, Layout, Spin } from "antd"; +import { throttle } from "lodash-es"; +import { Suspense, useContext, useEffect, useState } from "react"; +import { Outlet } from "react-router-dom"; import styles from "./index.module.scss"; @@ -22,6 +23,8 @@ const SuspendFallbackLoading = () => ( const DefaultLayout = () => { const { setTagPlanVisible, refresh } = useContext(MenuTagContext); + const [collapsed, setCollapsed] = useState(false); + useEffect(() => { const clickRemove = () => setTagPlanVisible(false); window.addEventListener("click", clickRemove); @@ -31,13 +34,29 @@ const DefaultLayout = () => { // eslint-disable-next-line react-hooks/exhaustive-deps }, []); + const resize = throttle( + () => { + const winW = document.body.clientWidth; + setCollapsed(winW < 600); + }, + 500, + { trailing: true, leading: false } + ); + useEffect(() => { + resize(); + window.addEventListener("resize", resize); + return () => { + window && window.removeEventListener("resize", resize); + }; + }, []); + return ( - +