axios.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. import axios from 'axios';
  2. import { Message, MessageBox } from 'element-ui';
  3. import { setItem, 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. config.data = signUtil.sign(token, deepClone(config.data));
  19. // console.log(config, 'config')
  20. return config
  21. },
  22. error => {
  23. // Do something with request error
  24. console.log(error) // for debug
  25. Promise.reject(error)
  26. }
  27. )
  28. // response interceptor
  29. service.interceptors.response.use(
  30. response => {
  31. const res = response.data;
  32. if (res.repCode == '0000') {
  33. return res
  34. }
  35. else if (res.repCode == '0024') {
  36. //登录超时或被登出,弹确认框,用户确认后,跳转到登录页面
  37. MessageBox({
  38. message: "当前登录已失效或异地登录,请重新登录",
  39. type: 'error',
  40. duration: 3 * 1000,
  41. }).then(() => {
  42. console.log(1)
  43. sessionStorage.clear();
  44. localStorage.clear();
  45. delItem('token')
  46. // location.reload();
  47. window.location.href = "/";
  48. }).catch(err => {
  49. console.log(2)
  50. })
  51. } else if (res.repCode == "3100" || res.repCode == "3101") {
  52. return res;
  53. }
  54. else {
  55. Message({
  56. message: res.repMsg,
  57. type: 'error',
  58. duration: 3 * 1000
  59. })
  60. return res;
  61. }
  62. },
  63. error => {
  64. var errorStatus = error.response.status;
  65. var errorData = error.response.data;
  66. var messageTxt = "";
  67. if (errorStatus != 200) {
  68. messageTxt = "服务器内部错误,请联系管理员";
  69. } else {
  70. messageTxt = '失败原因:' + errorData.repCode + '--' + errorData.repMsg;
  71. }
  72. Message({
  73. message: messageTxt,
  74. type: 'error',
  75. duration: 5 * 1000
  76. })
  77. }
  78. )
  79. export default service