首页 > 其他分享 >泛微OA-存在两个明细表,当两表中某行值相等时,表1行加粗高亮

泛微OA-存在两个明细表,当两表中某行值相等时,表1行加粗高亮

时间:2025-01-13 16:59:43浏览次数:7  
标签:两表中 color 某行值 tr 明细表 WfForm var font

优化前代码

<script>
// 行序1:field119982
// 行序2:field129442
jQuery(document).ready(function() {
  // 获取两个明细表的所有行索引
  var detailArr01 = WfForm.getDetailAllRowIndexStr("detail_1").split(",");
  var detailArr02 = WfForm.getDetailAllRowIndexStr("detail_2").split(",");
  // 定义更新字段样式的函数
  function updateFieldStyle(rowIndex, shouldHighlight) {
    var $row = jQuery("#field119982_" + rowIndex);
    $row.prop("disabled", true); // 禁用字段
    var $tr = $row.closest("tr");
    if ($tr.length) {
      if (shouldHighlight) {
        // 高亮样式
        $tr.css({
          "color": "red",
          "background-color": "yellow",
          "font-weight": "bold",
          "font-style": "italic"
        });
      } else {
        // 恢复默认样式
        $tr.css({
          "color": "",
          "background-color": "",
          "font-weight": "",
          "font-style": ""
        });
      }
    } else {
      console.error("无法找到对应的 tr 元素:", "#field119982_" + rowIndex);
    }
  }
  // 遍历第二个明细表的所有行
  for (var i = 0; i < detailArr02.length; i++) {
    var rowIndex02 = detailArr02[i];
    var replyseq02 = WfForm.getFieldValue("field129442_" + rowIndex02);
    // 遍历第一个明细表的所有行
    for (var j = 0; j < detailArr01.length; j++) {
      var rowIndex01 = detailArr01[j];
      var replyseq01 = WfForm.getFieldValue("field119982_" + rowIndex01);
      // 如果行序相同,则高亮显示
      if (replyseq01 === replyseq02) {
        updateFieldStyle(rowIndex01, true);
      }
    }
  }
});
</script>

效果图

优化后代码

<script>
jQuery(document).ready(function() {
  // 获取两个明细表的所有行索引
  var detailArr01 = WfForm.getDetailAllRowIndexStr("detail_1").split(",");
  var detailArr02 = WfForm.getDetailAllRowIndexStr("detail_2").split(",");
  
  // 创建一个哈希表来存储第一个明细表的值
  var detailMap01 = {};
  for (var i = 0; i < detailArr01.length; i++) {
    var rowIndex01 = detailArr01[i];
    var replyseq01 = WfForm.getFieldValue("field119982_" + rowIndex01);
    detailMap01[replyseq01] = rowIndex01;
  }

  // 定义更新字段样式的函数
  function updateFieldStyle(rowIndex, shouldHighlight) {
    var $row = jQuery("#field119982_" + rowIndex);
    $row.prop("disabled", true); // 禁用字段
    var $tr = $row.closest("tr");
    if ($tr.length) {
      if (shouldHighlight) {
        // 高亮样式
        $tr.css({
          "color": "red",
          "background-color": "yellow",
          "font-weight": "bold",
          "font-style": "italic"
        });
      } else {
        // 恢复默认样式
        $tr.css({
          "color": "",
          "background-color": "",
          "font-weight": "",
          "font-style": ""
        });
      }
    } else {
      console.error("无法找到对应的 tr 元素:", "#field119982_" + rowIndex);
    }
  }

  // 遍历第二个明细表的所有行
  for (var i = 0; i < detailArr02.length; i++) {
    var rowIndex02 = detailArr02[i];
    var replyseq02 = WfForm.getFieldValue("field129442_" + rowIndex02);
    
    // 如果在哈希表中找到了匹配项,则高亮显示
    if (detailMap01.hasOwnProperty(replyseq02)) {
      updateFieldStyle(detailMap01[replyseq02], true);
    }
  }
});
</script>

解释

  1. 哈希表(Hash Map):我们使用了一个哈希表 detailMap01 来存储第一个明细表的值。这使得在遍历第二个明细表时可以快速查找匹配项,从而将时间复杂度从

    标签:两表中,color,某行值,tr,明细表,WfForm,var,font
    From: https://blog.csdn.net/weixin_53242472/article/details/145117203

