axios.js 4.0 KB

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