【泛微OA Ecology 9.0】流程明细表数据联动

泛微 Ecology 9.0 流程引擎 表单 代码块

一、案例说明&功能概述:

功能简述:

流程表单中两个明细表,实现两个明细表联动。

明细表1:填写的开始日期和结束日期

明细表2:根据明细表1的日期区间,取区间内的日期,要求填报每日内容

应用场景:

1、申请出差,需要填写每日行程

2、制定工作计划后,需要填写每天工作日志

。。。

 表单演示:

二、实现思路

预测实际场景预测,在填写完明细表1的时间段后,通过字段/按钮触发,获取明细表1数据,并将数据写入明细表2。

实现逻辑概述:清空明细表2全部数据(根据实际需求)--遍历明细表1的数据,获取开始日期和结束日期--遍历过程中,根据开始日期和结束日期,遍历插入数据到明细表2中。

三、代码分享

核心代码

以下代码实现上述逻辑

<script>
//清除 明细表2 数据 需要插入数据的目标表
WfForm.delDetailRow("detail_2","all");

//获取 明细表1 数据 原始数据的初始表
var rowArr = WfForm.getDetailAllRowIndexStr("detail_1").split(",");
for(var i=0; i<rowArr.length; i++){
    var rowIndex = rowArr[i];
    if(rowIndex !== ""){
        //获取明细行 开始日期 field9292 按实际更换为明细1中开始日期的字段id
        var startDateStr  = WfForm.getFieldValue("field9292_"+rowIndex);
        //获取明细行 结束日期 field9293 按实际更换为明细1中结束日期的字段id
        var endDateStr   = WfForm.getFieldValue("field9293_"+rowIndex);

        //转换为日期字段
        var startDate = new Date(startDateStr);
        var endDate = new Date(endDateStr);

        //赋值 明细表2 数据
        for (var d = startDate; d <= endDate; d.setDate(d.getDate() + 1)) {
            //新增明细行并赋值日期 field9294 按实际更换为明细2中日期的字段id
            WfForm.addDetailRow("detail_2",{field9294:{value:d.toISOString().split('T')[0]}});
        }

    }
}
</script>

部署到实际环境中

方式一:通过监控其他主表字段的变化触发

<script>
//触发 监控field9291字段值的变化
WfForm.bindFieldChangeEvent("field9291", function(obj,id,value){
  //清除 明细表2 数据
  WfForm.delDetailRow("detail_2","all");
  
  //获取 明细表1 数据
  var rowArr = WfForm.getDetailAllRowIndexStr("detail_1").split(",");
  for(var i=0; i<rowArr.length; i++){
      var rowIndex = rowArr[i];
      if(rowIndex !== ""){
          var startDateStr  = WfForm.getFieldValue("field9292_"+rowIndex);
          var endDateStr   = WfForm.getFieldValue("field9293_"+rowIndex);
          
          //转换为日期字段
          var startDate = new Date(startDateStr);
          var endDate = new Date(endDateStr);
          
          //赋值 明细表2 数据
          for (var d = startDate; d <= endDate; d.setDate(d.getDate() + 1)) {
            WfForm.addDetailRow("detail_2",{field9294:{value:d.toISOString().split('T')[0]}});
          }
      }
  }
});
</script>

方式二:表单新增按钮,并通过点击表单按钮触发

<script>
jQuery(document).ready(function() {
    // 定义按钮的HTML
    var buttonHtml = 
        '<span style="display: inline-block; line-height: 28px; vertical-align: middle; margin-left: 10px;">' +
        '<button id="btnwf" title="提交" type="button" class="ant-btn ant-btn-primary">' +
        '<div class="wf-req-top-button" style="color:white">提交</div>' +
        '</button>' +
        '</span>';
    
    // 将按钮插入到指定的单元格中 btnLink 为单元格自定义属性的id属性值,可自定义
    jQuery("#btnLink").html(buttonHtml);
    
    // 为按钮添加点击事件处理程序
    jQuery("#btnwf").on("click", function() {
      //清除 明细表2 数据
      WfForm.delDetailRow("detail_2","all");
      
      //获取 明细表1 数据
      var rowArr = WfForm.getDetailAllRowIndexStr("detail_1").split(",");
      for(var i=0; i<rowArr.length; i++){
        var rowIndex = rowArr[i];
        if(rowIndex !== ""){
          var startDateStr  = WfForm.getFieldValue("field9292_"+rowIndex);  //获取明细行 开始日期
          var endDateStr   = WfForm.getFieldValue("field9293_"+rowIndex);   //获取明细行 结束日期
          
          //转换为日期字段
          var startDate = new Date(startDateStr);
          var endDate = new Date(endDateStr);
          
          //赋值 明细表2 数据
          for (var d = startDate; d <= endDate; d.setDate(d.getDate() + 1)) {
            WfForm.addDetailRow("detail_2",{field9294:{value:d.toISOString().split('T')[0]}});
          }
          
        }
      }
    });
});

按钮插入位置选择:

在表单页面,确认按钮需要插入的单元格位置,将对应位置id的属性值改为"btnLink"

四、效果演示

  • 7
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
泛微OA是一种办公自动化系统,明细表是其中一个重要的功能模块。明细表赋值明细表是指在使用泛微OA时,将一个明细表的值赋予另一个明细表。 在泛微OA明细表中,我们可以添加多个字段来记录不同的数据。假设我们有两个明细表,分别是明细表A和明细表B。现在我们需要将明细表A中的某一列的值赋予明细表B中的某一列。 首先,我们需要在明细表B中添加一个与明细表A中要赋值的列字段相对应的列。例如,如果要将明细表A中的"数量"列的值赋予明细表B中的"总数"列,我们就需要在明细表B中添加一个名为"总数"的列。 接下来,我们需要在泛微OA的相关配置中进行设置。我们首先找到明细表A所在的场景,进入该场景的配置页面。在配置页面中,我们可以找到明细表A的列字段列表,选择需要赋值的列字段,并将其与明细表B的相应列字段进行关联。 完成关联后,我们需要再找到明细表B所在的场景,进入该场景的配置页面。在配置页面中,找到明细表B的列字段列表,我们可以发现被关联的列字段已经显示为灰色不可编辑状态,这表示与明细表A的列字段已成功关联。 最后,我们点击保存并发布配置,重新加载明细表B的页面后,就可以看到明细表A中的对应列字段的值已经成功赋值给明细表B。这样,我们就实现了泛微OA明细表赋值明细表的操作。 总结起来,泛微OA明细表赋值明细表的步骤包括添加相应的列字段、配置场景关联以及保存并发布配置。这种操作可以方便地将一个明细表数据赋值给另一个明细表,提高了工作效率和数据管理的便捷性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值