相关文章

  • 订单报表-利润明细表
    一、报表展示 ​​​二、公式1.本位币=订单单价*汇率2.单件成本=生产制单成本核算的出库的单件成本3.生产制单成本核算的出库的单件成本=(物料+工序+二次工艺+其他费用)/入库成品数4.成品入库成本=成品入库数量*单件成本5.成品出库金额=出库数*订单单价(本位币)6.成品......
  • 大数据-243 离线数仓 - 电商核心交易 增量数据导入 订单、订单明细、产品明细表
    点一下关注吧!!!非常感谢!!持续更新!!!Java篇开始了!目前开始更新MyBatis,一起深入浅出!目前已经更新到了:Hadoop(已更完)HDFS(已更完)MapReduce(已更完)Hive(已更完)Flume(已更完)Sqoop(已更完)Zookeeper(已更完)HBase(已更完)Redis(已更完)Kafka(已更完)Spark(已更完)Flink(已更完)ClickHouse(已更完)Kudu(......
  • 管家婆财贸ERP BR028.集团供应商运费往来明细表
    最低适用版本:C系列23.5插件简要功能说明:多组织机构适用统计各组织机构运费往来明细数据更多细节描述见下方详细文档插件操作视频:进销存类定制插件--集团供应商运费往来明细表插件详细功能文档:1.应用中心增加菜单【集团供应商运费往来明细表】a.b.查询......
  • E9-根据主表选择框值判断改变主表、明细表字段的属性
    一、流程表单开发过程中,标准的属性联动功能无法满足特定情况下的字段属性联动功能时,使用了以下JavaScript代码进行控制。二、代码实现了根据表单字段的值动态显示或隐藏特定字段,同时修改字段的属性。这在需要根据用户输入动态调整表单显示三、代码如下(供参考)//将字段名称转......
  • 生产订单执行明细表二开增加字段
    业务背景业务需求方案设计详细设计和实现  一、业务背景标准产品目前的逻辑是入库数量/计划数量=达成率,需要加入计划完成时间和数据/实际完成时间和数量=达成率。 二、业务需求过滤匡提供输入时间段,作为入库单的时间限制,算出入库数,实际达成率=入库数/计划数*100%。......
  • 5.FineReport制作明细表
    1.首先连接自带的sqlite数据库,具体方法点击下面的链接FineReport连接自带的sqlite数据库2.文件–新建普通报表3.新建数据库查询4.查询自带的销量表5.按shift键选中左下角的地区到销量字段,拖动到右边的格子中,选从左往右6.添加标题,并调整对齐,边框线,背景色和字体颜色......
  • [泛微OA]明细表1的字段赋值给明细表2的字段js实现方法
    文章目录概要整体架构流程技术名词解释技术细节小结概要明细表1的编码字段值自动赋值给明细表2的编码字段.整体操作触发过程保存或者提交后自动触发.技术名词解释添加明细时默认复制最后一行记录setDetailAddUseCopy:function(detailMark,needCopy)参数参数类......
  • EKP qhky 流程启接口addReview 支持明细表地址本传递多值
     问题描述: 流程启动接口(addReview),给第一行多人员地址本字段 传多个部门,后台代码解析不成功     /** * *20230703定制处理附件列表问题sjx * ***/ for(inti=0;i<attForms.size();i++){ S......
  • Odoo—货运管理—主表获取明细表数据计算结果
    在开发货运管理模块的时候,用到了两张表:主表[waybill]和明细表[waybill.detail],主表存放运单主体信息,明细表存放运单货物信息,如下图所示。上图中红色方框标记的是明细表中行内的运费计算结果;蓝色圆圈标记的是主表中的总运费,是明细表中三条货品数据的运费总和。在odoo中是如何实现......
  • layui按钮多选数据赋值到OA明细表
    实际效果:点击全选按钮,选择数据,点击获取选中行数据,自动赋值给明细表 因为利用layui生成按钮以及表格,所以需要引入layui。表格内容为固定数据,如需要实现动态分页数据,自行实现,或者查看我另一篇博客文章:https://www.cnblogs.com/stfzhuang/p/17676056.html实现JS:<script>......