import React, { ReactNode, useCallback, useEffect, useMemo, useState } from 'react'; import { UserOutlined } from '@ant-design/icons'; import { Avatar, Button, Layout } from 'antd'; import { useHistory, useLocation, useRouteMatch } from 'react-router'; import { MenuEntity, AdminServices } from 'matrix-ui-service'; import { MenuTree } from '../layout'; import { useServiceStore } from '../../utils'; const { Header, Content, Footer, Sider } = Layout; export interface HomeProps { serverRoot: string; adminServices: AdminServices; logoRender: ReactNode; footRender: ReactNode; profilePath?: string; headerCss?: React.CSSProperties; contentCss?: React.CSSProperties; siderCss?: React.CSSProperties; children?: React.ReactNode; } export const Home: React.FC = (props) => { const { adminServices } = props; const { logoRender, footRender, headerCss, contentCss, siderCss, profilePath } = props; const { loginService, menuService, paramService } = adminServices; const history = useHistory(); const location = useLocation(); const [collapsed, setCollapsed] = useState(false); const onMenuClick = useCallback((menu: MenuEntity) => history.push(`/${menu.app}`), [history]); const goProfile = useCallback( () => location.pathname !== profilePath && history.push(profilePath), [profilePath, location.pathname, history], ); const menuStore = useServiceStore(menuService); const loginStore = useServiceStore(loginService); const paramStore = useServiceStore(paramService); const needChangePassword = useMemo( () => loginStore.forcePasswordChange && paramService.getByCode('ChangeInitPassword')?.value === 'true', [loginStore, paramStore], ); useEffect(() => { needChangePassword && goProfile(); }, [needChangePassword, location.pathname]); const { loginInfo } = loginStore; const logout = useCallback(() => loginService.logout(history), [history]); const buttonCss: React.CSSProperties = { padding: '3px' }; return (
img的高度加大。原来目的是文字垂直居中,已通过flex实现 ...headerCss, }} > {logoRender}
} style={{ backgroundColor: '#f56a00' }} />
{loginInfo?.user?.name || loginInfo.account}( / )
{props.children}
); }; Home.defaultProps = { profilePath: '/Profile', };