|
|
@@ -0,0 +1,125 @@
|
|
|
+import Axios from 'axios'
|
|
|
+import store from '@/store'
|
|
|
+import { Toast, Dialog } from 'vant'
|
|
|
+import { getLocalStorage } from '@/utils/storage'
|
|
|
+import { webParamsTransmit } from '@/utils/tools'
|
|
|
+import * as list from '@/utils/list'
|
|
|
+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 if (response.data.code === 2814) {
|
|
|
+ if (getLocalStorage('appType') == 1) {
|
|
|
+ Toast(response.data.message)
|
|
|
+ webParamsTransmit(1)
|
|
|
+ } else {
|
|
|
+ Toast(response.data.message)
|
|
|
+ store.dispatch('clear').then(() => {
|
|
|
+ location.reload() // 为了重新实例化vue-router对象 避免bug
|
|
|
+ })
|
|
|
+ }
|
|
|
+ } else if ((response.data.code === 3012 && response.data.message.includes('校验码错误')) || response.data.code == 2223) {
|
|
|
+ Toast(response.data.message)
|
|
|
+ return Promise.resolve(response.data)
|
|
|
+ } else if (response.data.code === 8901 && !response.config.url.includes('truck_by_platform_driver')) {
|
|
|
+ if (response.data.data && response.data.data.type == null) {
|
|
|
+ Toast(response.data.message)
|
|
|
+ return Promise.reject(response.data.message)
|
|
|
+ } else {
|
|
|
+ return Promise.resolve(response.data.data)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ if (response.config.url.includes('pay/pay/wxpay')) {
|
|
|
+ Toast(response.data.message)
|
|
|
+ this.$router.replace('perpayOrder')
|
|
|
+ } else if (response.config.url.includes('user/truck_driver_remove/remove')) {
|
|
|
+ setTimeout(() => {
|
|
|
+ Dialog.alert({
|
|
|
+ title: '温馨提示',
|
|
|
+ message: response.data.message
|
|
|
+ }).then(() => { })
|
|
|
+ }, 0)
|
|
|
+ } else if (list.notMsgArrayInterface.some(item => response.config.url.includes(item))) {
|
|
|
+ // 返回报错接口里所有信息,方便根据错误码定制化显示弹窗提示
|
|
|
+ return Promise.reject(response.data)
|
|
|
+ } else {
|
|
|
+ Toast(response.data.message)
|
|
|
+ }
|
|
|
+ return Promise.reject(response.data.message)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ 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.message)
|
|
|
+ })
|
|
|
+}
|