http.ts 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. //引入axios
  2. import axios from 'axios'
  3. //引入用户信息组件
  4. import { menuStatusStore, userInfoStore } from '@/stores'
  5. import { ElMessage } from 'element-plus';
  6. // import { useRouter } from 'vue-router';
  7. import router from '@/router';
  8. const userInfo = userInfoStore()
  9. const menuStatus = menuStatusStore()
  10. //创建axios实例
  11. //创建基础访问路径
  12. //少锋本地wifi
  13. // const base_url = 'http://172.28.50.2:8089'
  14. //少锋本地
  15. // const base_url = 'http://10.113.248.4:8089/'
  16. //少锋本地 版本2
  17. // const base_url = 'http://10.113.248.4:8090/'
  18. //30
  19. // const base_url = 'http://43.143.198.30:8089/'
  20. //红朵
  21. // export const base_url = 'http://129.211.221.44:8091'
  22. //红朵 --中原科技学院地址
  23. export const base_url = 'http://129.211.221.44:8092'
  24. //锦泓服务器
  25. // const base_url = 'http://146.56.226.174:8089'
  26. //新服务器
  27. // export const base_url = 'http://123.57.18.29:8089'
  28. //第二个版本
  29. // const base_url = 'http://123.57.18.29:8090'
  30. //设置axios 默认访问路径
  31. axios.defaults.baseURL = base_url
  32. //设置超时时间
  33. axios.defaults.timeout = 30000
  34. // 设置头部信息
  35. axios.defaults.headers.common['Content-Type'] = 'application/JSON;charset=UTF-8'
  36. //前端跨域配置
  37. axios.defaults.withCredentials = true;
  38. //设置 使用token的白名单
  39. const whiteList = []
  40. //设置请求前的拦截器
  41. axios.interceptors.request.use(
  42. config => {
  43. //在请求前需要做什么
  44. //如果有token---则放在请求头上
  45. config.headers.Authorization = userInfo.token
  46. ? `Bearer ${userInfo.token}`
  47. : "";
  48. return config
  49. },
  50. error => {
  51. //对错误请求需要做些什么
  52. return Promise.reject(error)
  53. }
  54. )
  55. //添加相应拦截器
  56. axios.interceptors.response.use(
  57. response => {
  58. //对响应中做些什么
  59. if (response.data.code === 401) {
  60. // 重定向到登录页
  61. //登录状态失效
  62. //取到缓存里的登录信息
  63. //---将token 去掉
  64. //出现401 浏览器中还存在缓存 就先提示过期了
  65. //然后清除用户信息缓存--重新登录
  66. if (userInfo.token) {
  67. ElMessage({
  68. message: response.data.msg,
  69. type: 'warning'
  70. })
  71. router.push({ name: 'login' })
  72. menuStatus.saveActiveIndex('6')
  73. }
  74. //清除用户缓存
  75. userInfo.clearUserInfo()
  76. // router.push({ name: 'login' })
  77. //此时报告找不到路径
  78. // Toast.fail(response.data.msg);
  79. // Message.error(response.data.msg);
  80. }
  81. return response
  82. }, error => {
  83. Promise.reject(error)
  84. }
  85. )
  86. //封装请求
  87. export const http = <T>(option: any) => {
  88. return new Promise((resolve, reject) => {
  89. axios({
  90. ...option,
  91. }).then(res => {
  92. //在这里应该机解密下
  93. resolve(res.data)
  94. }).catch(error => {
  95. reject(error)
  96. });
  97. })
  98. }