axios.js 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import axios from 'axios';
  2. import { getToken } from '@/utils/storage/sessionToken';
  3. import { TOKEN } from '@/constant';
  4. import { loadingBar, message } from '@/plugin/naive-ui';
  5. // 显示消息
  6. const showError = (res) => {
  7. if (res.Code === 201) {
  8. message.error('登录过期,请重新登录');
  9. window.sessionStorage.clear();
  10. window.location.reload();
  11. } else if (res.Code !== 200 && res.Code !== 600 && res.Code !== 601) {
  12. message.error(res.Msg);
  13. }
  14. };
  15. const service = axios.create({
  16. timeout: 1000 * 60 * 8,
  17. });
  18. // 添加请求拦截器
  19. service.interceptors.request.use(
  20. function (config) {
  21. // 在发送请求之前做些什么
  22. loadingBar.start();
  23. const token = getToken();
  24. if (config.url !== '/VerifyTemplateMapData/Pu') {
  25. const formData = new FormData();
  26. if (
  27. config.url !== '/Login_Admin_verification' &&
  28. config.url !== '/Login_verification'
  29. ) {
  30. formData.append(TOKEN, token);
  31. }
  32. Object.entries(config.data).forEach(([key, value]) => {
  33. formData.append(key, value);
  34. });
  35. config.data = formData;
  36. } else {
  37. // config.headers[TOKEN] = token;
  38. }
  39. return config;
  40. },
  41. function (error) {
  42. // 对请求错误做些什么
  43. return Promise.reject(error);
  44. }
  45. );
  46. // 添加响应拦截器
  47. service.interceptors.response.use(
  48. function (response) {
  49. // 2xx 范围内的状态码都会触发该函数。
  50. // 对响应数据做点什么
  51. const { data: res } = response;
  52. showError(res);
  53. loadingBar.finish();
  54. return response;
  55. },
  56. function (error) {
  57. // 超出 2xx 范围的状态码都会触发该函数。
  58. // 对响应错误做点什么
  59. loadingBar.finish();
  60. return Promise.reject(error);
  61. }
  62. );
  63. export default service;