You need to sign in or sign up before continuing.
fn.js 2.79 KB
/*
 * @Date: 2022-05-18 22:56:08
 * @LastEditors: hookehuyr hookehuyr@gmail.com
 * @LastEditTime: 2025-11-12 16:42:17
 * @FilePath: /stdj_h5/src/api/fn.js
 * @Description: 文件描述
 */
import axios from '@/utils/axios';
import { showFailToast, showToast } from 'vant';
import qs from 'Qs'

/**
 * 网络请求功能函数
 * @param {*} api 请求axios接口
 * @returns 请求成功后,获取数据
 */
export const fn = (api) => {
  return api
    .then(res => {
      if (res.data.code === 1) {
        return res.data || true;
      } else {
        // tslint:disable-next-line: no-console
        console.warn(res);
        // if (!res.data.show) return false;
        showToast(res.data.msg);
        return false;
      }
    })
    .catch(err => {
      // tslint:disable-next-line: no-console
      console.error(err);
      return false;
    })
    .finally(() => { // 最终执行
    })
}

/**
 * 七牛返回格式
 * @param {*} api
 * @returns
 */
export const uploadFn = (api) => {
  return api
    .then(res => {
      if (res.statusText === 'OK') {
        return res.data || true;
      } else {
        // tslint:disable-next-line: no-console
        console.warn(res);
        if (!res.data.show) return false;
        showFailToast(res.data.msg);
        return false;
      }
    })
    .catch(err => {
      // tslint:disable-next-line: no-console
      console.error(err);
      return false;
    })
}

/**
 * 统一 GET/POST 不同传参形式
 */
export const fetch = {
    /**
     * GET 请求封装
     * @param {string} api 接口地址
     * @param {object} params 查询参数
     * @param {object} config 额外axios配置(可选),如 { ignore_loading: true }
     * @returns {Promise} axios响应
     */
    get: function (api, params, config) {
        return axios.get(api, { params, ...(config || {}) })
    },
    /**
     * POST 请求封装
     * @param {string} api 接口地址
     * @param {object} params 请求体数据
     * @param {object} config 额外axios配置(可选)
     * @returns {Promise} axios响应
     */
    post: function (api, params, config) {
        return axios.post(api, params, config)
    },
    /**
     * POST(表单序列化)
     * @param {string} api 接口地址
     * @param {object} params 请求体数据(将被序列化)
     * @param {object} config 额外axios配置(可选)
     * @returns {Promise} axios响应
     */
    stringifyPost: function (api, params, config) {
        return axios.post(api, qs.stringify(params), config)
    },
    /**
     * 基础POST
     * @param {string} url 完整地址
     * @param {object} data 请求体数据
     * @param {object} config axios配置
     * @returns {Promise} axios响应
     */
    basePost: function (url, data, config) {
        return axios.post(url, data, config)
    }
}