request.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. import axios from 'axios'
  2. import store from '@/store'
  3. // import { getToken } from '@/utils/auth'
  4. // import router from '@/router'
  5. import Vue from 'vue'
  6. const service = axios.create({
  7. baseURL: process.env.VUE_APP_BASE_API,
  8. // baseURL: 'http://mk.sunplus.wang/WebAPI',
  9. withCredentials: true, // send cookies when cross-domain requests
  10. timeout: 60000, // request timeout
  11. // responseType: 'json',
  12. // headers: {
  13. // 'Content-Type': 'application/x-www-form-urlencoded;charset=utf-8'
  14. // }
  15. })
  16. // request interceptor
  17. service.interceptors.request.use(
  18. config => {
  19. if (localStorage.getItem('token')) {
  20. let TOKEN = localStorage.getItem('token')
  21. config.headers.Authorization = `${TOKEN}`
  22. }
  23. // config.headers['content-type'] = 'multipart/form-data'
  24. return config
  25. },
  26. error => {
  27. // do something with request error
  28. console.log(error, 'err') // for debug
  29. return Promise.reject(error)
  30. }
  31. )
  32. // response interceptor
  33. service.interceptors.response.use(
  34. /**
  35. * If you want to get http information such as headers or status
  36. * Please return response => response
  37. */
  38. /**
  39. * Determine the request status by custom code
  40. * Here is just an example
  41. * You can also judge the status by HTTP Status Code
  42. */
  43. response => {
  44. const res = response.data
  45. if (response.config.url == "/pre_interface/V5.0/insertBasicInfo" || response.config.url == '/pre_interface/V5.0/getPreItem' || response.config.url == '/pre_interface/V5.0/setStatus') {
  46. return res
  47. }
  48. if (response.config.url.startsWith(`https://dev.hzliuzhi.com`)) return res;
  49. if (response.headers['access-control-expose-headers']) {
  50. let str = response.headers['access-control-expose-headers'].split(';')
  51. document.cookie = str[0]
  52. }
  53. if (response.config.url == "/captchaImage") {
  54. return res
  55. }
  56. // if the custom code is not 20000, it is judged as an error.
  57. if (res.ResultCode !== 0) {
  58. // if (res.code !== 200) {
  59. // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
  60. if (res.ResultCode === -5 || res.ResultCode === -9 || res.ResultCode == -8) {
  61. // store.commit('user/LOGOUT')
  62. Vue.prototype.$message({
  63. message: res.ResultInfo,
  64. type: 'error',
  65. showClose: true,
  66. })
  67. Vue.router.replace('/')
  68. } else if (res.ResultCode === 401) {
  69. let isAllow = sessionStorage.getItem('isAllow')
  70. if (isAllow === 'true' || !isAllow) {
  71. // debugger
  72. Vue.prototype.$message({
  73. message: '登录过期,请重新登录',
  74. type: 'error',
  75. showClose: true,
  76. })
  77. sessionStorage.setItem('isAllow', 'false')
  78. Vue.prototype.$router1.replace('/')
  79. }
  80. } else {
  81. Vue.prototype.$message({
  82. message: res.ResultInfo || `API 错误 (${res.ResultCode})`,
  83. type: 'error',
  84. showClose: true,
  85. })
  86. }
  87. return Promise.reject(new Error(res.ResultInfo || 'Error'))
  88. } else {
  89. return res
  90. }
  91. },
  92. error => {
  93. Vue.prototype.$message({
  94. message: error.message,
  95. type: 'error',
  96. showClose: true,
  97. })
  98. return Promise.reject(error)
  99. }
  100. )
  101. export default service