instance.ts 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. import { axiosFactory } from './setup'
  2. import { message } from 'ant-design-vue'
  3. import { showLoading, hideLoading } from '@/components/loading'
  4. import { ResCode, ResCodeDesc } from './constant'
  5. import { baseURL, token, mainURL } from '@/env'
  6. const instance = axiosFactory()
  7. export const {
  8. axios,
  9. addUnsetTokenURLS,
  10. delUnsetTokenURLS,
  11. addReqErrorHandler,
  12. addResErrorHandler,
  13. delReqErrorHandler,
  14. delResErrorHandler,
  15. getToken,
  16. setToken,
  17. delToken,
  18. setDefaultURI,
  19. addHook,
  20. delHook,
  21. setHook
  22. } = instance
  23. export const gotoLogin = () => {
  24. location.replace(
  25. mainURL + '/?redirect=' + escape(location.href) + '#/login/login'
  26. )
  27. }
  28. const tokenInvalid = () => {
  29. message.error(ResCodeDesc[ResCode.TOKEN_INVALID])
  30. setTimeout(gotoLogin, 1000)
  31. }
  32. addReqErrorHandler(err => {
  33. showLoading()
  34. tokenInvalid()
  35. })
  36. addResErrorHandler((response, data) => {
  37. if (response && response.status !== 200) {
  38. } else if (data) {
  39. const msg =
  40. data.code && ResCodeDesc[data.code]
  41. ? ResCodeDesc[data.code]
  42. : data?.message || data?.msg
  43. if (data.code === ResCode.TOKEN_INVALID) {
  44. tokenInvalid()
  45. } else {
  46. message.error(msg)
  47. }
  48. }
  49. })
  50. addHook({
  51. before: () => showLoading(),
  52. after: config => config && hideLoading()
  53. })
  54. console.log(baseURL)
  55. setDefaultURI(baseURL)
  56. if (!token) {
  57. tokenInvalid()
  58. } else {
  59. setToken(token)
  60. }
  61. export default axios