axios.js 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. import axios from 'axios'
  2. import store from './store'
  3. export const BASE_URL = process.env.BASE_URL //测试-外网
  4. export const tenantId = process.env.TENANT_ID
  5. import tools from './common/tools'
  6. import router from './router'
  7. // 创建 axios 实例
  8. const request = axios.create({
  9. baseURL: BASE_URL,
  10. timeout: 10000 // 请求超时时间
  11. })
  12. // 错误处理函数
  13. const err = (error) => {
  14. if (error.response) {
  15. const data = error.response.data
  16. // const token = Vue.ls.get(ACCESS_TOKEN)
  17. if (error.response.status === 403) {
  18. }
  19. if (error.response.status === 401) {
  20. }
  21. }
  22. return Promise.reject(error)
  23. }
  24. // request interceptor(请求拦截器)
  25. request.interceptors.request.use(config => {
  26. const token = tools.getToken()
  27. if (token && !config.noToken) {
  28. config.headers['AuthorizationToken'] = 'WX ' + token // 让每个请求携带自定义 token 请根据实际情况自行修改
  29. }
  30. config.headers['TenantId'] = tenantId
  31. return config
  32. }, err)
  33. // response interceptor(接收拦截器)
  34. request.interceptors.response.use(async (response) => {
  35. const res = response.data
  36. const code = res.code || 200;
  37. if (code !== 200) {
  38. if (code == 401) {
  39. let userAccount = tools.getUserAccount();
  40. if (!userAccount) {
  41. // Message({
  42. // message: `登录失效,重新登录`,
  43. // type: "error",
  44. // });
  45. // setTimeout(() => {
  46. console.log('1231231')
  47. store.commit('setCurrentRouter', router.currentRoute)
  48. localStorage.removeItem('user_account')
  49. localStorage.removeItem('token')
  50. router.push({
  51. path: '/login'
  52. })
  53. return Promise.reject(res)
  54. // }, 1000);
  55. } else {
  56. let res = await refreshToken(response.config)
  57. return res
  58. }
  59. } else if (code == 500) {
  60. // Message({
  61. // message: res.msg,
  62. // type: "error",
  63. // });
  64. // localStorage.removeItem('user_account')
  65. // localStorage.removeItem('token')
  66. // console.log('222222')
  67. // router.push({
  68. // path: '/login'
  69. // })
  70. return Promise.reject(res)
  71. } else {
  72. return Promise.reject(res)
  73. }
  74. } else {
  75. return res
  76. }
  77. }, err)
  78. async function refreshToken(response) {
  79. let userAccount = tools.getUserAccount();
  80. var datas = {
  81. url: '/refreshToken/' + userAccount,
  82. method: 'get',
  83. noToken: true
  84. }
  85. const res = await request(datas)
  86. if (res.code === 200) {
  87. localStorage.setItem('token', res.data.token)
  88. var userInfo = {
  89. url: '/app/user/getInfo',
  90. method: 'get',
  91. params: {fromPlat: 2}, // 来源平台 1小程序 2PC网站
  92. }
  93. const resUser = await request(userInfo)
  94. if (resUser.data.code === 200) {
  95. store.state.userInfo = resUser.data
  96. localStorage.setItem('user_account', userAccount)
  97. num = 1;
  98. }
  99. let onset = await request(response)
  100. return onset
  101. } else {
  102. // Message({
  103. // message: `登录失效,重新登录`,
  104. // type: "error",
  105. // });
  106. // setTimeout(() => {
  107. localStorage.removeItem('user_account')
  108. localStorage.removeItem('token')
  109. console.log('33333')
  110. store.commit('setCurrentRouter', router.currentRoute)
  111. router.push({
  112. path: '/login'
  113. })
  114. // }, 1000);
  115. }
  116. }
  117. export default request