From 1322a6cdfa5178cd50f6da25c47b6ff62bf867f4 Mon Sep 17 00:00:00 2001 From: lishenfeng Date: Tue, 6 Jan 2026 17:51:36 +0800 Subject: [PATCH] =?UTF-8?q?fix():=20=E4=BF=AE=E5=A4=8D=E8=8F=9C=E5=8D=95?= =?UTF-8?q?=E6=9D=83=E9=99=90=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/DashboardLayout/TopMenu.tsx | 3 +-- src/components/DashboardLayout/index.tsx | 2 +- src/views/Home/index.js | 31 ++++++++++++++++++++-- 3 files changed, 31 insertions(+), 5 deletions(-) diff --git a/src/components/DashboardLayout/TopMenu.tsx b/src/components/DashboardLayout/TopMenu.tsx index dd34296..7aada72 100644 --- a/src/components/DashboardLayout/TopMenu.tsx +++ b/src/components/DashboardLayout/TopMenu.tsx @@ -12,7 +12,7 @@ function getMenuUrl(menuItem: MenuItem | undefined): string | null { return null; } - const url = menuItem.path || menuItem.redirect; + const url = menuItem.path; if (url) { return url; } @@ -65,7 +65,6 @@ const TopMenu: React.FC<{ navigate(menuItem.path) } const url = getMenuUrl(menuItem); - if (url) { navigate(url); } diff --git a/src/components/DashboardLayout/index.tsx b/src/components/DashboardLayout/index.tsx index a1021c6..3feddcd 100644 --- a/src/components/DashboardLayout/index.tsx +++ b/src/components/DashboardLayout/index.tsx @@ -64,7 +64,7 @@ const DashboardLayout: React.FC = () => { const menuIndexes = useMemo(() => findMenu(menu, pathname), [menu, pathname]); - + const menuUrl = ['/mgr/home', '/mgr/forecast', '/mgr/earlyWarning', '/mgr/preview', '/mgr/plan','/mgr/videoSurveillance']; return ( diff --git a/src/views/Home/index.js b/src/views/Home/index.js index acefc0f..19c09e5 100644 --- a/src/views/Home/index.js +++ b/src/views/Home/index.js @@ -60,9 +60,32 @@ const MenuTitleCard = ({ key, title }) => { ) } +function getMenuUrl(menuItem){ + if (!menuItem) { + return null; + } + + const url = menuItem.path; + if (url) { + return url; + } + + if (menuItem.children && menuItem.children.length) { + for (const m of menuItem.children) { + const url = getMenuUrl(m); + + if (url) { + return url; + } + } + } + + return null; +} export default function Home() { const menu = useSelector((state) => state.auth.menu); const [title, setTitle] = useState([]) + const [menuList, setMenuList] = useState([]) const [showTabLeft, setShowTabLeft] = useState(false) const [showTabRight, setShowTabRight] = useState(false) // const title = menu.map(item => ({ title: item.menuName, key: item.path || item.redirect })) @@ -229,7 +252,10 @@ export default function Home() { const navigate = useNavigate(); const jumpMenu = (item) => { - navigate(item.key) + const url = getMenuUrl(item); + if (url) { + navigate(url); + } } const [videoList, setVideoList] = useState([]) const [videoArr, setvideoArr] = useState({}) @@ -273,7 +299,8 @@ export default function Home() { const getMenu = async () => { try { const data = await loadMenu(); - setTitle(data.map(item => ({ title: item.menuName, key: item.path || item.redirect }))) + setMenuList(data) + setTitle(data.map(item => ({ ...item, key: item.path || item.redirect }))) } catch (error) { console.log(error); }