axios.js 3.0 KB

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