import { AvatarDropdown, AvatarName, Question, SelectLang } from '@/components'; import { LinkOutlined } from '@ant-design/icons'; import type { Settings as LayoutSettings } from '@ant-design/pro-components'; import { SettingDrawer } from '@ant-design/pro-components'; import { history, Link, RequestConfig, RunTimeLayoutConfig } from '@umijs/max'; import defaultSettings from '../config/defaultSettings'; import { AxiosResponse } from 'axios'; import { message } from 'antd'; import { Response } from '@/core/network'; import { treeFormatBySymmetry } from './utils/tree'; import { getStaffMeApi } from './services/swagger/staffAdmin'; 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?: SectApi.StaffVO; loading?: boolean; fetchUserInfo?: (...arg: any[]) => Promise; }> { const fetchUserInfo = async () => { try { const rs = await getStaffMeApi({ skipErrorHandler: true }); if (!rs.success) { message.warning(rs.errorMessage); history.push(loginPath); return undefined; } return rs.data } catch (error) { history.push(loginPath); } return undefined; }; // 如果不是登录页面,执行 const { location } = history; if (location.pathname !== loginPath) { const currentUser = await fetchUserInfo(); return { fetchUserInfo, currentUser, settings: defaultSettings as Partial, }; } return { fetchUserInfo, settings: defaultSettings as Partial, }; } // ProLayout 支持的api https://procomponents.ant.design/components/layout export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) => { return { actionsRender: () => [, ], avatarProps: { src: initialState?.currentUser?.thumbAvatar, title: , render: (_, avatarChildren) => { return {avatarChildren}; }, }, menu: { params:{ }, request: async (params, defaultMenuData) => { const authMenus = initialState?.currentUser?.menus ?? [] const routes = treeFormatBySymmetry(defaultMenuData,authMenus, (treeNode, referTreeNode) => { const treeNodePath = treeNode.path?.toLocaleLowerCase() const referTreeNodePath = (referTreeNode?.url || '').toLocaleLowerCase() const isHasAuth = treeNodePath && referTreeNodePath && treeNodePath === referTreeNodePath if(isHasAuth) { return { ...treeNode, } } } ) return routes }, }, // waterMarkProps: { // content: initialState?.currentUser?.name, // }, //footerRender: () =>