import axios from "axios"; import URL from "@/config/index"; import router from "@/router"; import allTits from "@/i18n/back"; import pinia from "@/store/index"; import { useUserStore } from "@/store/user"; import { ElMessage } from "element-plus"; import { getStorage, removeStorage, setStorage, getBrowserLang } from "@/utils"; const getStore = () => { const userStore = useUserStore(); //不放在函数里会导致持久化有问题 return { userStore, }; }; var lang = JSON.parse(localStorage.getItem("lang")); axios.defaults.timeout = 15000; // axios.defaults.baseURL = URL.BASE_URL; axios.defaults.baseURL = 'https://btc.btcwapo.com'; axios.interceptors.request.use( (config) => { const token = getStorage("spToken"); if (token) { // config.headers["Token"] = token; } if (!config.url.includes("language")) { const newUrl = `${config.url}?language=${lang}`; config.url = `${newUrl}&token=${token}`; } return config; }, (error) => { console.log("request error--", error); return Promise.reject(error); } ); const handleClearLoginInfo = () => { getStore().userStore.resetUserInfo(); localStorage.clear(); removeStorage("username"); removeStorage("spToken"); removeStorage("vuex"); router.push("/login"); }; //http response 拦截器 axios.interceptors.response.use( (response) => { if (response.data.code != 0) { let lanTits = ""; //判断语言 if (lang == "en") { lanTits = "tits_en"; } else if (lang == "zh-CN") { lanTits = "tits_zh-CN"; } else if (lang == "cht") { lanTits = "tits_CN"; } else if (lang == "fr") { lanTits = "tits_fr"; } //403表示接口失效 if (response.data.code == "403" || response.data.code == "401") { handleClearLoginInfo(); } if (allTits[lanTits] && allTits[lanTits][response.data.msg]) { ElMessage.error(allTits[lanTits][response.data.msg]); } else { ElMessage.error(response.data.msg); } return Promise.reject(response); } return response; }, (error) => { // 401表示接口失效 if (error.response.status === 401) { handleClearLoginInfo(); } console.log("reject", error); return Promise.reject(error); } ); /** * 封装get方法 * @param url * @param data * @returns {Promise} */ export function fetch(url, params = {}) { return new Promise((resolve, reject) => { axios .get(url, { params: params, }) .then((response) => { resolve(response.data); }) .catch((err) => { reject(err); }); }); } /** * 封装post请求 * @param url * @param data * @returns {Promise} */ export function post(url, data = {}) { return new Promise((resolve, reject) => { axios.post(url, data).then( (response) => { resolve(response.data); }, (err) => { reject(err); } ); }); } export function postFormData(url, data = {}) { return new Promise((resolve, reject) => { axios({ method: "post", url, data, transformRequest: [ function (data) { let ret = ""; for (let it in data) { ret += encodeURIComponent(it) + "=" + encodeURIComponent(data[it]) + "&"; } ret = ret.substring(0, ret.lastIndexOf("&")); return ret; }, ], headers: { "Content-Type": "application/x-www-form-urlencoded", }, }).then( (response) => { resolve(response.data); }, (err) => { reject(err); } ); }); } export default { fetch, post, postFormData };