request.js 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. import axios from 'axios'; // 引入axios
  2. import { Message } from 'element-ui';
  3. import { store } from '@/store/index'
  4. import context from '@/main.js'
  5. import { authDB } from '@/db'
  6. const service = axios.create({
  7. baseURL: process.env.VUE_APP_BASE_API,
  8. timeout: 99999
  9. })
  10. let acitveAxios = 0
  11. // let timer
  12. // const showLoading = () => {
  13. // acitveAxios++
  14. // if (timer) {
  15. // clearTimeout(timer)
  16. // }
  17. // timer = setTimeout(() => {
  18. // if (acitveAxios > 0) {
  19. // context.$bus.emit("showLoading")
  20. // }
  21. // }, 400);
  22. // }
  23. // const closeLoading = () => {
  24. // acitveAxios--
  25. // if (acitveAxios <= 0) {
  26. // clearTimeout(timer)
  27. // context.$bus.emit("closeLoading")
  28. // }
  29. // }
  30. //http request 拦截器
  31. service.interceptors.request.use(
  32. config => {
  33. // if (!config.donNotShowLoading) {
  34. // showLoading()
  35. // }
  36. config.data = JSON.stringify(config.data);
  37. config.headers = {
  38. 'Content-Type': 'application/json',
  39. 'x-token': authDB.get('token'),
  40. 'x-user-id': authDB.get('uid')
  41. }
  42. return config;
  43. },
  44. error => {
  45. // closeLoading()
  46. Message({
  47. duration:2000,
  48. showClose: true,
  49. message: error,
  50. type: 'error'
  51. })
  52. return error;
  53. }
  54. );
  55. //http response 拦截器
  56. service.interceptors.response.use(
  57. response => {
  58. // closeLoading()
  59. if (response.headers["new-token"]) {
  60. store.commit('user/setToken', response.headers["new-token"])
  61. }
  62. if (response.data.code == 200 || response.headers.success === "true") {
  63. return response.data
  64. } else {
  65. Message({
  66. duration:2000,
  67. showClose: true,
  68. message: response.data.msg || decodeURI(response.headers.msg),
  69. type: response.headers.msgtype||'error',
  70. })
  71. if (response.data.data && response.data.data.reload) {
  72. store.commit('user/LoginOut')
  73. }
  74. return response.data.msg ? response.data : response
  75. }
  76. },
  77. error => {
  78. // closeLoading()
  79. Message({
  80. duration:2000,
  81. showClose: true,
  82. message: error,
  83. type: 'error'
  84. })
  85. return error
  86. }
  87. )
  88. export default service