import axios from 'axios' import store from './store' import { Notification } from 'element-ui' export const BASE_URL = process.env.BASE_URL //测试-外网 // export const BASE_URL = "http://192.168.1.7:5055" //测试-外网 export const tenantId = process.env.TENANT_ID import tools from './common/tools' import router from './router' // 创建 axios 实例 const request = axios.create({ baseURL: BASE_URL, timeout: 10000 // 请求超时时间 }) // 错误处理函数 const err = (error) => { if (axios.isCancel(error)) { console.log('Request canceled', error.message); } else { // 处理错误 if (error.response) { const data = error.response.data // const token = Vue.ls.get(ACCESS_TOKEN) if (error.response.status === 403) { } if (error.response.status === 401) { } } return Promise.reject(error) } } // request interceptor(请求拦截器) request.interceptors.request.use(config => { const token = tools.getToken() if (token && !config.noToken) { config.headers['AuthorizationToken'] = 'WX ' + token // 让每个请求携带自定义 token 请根据实际情况自行修改 } config.headers['TenantId'] = store.state && store.state.TENANT_NANE ? store.state.TENANT_NANE : "" return config }, err) // response interceptor(接收拦截器) request.interceptors.response.use(async (response) => { const res = response.data const code = res.code || 200; if (code !== 200) { if (code == 401) { let userAccount = tools.getUserAccount(); if (!userAccount) { // Message({ // message: `登录失效,重新登录`, // type: "error", // }); // setTimeout(() => { console.log('1231231') store.commit('setCurrentRouter', router.currentRoute) localStorage.removeItem('user_account') localStorage.removeItem('token') router.push({ path: '/login' }) return Promise.reject(res) // }, 1000); } else { let res = await refreshToken(response.config) return res } } else if (code == 409) { Notification.error({ title: "您已被强制下线" }) store.commit('setCurrentRouter', router.currentRoute) store.commit('setUserInfo', null) localStorage.removeItem('user_account') localStorage.removeItem('token') router.push({ path: '/login' }) } else if (code == 500) { if (res.msg !== '无其他端在操作') { // Message({ // message: res.msg, // type: "error", // }); } // localStorage.removeItem('user_account') // localStorage.removeItem('token') // console.log('222222') // router.push({ // path: '/login' // }) return Promise.reject(res) } else { return Promise.reject(res) } } else { return res } }, err) async function refreshToken(response) { let userAccount = tools.getUserAccount(); var datas = { url: '/refreshToken/' + userAccount, method: 'get', noToken: true } const res = await request(datas) if (res.code === 200) { localStorage.setItem('token', res.data.token) var userInfo = { url: '/app/user/getInfo', method: 'get', params: { fromPlat: 2 }, // 来源平台 1小程序 2PC网站 } const resUser = await request(userInfo) if (resUser.data.code === 200) { store.state.userInfo = resUser.data localStorage.setItem('user_account', userAccount) num = 1; } let onset = await request(response) return onset } else { // Message({ // message: `登录失效,重新登录`, // type: "error", // }); // setTimeout(() => { localStorage.removeItem('user_account') localStorage.removeItem('token') console.log('33333') store.commit('setCurrentRouter', router.currentRoute) router.push({ path: '/login' }) // }, 1000); } } export default request