import axios from 'axios' import { MessageBox, Message } from 'element-ui' import store from '@/store' import { getToken } from '@/utils/auth' import qs from 'qs' import SYSTEM_EVN from '../../config/evn' // 创建axios实例 const service = axios.create({ baseURL: SYSTEM_EVN.BASE_URL // baseURL: 'http://getway.vipgz4.idcfengye.com' // withCredentials: true, // 跨域请求时发送cookiesokies // timeout: 30000 // 请求超时 }) // 请求拦截器 service.interceptors.request.use( config => { if (config.method === 'post' && config.url === '/auth/oauth/login?project=8030') { // 请求为post 使用qs转换数据 config.data = qs.stringify(config.data) config.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8' } else { config.headers.post['Content-Type'] = 'application/json;charset=UTF-8' } // 在发出请求前做点什么 if (store.getters.token) { config.headers['Authorization'] = 'bearer ' + getToken() } return config }, error => { // 处理请求错误 console.log(error) return Promise.reject(error) } ) // 响应拦截器 service.interceptors.response.use( /** * 如果您想要获取诸如头或状态之类的http信息 * return response => response */ /** * 通过自定义代码确定请求状态 */ response => { const res = response.data // 如果自定义代码不是1,则判断为错误。 if (res.success) { return res } else { if (res.code !== 1) { Message({ message: res.message || 'Error', type: 'error', duration: 5 * 1000 }) // 50008:非法令牌;50012:其他客户端登录;50014:令牌过期; 暂时没用 if (res.code === 50008 || res.code === 50012 || res.code === 50014) { // to re-login MessageBox.confirm('您已注销,您可以取消以停留在此页,或重新登录', '确认注销', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { store.dispatch('user/resetToken').then(() => { location.reload() }) }) } return Promise.reject(new Error(res.message || 'Error')) } else { return res } } }, error => { console.log('err' + error) Message({ message: error.message, type: 'error', duration: 3 * 1000 }) return Promise.reject(error) } ) export default service