import Axios from 'axios' import store from '@/store' import { Toast } from 'vant' import Config from 'submodule/utils/config' const Base64 = require('js-base64').Base64 const axios = Axios.create({ timeout: 30000, baseURL: process.env.VUE_APP_BASE_URL }) axios.interceptors.request.use( config => { if (config.url.includes('user/register/register_v2')) { // 默认微信公众号 let service = 'mwxservice' if (store.state.app.inMiniprogram) { // 微信小程序 service = 'miniprogram' } const headers = { Authorization: 'Basic ' + Base64.encode(service + ':123456'), Identifier: Base64.encode(service + ':org:user:role') } config.headers = headers } else { config.headers.Authorization = 'Bearer ' + store.getters.mwxtoken config.headers.Identifier = store.getters.mwxidntf } store.getters.debug && console.log('axios.interceptors.request.use...', config) // 传给接口的版本号 config.headers.var = Config.vers.cur return config }, error => { return Promise.reject(error) } ) axios.interceptors.response.use( response => { store.getters.debug && console.log('axios.interceptors.response.use...', response) if (response.config.responseType === 'blob') { return response.data } if (response.data.code === 0) { if (response.config.url.includes('pay/member/upload_org_pic')) { Toast(response.data.message) } return Promise.resolve(response.data.data) } else { Toast(response.data.message) return Promise.reject(response.data) } }, err => { if (err && err.response) { switch (err.response.status) { case 400: err.message = '请求错误(400)'; break case 401: err.message = '未授权,请重新登录(401)'; break case 403: err.message = '拒绝访问(403)'; break case 404: err.message = '请求出错(404)'; break case 408: err.message = '请求超时(408)'; break case 500: err.message = '服务器错误(500)'; break case 501: err.message = '服务未实现(501)'; break case 502: err.message = '网络错误(502)'; break case 503: err.message = '服务不可用(503)'; break case 504: err.message = '网络超时(504)'; break case 505: err.message = 'HTTP版本不受支持(505)'; break default: err.message = `连接出错(${err.response.status})!` } } else { err.message = '连接服务器失败!' } Toast(err.message) return Promise.reject(err.message) } ) export default (urlObj, data = {}, method = 'POST', responseType = 'json') => { store.commit('webapi/set', { urlObj, value: Config.enums.request.before.storeValue }) return axios({ url: urlObj.realUrl, method, data, responseType }).then(res => { store.commit('webapi/set', { urlObj, value: Config.enums.request.sus.storeValue }) return res }).catch(err => { store.commit('webapi/set', { urlObj, value: Config.enums.request.err.storeValue }) return Promise.reject(err) }) }