request.ts 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import axios from 'axios'
  2. import { uuidv4 } from '/@/utils/uuid'
  3. import { CURRENT_CONFIG } from './config'
  4. import { message } from 'ant-design-vue'
  5. import router from '/@/router'
  6. import { ELocalStorageKey, ERouterName, EUserType } from '/@/types/enums'
  7. export * from './type'
  8. const REQUEST_ID = 'X-Request-Id'
  9. function getAuthToken () {
  10. return localStorage.getItem(ELocalStorageKey.Token)
  11. }
  12. const instance = axios.create({
  13. // withCredentials: true,
  14. headers: {
  15. 'Content-Type': 'application/json',
  16. },
  17. // timeout: 12000,
  18. })
  19. instance.interceptors.request.use(
  20. config => {
  21. config.headers[ELocalStorageKey.Token] = getAuthToken()
  22. // config.headers[REQUEST_ID] = uuidv4()
  23. config.baseURL = CURRENT_CONFIG.baseURL
  24. return config
  25. },
  26. error => {
  27. return Promise.reject(error)
  28. },
  29. )
  30. instance.interceptors.response.use(
  31. response => {
  32. if (response.data.code && response.data.code !== 0) {
  33. message.error(response.data.message)
  34. }
  35. return response
  36. },
  37. err => {
  38. const requestId = err?.config?.headers && err?.config?.headers[REQUEST_ID]
  39. if (requestId) {
  40. }
  41. let description = '-'
  42. if (err.response?.data && err.response.data.message) {
  43. description = err.response.data.message
  44. }
  45. if (err.response?.data && err.response.data.result) {
  46. description = err.response.data.result.message
  47. }
  48. // @See: https://github.com/axios/axios/issues/383
  49. if (!err.response || !err.response.status) {
  50. message.error('The network is abnormal, please check the backend service and try again')
  51. return
  52. }
  53. if (err.response?.status !== 200) {
  54. message.error(`ERROR_CODE: ${err.response?.status}`)
  55. }
  56. // if (err.response?.status === 403) {
  57. // // window.location.href = '/'
  58. // }
  59. if (err.response?.status === 401) {
  60. console.error(err.response)
  61. const flag: number = Number(localStorage.getItem(ELocalStorageKey.Flag))
  62. switch (flag) {
  63. case EUserType.Web:
  64. router.push(ERouterName.PROJECT)
  65. break
  66. case EUserType.Pilot:
  67. router.push(ERouterName.PILOT)
  68. break
  69. }
  70. }
  71. return Promise.reject(err)
  72. },
  73. )
  74. export default instance