Newer
Older
KaiFengH5 / src / utils / request.js
@鲁yixuan 鲁yixuan on 9 Jul 2 KB update
import axios from 'axios';
import { showFailToast } from 'vant';
import { useStore } from '@/pinia/store.js';
import router from '@/router/index';
import { tansParams } from '@/utils/compatible.js';

const pinias = useStore();
// 创建axios实例
const service = axios.create({
  // axios中请求配置有baseURL选项,表示请求URL公共部分
  baseURL: import.meta.env.VITE_APP_BASE_API,
  // 超时
  timeout: 30000,
});

//http request 拦截器
service.interceptors.request.use(
  (config) => {
    // 是否需要设置 token
    const isToken = (config.headers || {}).isToken === false;
    // 配置请求头
    if (localStorage.getItem('GCAppToken') && !isToken) {
      config.headers = {
        'Content-Type': 'application/json;charset=utf-8',
        token: localStorage.getItem('GCAppToken'),
        USERNO: localStorage.getItem('userNo'),
      };
    }
    return config;
  },
  (error) => {
    return Promise.reject(error);
  }
);

//http response 拦截器
service.interceptors.response.use(
  (response) => {
    // console.log('request success', response);

    const { code } = response ? response.data : 'undefined' || '';
    if (code == 401) {
      showFailToast('登录已过期,请重新登录!');

      router.push('/login');
      // if (import.meta.env.MODE == 'development') {
      //   router.push('/login');
      // } else {
      //   // window.location.href = 'http://192.168.16.94:8082/appMain/login'; //研发服务器
      //   window.location.href = 'https://server1.wh-nf.cn:8876/appMain/login'; //正式环境
      // }
      // window.android.startLoginPage();
      return;
    }
    // axios单独请求接口时,未返回code情况处理
    if (code == undefined) {
      return response;
    }
    // 接口未返回数据时
    if (!!!code) {
      showFailToast('数据请求失败,请稍后再试!');
      pinias.hideLoading();
      return false;
    }

    if (code != 200) {
      showFailToast(response.data.message || response.data.msg || '');
    }
    return response;
  },
  (error) => {
    console.log('request error:', error);
    pinias.hideLoading();
    showFailToast('网络连接异常,请稍后再试!');
  }
);

export default service;
// // 封装 GET POST 请求并导出
// export default function request(config) {
//   // get请求映射params参数
//   if (config.params) {
//     let url = config.url + '?' + tansParams(config.params);
//     url = url.slice(0, -1);
//     config.url = url;
//   }
//   const baseURL = import.meta.env.MODE == 'development' ? config.url : '/prod-api' + config.url;
//   return new Promise((resolve, reject) => {
//     let promise = axios({
//       method: config.method,
//       url: baseURL,
//       data: config.data,
//       header: config.header || {},
//       dataType: 'json',
//       timeout: config.timeout || 8000,
//     });
//     //处理返回
//     promise
//       .then((res) => {
//         resolve(res.data);
//       })
//       .catch((err) => {
//         reject(err);
//       });
//   });
// }