docking-vue/src/request/axios.js

135 lines
3.4 KiB
JavaScript

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);
});
});
}