import { Footer, Question, SelectLang, AvatarDropdown, AvatarName } 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 type { RunTimeLayoutConfig } from '@umijs/max'; import { history, Link, getLocale } from '@umijs/max'; import defaultSettings from '../config/defaultSettings'; import { errorConfig } from './requestErrorConfig'; import React from 'react'; const isDev = process.env.NODE_ENV === 'development'; const loginPath = '/user/login'; import {RequestConfig} from 'umi'; // @ts-ignore import cookie from 'react-cookies'; import {getUserGetUserInfo} from "@/services/system/User"; import {MenuDataItem} from "@ant-design/pro-layout"; import fixMenuItemIcon from "@/utils/FixMenuItemIcon"; import {postMenuGetMenu} from "@/services/system/Menu"; import {SelectRole} from "@/components/RightContent"; import {addLocale} from "@@/plugin-locale"; import zhCN from "@/locales/zh-CN"; import {getAllRouteNameTile} from "@/utils/common"; /** * @see https://umijs.org/zh-CN/plugins/plugin-initial-state * */ export async function getInitialState(): Promise<{ settings?: Partial; currentUser?: API.UserView; loading?: boolean; fetchUserInfo?: any; menuData?: MenuDataItem[]; }> { const fetchUserInfo = async () => { try { const msg = await getUserGetUserInfo(); return msg.data.userInfo; } catch (error) { history.push(loginPath); } return undefined; }; // 如果不是登录页面,执行 const { location } = history; if (location.pathname !== loginPath && localStorage.getItem('access')) { const currentUser = await fetchUserInfo(); const menus = await postMenuGetMenu(); if (getLocale() === 'zh-CN') { let localData = getAllRouteNameTile(menus.data.routes, '') let localRes:any = {} localData.forEach((v)=>{ localRes[`menu${v.name}`] = v.title }) console.log(localRes) addLocale("zh-CN", localRes,{ momentLocale: "zh-CN", antd: zhCN }); } return { fetchUserInfo, currentUser, settings: defaultSettings as Partial, menuData: menus.data.routes, }; } return { fetchUserInfo, settings: defaultSettings as Partial, }; } // ProLayout 支持的api https://procomponents.ant.design/components/layout export const layout: RunTimeLayoutConfig = ({ initialState, setInitialState }) => { return { actionsRender: () => [, , ], avatarProps: { src: SERVER_HOST + initialState?.currentUser?.avatarUrl, title: , render: (_, avatarChildren) => { return {avatarChildren}; }, }, waterMarkProps: { // content: initialState?.currentUser?.name, }, menu: { loading: initialState?.loading || false, locale: true, params: { userId: initialState?.currentUser?.id, }, request: async () => { return initialState?.menuData || [] } }, footerRender: () =>