|
@@ -1,8 +1,9 @@
|
|
|
import axios, { AxiosError } from "axios";
|
|
|
import { message } from "ant-design-vue";
|
|
|
import { loadProgressBar } from "axios-progress-bar";
|
|
|
-import { signToken } from "./signToken";
|
|
|
-import { filterConfigEmpty } from "./configFilter";
|
|
|
+import { signToken } from "@/plugins/signToken";
|
|
|
+import { filterConfigEmpty } from "@/plugins/configFilter";
|
|
|
+import { downloadBlob } from "@/utils/common";
|
|
|
import router from "@/routes";
|
|
|
|
|
|
const request = axios.create({
|
|
@@ -33,6 +34,9 @@ request.interceptors.request.use(
|
|
|
if (!config.headers["Content-Type"]?.toString().includes("multipart")) {
|
|
|
config.transformRequest = (d) => new URLSearchParams(d);
|
|
|
}
|
|
|
+ if (config.download) {
|
|
|
+ config.responseType = config.responseType || "blob";
|
|
|
+ }
|
|
|
filterConfigEmpty(config);
|
|
|
return config;
|
|
|
},
|
|
@@ -47,6 +51,7 @@ request.interceptors.request.use(
|
|
|
request.interceptors.response.use(
|
|
|
(response) => {
|
|
|
if (response.config.download) {
|
|
|
+ downloadBlob(response);
|
|
|
return response;
|
|
|
}
|
|
|
if (response.data.hasError) {
|
|
@@ -56,13 +61,24 @@ request.interceptors.response.use(
|
|
|
}
|
|
|
return response.data;
|
|
|
},
|
|
|
- (error: AxiosError<any>) => {
|
|
|
+ async (error: AxiosError<any>) => {
|
|
|
if (error.isAxiosError && !error.config.noToast) {
|
|
|
- const msg =
|
|
|
- error?.response?.data?.message ||
|
|
|
- error.message ||
|
|
|
- error.name ||
|
|
|
- error.code;
|
|
|
+ let msg = "";
|
|
|
+ if (error.config?.responseType === "blob") {
|
|
|
+ try {
|
|
|
+ const e = JSON.parse(await error?.response?.data?.text());
|
|
|
+ msg = e.message || e.error || e;
|
|
|
+ } catch (error) {
|
|
|
+ console.error(error);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!msg) {
|
|
|
+ msg =
|
|
|
+ error?.response?.data?.message ||
|
|
|
+ error.message ||
|
|
|
+ error.name ||
|
|
|
+ error.code;
|
|
|
+ }
|
|
|
message.error(msg);
|
|
|
} else if (!error.isAxiosError) {
|
|
|
error.message && message.error(error.message);
|