123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124 |
- //引入axios
- import axios from 'axios'
- //引入用户信息组件
- import { menuStatusStore, userInfoStore } from '@/stores'
- import { ElMessage } from 'element-plus';
- // import { useRouter } from 'vue-router';
- import router from '@/router';
- const userInfo = userInfoStore()
- const menuStatus = menuStatusStore()
- //创建axios实例
- //创建基础访问路径
- //少锋本地wifi
- // const base_url = 'http://172.28.50.2:8089'
- //少锋本地
- // const base_url = 'http://10.113.248.4:8089/'
- //少锋本地 版本2
- // const base_url = 'http://10.113.248.4:8090/'
- //30
- // const base_url = 'http://43.143.198.30:8089/'
- //红朵
- const base_url = 'http://129.211.221.44:8091'
- //锦泓服务器
- // const base_url = 'http://146.56.226.174:8089'
- //新服务器
- // const base_url = 'http://123.57.18.29:8089'
- //第二个版本
- // const base_url = 'http://123.57.18.29:8090'
- //设置axios 默认访问路径
- axios.defaults.baseURL = base_url
- //设置超时时间
- axios.defaults.timeout = 30000
- // 设置头部信息
- axios.defaults.headers.common['Content-Type'] = 'application/JSON;charset=UTF-8'
- //前端跨域配置
- axios.defaults.withCredentials = true;
- //设置 使用token的白名单
- const whiteList = []
- //设置请求前的拦截器
- axios.interceptors.request.use(
- config => {
- //在请求前需要做什么
- //如果有token---则放在请求头上
- config.headers.Authorization = userInfo.token
- ? `Bearer ${userInfo.token}`
- : "";
- return config
- },
- error => {
- //对错误请求需要做些什么
- return Promise.reject(error)
- }
- )
- //添加相应拦截器
- axios.interceptors.response.use(
- response => {
- //对响应中做些什么
- if (response.data.code === 401) {
- // 重定向到登录页
- //登录状态失效
- //取到缓存里的登录信息
- //---将token 去掉
- //出现401 浏览器中还存在缓存 就先提示过期了
- //然后清除用户信息缓存--重新登录
- if (userInfo.token) {
- ElMessage({
- message: response.data.msg,
- type: 'warning'
- })
- router.push({ name: 'login' })
- menuStatus.saveActiveIndex('6')
- }
- //清除用户缓存
- userInfo.clearUserInfo()
- // router.push({ name: 'login' })
- //此时报告找不到路径
- // Toast.fail(response.data.msg);
- // Message.error(response.data.msg);
- }
- return response
- }, error => {
- Promise.reject(error)
- }
- )
- //封装请求
- export const http = <T>(option: any) => {
- return new Promise((resolve, reject) => {
- axios({
- ...option,
- }).then(res => {
- //在这里应该机解密下
- resolve(res.data)
- }).catch(error => {
- reject(error)
- });
- })
- }
|