多租户商城-客户PC端
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.5 KiB

3 years ago
2 years ago
3 years ago
3 years ago
3 years ago
3 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
3 years ago
  1. // 引入axios
  2. import Vue from 'vue'
  3. import promise from 'es6-promise'
  4. import axios from 'axios'
  5. import qs from 'qs'
  6. import store from '@/store/index'
  7. import router from '../router'
  8. // import localStorage from '../storage/localStorage'
  9. import Cookie from 'js-cookie'
  10. promise.polyfill()
  11. export const baseURL = (process.env.NODE_ENV === 'production') ? 'http://36.138.125.206:8081/ceres-app-api' : '/api'
  12. export const uploadURL = 'http://36.138.125.206:8081/ceres-app-api/api'
  13. // export const baseURL = (process.env.NODE_ENV === 'production') ? 'https://wechat.hnthee.com/ceres-app-api' : '/api'
  14. // export const uploadURL = 'https://wechat.hnthee.com/ceres-app-api/api'
  15. const service = axios.create({
  16. baseURL,
  17. headers: {
  18. 'X-Requested-With': 'XMLHttpRequest'
  19. },
  20. withCredentials: true,
  21. timeout: 20000 // 请求超时 20s
  22. })
  23. // 请求拦截器
  24. service.interceptors.request.use(config => {
  25. // 是否为当前的请求加上请求头 token
  26. // if (localStorage.get('token')) {
  27. // config.headers['x-auth-token'] = localStorage.get('token')
  28. // }
  29. if (Cookie.get('token')) {
  30. config.headers['Authorization'] = Cookie.get('token')
  31. }
  32. config.headers['language'] = localStorage.getItem("language") || 'zh'
  33. config.paramsSerializer = function(params) {
  34. let result = qs.stringify(params, { arrayFormat: 'repeat' })
  35. return result
  36. }
  37. var fullUrl = window.location.search;
  38. if (fullUrl.indexOf("?") != -1) {
  39. fullUrl = fullUrl.substring(1);
  40. var paramStrs = fullUrl.split("&");
  41. for(let i=0;i<paramStrs.length;i++){
  42. const newStrs = paramStrs[i].split("=");
  43. if(newStrs[0] === 'project'){
  44. config.headers['project'] = newStrs[1]
  45. return config
  46. }
  47. }
  48. config.headers['project'] = '0'
  49. }else{
  50. config.headers['project'] = '0'
  51. }
  52. return config
  53. }, error => {
  54. return Promise.reject(error)
  55. })
  56. // 响应拦截器
  57. service.interceptors.response.use(
  58. (response) => {
  59. if (response.data.code === '20005' || response.data.code === '20004') {
  60. store.commit('resetVuex')
  61. Cookie.remove('token')
  62. store.commit('IS_LOGIN', false) // 清除顶部导航栏数据
  63. store.commit('SHOW_LOGIN') // 展示登录弹框
  64. }
  65. return response
  66. },
  67. err => {
  68. // 失败响应
  69. if (err && err.response) {
  70. switch (err.response.status) {
  71. case 400:
  72. err.message = '请求无效,请检查参数是否正确!'
  73. break
  74. case 401:
  75. err.message = '未经授权,访问被拒!'
  76. break
  77. case 403:
  78. err.message = '拒绝访问!'
  79. break
  80. case 404:
  81. err.message = `地址不存在!`
  82. break
  83. case 408:
  84. err.message = '请求超时!'
  85. break
  86. case 500:
  87. err.message = '系统错误!'
  88. break
  89. case 501:
  90. err.message = '该方法未实现!'
  91. break
  92. case 502:
  93. err.message = '网管出错!'
  94. break
  95. case 503:
  96. err.message = '服务不可用!'
  97. break
  98. case 504:
  99. err.message = '网关请求超时'
  100. break
  101. case 505:
  102. err.message = 'HTTP版本不受支持'
  103. break
  104. default:
  105. }
  106. if (err.response.data.error) {
  107. err.message = err.response.data.error
  108. }
  109. Vue.prototype.$message.closeAll()
  110. // Vue.prototype.$message.error(err.message)
  111. // router.push({name: 'error', params: {message: err.message, status: err.response.status}})
  112. }
  113. }
  114. )
  115. export default service