1. 功能描述

在列表当中,需要对列表的某一行数据进行统计,例如采购通知单,需要统计一下总数量。

2. 操作步骤

在列表配置是否统计行,勾选是

保存&下一步,切换到页面js函数,点击【插入统计行函数】

案例:比如 我有张表有四个字段:采购申请单号、物料名称(铁矿石、铜矿石)、采购时间、采购数量 某个特点时间段内的不同物料名称的采购数量总计(不分页实现行统计)

 drawsummarycell(e){ 
          var table=e.sender;
          var data=e.data;
          var column=e.column;
          var field=e.field;
          if(field=='F_WLMC'){
            var json={};
            for(var i=0;i<data.length;i++){
                var wlmc=data[i].F_WLMC;
                var sl=data[i].F_SL;
                if(json[wlmc]){
                    json[wlmc]=json[wlmc]+sl;
                }else{
                    json[wlmc]=sl;
                }
            }
            for(var key in json){
                e.cellHtml+=key+"的总计:"+json[key]+";";
            }
          }
        },

实现分页行统计,这里结合自定义查询使用

drawSummaryFun(e){
        //赋值e.cellHtml来展示统计行内容
        //e:{sender,data,column,field,cellHtml,width}
          var table=e.sender;
          var data=e.data;
          var column=e.column;
          var field=e.field;
          if(field=="B"){

/**
 * @param  */ 
 debugger;
this.invokeCustomQuery("A",{"B":this.table.queryParam.Q_A_S_EQ},function(total){
    debugger;
    e.cellHtml=total[0].amount
   //返回的数据 data:[{amount}]
});
          }
        }

3. 不分页统计某列的值

数据列表统计不分页的某个字段的所有值,大体有两个步骤:
①需要结合自定义查询,对条件进行过滤;
②在数据列表中使用drawSummaryFun函数进行统计;

3.1 自定义查询配置过滤条件

本次案例以公司库存明细列表中统计各商品库存数量为例子:

① 配置过滤的字段

select sum(purchaseNum)goodss,goodsName from w_goods where 1=1
<#if goodsName??>
and goodsName='${goodsName}'
</#if>
GROUP BY goodsName  

②选择返回字段,和条件字段

③预览自定义查询的结果是否正确

3.2 数据列表js中配置

drawSummaryFun统计函数
插入自定义查询接口
$watch监听触发事件
①先配置搜索条件

②js代码如下

③Tips:搜索框参数 queryParam.Q_goodsName_S_EQ HTML中可以查看


drawSummaryFun(e){
        var obj=e.sender;
        var data=e.data;
        var column=e.column;
        var field=e.field;
        if(field=='PURCHASENUM'){
            var self_=this;
            this.$watch("table.queryParam.Q_goodsName_S_EQ",function(val){
self_.invokeCustomQuery("goodsNum",{"goodsName":val},function(total){
    var count=0;
    for(var i=0;i<total.length;i++){
        count+=total[i].goodss;
    }
    e.cellHtml=count;
            })})
this.invokeCustomQuery("goodsNum",{},function(total){
    var count=0;
    for(var i=0;i<total.length;i++){
        count+=total[i].goodss;
    }
    e.cellHtml=count;

});
        }
        }
```传多个搜索条件
drawSummaryFun(e){
        var obj=e.sender;
        var data=e.data;
        var column=e.column;
        var field=e.field;
        if(field=='CGSL'){
        var self_=this;

if(this.queryParam.Q_SPMC_S_EQ!=''&& this.queryParam.Q_SPBH_S_EQ!=''){

this.invokeCustomQuery("goodsNum",{"SPMC":this.queryParam.Q_SPMC_S_EQ,"SPBH":this.queryParam.Q_SPBH_S_EQ},function(total){
           var count=0;
           for(var i=0;i<total.length;i++){
                count+=total[i].CGSL;
      }
         e.cellHtml=count;
   //返回的数据 data:[{SPMC,SPBH,CGSL}]
      });
        }

if(this.queryParam.Q_SPMC_S_EQ!=''){

this.invokeCustomQuery("goodsNum",{"SPMC":this.queryParam.Q_SPMC_S_EQ},function(total){

       var count=0;
           for(var i=0;i<total.length;i++){
                count+=total[i].CGSL;
      }
         e.cellHtml=count;
   //返回的数据 data:[{SPMC,SPBH,CGSL}]
});

        }
if(this.queryParam.Q_SPBH_S_EQ!=''){

this.invokeCustomQuery("goodsNum",{"SPBH":this.queryParam.Q_SPBH_S_EQ},function(total){
      var count=0;
           for(var i=0;i<total.length;i++){
                count+=total[i].CGSL;
      }
         e.cellHtml=count;
   //返回的数据 data:[{SPMC,SPBH,CGSL}]
});

        }


if(this.queryParam.Q_SPMC_S_EQ=='' && this.queryParam.Q_SPBH_S_EQ==''){

    this.invokeCustomQuery("goodsNum",{},function(total){
         var count=0;
         for(var i=0;i<total.length;i++){
             count+=total[i].CGSL;
    }
      e.cellHtml=count;
   //返回的数据 data:[{SPMC,SPBH,CGSL}]
   });
        }
        }
        }

④ 结果如图:

文档更新时间: 2022-04-27 10:25   作者:zhuyunyun