request.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import axios from 'axios';
  2. import store from '@/store';
  3. import { Message } from 'element-ui';
  4. import { getToken } from '@/utils/auth';
  5. axios.defaults.headers['cache-control'] = 'no-cache';
  6. axios.defaults.headers['Content-Type'] = 'application/json';
  7. axios.defaults.headers['X-Requested-With'] = 'XMLHttpRequest';
  8. const service = axios.create({
  9. baseURL: process.env.VUE_APP_BASE_API,
  10. timeout: 30000
  11. });
  12. // 请求拦截器
  13. service.interceptors.request.use(
  14. (config) => {
  15. config.headers['Content-Type'] = 'application/json';
  16. return config;
  17. },
  18. (error) => {
  19. return Promise.reject(error);
  20. }
  21. );
  22. // 响应拦截器
  23. service.interceptors.response.use(
  24. (response) => {
  25. const res = response.data;
  26. if (res.code === 404) {
  27. Message({
  28. message: '请求的资源不存在',
  29. type: 'error',
  30. duration: 3 * 1000
  31. });
  32. return Promise.reject(new Error(res.message || 'Error'));
  33. }
  34. // 返回数据失败
  35. if (res.status === 0) {
  36. Message({
  37. message: res.error,
  38. type: 'error',
  39. duration: 3 * 1000
  40. });
  41. return Promise.reject(new Error(`${response.config?.params?.MethodName} ${res.error}` || 'Error'));
  42. }
  43. // 无效的操作用户
  44. if (res.status === -1) {
  45. Message({
  46. message: res.error,
  47. type: 'error',
  48. duration: 3 * 1000
  49. });
  50. store.dispatch('user/resetSessionID').then(() => {
  51. window.location.href = '/';
  52. });
  53. return Promise.reject(new Error(res.error || 'Error'));
  54. }
  55. return res;
  56. },
  57. (error) => {
  58. if (error.code === 'ERR_CANCELED') {
  59. return Message.success('取消上传成功');
  60. }
  61. Message({
  62. message: error.message,
  63. type: 'error',
  64. duration: 3 * 1000
  65. });
  66. return Promise.reject(error);
  67. }
  68. );
  69. /**
  70. * 得到必需的请求参数
  71. * @param {String} MethodName 请求方法名
  72. * @returns {Object} 返回必需的请求参数
  73. * */
  74. export function getRequestParams(MethodName) {
  75. const { token, isHas } = getToken();
  76. return {
  77. MethodName,
  78. UserCode: isHas ? token.user_code : '',
  79. UserType: isHas ? token.user_type : '',
  80. SessionID: isHas ? token.session_id : ''
  81. };
  82. }
  83. export { service as request };