Skip to content

Commit ccb997a

Browse files
committed
🐛 修复 Excel 导出失败时,依然下载的问题
1 parent 9591ed7 commit ccb997a

File tree

1 file changed

+8
-4
lines changed

1 file changed

+8
-4
lines changed

src/config/axios/service.ts

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -104,22 +104,26 @@ service.interceptors.request.use(
104104
// response 拦截器
105105
service.interceptors.response.use(
106106
async (response: AxiosResponse<any>) => {
107-
const { data } = response
107+
let { data } = response
108108
const config = response.config
109109
if (!data) {
110110
// 返回“[HTTP]请求没有返回值”;
111111
throw new Error()
112112
}
113113
const { t } = useI18n()
114114
// 未设置状态码则默认成功状态
115-
const code = data.code || result_code
116-
// 二进制数据则直接返回
115+
// 二进制数据则直接返回,例如说 Excel 导出
117116
if (
118117
response.request.responseType === 'blob' ||
119118
response.request.responseType === 'arraybuffer'
120119
) {
121-
return response.data
120+
// 注意:如果导出的响应为 json,说明可能失败了,不直接返回进行下载
121+
if (response.data.type !== 'application/json') {
122+
return response.data
123+
}
124+
data = await new Response(response.data).json()
122125
}
126+
const code = data.code || result_code
123127
// 获取错误信息
124128
const msg = data.msg || errorCode[code] || errorCode['default']
125129
if (ignoreMsgs.indexOf(msg) !== -1) {

0 commit comments

Comments
 (0)