import React, { useEffect, useState } from "react"; import { Menu } from "antd"; import { useNavigate, useLocation } from "react-router-dom"; import styles from "./index.module.less"; import logo from "../../assets/logo.png"; function getItem(label: any, key: any, icon: any, children: any, type: any) { return { key, icon, children, label, type, }; } const items = [ getItem( "首页概览", "/", , null, null ), getItem( "分类管理", "/resource-category", , null, null ), getItem( "资源管理", "resource", , [ getItem("视频", "/videos", null, null, null), getItem("图片", "/images", null, null, null), ], null ), getItem( "课程中心", "courses", , [getItem("线上课", "/course", null, null, null)], null ), getItem( "学员管理", "user", , [ getItem("学员", "/member/index", null, null, null), getItem("部门", "/department", null, null, null), ], null ), getItem( "系统设置", "system", , [ getItem("系统配置", "/system/config/index", null, null, null), getItem("管理人员", "/system/administrator", null, null, null), // getItem("角色配置", "/system/adminroles", null, null, null), ], null ), ]; const children2Parent: any = { "^/video": ["resource"], "^/image": ["resource"], "^/member": ["user"], "^/department": ["user"], "^/course": ["courses"], "^/system": ["system"], }; export const LeftMenu: React.FC = () => { const location = useLocation(); const navigate = useNavigate(); const hit = (pathname: string): string[] => { for (let p in children2Parent) { if (pathname.search(p) >= 0) { return children2Parent[p]; } } return []; }; const openKeyMerge = (pathname: string): string[] => { let newOpenKeys = hit(pathname); for (let i = 0; i < openKeys.length; i++) { let isIn = false; for (let j = 0; j < newOpenKeys.length; j++) { if (newOpenKeys[j] === openKeys[i]) { isIn = true; break; } } if (isIn) { continue; } newOpenKeys.push(openKeys[i]); } return newOpenKeys; }; // 选中的菜单 const [selectedKeys, setSelectedKeys] = useState([ location.pathname, ]); // 展开菜单 const [openKeys, setOpenKeys] = useState(hit(location.pathname)); const onClick = (e: any) => { navigate(e.key); }; useEffect(() => { setSelectedKeys([location.pathname]); setOpenKeys(openKeyMerge(location.pathname)); }, [location.pathname]); return ( { window.location.href = "/"; }} > { setSelectedKeys(data.selectedKeys); }} onOpenChange={(keys: any) => { setOpenKeys(keys); }} /> ); };