import Footer from '@/components/Footer'; import RightContent from '@/components/RightContent'; import type { Settings as LayoutSettings } from '@ant-design/pro-components'; import { PageLoading, SettingDrawer } from '@ant-design/pro-components'; import type { RunTimeLayoutConfig } from 'umi'; import { history } from 'umi'; import defaultSettings from '../config/defaultSettings'; import { currentUser as queryCurrentUser } from './services/ant-design-pro/api'; import { message } from 'antd'; import { queryMenu } from '@/services/menu'; import Icon from '@ant-design/icons'; import * as icons from '@ant-design/icons'; const loginPath = '/user/login'; /** 获取用户信息比较慢的时候会展示一个 loading */ export const initialStateConfig = { loading: , }; /** * @see https://umijs.org/zh-CN/plugins/plugin-initial-state * */ export async function getInitialState(): Promise<{ settings?: Partial; currentUser?: API.CurrentUser; loading?: boolean; fetchUserInfo?: () => Promise; }> { const fetchUserInfo = async () => { try { const msg: any = await queryCurrentUser(localStorage.getItem('token')); return { name: msg.data.user_name, }; } catch (error) { history.push(loginPath); } return undefined; }; // 如果不是登录页面,执行 if (history.location.pathname !== loginPath) { const currentUser = await fetchUserInfo(); return { fetchUserInfo, currentUser, settings: defaultSettings, }; } return { fetchUserInfo, settings: defaultSettings, }; } /** * 映射菜单对应的图标 * */ const loopMenuItem: any = (menus: any[]) => menus.map(({ icon, routes, ...item }) => ({ ...item, icon: icon && , routes: routes && loopMenuItem(routes), })); const permissionsMenu = (routers: any[], data: any) => { data.forEach((item: any) => { let menu: any; if (item.children && item.children.length > 0) { // 还有下级 menu = { path: item.router, routes: [], name: item.name, icon: item.icon, }; } else { // 最后一级 menu = { path: item.router, name: item.name, icon: item.icon, }; } if (item.children) { permissionsMenu(menu.routes, item.children); } routers.push(menu); }); }; // ProLayout 支持的api https://procomponents.ant.design/components/layout export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) => { return { rightContentRender: () => , disableContentMargin: false, waterMarkProps: { content: initialState?.currentUser?.name, }, footerRender: () =>