index.js 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. import Axios from 'axios'
  2. import store from '@/store'
  3. import { Toast } from 'vant'
  4. import Config from 'submodule/utils/config'
  5. const Base64 = require('js-base64').Base64
  6. const axios = Axios.create({
  7. timeout: 30000,
  8. baseURL: process.env.VUE_APP_BASE_URL
  9. })
  10. axios.interceptors.request.use(
  11. config => {
  12. if (config.url.includes('user/register/register_v2')) {
  13. // 默认微信公众号
  14. let service = 'mwxservice'
  15. if (store.state.app.inMiniprogram) {
  16. // 微信小程序
  17. service = 'miniprogram'
  18. }
  19. const headers = {
  20. Authorization: 'Basic ' + Base64.encode(service + ':123456'),
  21. Identifier: Base64.encode(service + ':org:user:role')
  22. }
  23. config.headers = headers
  24. } else {
  25. config.headers.Authorization = 'Bearer ' + store.getters.mwxtoken
  26. config.headers.Identifier = store.getters.mwxidntf
  27. }
  28. store.getters.debug && console.log('axios.interceptors.request.use...', config)
  29. // 传给接口的版本号
  30. config.headers.var = Config.vers.cur
  31. return config
  32. },
  33. error => {
  34. return Promise.reject(error)
  35. }
  36. )
  37. axios.interceptors.response.use(
  38. response => {
  39. store.getters.debug && console.log('axios.interceptors.response.use...', response)
  40. if (response.config.responseType === 'blob') {
  41. return response.data
  42. }
  43. if (response.data.code === 0) {
  44. if (response.config.url.includes('pay/member/upload_org_pic')) {
  45. Toast(response.data.message)
  46. }
  47. return Promise.resolve(response.data.data)
  48. } else {
  49. Toast(response.data.message)
  50. return Promise.reject(response.data)
  51. }
  52. },
  53. err => {
  54. if (err && err.response) {
  55. switch (err.response.status) {
  56. case 400: err.message = '请求错误(400)'; break
  57. case 401: err.message = '未授权,请重新登录(401)'; break
  58. case 403: err.message = '拒绝访问(403)'; break
  59. case 404: err.message = '请求出错(404)'; break
  60. case 408: err.message = '请求超时(408)'; break
  61. case 500: err.message = '服务器错误(500)'; break
  62. case 501: err.message = '服务未实现(501)'; break
  63. case 502: err.message = '网络错误(502)'; break
  64. case 503: err.message = '服务不可用(503)'; break
  65. case 504: err.message = '网络超时(504)'; break
  66. case 505: err.message = 'HTTP版本不受支持(505)'; break
  67. default: err.message = `连接出错(${err.response.status})!`
  68. }
  69. } else {
  70. err.message = '连接服务器失败!'
  71. }
  72. Toast(err.message)
  73. return Promise.reject(err.message)
  74. }
  75. )
  76. export default (urlObj, data = {}, method = 'POST', responseType = 'json') => {
  77. store.commit('webapi/set', { urlObj, value: Config.enums.request.before.storeValue })
  78. return axios({ url: urlObj.realUrl, method, data, responseType }).then(res => {
  79. store.commit('webapi/set', { urlObj, value: Config.enums.request.sus.storeValue })
  80. return res
  81. }).catch(err => {
  82. store.commit('webapi/set', { urlObj, value: Config.enums.request.err.storeValue })
  83. return Promise.reject(err)
  84. })
  85. }