123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137 |
- // 运行时配置
- import { RunTimeLayoutConfig, RequestConfig } from '@umijs/max';
- import { message } from 'antd';
- import UserDropdown from '@/components/UserDropdown';
- import { getToken } from '@/utils/utils';
- import { history } from 'umi';
- import logo from '@/assets/logo.png';
- // 全局初始化数据配置,用于 Layout 用户信息和权限初始化
- // 更多信息见文档:https://umijs.org/docs/api/runtime-config#getinitialstate
- export async function getInitialState(): Promise<{ name: string }> {
- return { name: 'admin' };
- }
- export const layout: RunTimeLayoutConfig = (initialState) => {
- return {
- navTheme: 'light',
- layout: 'side',
- contentWidth: 'Fluid',
- title: '金科环境数字化管理平台',
- token: {
- sider: {
- colorMenuBackground: '#292f33',
- // colorMenuItemDivider: '#dfdfdf',
- // colorBgMenuItemHover: '#f6f6f6',
- // colorTextMenu: '#dfdfdf',
- // colorTextMenuSelected: '#fff',
- // colorTextMenuActive: 'rgba(255,255,255,0.85)',
- // colorBgMenuItemCollapsedHover: '#fff',
- // colorTextMenuItemHover: '#dfdfdf',
- colorBgCollapsedButton: '#fff',
- colorTextCollapsedButtonHover: 'rgba(0,0,0,0.65)',
- colorTextCollapsedButton: 'rgba(0,0,0,0.45)',
- colorBgMenuItemCollapsedHover: 'rgba(0,0,0,0.06)',
- colorBgMenuItemCollapsedSelected: 'rgba(0,0,0,0.15)',
- colorBgMenuItemCollapsedElevated: 'rgba(0,0,0,0.85)',
- colorMenuItemDivider: 'rgba(255,255,255,0.15)',
- colorBgMenuItemHover: 'rgba(0,0,0,0.06)',
- colorBgMenuItemSelected: 'rgba(0,0,0,0.15)',
- colorTextMenuSelected: '#fff',
- colorTextMenuItemHover: 'rgba(255,255,255,0.75)',
- colorTextMenu: 'rgba(255,255,255,0.75)',
- colorTextMenuSecondary: 'rgba(255,255,255,0.65)',
- colorTextMenuTitle: 'rgba(255,255,255,0.95)',
- colorTextMenuActive: 'rgba(255,255,255,0.95)',
- colorTextSubMenuSelected: '#fff',
- },
- },
- // fixedHeader: true,
- // fixSiderbar: true,
- rightRender(initialState, setInitialState, runtimeConfig) {
- return <UserDropdown />;
- },
- logo: logo,
- };
- };
- // axios配置
- export const request: RequestConfig = {
- errorConfig: {
- errorThrower(res: any) {
- // const { data, code, msg } = res;
- // if (code !== 200) {
- // const error: any = new Error(msg);
- // error.name = 'AjaxError';
- // error.info = { code, msg, data };
- // throw error;
- // }
- console.log('errorThrower', res);
- },
- errorHandler(error: any, opts: any) {
- if (opts?.skipErrorHandler) throw error;
- // errorThrower 抛出的错误。
- if (error.name === 'AjaxError') {
- // 校验是否token失效
- if (tokenExpiredHandle(error.info.code)) return;
- const errorInfo: any = error.info;
- if (errorInfo) {
- message.error(errorInfo.msg || errorInfo.data);
- }
- } else if (error.response) {
- // http错误,校验token是否失效
- if (tokenExpiredHandle(error.response.status)) return;
- // 请求成功发出且服务器也响应了状态码,但状态代码超出了 2xx 的范围
- message.error(`网络连接错误,请稍后重试(${error.response.status})`);
- } else if (error.request) {
- // 请求已经成功发起,但没有收到响应
- // \`error.request\` 在浏览器中是 XMLHttpRequest 的实例,
- // 而在node.js中是 http.ClientRequest 的实例
- message.error('网络连接错误,请稍后重试(服务器未返回数据)。');
- } else {
- // 发送请求时出了点问题
- message.error('网络连接错误,请稍后重试(请求发送失败)。');
- }
- },
- },
- requestInterceptors: [
- (config: any) => {
- if (!config.headers) config.headers = {};
- config.headers['JWT-TOKEN'] = getToken();
- return config;
- },
- ],
- responseInterceptors: [
- (res: any) => {
- const resData = res.data;
- const { code, msg, data } = resData;
- if (code !== 200) {
- const error: any = new Error(msg);
- error.name = 'AjaxError';
- error.info = { code, msg, data };
- // throw error;
- return Promise.reject(error);
- }
- return res;
- },
- ],
- };
- let tokenFlag: boolean = false;
- // token失效校验
- const tokenExpiredHandle = (code: number) => {
- if ([401, 601, 602, 603].includes(code)) {
- if (tokenFlag) return true;
- tokenFlag = true;
- setTimeout(() => {
- tokenFlag = false;
- }, 50000);
- message.error('token失效,请重新登录');
- history.push('/login');
- return true;
- } else {
- return false;
- }
- };
|