instance.ts 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. import { axiosFactory } from './setup'
  2. import { Message } from 'bill/index'
  3. import { showLoad, hideLoad } from '@/utils'
  4. import * as URL from './constant'
  5. import { ResCode, ResCodeDesc } from './constant'
  6. import { baseURL, params } from '@/env'
  7. const instance = axiosFactory()
  8. export const {
  9. axios,
  10. addUnsetTokenURLS,
  11. delUnsetTokenURLS,
  12. addReqErrorHandler,
  13. addResErrorHandler,
  14. delReqErrorHandler,
  15. delResErrorHandler,
  16. getToken,
  17. setToken,
  18. delToken,
  19. setDefaultURI,
  20. addHook,
  21. delHook,
  22. setHook
  23. } = instance
  24. const gotoLogin = () => {
  25. const loginHref = import.meta.env.DEV ? 'http://localhost:3000' : '/'
  26. location.href = loginHref + '?redirect=' + escape(location.href) + '#/login'
  27. }
  28. addReqErrorHandler(err => {
  29. // Message.error(err.message)
  30. hideLoad()
  31. gotoLogin()
  32. })
  33. addResErrorHandler(
  34. (response, data) => {
  35. if (response && response.status !== 200) {
  36. Message.error(response.statusText)
  37. } else if (data) {
  38. const msg = data.code && ResCodeDesc[data.code] ? ResCodeDesc[data.code] : (data?.message || data?.msg)
  39. if (data.code === ResCode.TOKEN_INVALID) {
  40. gotoLogin()
  41. } else {
  42. Message.error(msg)
  43. }
  44. }
  45. }
  46. )
  47. addHook({
  48. before: (config) => {
  49. if (config.url !== URL.RECORD_STATUS) {
  50. showLoad()
  51. }
  52. },
  53. after: (config) => {
  54. if (!config || config.url !== URL.RECORD_STATUS) {
  55. hideLoad()
  56. }
  57. }
  58. })
  59. setDefaultURI(baseURL)
  60. params.token && setToken(params.token)
  61. export default axios