|
|
|
@@ -53,7 +53,7 @@ export const requestConfig: RequestConfig = { |
|
|
|
], |
|
|
|
responseInterceptors: [ |
|
|
|
[ |
|
|
|
(response: AxiosResponse) => { |
|
|
|
async (response: AxiosResponse) => { |
|
|
|
const { status, data, config } = response || {}; |
|
|
|
const options = config as RequestOptions; |
|
|
|
const skipErrorHandler = options?.skipErrorHandler; |
|
|
|
@@ -63,20 +63,45 @@ export const requestConfig: RequestConfig = { |
|
|
|
Loading.hide(); |
|
|
|
} |
|
|
|
if (status >= 200 && status < 300) { |
|
|
|
if (status === 204) { |
|
|
|
// 无内容或者无需验证 |
|
|
|
if (status === 204 || skipValidating) { |
|
|
|
return response; |
|
|
|
} else if (data && (skipValidating || data instanceof Blob || data.code === 200)) { |
|
|
|
} |
|
|
|
|
|
|
|
if (data && data.code === 200) { |
|
|
|
return response; |
|
|
|
} |
|
|
|
|
|
|
|
// Blob 数据 |
|
|
|
if (data && data instanceof Blob && data.size > 0) { |
|
|
|
// 下载文件失败时,返回的是 JSON 数据,格式为:{code: 500, msg: "xxx"} |
|
|
|
if (data.type === 'application/json') { |
|
|
|
try { |
|
|
|
const text = await data.text(); |
|
|
|
const json = JSON.parse(text); |
|
|
|
|
|
|
|
if (json.code === 500) { |
|
|
|
popupError(json.msg || '请求失败', skipErrorHandler); |
|
|
|
return Promise.reject(json); |
|
|
|
} |
|
|
|
} catch (error) { |
|
|
|
console.error('JSON 解析失败', error); |
|
|
|
} |
|
|
|
} |
|
|
|
return response; |
|
|
|
} else if (data && data.code === 401) { |
|
|
|
} |
|
|
|
|
|
|
|
// Token 失效 |
|
|
|
if (data && data.code === 401) { |
|
|
|
clearSessionToken(); |
|
|
|
setRemoteMenu(null); |
|
|
|
gotoLoginPage(false); |
|
|
|
popupError('请重新登录'); |
|
|
|
return Promise.reject(response); |
|
|
|
} else { |
|
|
|
popupError(data?.msg ?? '请求失败', skipErrorHandler); |
|
|
|
return Promise.reject(response); |
|
|
|
} |
|
|
|
|
|
|
|
popupError(data?.msg ?? '请求失败', skipErrorHandler); |
|
|
|
return Promise.reject(response); |
|
|
|
} else { |
|
|
|
popupError('请求失败', skipErrorHandler); |
|
|
|
return Promise.reject(response); |
|
|
|
|