request.ts 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import axios, { AxiosRequestConfig } from 'axios';
  2. import qs from 'querystring';
  3. import { ElMessage } from 'element-plus';
  4. import useMainStore from '@/store/useMainStore';
  5. import { BaseLoginUrl, DA_HUA_URL_PREFIX } from '@/constants/constants';
  6. import { useDaHuaStore } from '@/store';
  7. // const baseURL =
  8. // process.env.NODE_ENV === 'production'
  9. // ? 'http://sqpcbg.xt.wenhq.top:8083/api'
  10. // : '/api';
  11. const baseURL =
  12. process.env.NODE_ENV === 'production'
  13. ? 'http://61.147.254.211:30876/YJZH-SQ/api'
  14. : '/api';
  15. const CancelToken = axios.CancelToken;
  16. const source = CancelToken.source();
  17. let timer: NodeJS.Timeout;
  18. axios.interceptors.request.use((config) => {
  19. const main = useMainStore();
  20. config.cancelToken = new axios.CancelToken((cancel) => {
  21. main.pushReqToken(cancel);
  22. });
  23. return config;
  24. });
  25. axios.interceptors.response.use(
  26. (res) => {
  27. if (res.status >= 200 && res.status < 300) {
  28. if (res.data?.code === 200) {
  29. return res.data;
  30. }
  31. if (res.data?.code === 401) {
  32. ElMessage.error({
  33. // message: `401. 没有权限访问该接口: ${res.config.url}`,
  34. message: `401. 没有权限访问该接口`,
  35. });
  36. const main = useMainStore();
  37. main.clearReqToken();
  38. window.localStorage.setItem('Authorization', '');
  39. window.location.href = BaseLoginUrl;
  40. throw Error(res.statusText);
  41. }
  42. if (res.data?.code === 404) {
  43. ElMessage.error({ message: '404. 未找到该接口!' });
  44. throw Error(res.statusText);
  45. }
  46. if (res.data?.code >= 500) {
  47. ElMessage.error({ message: res.data?.msg ?? '系统异常, 请稍后重试!' });
  48. throw Error(res.statusText);
  49. }
  50. }
  51. if (res.status === 401) {
  52. ElMessage.error({
  53. message: `401. 没有权限访问该接口: ${res.config.url}`,
  54. });
  55. throw Error(res.statusText);
  56. }
  57. if (res.status === 404) {
  58. ElMessage.error({ message: '404. 未找到该接口!' });
  59. throw Error(res.statusText);
  60. }
  61. if (res.status >= 500) {
  62. ElMessage.error({ message: '系统异常, 请稍后重试!' });
  63. throw Error(res.statusText);
  64. }
  65. return res.data;
  66. },
  67. (error) => {
  68. // ElMessage.error({ message: '系统异常, 请稍后重试!' });
  69. const {
  70. status,
  71. config: { url },
  72. } = error.response;
  73. if (status === 401 && url?.includes(DA_HUA_URL_PREFIX)) {
  74. clearTimeout(timer);
  75. const dahuaStore = useDaHuaStore();
  76. dahuaStore.timer && clearInterval(dahuaStore.timer);
  77. timer = setTimeout(() => {
  78. dahuaStore.DAHUALogin();
  79. }, 1000);
  80. }
  81. throw Error(error);
  82. },
  83. );
  84. export default function request<T>(
  85. method: AxiosRequestConfig['method'] = 'GET',
  86. confifg: AxiosRequestConfig & {},
  87. ): Promise<T> {
  88. return axios.request({
  89. method,
  90. baseURL,
  91. ...confifg,
  92. headers: {
  93. Accept: 'application/json',
  94. 'Content-Type': 'application/json',
  95. AppId: '3bcb760743ea456faba29a1dfb247bf4',
  96. Authorization:
  97. 'Bearer ' + window.localStorage.getItem('Authorization') ?? '',
  98. ...confifg.headers,
  99. },
  100. });
  101. }