index.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. import { useUserStore } from '@/store'
  2. import axios from 'axios'
  3. axios.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=UTF-8'
  4. const instance = axios.create({
  5. // baseURL: process.env.NODE_ENV === 'development' ? '/zd-api' : '/crm-api',
  6. baseURL: process.env.NODE_ENV === 'development' ? '/zd-api' : '/crm-api',
  7. timeout: 30000,
  8. headers: {
  9. 'Content-Security-Policy': 'default-src \'*\''
  10. }
  11. })
  12. /**
  13. * 该函数捕获一个错误并返回一个被拒绝的承诺。
  14. * @param {any} error - `error` 参数是 `any` 类型,这意味着它可以是任何数据类型。它用作 `catchErr` 函数的输入参数。
  15. * @returns `catchErr` 函数返回一个被拒绝的 Promise,并传递了 `error` 参数作为拒绝的原因。
  16. */
  17. const catchErr = (response) => {
  18. console.log('response:', response);
  19. if (response === undefined) return
  20. const data = response.data
  21. console.log('data', data)
  22. if (data.code === 500) {
  23. console.log(data.msg)
  24. // eslint-disable-next-line no-undef
  25. showToast(data.msg)
  26. // message.error(data.msg)
  27. } else if (data.code === 302) {
  28. useUserStore().logout()
  29. }
  30. }
  31. instance.interceptors.request.use(config => {
  32. console.log(config)
  33. config.headers['admin-token'] = useUserStore().userInfo.token
  34. return config
  35. }, function (error) {
  36. return Promise.reject(error)
  37. })
  38. instance.interceptors.response.use(function (response) {
  39. catchErr(response)
  40. return response.data
  41. }, error => {
  42. catchErr(error.response)
  43. return Promise.reject(error)
  44. })
  45. export default instance.request