request.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import { message } from 'antd'
  2. import axios from 'axios' // 引入axios
  3. // import { getToken } from '@/utils/auth'
  4. const baseURL = process.env.REACT_APP_BASE_URL
  5. const tokenName = 'token'
  6. const service = axios.create({
  7. baseURL
  8. // timeout: 99999
  9. })
  10. // request拦截器
  11. service.interceptors.request.use(
  12. config => {
  13. if (!config.headers) {
  14. config.headers = {};
  15. }
  16. // config.headers.Authorization = `Bearer ${localStorage.getItem('token')}`;
  17. // config.headers.Authorization = `${localStorage.getItem(tokenName)}`;
  18. return config
  19. },
  20. error => {
  21. // Do something with request error
  22. console.log(error) // for debug
  23. throw error
  24. }
  25. )
  26. const logout = () => {
  27. // 如果判断在iframe内,仅向iframe外部通知
  28. if (window.self !== window.top) {
  29. // console.log('在iframe中');
  30. if (window.parent) {
  31. window.parent.postMessage({ type: 'logout' }, '*');
  32. }
  33. } else {
  34. window.postMessage({ type: 'logout' }, '*');
  35. };
  36. }
  37. // response 拦截器
  38. service.interceptors.response.use(
  39. response => {
  40. /**
  41. * code为非0是抛错 可结合自己业务进行修改
  42. */
  43. const res = response?.data
  44. if (response.status === 401 || res?.errcode === 401) {
  45. message.warning('权限校验失败!')
  46. return;
  47. } else if (response.status === 440) {
  48. logout()
  49. return;
  50. }else if(res?.type==='application/msexcel'||res?.type==='application/zip'){
  51. return response
  52. }
  53. // 17: token失效
  54. if (res?.state == 17) {
  55. logout()
  56. return;
  57. }
  58. return res
  59. },
  60. error => {
  61. console.log(`err${error}`) // for debug
  62. if (error?.response?.status === 440) {
  63. logout();
  64. return;
  65. }
  66. if (error?.response?.status === 401) {
  67. message.warning('权限校验失败!')
  68. return;
  69. }
  70. // Message({
  71. // message: error.message,
  72. // type: 'error',
  73. // duration: 5 * 1000
  74. // })
  75. return Promise.reject(new Error('网络异常,请联系管理员'));
  76. }
  77. )
  78. export default service
  79. export { baseURL }