request.js 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. // +---------------------------------------------------------------------
  2. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  3. // +---------------------------------------------------------------------
  4. // | Copyright (c) 2016~2023 https://www.crmeb.com All rights reserved.
  5. // +---------------------------------------------------------------------
  6. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  7. // +---------------------------------------------------------------------
  8. // | Author: CRMEB Team <admin@crmeb.com>
  9. // +---------------------------------------------------------------------
  10. import axios from 'axios';
  11. import { Message } from 'iview';
  12. import { getCookies, removeCookies } from '@/libs/util';
  13. import Setting from '@/setting';
  14. import router from '@/router';
  15. const service = axios.create({
  16. baseURL: Setting.apiBaseURL,
  17. timeout: 10000, // 请求超时时间
  18. });
  19. axios.defaults.withCredentials = true; // 携带cookie
  20. // 请求拦截器
  21. service.interceptors.request.use(
  22. (config) => {
  23. if (config.kefu) {
  24. let baseUrl = Setting.apiBaseURL.replace(/adminapi/, 'kefuapi');
  25. config.baseURL = baseUrl;
  26. } else {
  27. config.baseURL = Setting.apiBaseURL;
  28. }
  29. if (config.file) {
  30. config.headers['Content-Type'] = 'multipart/form-data';
  31. }
  32. const token = getCookies('token');
  33. const kefuToken = getCookies('kefu_token');
  34. if (token || kefuToken) {
  35. config.headers['Authori-zation'] = config.kefu ? 'Bearer ' + kefuToken : 'Bearer ' + token;
  36. }
  37. return config;
  38. },
  39. (error) => {
  40. // do something with request error
  41. return Promise.reject(error);
  42. },
  43. );
  44. // response interceptor
  45. service.interceptors.response.use(
  46. (response) => {
  47. let obj = {};
  48. if (!!response.data) {
  49. if (typeof response.data == 'string') {
  50. obj = JSON.parse(response.data);
  51. } else {
  52. obj = response.data;
  53. }
  54. }
  55. let status = response.data ? obj.status : 0;
  56. // let status = response.data ? response.data.status : 0;
  57. const code = status;
  58. switch (code) {
  59. case 200:
  60. return obj;
  61. case 110002:
  62. case 110003:
  63. case 110004:
  64. localStorage.clear();
  65. removeCookies('token');
  66. removeCookies('expires_time');
  67. removeCookies('uuid');
  68. router.replace({ name: 'login' });
  69. break;
  70. case 110005:
  71. case 110006:
  72. case 110007:
  73. removeCookies('kefuInfo');
  74. removeCookies('kefu_token');
  75. removeCookies('kefu_expires_time');
  76. removeCookies('kefu_uuid');
  77. router.replace({ path: '/kefu' });
  78. break;
  79. case 110008:
  80. router.replace({ name: 'system_opendir_login' });
  81. break;
  82. default:
  83. return Promise.reject(obj || { msg: '未知错误' });
  84. }
  85. },
  86. (error) => {
  87. Message.error(error.msg);
  88. return Promise.reject(error);
  89. },
  90. );
  91. export default service;