import { SettingDrawer } from "@ant-design/pro-layout";
import { PageLoading } from "@ant-design/pro-layout";
import { history, Link } from "umi";
import RightContent from "@/components/RightContent";
import TagView from "@/components/TagView";
import SiderMenu from "@/components/SiderMenu";
import { queryCurrentUser, getMenu } from "./services/login";
import defaultSettings from "../config/defaultSettings";
import { message } from "antd";
const loginPath = "/user/login";
/** 获取用户信息比较慢的时候会展示一个 loading */
export const initialStateConfig = {
loading: ,
};
/**
* @see https://umijs.org/zh-CN/plugins/plugin-initial-state
* */
export async function getInitialState() {
let token = localStorage.getItem("TOKEN_MES");
const fetchUserInfo = async () => {
try {
const msg = await queryCurrentUser();
return msg.data;
} catch (error) {
history.push(loginPath);
}
return undefined;
}; // 如果是登录页面,不执行
const getmenuData = async () => {
try {
const res = await getMenu();
return res.data;
} catch (error) {
message.error(res.msg);
}
return undefined;
}; // 如果是登录页面,不执行
if (history.location.pathname !== loginPath && token) {
const currentUserData = await fetchUserInfo();
let menuData;
if (currentUserData?.data?.userName) {
menuData = await getmenuData();
}
return {
fetchUserInfo,
currentUser: currentUserData?.data,
settings: defaultSettings,
newMenu: menuData,
getmenuData,
collapsed: false
};
}
return {
fetchUserInfo,
settings: defaultSettings,
getmenuData,
collapsed: false
};
} // ProLayout 支持的api https://procomponents.ant.design/components/layout
export const layout = async (props) => {
let { initialState, setInitialState } = props;
let token = localStorage.getItem("TOKEN_MES");
return {
headerContentRender: () => ,
rightContentRender:()=>null,
disableContentMargin: false,
waterMarkProps: {
content: initialState?.currentUser?.name,
},
collapsed: initialState.collapsed,
onCollapse: (cols) => {
setInitialState(s => ({ ...s, collapsed: cols }))
},
onPageChange: () => {
const { location } = history; // 如果没有登录,重定向到 login
if (location.pathname != "/user/logon") {
if (
(!initialState?.currentUser && location.pathname !== loginPath) ||
!token
) {
setInitialState((s) => {
return { ...s, currentUser: undefined, newMenu: [] };
});
history.replace(loginPath);
}
}
if (location.pathname == loginPath) {
setInitialState((s) => {
return { ...s, currentUser: undefined, newMenu: [] };
});
}
},
contentStyle: {
padding: "42px 0px 0px 6px",
margin: 0,
},
//接口获取菜单数据
menu: {
// 每当 initialState?.currentUser?.userid 发生修改时重新执行 request
params: {
userId: initialState?.currentUser?.id,
},
request: (params, defaultMenuData) => {
let lastArr = initialState?.newMenu?.userHavePermList
? JSON.parse(
JSON.stringify(initialState?.newMenu?.userHavePermList)
)
: [],
newArr = [
{
path: "/welcome",
name: "首页",
icon: "smile",
component: "./Welcome",
haveChildren: false,
key: "000000",
parentKey: "0",
routes: [],
children: null,
title: null,
},
].concat(lastArr);
return newArr;
},
locale: false,
},
menuRender: (props, defaultDom) => {
if (props.isMobile) {
return defaultDom;
} else {
return ;
}
},
// 自定义 403 页面
// unAccessible:
unAccessible
,
// 增加一个 loading 的状态
childrenRender: (children, props) => {
// if (initialState?.loading) return ;
return (
<>
{initialState?.currentUser && location.pathname !== loginPath ? (
{children}
) : (
children
)}
{!props.location?.pathname?.includes("/login") && (
{
setInitialState((preInitialState) => ({
...preInitialState,
settings,
}));
}}
/>
)}
>
);
},
...initialState?.settings,
};
};