axios.js 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. import axios from 'axios';
  2. import { ElMessage, ElMessageBox, ElLoading } from 'element-plus';
  3. import { nextTick } from "vue";
  4. import config from './config';
  5. import JSONBIG from 'json-bigint'
  6. // 配置新建一个 axios 实例
  7. var loading = null
  8. const service = axios.create({
  9. baseURL: '/sharding/',
  10. timeout: 20000,
  11. headers: { 'Content-Type': 'application/json' },
  12. showLoading: {
  13. statu: true,
  14. text: '加载中...'
  15. }
  16. });
  17. // 添加请求拦截器
  18. service.interceptors.request.use(
  19. (config) => {
  20. if (config.showLoading.statu) {
  21. loading = ElLoading.service({
  22. lock: true,
  23. text: config.showLoading.text,
  24. spinner: 'el-icon-loading',
  25. background: 'rgba(0, 0, 0, 0.3)'
  26. });
  27. }
  28. // 在发送请求之前做些什么 token
  29. let token = sessionStorage.getItem('token')
  30. if (token) {
  31. config.headers.common['token'] = token;
  32. }
  33. return config
  34. },
  35. (error) => {
  36. // 对请求错误做些什么
  37. return Promise.reject(error);
  38. }
  39. );
  40. // 添加响应拦截器
  41. service.interceptors.response.use(
  42. (response) => {
  43. // 对响应数据做点什么
  44. nextTick(async() => {
  45. loading && await loading.close()
  46. })
  47. const res = response.data;
  48. if (res.status === 401 || res.status === 4001 || res.status == 521) {
  49. sessionStorage.clear(); // 清除浏览器全部临时缓存
  50. window.location.href = '/'; // 去登录页
  51. ElMessage.error(res.msg)
  52. } else {
  53. return response.data;
  54. }
  55. },
  56. (error) => {
  57. nextTick(async() => {
  58. loading && await loading.close()
  59. })
  60. // 对响应错误做点什么
  61. if (error.message.indexOf('timeout') != -1) {
  62. // ElMessage.error('网络超时');
  63. } else if (error.message == 'Network Error') {
  64. // ElMessage.error('网络连接错误');
  65. } else {
  66. // if (error.response.data) ElMessage.error(error.response.statusText);
  67. // else ElMessage.error('接口路径找不到');
  68. }
  69. return Promise.reject(error);
  70. }
  71. );
  72. // 导出 axios 实例
  73. export default service;