多租户商城-商户小程序端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

135 lines
3.3 KiB

3 years ago
  1. // 引入axios
  2. // import router from './../../router'
  3. import Vue from 'vue'
  4. // import promise from 'es6-promise'
  5. import axios from 'axios'
  6. import canvasConfig from '../config'
  7. // import Cookies from 'js-cookie'
  8. // import localStorage from '../storage/localStorage'
  9. // promise.polyfill()
  10. const service = axios.create({
  11. headers: {
  12. 'X-Requested-With': 'XMLHttpRequest'
  13. },
  14. withCredentials: true,
  15. timeout: 20000 // 请求超时 20s
  16. })
  17. // 请求拦截器
  18. service.interceptors.request.use(config => {
  19. // 是否为当前的请求加上请求头 token
  20. const token = canvasConfig.getToken()
  21. if (token) {
  22. if(canvasConfig.typeId === 1){
  23. config.headers['Authorization-admin'] = token
  24. } else if(canvasConfig.typeId === 3){
  25. config.headers['Authorization-business'] = token
  26. } else {
  27. config.headers['Authorization'] = token
  28. }
  29. }
  30. return config
  31. }, error => {
  32. return Promise.reject(error)
  33. })
  34. // 响应拦截器
  35. service.interceptors.response.use(
  36. (response) => {
  37. console.log(response)
  38. if (response.data.code && response.data.code !=='200' && response.data.message) {
  39. Vue.prototype.$message.error(response.data.message)
  40. }
  41. return response
  42. },
  43. err => {
  44. console.log(err)
  45. // 失败响应
  46. if (err && err.response) {
  47. switch (err.response.status) {
  48. case 400:
  49. err.message = '请求无效,请检查参数是否正确!'
  50. break
  51. case 401:
  52. err.message = '未经授权,访问被拒!'
  53. break
  54. case 403:
  55. err.message = '拒绝访问!'
  56. break
  57. case 404:
  58. err.message = `地址不存在!`
  59. break
  60. case 408:
  61. err.message = '请求超时!'
  62. break
  63. case 500:
  64. err.message = '系统错误!'
  65. break
  66. case 501:
  67. err.message = '该方法未实现!'
  68. break
  69. case 502:
  70. err.message = '网关出错!'
  71. break
  72. case 503:
  73. err.message = '服务不可用!'
  74. break
  75. case 504:
  76. err.message = '网关请求超时'
  77. break
  78. case 505:
  79. err.message = 'HTTP版本不受支持'
  80. break
  81. default:
  82. }
  83. if (err.response.data.error) {
  84. err.message = err.response.data.error
  85. }
  86. Vue.prototype.$message.closeAll()
  87. Vue.prototype.$message.error(err.message)
  88. // router.push({name: 'error', params: {message: err.message, status: err.response.status}})
  89. }
  90. }
  91. )
  92. //真机获取
  93. service.defaults.adapter = function (config) {
  94. return new Promise((resolve, reject) => {
  95. console.log(config)
  96. var settle = require('axios/lib/core/settle');
  97. var buildURL = require('axios/lib/helpers/buildURL');
  98. uni.request({
  99. method: config.method.toUpperCase(),
  100. url: buildURL(config.url, config.params, config.paramsSerializer),
  101. header: config.headers,
  102. data: config.data,
  103. dataType: config.dataType,
  104. responseType: config.responseType,
  105. sslVerify: config.sslVerify,
  106. complete:function complete(response){
  107. response = {
  108. data: response.data,
  109. status: response.statusCode,
  110. errMsg: response.errMsg,
  111. header: response.header,
  112. config: config
  113. };
  114. settle(resolve, reject, response);
  115. }
  116. })
  117. })
  118. }
  119. export default service