js把页面明细行数据多个字段组成数组,并获取某个字段值最大和其次大的数据赋值到文本框;

本文介绍了一种在前端页面上实现明细表数据汇总的方法,通过循环明细表将分类和付款金额存储到数组中,合并重复分类并计算总金额,最后按金额排序并展示前两名的分类及金额。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要求:前台添加页面的明细行中,有列下拉框选择分类和一列付款金额的输入框,明细行上面有两个输入框,要求在明细行选择的分类和付款金额中筛选付款金额之和第一高的的分类和金额、第二高的分类和金额自动复制到上面的两个输入框中;

思路:循环明细表,把所有的明细表的分类和付款金额放到json数组中,然后循环json数组把分类重复的付款金额相加并合并,然后根据付款金额从高到底排序,那么付款金额最高和第二高的分类信息也就能在json数组中获取绑定到上面的文本框了;

此代码的实现在bpm平台上实现有所不同:(效果图如下)

代码分享:

 //获取明细所有分类的最大付款额和分类名称(相同分类的要加起来)
    function leibiezonge(){

        var list='';
        var detaillist=$('[id=XDropDownList3]');
        var valuelist=[];
        var newlist=[];
        var map={};

       //循环明细表
        for(var i=0;i<detaillist.length;i++){
            //获取分类名称
            var newid = $(detaillist[i]).find(".yz-xform-field-ele")[0].value;

            //获取分类之后的付款金额
            var newvalue=$(detaillist[i]).parent("div").parent("td").parent("tr").children("td").eq(7).children("#XTextBox14").find(".yz-xform-field-ele")[0].value;

           //全部放进数组中
            valuelist.push({
                leibie: newid,
                jine: newvalue

            });

        }

        //这是如果有重复的分类就合并分类并付款金额相加
        if(valuelist!=undefined){
            for(var i=0;i<valuelist.length;i++){
               var ai=valuelist[i];
               if(!map[ai.leibie]){
                 newlist.push({
                    leibie: ai.leibie,
                    jine: ai.jine
                 });
                 map[ai.leibie] = ai;
               }else{
                 for(var j=0;j<newlist.length;j++){
                    var ji=newlist[j];
                    if(ji.leibie==ai.leibie){
                       ji.jine=parseInt(ai.jine==''?"0":ai.jine)+parseInt(ji.jine==''?"0":ji.jine);
                       break;
                    }
                 }
               }
            }
        }

       //这是根据付款金额从高到低的排序
        function getSortFun(order, sortBy) {
            var ordAlpah = (order == 'asc') ?'>' : '<';
            var sortFun = new Function('a', 'b', 'return a.'+ sortBy + ordAlpah + 'b.'+ sortBy + '?1:-1');
            return sortFun;
        }

        newlist.sort(getSortFun('desc','jine'));
        var attrfenlei=newlist[0].leibie;

        var attrjine=newlist[0].jine==''?"0":newlist[0].jine;

       //为所需要的文本框赋值

        $("#XTextBox4").find(".yz-xform-field-ele").attr('value', attrjine);
        $("#XLabel3").find(".yz-xform-field-ele").html(attrfenlei);
        if(newlist[1]!=undefined){
          $("#XTextBox5").find(".yz-xform-field-ele").attr('value', newlist[1].jine==''?"0":newlist[1].jine);
           $("#XLabel4").find(".yz-xform-field-ele").html(newlist[1].leibie);
        }


        //return newlist[0].leibie+(newlist[0].jine==''?"0":newlist[0].jine);
    }

 

要在E9表单中联动修改特定明细行的字段使用API接口获取字段ID,需要掌握几个关键函数和它们的使用方法。首先,`changeFieldValue`函数允许你修改表单中的特定字段,这对于联动操作至关重要。其次,`convertFieldNameToId`函数将字段名称转换为对应的ID,这对于动态地引用字段非常有用。最后,`getFieldValue`函数用于获取单个字段的当前。 参考资源链接:[E9表单建模:修改单字段与基础操作接口实战](https://wenku.youkuaiyun.com/doc/4s0pqbr5vy?spm=1055.2569.3001.10343) 在具体操作时,你需要先通过`convertFieldNameToId`函数获取你想要修改的字段的ID。如果这个字段位于明细表中,你需要在字段ID前加上明细行号,格式通常为`field${字段ID}_${明细行号}`。然后,使用`changeFieldValue`函数来设置新,这个函数接受两个参数:`fieldMark`(即你刚刚获取字段ID)和`valueInfo`(一个包含新JSON对象)。对于文本框类型的字段,还可以通过设置`showhtml`属性来控制显示。 以下是一个示例代码,演示了如何使用这些API来修改明细表中的字段: ```javascript // 假设我们要修改明细表中第一个明细行的'zs'字段 var fieldId = ModeForm.convertFieldNameToId( 参考资源链接:[E9表单建模:修改单字段与基础操作接口实战](https://wenku.youkuaiyun.com/doc/4s0pqbr5vy?spm=1055.2569.3001.10343)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值