当前位置: 首页 > news >正文

封装一个接口方法,根据条件,调用不同接口数据

首先在接口引入文件里配置

import requests from 'utils/request'

封装一个方法类名

// 查询采购场景 没有启用

export const getList = (url,method,data: any) => {
  return requests(url, {
    method: method,
    query: data
  });
};

在Vue项目中data函数里、或者react 项目中state里
设置一个初始变量

  getListOption: { url; method } = {
    url: '/yst-pur/pur/purscene/search', // 初始化想要默认先走的接口
    method: 'post'
  };
  enableFlag: boolean = false; //是否启用 跟后台约定的
  sceneIds: string[] = []; //已选中的id数组

假设我们是要创建文件之后就执行加载接口文件进行获取接口赋值展示

在Vue项目中create 或者mounted 钩子函数中,在react项目的 componentDidMount 钩子函数中执行接口的调佣

这里是一react为例,Vue也是一样的,换换钩子函数就可以了。
  async componentDidMount() {
    this.setDefaultParams(this.props?.match?.params?.id); // 传过来详情id参数,这里接收了一下。
  }
  setDefaultParams = async (id) => {
    const deitem = await service.getProcurementTypeId(id); // 详情接口
    // 下面就是判断条件,要执行的是那一条接哭数据
    if (deitem && deitem.data.enableFlag) { // 如果启用
      this.getListOption = {
        url: `/yst-fin/fin/purSettleDef/listScene`, // 查询已对应采购场景--启用之后的
        method: 'post'
      };
      this.enableFlag = true; //  enableFlag 是我定义的一个启用状态true或false,跟后台约定的,上边已经有定义了
    } else { // 如果不启用
      this.enableFlag = false; // 没有启用的状态
      this.sceneIds = deitem.data.sceneIds;
    }
    this.setState({ isInitFinish: true });
  };

当我们上边定义类方法的时候,可能接口局不能直接调,要自己去赋值了
所以

request: async (paramData) => {
    return service.getList(
      this.getListOption.url, // 初始化接口
      this.getListOption.method,
      { // 传参
        ...paramData,
        defineId: this.props?.match?.params?.id,
        es3: 'NON', // 不免值
        size: 100, // 不分页,统一的固定值
        orders: [{ asc: false, column: 'createTime' }] //排序
      }
    );
  },
  
  // 当我们执行接口成功之后,走的一个成功防范
  successCallBack: (successTableRef) => {
    this.setDefaultSelectionData(successTableRef);
  },
  
  // 这个方法你自己写在上边,不要放在这里,我这里是render 的过程,这里只是让你看的比较顺眼
setDefaultSelectionData = (successTableRef) => {
//在这里进行判断,让有启用的数据并且有选中的数据进行push 展示
    if (!this.enableFlag && this.sceneIds?.length > 0) {
      const dataSource = successTableRef.dataSource;
      const selectedRowKeys = [];
      const selectedRows = [];
      this.sceneIds.forEach((itemid) => {
        const row = dataSource.find((it) => it.id == itemid);
        if (row) {
          selectedRowKeys.push(itemid);
          selectedRows.push(row);
        }
      });
      const selectionData = {
        selectedRowKeys,
        selectedRows,
        length: selectedRowKeys.length
      };
      setTimeout(() => {
        this.tableRef?.setSelectionData(selectionData);
      }, 0);
    }
  };

在保存页面
// 保存采购场景按钮

  save = async (selectionData?: any) => {
    const item = selectionData.selectedRows.map(
      ({ sceneCode, id, sceneName, es7 }) => ({
        sceneCode,
        sceneId: id,
        sceneName,
        es7
      })
    );
    let params = {
      defineId: this.props?.match?.params?.id,
      params: item
    };
    const res = await service.addScene(params);
    if (res && res.success === true) {
      this.setState({});
      ElNotification({ type: 'success', message: res.msg });
      // 保存完成后自动跳转到指定页面
      const { store } = this.props
      store.MultiTabMobx.closeCurrentToPath('/fin/purcSettlement/Buyer');
    } else {
      ElNotification({
        type: 'error',
        message: res.msg
      });
    }
  };

相关文章:

  • Linux正则表达式
  • es6的解构赋值 和扩展运算符 ... 的区别
  • 项目上线注意事项
  • apply()方法
  • 学习Vue.js的五个小例子
  • 执行 set-ExecutionPolicy RemoteSigned 失败解决方法
  • UVA11729 Commando War【贪心】
  • 根据 选中行数据状态进行按钮的展示和置灰功能
  • 视频编解码学习之五:差错控制及传输
  • Git安装和项目中常用的git命令,
  • php发送邮件(正解!!!)
  • 开发项目时,分支新建和合并保留
  • linux备份文件和数据库脚本
  • 远程操作分支
  • ansible 运维工具简单整理
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • Android 架构优化~MVP 架构改造
  • css布局,左右固定中间自适应实现
  • ERLANG 网工修炼笔记 ---- UDP
  • input的行数自动增减
  • Js基础——数据类型之Null和Undefined
  • JS实现简单的MVC模式开发小游戏
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Twitter赢在开放,三年创造奇迹
  • unity如何实现一个固定宽度的orthagraphic相机
  • 面试遇到的一些题
  • 你不可错过的前端面试题(一)
  • 线性表及其算法(java实现)
  • 写给高年级小学生看的《Bash 指南》
  • 以太坊客户端Geth命令参数详解
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 用简单代码看卷积组块发展
  • 怎么把视频里的音乐提取出来
  • ​创新驱动,边缘计算领袖:亚马逊云科技海外服务器服务再进化
  • # 达梦数据库知识点
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #我与Java虚拟机的故事#连载07:我放弃了对JVM的进一步学习
  • (31)对象的克隆
  • (C++)栈的链式存储结构(出栈、入栈、判空、遍历、销毁)(数据结构与算法)
  • (C语言)编写程序将一个4×4的数组进行顺时针旋转90度后输出。
  • (简单) HDU 2612 Find a way,BFS。
  • (力扣)1314.矩阵区域和
  • (论文阅读32/100)Flowing convnets for human pose estimation in videos
  • (南京观海微电子)——COF介绍
  • (十八)三元表达式和列表解析
  • (十三)Maven插件解析运行机制
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • .NET 8 编写 LiteDB vs SQLite 数据库 CRUD 接口性能测试(准备篇)
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET Core跨平台微服务学习资源
  • .NET/ASP.NETMVC 大型站点架构设计—迁移Model元数据设置项(自定义元数据提供程序)...
  • .Net转前端开发-启航篇,如何定制博客园主题
  • /etc/sudoer文件配置简析
  • @ 代码随想录算法训练营第8周(C语言)|Day57(动态规划)
  • @Autowired注解的实现原理