import axios from 'axios'
import { MessageBox, Message } from 'element-ui'
import store from '@/store'
import Router from '@/router'
import { getCookie, setToken, setCookie } from './auth'// 因为后端环境区分v1 v2 剔除测试盛传的环境配置,并添加统一前缀
const url = process.env.VUE_APP_BASE_API
// axios.defaults.baseURL = 'http://192.168.24.48:8080/vwdata'// create an axios instance
const service = axios.create({baseURL: url, // url = base url + request urlwithCredentials: true, // send cookies when cross-domain requeststimeout: 60000, // request timeoutcrossDomain: true
})// request interceptor
service.interceptors.request.use(config => {// do something before request is sentif (store.state.user.token) {// let each request carry token// ['X-Token'] is a custom headers key// please modify it according to the actual situation// config.headers['token'] = getToken()config.headers['token'] = getCookie('user_token')}// The request parameter defaults to objectconfig.data = config.data || {}// Determine whether global loading is needed according to the request parameter s s s needload fieldreturn config},error => {// error reset loading// do something with request errorconsole.log(error) // for debugreturn Promise.reject(error)}
)window.islogin = true
// response interceptor
service.interceptors.response.use(/*** If you want to get http information such as headers or status* Please return response => response*//*** Determine the request status by custom code* Here is just an example* You can also judge the status by HTTP Status Code*/response => {const res = response.data// if the custom code is not 20000, it is judged as an error.// 后台返回0失败1成功// if (!getToken()) {// Router.push('/login')// }if (res.code === 0 || res.code === 1) {return res} else if (res.code === -1) {if (window.islogin) {window.islogin = falseMessageBox.alert(res.message, '登录失效', {confirmButtonText: '去登录',showClose: false}).then(() => {Router.push('/login')})}} else if (res.code === 401) {Router.push('/err.401')} else if (res.code === 1001) {setCookie('user_token', res.data.token)response.config.headers['token'] = res.data.tokenreturn axios.request(response.config)}else {if(res.message){Message({message: res.message,type: 'error',duration: 5000})}else{return response}}},error => {console.log('err' + error) // for debugMessage({message: error.msg || '网络异常',type: 'error',duration: 5 * 1000})return Promise.reject(error)}
)export default service