request.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. import axios from 'axios'
  2. import { ElMessageBox, ElMessage, ElLoading } from 'element-plus'
  3. import store from '@/store'
  4. import { getToken } from '@/utils/auth'
  5. import { appID, appKey, appSecret, serverUrl, devServerUrl } from '@/config'
  6. const baseURL = process.env.NODE_ENV === 'development' ? devServerUrl : serverUrl
  7. // create an axios instance
  8. const service = axios.create({
  9. baseURL: baseURL, // url = base url + request url
  10. // withCredentials: true, // send cookies when cross-domain requests
  11. timeout: 1000 * 60 * 3 // request timeout
  12. })
  13. let loadingInstance = null
  14. let ElMessageBoxFlag =false
  15. // request interceptor
  16. service.interceptors.request.use(
  17. config => {
  18. // do something before request is sent
  19. config.headers['AppID'] = appID
  20. config.headers['AppKey'] = appKey
  21. config.headers['AppSecret'] = appSecret
  22. loadingInstance = ElLoading.service({ fullscreen: true })
  23. if (getToken()) {
  24. config.headers['Authorization'] = 'Bearer ' + getToken()
  25. }
  26. return config
  27. },
  28. error => {
  29. // do something with request error
  30. return Promise.reject(error)
  31. }
  32. )
  33. // response interceptor
  34. service.interceptors.response.use(
  35. response => {
  36. loadingInstance.close()
  37. const res = response.data
  38. if (res.code !== 0) {
  39. // 50008: Illegal token; 50012: Other clients logged in; 50014: Token expired;
  40. if (res.code === 401) {
  41. // to re-login
  42. if(!ElMessageBoxFlag){
  43. ElMessageBox.confirm('登录失效,请重新登录!', '温馨提示!', {
  44. confirmButtonText: '确认',
  45. cancelButtonText: '取消',
  46. type: 'warning'
  47. }).then(() => {
  48. setTimeout(()=>{
  49. window.history.back()
  50. },1000)
  51. }).catch(()=>{
  52. ElMessageBoxFlag =false
  53. })
  54. ElMessageBoxFlag =true
  55. }
  56. } else {
  57. ElMessage({
  58. message: res.msg || 'Error',
  59. type: 'error',
  60. duration: 3 * 1000
  61. })
  62. }
  63. return Promise.reject(new Error(res.message || 'Error'))
  64. } else {
  65. return res
  66. }
  67. },
  68. error => {
  69. loadingInstance.close()
  70. ElMessage({
  71. message: error.message || 'Error',
  72. type: 'error',
  73. duration: 3 * 1000
  74. })
  75. return Promise.reject(error)
  76. }
  77. )
  78. export default service