import axios from 'axios' import store from '@/store' import { Toast } from 'vant' // 根据环境不同引入不同api地址 import { baseApi } from '@/config' import router from '@/router' import { Tips } from '@/utils/index' // create an axios instance const service = axios.create({ baseURL: baseApi, // url = base api url + request url withCredentials: true, // send cookies when cross-domain requests timeout: 5000 // request timeout }) // request拦截器 request interceptor service.interceptors.request.use( config => { config.headers['source'] = process.env.NODE_ENV !== 'production' ? 'dev' : 'prod' config.headers.client = 'web' config.headers.app = 'gov' if (localStorage.getItem('token')) { config.headers['Token'] = localStorage.getItem('token') config.headers['Authorization'] = localStorage.getItem('token') } config.baseURL = config.baseURL + '/' Tips.loading() return config }, error => { // do something with request error console.log(error) // for debug return Promise.reject(error) } ) // respone拦截器 service.interceptors.response.use( response => { Toast.clear() const res = response.data const code = res.code; if (res.status && res.status !== 200) { return Promise.reject(res || 'error') } else { if (res.code === 0) { return Promise.resolve(res) } else { let loginCode = [10007, 401, 10001, 10005, 10006] if (loginCode.includes(res.code)) { localStorage.removeItem('token') router.replace('/') }else if(code > 8000){ Tips.error(res.msg) }else{ Tips.error('网络错误,请稍后再试') } return Promise.reject(res || 'error') } } }, error => { Toast.clear() if (error.response.status === 401) { Dialog({ message: '登录过期,请重新登录' }).then(() => { localStorage.removeItem('token') router.replace( '/' ) }) } else { Tips.error(error.response.data.message) } return Promise.reject(error) } ) export default service