| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- import Vue from 'vue'
- import Axios from 'axios'
- import store from '@/store'
- import Config from 'submodule/utils/config'
- const Base64 = require('js-base64').Base64
- const message = (msg) => {
- if (Vue.prototype.$toast) {
- Vue.prototype.$toast(msg)
- } else if (Vue.prototype.$message) {
- Vue.prototype.$message({
- message: msg,
- type: 'error',
- duration: 3 * 1000
- })
- }
- }
- 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 || store.getters.woptoken)
- config.headers.Identifier = (store.getters.mwxidntf || store.getters.wopidntf)
- }
- 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') {
- if (response.status === 200) {
- return response.data
- } else {
- const msg = '文件导出失败!'
- message(msg)
- return Promise.reject(msg)
- }
- }
- // 登录已超时,请重新登录
- if (response.data.code === 2814) {
- message(response.data.message)
- store.dispatch('clear').then(() => {
- location.reload() // 为了重新实例化vue-router对象 避免bug
- })
- }
- if (response.data.code === 0) {
- if (response.config.url.includes('pay/member/upload_org_pic')) {
- message(response.data.message)
- }
- return Promise.resolve(response.data.data)
- } else {
- message(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 = '连接服务器失败!'
- }
- message(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: urlObj.responseType || responseType }).then(async res => {
- store.commit('webapi/set', { urlObj, value: Config.enums.request.sus.storeValue })
- if (urlObj.AOP && urlObj.AOP.AR) {
- await urlObj.AOP.AR.forEach(fn => fn(urlObj, res))
- }
- return res
- }).catch(err => {
- store.commit('webapi/set', { urlObj, value: Config.enums.request.err.storeValue })
- return Promise.reject(err)
- })
- }
|