import { Menu, message } from 'antd'; import { useState, useEffect } from 'react'; import { useDispatch, useSelector } from 'react-redux' import { add, active } from '@reducers/tabPanes' import OrgManager from "../OrgManager"; import RoleManager from "../RoleManager"; import UserManager from "../UserManager"; import DataManager from "../DataManager"; import InpaManager from "../InpaManager" import NullPage from "../NullPage"; import FuncManager from "../FuncManager"; import OperationLog from "../OperationLog"; import LoginLog from "../LoginLog"; import ExceptionLog from "../ExceptionLog"; import apiObj from '@api/index'; const { xPost, api } = apiObj; const { SubMenu } = Menu; const propTypes = {}; const defaultProps = {}; const pageMap = { '组织管理': , '角色管理': , '用户管理': , '数据权限': , '病区管理': , '功能管理': , '操作日志': , '登录日志': , '异常日志': , } let firstMenuPage = null; //第一个菜单,自动激活时用 function AMenu() { const [menuList, setMenuList] = useState([]); //菜单列表数据 const dispatch = useDispatch(); //当前选中的菜单 const { activeTab, panes } = useSelector(state => { return state.tabPanes; }); //切换菜单、增加tab function changeMenu(val) { const idName = val.key.split("-"); const item = panes.find((it) => it.key === idName[0]); //console.log(item); if (item) { //已存在当前tab,则定位即可不增加 dispatch(active(idName[0])); return; } dispatch( add({ title: idName[0], content: pageMap[idName[0]] || , key: idName[0] }) ) } //获取菜单数据 function getUserMenus() { xPost(api.getUserShowMemuTree).then((res) => { if (res.data.code === 200) { const data = res.data.data; const menuData = data.showMenuInfo; setMenuList(menuData); firstMenuPage = menuData[0].children ? menuData[0].children[0] : menuData[0] } else { message.error(res.data.msg || '获取菜单失败'); } }) } function getSubMenu(data) { return data.map((it) => { if (it.menuType === '1') { return ( {it.menuName} ) } else if (it.menuType === '0') { return ( {it.children ? getSubMenu(it.children) : ''} ) } else { return '' } }) } useEffect(() => { getUserMenus(); const timeO = setTimeout(() => { dispatch( add({ title: firstMenuPage.menuName, content: pageMap[firstMenuPage.menuName] || , key: firstMenuPage.menuName }) ); }, 500); return function clearOut() { clearTimeout(timeO); } }, []); return ( { getSubMenu(menuList) } ) } AMenu.propTypes = propTypes; AMenu.defaultProps = defaultProps; export default AMenu;