|
|
|
@@ -3,14 +3,17 @@ |
|
|
|
* @Date: 2024-03-25 13:52:54 |
|
|
|
* @Description: 网络请求配置,详情请参考 https://umijs.org/docs/max/request |
|
|
|
*/ |
|
|
|
import type { AxiosRequestConfig, AxiosResponse, RequestConfig } from '@umijs/max'; |
|
|
|
import type { AxiosRequestConfig, AxiosResponse, RequestConfig, RequestOptions } from '@umijs/max'; |
|
|
|
import { message } from 'antd'; |
|
|
|
import { clearSessionToken, getAccessToken } from './access'; |
|
|
|
import { setRemoteMenu } from './services/session'; |
|
|
|
import { gotoLoginPage } from './utils/ui'; |
|
|
|
|
|
|
|
// [antd: Notification] You are calling notice in render which will break in React 18 concurrent mode. Please trigger in effect instead. |
|
|
|
const popupError = (error: string) => { |
|
|
|
const popupError = (error: string, skipErrorHandler?: boolean = false) => { |
|
|
|
if (skipErrorHandler) { |
|
|
|
return; |
|
|
|
} |
|
|
|
// 直接调用 message.error 有时候不弹出来 |
|
|
|
setTimeout(() => { |
|
|
|
message.error(error); |
|
|
|
@@ -39,8 +42,8 @@ export const requestConfig: RequestConfig = { |
|
|
|
responseInterceptors: [ |
|
|
|
[ |
|
|
|
(response: AxiosResponse) => { |
|
|
|
const { status, data } = response || {}; |
|
|
|
// console.log(message, data); |
|
|
|
const { status, data, config } = response || {}; |
|
|
|
const skipErrorHandler = (config as RequestOptions)?.skipErrorHandler; |
|
|
|
if (status >= 200 && status < 300) { |
|
|
|
if (data && (data instanceof Blob || data.code === 200)) { |
|
|
|
return response; |
|
|
|
@@ -51,11 +54,11 @@ export const requestConfig: RequestConfig = { |
|
|
|
popupError('请重新登录'); |
|
|
|
return Promise.reject(response); |
|
|
|
} else { |
|
|
|
popupError(data?.msg ?? '请求失败'); |
|
|
|
popupError(data?.msg ?? '请求失败', skipErrorHandler); |
|
|
|
return Promise.reject(response); |
|
|
|
} |
|
|
|
} else { |
|
|
|
popupError('请求失败'); |
|
|
|
popupError('请求失败', skipErrorHandler); |
|
|
|
return Promise.reject(response); |
|
|
|
} |
|
|
|
}, |
|
|
|
|