import axios from 'axios' import QS from 'qs' import store from '@/store' import router from '@/router' import constv from '@/config/constv' // const wayValue = (process.env.NODE_ENV == 'development' || process.env.NODE_ENV == 'production') ? constv.Proxy_WAY_DEV_PROD : constv.Proxy_WAY_DEMO_API2 const wayValue = constv.Proxy_Way var instance = axios.create({ baseURL: `${process.env.VUE_APP_BASE_API}`, // 'http://192.168.x.x:3000/mock/130', headers: { 'Content-Type': 'application/json', way: wayValue }, timeout: 60000 }) // instance.defaults.baseURL = 'http://192.168.x.x:3000/mock/130' // instance.defaults.headers.post['Content-Type'] = 'application/json' let flag = true // 对外接口 export function requestJson ({ method, url, params, responseType, header }) { if (method === 'Get') { return get(url, params, responseType) } else if (method === 'Post') { return post(url, params, responseType) } } // 封装get方法 function get (url, params, responseType) { return new Promise((resolve, reject, responseType) => { instance .get(url, params) .then(res => { resolve(res.data) }) .catch(err => { reject(err.data) }) }) } // 封装post方法 function post (url, params, responseType) { return new Promise((resolve, reject) => { instance .post(url, JSON.stringify(params), responseType, { headers: { 'Content-Type': 'application/json' } }) .then(res => { resolve(res.data) }) .catch(err => { reject(err.data) }) }) } // //请求拦截(请求发出前处理请求) instance.interceptors.request.use( config => { const headers = config.headers if (headers['content-type'] === 'application/octet-stream;charset=utf-8') { return config.data } const token = localStorage.getItem('token') config.headers.common['token'] = token config.headers.common['way'] = wayValue // config.headers.common['content-type'] = 'application/json' return config }, error => { return Promisee.error(error) } ) // // 响应拦截器(处理响应数据) instance.interceptors.response.use( response => { if (response.status === 200) { if (response.data.code === 10200) { if (flag) { alert(response.data.msg) flag = false } store.dispatch('Logout').then(() => { router.replace('/user/login') }) } else if ( response.data.code === 0 || response.data.errcode === 0 || response.headers['content-type'] === 'application/pdf' ) { return Promise.resolve(response) } else { alert(response.data.msg) return Promise.resolve(response) } } else { // 这个地方可以由后台编辑状态码区分不同情况,做不同的逻辑处理 return Promise.reject(response) } }, error => { if (error.response.status === 401) { alert('登陆过期,重新登陆') store.dispatch('Logout').then(() => { router.replace('/user/login') }) } else { return Promise.reject(error.response) } } )