|
@@ -1,100 +1,100 @@
|
|
|
-import axios, { AxiosError } from "axios";
|
|
|
-import { message } from "ant-design-vue";
|
|
|
-import { loadProgressBar } from "axios-progress-bar";
|
|
|
-import { signToken } from "@/plugins/signToken";
|
|
|
-import { filterConfigEmpty } from "@/plugins/configFilter";
|
|
|
-import { downloadBlob,exitLogin } from "@/utils/common";
|
|
|
-
|
|
|
-const request = axios.create({
|
|
|
- baseURL: import.meta.env.VITE_APP_API_HOST,
|
|
|
- withCredentials: true,
|
|
|
- timeout: 20000,
|
|
|
- method: "post",
|
|
|
- transformRequest: [],
|
|
|
-});
|
|
|
-
|
|
|
-request.interceptors.request.use(
|
|
|
- (config) => {
|
|
|
- if (!config.url) {
|
|
|
- throw new AxiosError(
|
|
|
- "request must should a url parameter",
|
|
|
- "REQUEST_PARAMETER_ERROR",
|
|
|
- config
|
|
|
- );
|
|
|
- }
|
|
|
- config.headers = config.headers || {};
|
|
|
- if (!config.noAuth) {
|
|
|
- const { token, timestamp } = signToken(config.url, config.method);
|
|
|
- config.headers["Authorization"] = token;
|
|
|
- config.headers["time"] = timestamp;
|
|
|
- }
|
|
|
- config.headers["Content-Type"] =
|
|
|
- config.headers["Content-Type"] || "application/x-www-form-urlencoded";
|
|
|
- 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;
|
|
|
- },
|
|
|
- (error: AxiosError) => {
|
|
|
- if (!error.config.noToast) {
|
|
|
- message.error(error.message || error.name || error.code);
|
|
|
- }
|
|
|
- return Promise.reject(error);
|
|
|
- }
|
|
|
-);
|
|
|
-
|
|
|
-request.interceptors.response.use(
|
|
|
- (response) => {
|
|
|
- if (response.config.download) {
|
|
|
- downloadBlob(response);
|
|
|
- return response;
|
|
|
- }
|
|
|
- if (response.data.hasError) {
|
|
|
- const errMsg = response.data?.errMsg?.join("\n");
|
|
|
- message.error(errMsg);
|
|
|
- return Promise.reject(response.data);
|
|
|
- }
|
|
|
- return response.data;
|
|
|
- },
|
|
|
- async (error: AxiosError<any>) => {
|
|
|
- if (error.isAxiosError && !error.config.noToast) {
|
|
|
- if (
|
|
|
- error.response &&
|
|
|
- ([401, 403].includes(error.response.status) ||
|
|
|
- error.response.data?.code?.toString()?.startsWith("401"))
|
|
|
- ) {
|
|
|
- exitLogin(false)
|
|
|
- message.error({content:"登录状态已过期",key:'token-valid'});
|
|
|
- return Promise.reject(error);
|
|
|
- }
|
|
|
- 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);
|
|
|
- }
|
|
|
- return Promise.reject(error);
|
|
|
- }
|
|
|
-);
|
|
|
-
|
|
|
-loadProgressBar(null, request);
|
|
|
-
|
|
|
-export default request;
|
|
|
+import axios, { AxiosError } from "axios";
|
|
|
+import { message } from "ant-design-vue";
|
|
|
+import { loadProgressBar } from "axios-progress-bar";
|
|
|
+import { signToken } from "@/plugins/signToken";
|
|
|
+import { filterConfigEmpty } from "@/plugins/configFilter";
|
|
|
+import { downloadBlob, exitLogin } from "@/utils/common";
|
|
|
+
|
|
|
+const request = axios.create({
|
|
|
+ baseURL: import.meta.env.VITE_APP_API_HOST,
|
|
|
+ withCredentials: true,
|
|
|
+ timeout: 180000,
|
|
|
+ method: "post",
|
|
|
+ transformRequest: [],
|
|
|
+});
|
|
|
+
|
|
|
+request.interceptors.request.use(
|
|
|
+ (config) => {
|
|
|
+ if (!config.url) {
|
|
|
+ throw new AxiosError(
|
|
|
+ "request must should a url parameter",
|
|
|
+ "REQUEST_PARAMETER_ERROR",
|
|
|
+ config
|
|
|
+ );
|
|
|
+ }
|
|
|
+ config.headers = config.headers || {};
|
|
|
+ if (!config.noAuth) {
|
|
|
+ const { token, timestamp } = signToken(config.url, config.method);
|
|
|
+ config.headers["Authorization"] = token;
|
|
|
+ config.headers["time"] = timestamp;
|
|
|
+ }
|
|
|
+ config.headers["Content-Type"] =
|
|
|
+ config.headers["Content-Type"] || "application/x-www-form-urlencoded";
|
|
|
+ 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;
|
|
|
+ },
|
|
|
+ (error: AxiosError) => {
|
|
|
+ if (!error.config.noToast) {
|
|
|
+ message.error(error.message || error.name || error.code);
|
|
|
+ }
|
|
|
+ return Promise.reject(error);
|
|
|
+ }
|
|
|
+);
|
|
|
+
|
|
|
+request.interceptors.response.use(
|
|
|
+ (response) => {
|
|
|
+ if (response.config.download) {
|
|
|
+ downloadBlob(response);
|
|
|
+ return response;
|
|
|
+ }
|
|
|
+ if (response.data.hasError) {
|
|
|
+ const errMsg = response.data?.errMsg?.join("\n");
|
|
|
+ message.error(errMsg);
|
|
|
+ return Promise.reject(response.data);
|
|
|
+ }
|
|
|
+ return response.data;
|
|
|
+ },
|
|
|
+ async (error: AxiosError<any>) => {
|
|
|
+ if (error.isAxiosError && !error.config.noToast) {
|
|
|
+ if (
|
|
|
+ error.response &&
|
|
|
+ ([401, 403].includes(error.response.status) ||
|
|
|
+ error.response.data?.code?.toString()?.startsWith("401"))
|
|
|
+ ) {
|
|
|
+ exitLogin(false);
|
|
|
+ message.error({ content: "登录状态已过期", key: "token-valid" });
|
|
|
+ return Promise.reject(error);
|
|
|
+ }
|
|
|
+ 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);
|
|
|
+ }
|
|
|
+ return Promise.reject(error);
|
|
|
+ }
|
|
|
+);
|
|
|
+
|
|
|
+loadProgressBar(null, request);
|
|
|
+
|
|
|
+export default request;
|