/** * Ant Design Pro v4 use `@ant-design/pro-layout` to handle Layout. * You can view component api by: * https://github.com/ant-design/ant-design-pro-layout */ import ProLayout, { DefaultFooter } from '@ant-design/pro-layout' import zhCN from 'antd/lib/locale/zh_CN' import React, { useEffect, useMemo, useRef } from 'react' import { Link, useIntl, connect, history } from 'umi' import { Result, Button, message, ConfigProvider } from 'antd' import Authorized from '@/utils/Authorized' import RightContent from '@/components/GlobalHeader/RightContent' import { getMatchMenu } from '@umijs/route-utils' import logo from '../assets/logo.svg' import styles from './BasicLayout.less' import '@icon-park/react/styles/index.less' import { IconPark } from '@/components/SvgIcon' import BasicModal from '@/components/Modal' import { BasicDrawer } from '@/components/Modal' const noMatch = ( Go Login } /> ) /** * use Authorized check all menu item */ const menuDataRender = menuList => menuList.map(item => { const localItem = { ...item, children: item.children ? menuDataRender(item.children) : undefined } if (item.icon) { localItem.icon = } return Authorized.check(item.authority, localItem, null) }) // const defaultFooterDom = ( // , // href: 'https://github.com/ant-design/ant-design-pro', // blankTarget: true, // }, // { // key: 'Ant Design', // title: 'Ant Design', // href: 'https://ant.design', // blankTarget: true, // }, // ]} // /> // ); const BasicLayout = props => { const { dispatch, children, settings, location = { pathname: '/', key: '' } } = props const menuDataRef = useRef([]) useEffect(() => { if (dispatch) { dispatch({ type: 'user/fetchCurrent' }) } }, []) /** * init variables */ const handleMenuCollapse = payload => { if (dispatch) { dispatch({ type: 'global/changeLayoutCollapsed', payload }) } } // get children authority const authorized = useMemo( () => getMatchMenu(location.pathname || '/', menuDataRef.current).pop() || { authority: undefined }, [location.pathname] ) const { formatMessage } = useIntl() return ( history.push('/workbench/dashboard')} menuItemRender={(menuItemProps, defaultDom) => { if (menuItemProps.isUrl || !menuItemProps.path) { return defaultDom } return {defaultDom} }} breadcrumbRender={(routers = []) => [ { path: '/', breadcrumbName: formatMessage({ id: 'menu.home' }) }, ...routers ]} itemRender={(route, params, routes, paths) => { const first = routes.indexOf(route) === 0 return first ? ( {route.breadcrumbName} ) : ( {route.breadcrumbName} ) }} // footerRender={() => defaultFooterDom} menuDataRender={menuDataRender} rightContentRender={() => } postMenuData={menuData => { menuDataRef.current = menuData || [] return menuData || [] }}> {children} {/* */} {/* */} ) } export default connect(({ global, settings }) => ({ collapsed: global.collapsed, settings }))(BasicLayout)