import axios from "axios" import { Message } from "element-ui" import Cookies from 'js-cookie' // import router from '@/router' const Axios = axios.create({ responseType: "json", withCredentials: true // 是否允许带cookie这些 }) const getApsPage = () => { // 首页部署在各个环境的端口 const loginPathMap = { prod:`//${window.location.hostname}:9080`, test:`//192.168.20.119:9080`, // 想跳到本地启动的登录页的话需要把dev改成你本地项目路径 dev: `//192.168.20.119:9080` } if (location.href.includes('192.168.20.119')) { return loginPathMap.test } else if (location.href.includes('192.168') || location.href.includes('localhost')) { return loginPathMap.dev } else { return loginPathMap.prod } } function getToken(){ const localStorageToken = localStorage.getItem('token') const cookieToken = Cookies.get("token") if (localStorageToken){ return localStorageToken }else if ( cookieToken) { localStorage.setItem('token',cookieToken) return cookieToken }else { return '' } } /* //POST传参序列化(添加请求拦截器) */ Axios.interceptors.request.use( (config) => { // 若是有做鉴权token , 就给头部带上token let token = getToken() if (token) { config.headers.Authorization = "Bearer " + token; } return config }, (error) => { return Promise.reject(error) } ) /* //返回状态判断(添加响应拦截器) */ Axios.interceptors.response.use( (res) => { /* //对响应数据做些事 */ if (res.data.code === 200) { return res.data ? res.data : {} } else if (res.data.code === 700001 || res.data.code === 700005) { console.log("客户名称重复") return res } else if([2012,2013,2014,2015].includes(res.data.code)){ // JWT鉴权失效 跳转到登录页 window.location = getApsPage()+'/login' return Promise.reject(res.data) } else { Message({ message: res.data.msg, type: "error", duration: 5 * 1000 }) return Promise.reject(res.data) } }, (error) => { let { message } = error if (message === "Network Error") { message = "后端接口连接异常" } else if (message.includes("timeout")) { message = "系统接口请求超时" } else if (message.includes("Request failed with status code")) { message = "系统接口" + message.substr(message.length - 3) + "异常" } Message({ message: message, type: "error", duration: 5 * 1000 }) return Promise.reject(error) } ) export default Axios