import axios from "axios"; import { ElLoading, ElMessage } from "element-plus"; import router from "../router"; import pinia from "../pinia"; import { useUserStore } from "@/pinia/user.js"; import refreshToken from "@/assets/js/refreshToken.js"; let loading = null; function startLoading() { loading = ElLoading.service({ lock: true, text: "加载中...", background: "rgba(0, 0, 0, 0.5)", }); } function endLoading() { loading && loading.close(); } // axios.defaults.baseURL = import.meta.env[ // import.meta.env.DEV ? "VITE_PROXY" : "VITE_BASE_URL" // ]; axios.defaults.baseURL = import.meta.env.VITE_PROXY; axios.defaults.timeout = 1000 * 60 * 10; // axios.defaults.withCredentials = true; axios.interceptors.request.use( async (config) => { const userStore = useUserStore(pinia); config.headers.Token = userStore.getToken; if (config.method === "get" || config.method === "GET") { if (config.params.loading !== false) startLoading(); } if (config.method === "post" || config.method === "POST") { if (config.data.loading !== false) startLoading(); } return config; }, (error) => Promise.reject(error) ); axios.interceptors.response.use( (config) => { endLoading(); if (config.data.code === 401) { ElMessage.error("登录失效,请重新登录"); router.push("/login").then(); } else { refreshToken(); } return config; }, (error) => { if (error && error.response) { error.message = `连接错误${error.response.status}`; import.meta.env.DEV && ElMessage.error(`连接错误${error.response.status}`); } else { error.message = "连接到服务器失败"; ElMessage.error("连接到服务器失败"); } return Promise.reject(error.message); } ); export function post(url, params = {}) { const userStore = useUserStore(pinia); return new Promise((resolve, reject) => { axios .post(url, { corpinfoId: userStore.getUserInfo.corpinfoId, userId: userStore.getUserInfo.userId, ...params, }) .then((res) => { if (res.data.result === "success") { resolve(res.data); } else { ElMessage.error(res.data.msg || "系统开小差了"); reject(res.data); } }) .catch((err) => { reject(err); }); }); } export function get(url, params = {}) { const userStore = useUserStore(pinia); return new Promise((resolve, reject) => { axios .get(url, { params: { corpinfoId: userStore.getUserInfo.corpinfoId, userId: userStore.getUserInfo.userId, ...params, }, }) .then((res) => { if (res.data.result === "success") { resolve(res.data); } else { ElMessage.error(res.data.msg || "系统开小差了"); reject(res.data); } }) .catch((err) => { reject(err); }); }); } export function upload(url, params = {}) { return new Promise((resolve, reject) => { axios .post(url, params, { headers: { "Content-Type": "multipart/form-data", }, }) .then((res) => { if (res.data.result === "success") { resolve(res.data); } else { ElMessage.error(res.data.msg || "系统开小差了"); reject(res.data); } }) .catch((err) => { reject(err); }); }); }