将明细表各类型合计赋值到主表类型合计中
1、展示效果
明细表字段“类型”下拉框选项如下:
将各类型合计赋值到主表类型合计中
2、实现方法
方法一:通过代码块实现
注意
①绑定明细表类型、预计金额字段的值改变事件,每当有值发生改变,就需要重新计算供应商1、供应商2、供应商3的合计,如果不绑定这两个字段的话,会出现计算不及时或计算错误的问题。
②当有明细行被删除时,也需要重新计算供应商1、供应商2、供应商3的合计,比如删除了供应商1的明细行,如果不重新计算,那么供应商1的值还是被删之前的值,合计错误。
<script>
var gys1Field = WfForm.convertFieldNameToId("gys1");
var gys2Field = WfForm.convertFieldNameToId("gys2");
var gys3Field = WfForm.convertFieldNameToId("gys3");
var lxField = WfForm.convertFieldNameToId("lx","detail_1");
var yjjeField = WfForm.convertFieldNameToId("yjje","detail_1");
//获取供应商1、供应商2、供应商3的合计
function getSum(){
var gy1 = 0.00,gy2 = 0.00,gy3 = 0.00;
var rows = WfForm.getDetailAllRowIndexStr("detail_1");
var rowsArr = rows.split(',');
for(var i = 0;i<rowsArr.length;i++){
var lxValue = WfForm.getFieldValue(lxField+"_"+rowsArr[i]);
var yjjeValue = WfForm.getFieldValue(yjjeField+"_"+rowsArr[i]);
var yjjeNum = isNaN(parseFloat(yjjeValue)) ? 0.00 :parseFloat(yjjeValue) ;
if(lxValue == "0"){
gy1 = gy1 + yjjeNum;
}else if(lxValue == "1"){
gy2 = gy2 + yjjeNum;
}else if(lxValue == "2"){
gy3 = gy3 + yjjeNum;
}else{
}
}
WfForm.changeFieldValue(gys1Field,{value:gy1});
WfForm.changeFieldValue(gys2Field,{value:gy2});
WfForm.changeFieldValue(gys3Field,{value:gy3});
}
debugger;
jQuery(document).ready(function(){
WfForm.bindDetailFieldChangeEvent(yjjeField+","+lxField,function(id,rowIndex,value){
getSum();
});
WfForm.registerAction(WfForm.ACTION_DELROW+"2", function(arg){
getSum();
});
})
</script>
方法二、通过公式实现
1.明细表新增gys1、gys2、gys3三个字段,用来存储每行中供应商1、供应商2、供应商3的值,并且设置字字段规则,具体如下图所示(记得勾选“合计”选项)
2.进入显示模板设置明细表字段“gys1”的公式,触发动作一定要添加“载入时”,具体设置如下
3.效果如下