axios.js 2.8 KB

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