axios.js 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import axios from 'axios';
  2. import { Message, MessageBox } from 'element-ui';
  3. import { getItem, delItem } from '@/utils/storage';
  4. import signUtil from '@/utils/signUtil';
  5. import { deepClone } from "@/utils"
  6. axios.defaults.baseURL = process.env.BASE_API
  7. const service = axios.create({
  8. withCredentials: false,
  9. timeout: 60000,
  10. headers: {
  11. 'Content-Type': 'application/json',
  12. }
  13. })
  14. service.interceptors.request.use(
  15. config => {
  16. // 在发送请求之前做些什么
  17. var token = getItem('token');
  18. return config
  19. },
  20. error => {
  21. // Do something with request error
  22. Promise.reject(error)
  23. }
  24. )
  25. // response interceptor
  26. service.interceptors.response.use(
  27. response => {
  28. const res = response.data;
  29. if (res.code == 200) {
  30. return res
  31. }
  32. else if (res.code == '50014') {
  33. //登录超时或被登出,弹确认框,用户确认后,跳转到登录页面
  34. MessageBox({
  35. message: "当前登录已失效或异地登录,请重新登录",
  36. type: 'error',
  37. duration: 3 * 1000,
  38. }).then(() => {
  39. sessionStorage.clear();
  40. localStorage.clear();
  41. delItem('token')
  42. window.location.href = "/";
  43. }).catch(err => {
  44. })
  45. } else if (res.code == "3100" || res.code == "3101") {
  46. return res;
  47. }
  48. else {
  49. Message({
  50. message: res.repMsg,
  51. type: 'error',
  52. duration: 3 * 1000
  53. })
  54. return res;
  55. }
  56. },
  57. error => {
  58. var errorStatus = error.response.code;
  59. var errorData = error.response.data;
  60. var messageTxt = "";
  61. if (errorStatus != 200) {
  62. messageTxt = "服务器内部错误,请联系管理员";
  63. } else {
  64. messageTxt = '失败原因:' + errorData.code + '--' + errorData.repMsg;
  65. }
  66. Message({
  67. message: messageTxt,
  68. type: 'error',
  69. duration: 5 * 1000
  70. })
  71. }
  72. )
  73. export default service