import axios from "axios"; import { Message, MessageBox } from "element-ui"; // import { getToken, removeToken, setToken } from "@/utils/token"; import { getCookie, delCookie } from "./utils.js"; import router from "../router/index.js"; import { name } from "../../config/dev.env.js"; let base = "/api"; let baseURL = base; // 根据环境变量对host进行判断 // axios.defaults.baseURL = process.env.baseURL // axios.defaults.baseURL = '/api' axios.defaults.headers.post["Content-Type"] = "application/json;charset=UTF-8"; // const rLoading = this.openLoading(); // 创建axios实例 const service = axios.create({ // baseURL: baseURL, timeout: 15000 // 请求超时时间 }); // request拦截器 service.interceptors.request.use( config => { // 在此处设置请求头参数 const token = localStorage.getItem("token"); if (token != null) { config.headers.token = token; } return config; }, error => { return Promise.reject(error); } ); var flag = false; // axios response 拦截器 service.interceptors.response.use( response => { // loadingObj.close(); switch (response.data.code) { case "502001": if (flag) { break; } else { flag = true; MessageBox.confirm(response.data.message + "!重新登录?", "提示", { confirmButtonText: "确定", cancelButtonText: "取消", cancelButtonClass: "cancelbtnFalses", confirmButtonClass: "confirmbtnFalses", type: "warning" }).then(() => { router.push("/login"); delCookie("token"); }); setTimeout(() => { flag = false; }, 15000); console.log(flag); } break; case "510002": if (flag) { break; } else { flag = true; MessageBox.confirm("登录已过期 , 是否重新登录?", "提示", { confirmButtonText: "确定", cancelButtonText: "取消", cancelButtonClass: "cancelbtnFalses", confirmButtonClass: "confirmbtnFalses", type: "warning" }).then(() => { router.push("/login"); delCookie("token"); }); //解决当token过期时,同一个页面有多个请求造成 “是否重新登录”弹框多次弹出 的BUG setTimeout(() => { flag = false; }, 15000); break; } default: break; } // 返回请求成功结果,status=200 return response.data; }, err => { // 判断请求失败 // 请求失败时,即status!=200 if (err && err.response) { switch (err.response.status) { case 400: err.message = "错误格式请求"; break; case 401: err.message = "未授权,请重新登录"; break; case 403: err.message = "禁止访问"; break; case 404: err.message = "请求错误,未找到该请求方法"; break; case 405: err.message = "请求方法未允许"; break; case 408: err.message = "请求超时"; break; case 413: err.message = "上传文件过大"; break; case 500: err.message = "服务器端出错"; break; case 501: err.message = "网络未实现"; break; case 502: err.message = "网络错误"; break; case 503: err.message = "服务不可用"; break; case 504: err.message = "网络超时"; break; case 505: err.message = "http版本不支持该请求"; break; default: err.message = `连接错误,${err.res.message}`; } } else { err.message = "连接不上服务器"; } Message({ type: "warning", message: err.message, showClose: true, duration: 1500 }); return Promise.reject(err); } ); // export default service; export { service };