axios.js 1.47 KB
import axios from 'axios';
import router from '../router';
import _ from 'lodash'
import qs from 'Qs'

// 请求拦截器
axios.interceptors.request.use(
  config => {
    // 发送请求前
    if (config.method === 'post' &&
      (config.url.indexOf('a=upload') === -1 && config.url.indexOf('upload.qiniup.com') === -1)) // 上传相关接口需要屏蔽掉
    {
      // POST PHP需要修改数据格式
      config.data = qs.stringify(config.data)
    }
    // 绑定默认请求头
    config.params = _.merge(config.params, {
      f: 'voice',
    })
    return config;
  },
  error => {
    // 请求错误处理
    return Promise.reject(error);
  });

// 响应拦截器
axios.interceptors.response.use(
  response => {
    let userType = router && router.currentRoute.value.href?.indexOf('business') > 0 ? 'b' : 'c';
    if (response.data.code === 401) {
      // 特殊标识-带此标识报错不显示
      response.data.show = false;
      // 未授权跳转登录页
      // 带着上一个页面的信息
      router.replace({
        path: '/auth',
        query: {
          href: router.currentRoute.value.href,
          userType
        }
      });
    }
    // 拦截B端未登录情况
    if (response.data.msg === '老师请先登录!' || response.data.msg === '老师不存在!') {
      router.replace({
        path: '/business/login'
      });
    }
    return response;
  },
  error => {
    return Promise.reject(error.response.data);
  });

export default axios;