import axios, {
AxiosInstance,
AxiosError,
AxiosResponse,
AxiosRequestConfig,
} from "axios";
import { Toast } from "vant";
// import { Loading } from "element-ui";
// isReturnNativeData?: boolean // 返回原始数据
// errorMode?: string // 错误提示显示方式
// repeatRequest?: boolean // 允许重复请求
// loading?: boolea // 是否展示loading
import { errorHandler, errorMsgHandler } from "./errorHandler";
import { RandomHelper } from "./untils/untils";
let pendingMap = new Map();
let requestCount = 0;
let loadingInstance;
let options = { fullscreen: true };
const showLoading = () => {
// requestCount++;
// if (requestCount === 1) {
// loadingInstance = Loading.service(options);
// }
};
const closeLoading = () => {
// requestCount--;
// if (requestCount === 0) loadingInstance.close();
};
function getRequestKey(config) {
return (
(config.method || "") + config.url + "?" + JSON.stringify(config?.data)
);
}
function setPendingMap(config) {
const controller = new AbortController();
config.signal = controller.signal;
const key = getRequestKey(config);
if (pendingMap.has(key)) {
pendingMap.get(key).abort();
pendingMap.delete(key);
} else {
pendingMap.set(key, controller);
}
}
const service = axios.create({
timeout: 1000 * 30,
baseURL: "",
withCredentials: true,
headers: {
"Content-Type": "application/json;charset=utf-8",
},
});
service.interceptors.request.use(
(config) => {
let now = +new Date();
// console.log(config, "request");
var randomHelper = new RandomHelper();
var randomUUID = randomHelper.randomUUID();
config.headers["X-Request-Id"] = randomUUID;
config.headers["CurrentTime"] = now;
config.headers["Sign"] = "1234567890";
if (config.loading) showLoading();
if (!config.repeatRequest) {
setPendingMap(config);
}
return config;
},
(error) => {
// console.log(error);
return Promise.reject();
}
);
service.interceptors.response.use((response) => {
const config = response.config;
if (config.loading) closeLoading();
const key = getRequestKey(config);
if (pendingMap.has(key)) {
pendingMap.delete(key);
}
// console.log(response, "response");
if (response.status === 200) {
if (config?.isReturnNativeData) {
return response.data;
} else {
const { data, success, status } = response.data;
if (status.code === 0) {
// console.log(data, "data444545");
return data;
} else {
errorHandler(
status.err || status.msg || errorMsgHandler(code),
config.errorMode
);
Promise.reject();
}
}
} else {
const errMsg = errorMsgHandler(response.status);
errorHandler(errMsg, config.errorMode);
Promise.reject();
}
});
// 错误处理
service.interceptors.response.use(undefined, (e) => {
Toast({
message: "error",
});
// errorHandler(e?.response?.status);
});
export default service;
import axios from "@/request/axios";
import { returnBaseUrl } from "@/request/untils/untils";
const baseURL = returnBaseUrl("/secure");
const baseURL2 = returnBaseUrl("/api");
const baseURL3 = returnBaseUrl("/admin");
// 获取email otp
export const getOTP = function (data) {
return axios({
baseURL,
method: "post",
url: "/auth/sendEmailOTP",
data,
});
};
// // 获取短信 otp
export const getPhoneOTP = function (data) {
return axios({
baseURL,
method: "post",
url: "/auth/sendOTP",
data,
});
};
//登录注册
export const signIn = function (data) {
return axios({
baseURL,
method: "post",
url: "/auth/verifyEmailOTP",
data,
loading: true,
});
};