tuanRequest.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. import Vue from 'vue'
  2. import axios from 'axios'
  3. import {
  4. MessageBox,
  5. Message
  6. } from 'element-ui'
  7. import store from '@/store'
  8. import router from '@/router'
  9. import {
  10. getToken, removeToken
  11. } from '@/utils/auth'
  12. const baseURL = process.env.VUE_APP_DOMAIN_TUAN
  13. // create an axios instance
  14. Vue.prototype.axios = axios
  15. axios.defaults.timeout = 30000
  16. const service = axios.create({
  17. baseURL, // url = base url + request url
  18. // withCredentials: true, // send cookies when cross-domain requests
  19. timeout: 30000 // request timeout
  20. })
  21. export const token = getToken()
  22. // request interceptor
  23. service.interceptors.request.use(
  24. (config) => {
  25. // console.log(config)
  26. if (store.getters.token) {
  27. config.headers['Authorization-admin'] = getToken()
  28. config.headers['Content-Type'] = 'application/json; charset=UTF-8'
  29. config.headers['TK-token'] = getToken()
  30. }
  31. return config
  32. },
  33. (error) => {
  34. console.log(error) // for debug
  35. return Promise.reject(error)
  36. }
  37. )
  38. // response interceptor
  39. service.interceptors.response.use((response) => {
  40. const res = response.data
  41. // console.log(res)
  42. if (res.erron && res.erron === 780) {
  43. Message({
  44. message: '服务器内部错误' || 'Error',
  45. type: 'error',
  46. duration: 5 * 1000
  47. })
  48. } else {
  49. // if the custom code is not 20000, it is judged as an error.
  50. if (res.statusCode !== 20000) {
  51. Message({
  52. message: res.statusMsg || 'Error',
  53. type: 'error',
  54. duration: 5 * 1000
  55. })
  56. // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
  57. if (
  58. res.statusCode === 50008 ||
  59. res.statusCode === 50012 ||
  60. res.statusCode === 50014
  61. ) {
  62. // to re-login
  63. MessageBox.confirm(
  64. 'You have been logged out, you can cancel to stay on this page, or log in again',
  65. 'Confirm logout',
  66. {
  67. confirmButtonText: 'Re-Login',
  68. cancelButtonText: 'Cancel',
  69. type: 'warning'
  70. }
  71. ).then(() => {
  72. store.dispatch('user/resetToken').then(() => {
  73. location.reload()
  74. })
  75. })
  76. }
  77. return Promise.reject(new Error(res.statusMsg || res.errmsg || 'Error'))
  78. // return res;
  79. }
  80. return res
  81. }
  82. return res
  83. }, (error) => {
  84. console.log('err' + error)// for debug
  85. Message({
  86. message: '登录连接超时(后台不能连接,请联系系统管理员)',
  87. type: 'error',
  88. duration: 5 * 1000
  89. })
  90. return Promise.reject(error)
  91. })
  92. export default service