request.js 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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. const meta = response.config['meta'] || {};
  49. if (meta['ignoreResponse']) return res;
  50. if (response.headers['access-control-expose-headers']) {
  51. let str = response.headers['access-control-expose-headers'].split(';')
  52. document.cookie = str[0]
  53. }
  54. if (response.config.url == "/captchaImage") {
  55. return res
  56. }
  57. // if the custom code is not 20000, it is judged as an error.
  58. if (res.ResultCode !== 0) {
  59. // if (res.code !== 200) {
  60. // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
  61. if (res.ResultCode === -5 || res.ResultCode === -9 || res.ResultCode == -8) {
  62. // store.commit('user/LOGOUT')
  63. Vue.prototype.$message({
  64. message: res.ResultInfo,
  65. type: 'error',
  66. showClose: true,
  67. })
  68. Vue.router.replace('/')
  69. } else if (res.ResultCode === 401) {
  70. let isAllow = sessionStorage.getItem('isAllow')
  71. if (isAllow === 'true' || !isAllow) {
  72. // debugger
  73. Vue.prototype.$message({
  74. message: '登录过期,请重新登录',
  75. type: 'error',
  76. showClose: true,
  77. })
  78. sessionStorage.setItem('isAllow', 'false')
  79. Vue.prototype.$router1.replace('/')
  80. }
  81. } else {
  82. Vue.prototype.$message({
  83. message: res.ResultInfo || `API 错误 (${res.ResultCode})`,
  84. type: 'error',
  85. showClose: true,
  86. })
  87. }
  88. return Promise.reject(new Error(res.ResultInfo || 'Error'))
  89. } else {
  90. return res
  91. }
  92. },
  93. error => {
  94. Vue.prototype.$message({
  95. message: error.message,
  96. type: 'error',
  97. showClose: true,
  98. })
  99. return Promise.reject(error)
  100. }
  101. )
  102. export default service