123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 |
- import axios from "axios";
- import Router from "@/router";
- import { Message, Notification } from "@arco-design/web-vue";
- import { useSystemStore } from "@/store/modules/systemStore";
- import { fn_logout } from "@/utils";
- const axiosInstance = axios.create({
- // baseURL: `${import.meta.env.PROD ? import.meta.env.VITE_PRO_PATH : ''}/api`,
- baseURL: import.meta.env.BASE_URL + "api",
- timeout: 300000,
- });
- const requestState = {
- // 得到正确响应
- success: [200],
- // token 跳转
- beOverdue: [886],
- // 没有访问权限
- NotAccessRight: [500],
- // 异常code
- exception: [400],
- };
- const pathArr = ["/api/admin/system/login", "/api/logout"];
- axiosInstance.interceptors.request.use(
- (config) => {
- const systemStore = useSystemStore();
- systemStore.localLoading(true);
- // 在发送请求之前做些什么
- if (!pathArr.includes(config.url)) {
- const token = localStorage.getItem("token");
- if (token && config.headers) {
- config.headers["Authorization"] = token;
- }
- }
- return config;
- },
- (err) => {
- const systemStore = useSystemStore();
- systemStore.localLoading();
- Promise.reject(err);
- }
- );
- // 响应拦截器
- axiosInstance.interceptors.response.use(
- (res) => {
- const systemStore = useSystemStore();
- systemStore.localLoading();
- const { code, data, message:msg } = res.data;
- // 成功
- if (code === 200) {
- return Promise.resolve(res.data);
- }
- // 服务端错误信息
- if (requestState.NotAccessRight.includes(code)) {
- Notification.warning({
- title: "系统信息",
- content: msg,
- });
- return Promise.reject(msg);
- }
- // 异常code
- if (requestState.exception.includes(code)) {
- Notification.warning({
- title: "系统提示",
- content: msg,
- });
- return Promise.reject(msg);
- }
-
- return Promise.resolve(data);
- },
- (err) => {
- const systemStore = useSystemStore();
- systemStore.localLoading();
- const res = err["response"];
- if (err.code === "ERR_CANCELED") {
- console.log("请求中断");
- return;
- }
- const msg = err.response.data ? err.response.data.message : ""
- Notification.warning({
- title: "系统信息",
- content: msg
- });
- //token失效
- if (requestState.beOverdue.includes(err.status)) {
- fn_logout(Router);
- // 直接终止请求
- return undefined;
- }
- Promise.reject(err);
- }
- );
- export default axiosInstance;
|