本帖最后由 szjazz 于 2022-10-26 15:44 编辑
定义一个指令,其脚本:
[JavaScript] 纯文本查看 复制代码 var dtDetail=this.data.datatable_detail.data;
var dtSub=this.data.datatable.data;
var dl=dtSub.length;
for(var j=0;j<dl;j++){
this.form.get("datatable").deleteLine(0);
}
for(var i=0;i<dtDetail.length;i++){
var itemLine=this.form.get("datatable_detail").getLine(i);
var ItemExp=itemLine.get("txtItemExpname").getData();
var ItemSum=parseFloat(itemLine.get("txtItemSum").getData());
var newItem=0;
var dtSub=this.data.datatable.data;
for(var j=0;j<dtSub.length;j++){
var subLine=this.form.get("datatable").getLine(j);
var SubExp=subLine.get("txtSubExpname").getData();
var subSum=parseFloat(subLine.get("txtSubSum").getData());
var totalSum=subSum+ItemSum;
if(ItemExp==SubExp){
subLine.get("txtSubSum").setData(totalSum.toFixed(2));
newItem=0;
break;
}else
{
if(j==dtSub.length-1)
newItem=1;
}
}
if(newItem==1 || dtSub.length==0){
this.form.get('datatable').addLine({"txtSubExpname":ItemExp,"txtSubSum":ItemSum.toFixed(2)});
}
}
需求:表单有两个datatable,一个是明细datatable_detail,另一个是汇总相同项datatable
举一实例:(手工填写汇总的情况下)
而如果是执行上方的脚本进行计算,其结果是:
行是按相同的项自动汇总合并了,但最下方的datatable的total数值与正确的数值却相差一个最后一行的值,
实例一:误差值是下方的圈起值291.53
另一实例:误差值是下方的方框三条记录
思路上我自己看不出错在哪儿,没有实时同步计算?
|