diff --git a/src/config/axios/service.ts b/src/config/axios/service.ts index 6413e945..c9f26ad1 100644 --- a/src/config/axios/service.ts +++ b/src/config/axios/service.ts @@ -104,7 +104,7 @@ service.interceptors.request.use( // response 拦截器 service.interceptors.response.use( async (response: AxiosResponse) => { - const { data } = response + let { data } = response const config = response.config if (!data) { // 返回“[HTTP]请求没有返回值”; @@ -112,14 +112,18 @@ service.interceptors.response.use( } const { t } = useI18n() // 未设置状态码则默认成功状态 - const code = data.code || result_code - // 二进制数据则直接返回 + // 二进制数据则直接返回,例如说 Excel 导出 if ( response.request.responseType === 'blob' || response.request.responseType === 'arraybuffer' ) { - return response.data + // 注意:如果导出的响应为 json,说明可能失败了,不直接返回进行下载 + if (response.data.type !== 'application/json') { + return response.data + } + data = await new Response(response.data).json() } + const code = data.code || result_code // 获取错误信息 const msg = data.msg || errorCode[code] || errorCode['default'] if (ignoreMsgs.indexOf(msg) !== -1) {