instance.ts 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  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 { appBackRoot, appType, 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:5174' : appBackRoot[params.app]
  26. location.href = loginHref + '?redirect=' + escape(location.href) + '#/login'
  27. }
  28. addReqErrorHandler(err => {
  29. // Message.error(err.message)
  30. console.error(err)
  31. hideLoad()
  32. // gotoLogin()
  33. })
  34. addResErrorHandler(
  35. (response, data) => {
  36. if (response && response.status !== 200) {
  37. Message.error(response.statusText)
  38. } else if (data) {
  39. const msg = data.code && ResCodeDesc[data.code] ? ResCodeDesc[data.code] : (data?.message || data?.msg)
  40. if (data.code === ResCode.TOKEN_INVALID) {
  41. gotoLogin()
  42. } else {
  43. Message.error(msg)
  44. }
  45. }
  46. }
  47. )
  48. addHook({
  49. before: (config) => {
  50. if (config.url !== URL.RECORD_STATUS) {
  51. showLoad()
  52. }
  53. },
  54. after: (config) => {
  55. if (!config || config.url !== URL.RECORD_STATUS) {
  56. hideLoad()
  57. }
  58. }
  59. })
  60. setDefaultURI(baseURL)
  61. params.token && setToken(params.token)
  62. export default axios