123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- // 运行时配置
- import type { RequestConfig } from 'umi';
- import { queryCurrent, queryAccess } from '@/Project/services/user';
- import { STORAGE_TYPE, LocalService } from './Frameworks/SysStorage';
- import { message } from 'antd';
- // 全局初始化数据配置,用于 Layout 用户信息和权限初始化
- // 更多信息见文档:https://next.umijs.org/docs/api/runtime-config#getinitialstate
- export async function getInitialState(): Promise<any> {
- let currentUser = {},
- access = {};
- let app = window.GT_APP;
- // 非登录页获取用户信息
- if (app?.isActive && !app.funcLogin.IsActive) {
- try {
- currentUser = (await queryCurrent()).data;
- } catch (error) {}
- try {
- access = await queryAccess(46);
- } catch (error) {}
- }
- return { currentUser, access, projectId: 46 };
- }
- // axios配置
- export const request: RequestConfig = {
- errorConfig: {
- errorThrower(res: Api.IResponseStructure) {
- // 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') {
- const errorInfo: Api.IResponseStructure | undefined = error.info;
- const inLoginPage = window.GT_APP.funcLogin.IsActive;
- if (!inLoginPage && errorInfo) {
- message.error(errorInfo.msg || errorInfo.data);
- }
- } else if (error.response) {
- // Axios 的错误
- // 请求成功发出且服务器也响应了状态码,但状态代码超出了 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'] = LocalService.getItem(STORAGE_TYPE.token);
- return config;
- },
- ],
- responseInterceptors: [
- (res) => {
- const resData = res.data as Api.IResponseStructure;
- 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 res;
- },
- ],
- };
|