import { AvatarDropdown, AvatarName, Question } from '@/components'; import type { Settings as LayoutSettings } from '@ant-design/pro-components'; import { SettingDrawer } from '@ant-design/pro-components'; import type { RequestConfig, RunTimeLayoutConfig } from '@umijs/max'; import { history, useModel } from '@umijs/max'; import { message } from 'antd'; import defaultSettings from '../config/defaultSettings'; import { scriptUrl } from './global'; import { errorConfig, ResponseStructure } from './requestErrorConfig'; import { getMenu } from './services/global'; import { getUserInfo } from './services/login'; import { flattenRoutes } from './utils/generateNewLocalMenu'; const isDev = process.env.NODE_ENV === 'development'; const loginPath = '/user/login'; /** * @see https://umijs.org/zh-CN/plugins/plugin-initial-state * */ export async function getInitialState(): Promise<{ settings?: Partial; currentUser?: any; loading?: boolean; menuType?: 'distributor' | 'miniApp'; navTheme?: '2' | '3'; token?: any; menu?: any; }> { // 如果不是登录页面,执行 const { location } = history; let menuType = (sessionStorage.getItem('menuType') as 'distributor' | 'miniApp') || 'distributor'; let navTheme: any = localStorage.getItem('navTheme') || '2'; //主题色 2白 3黑 if (location.pathname !== loginPath && localStorage.getItem('Admin-Token')) { const res = await getUserInfo(); if (res.data) { return { token: res.data.token, currentUser: res.data.userInfo, menuType, settings: defaultSettings as Partial, navTheme, }; } } return { token: '', menuType: 'distributor', navTheme, settings: defaultSettings as Partial, }; } // ProLayout 支持的api https://procomponents.ant.design/components/layout export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) => { return { // 动态管理菜单 splitMenus: true, //切割菜单 menu: { locale: false, //关闭国际化 params: { //token变化重新获取 token: initialState?.token, }, request: async () => { //需要在routes.tsx中配置一份完整的路由 let menu = await getMenu(['book']); //线上获取路由 let flatMenu = flattenRoutes(menu); setInitialState({ ...initialState, menu: flatMenu }); history.push(flatMenu[flatMenu['/'].redirect].redirect); //获取到本地路由后跳转到有权限的页面 return menu; }, }, iconfontUrl: scriptUrl, actionsRender: () => [], avatarProps: { src: initialState?.currentUser?.avatar || 'https://gw.alipayobjects.com/zos/rmsportal/BiazfanxmamNRoxxVxka.png', title: , render: (_, avatarChildren) => { return {avatarChildren}; }, }, waterMarkProps: { content: initialState?.currentUser?.name, }, // footerRender: () =>