aqsj 发表于 2023-12-11 09:11:02

数据表计算问题求教

如图所示 :需要实现的需求是 在表单的select组件“专业类型” 中设置change事件
1、通过选择“专业类型”,返回该专业的对应“专业提成系率”
2、然后表单中的“基本提成率”(假设为一个固定值)与“专业提成率”相加得到"提成小计"


代码运行后遇到的问题如下:
1、选择“专业类型”可以正确返回该专业类型对应的“专业提成系数”
2、“基本提成率”与返回值“专业提成率”进行相加时,得出“提成小计”的值有如下问题:“基本提成率”总是与上一次选择返回的“专业提成率”的值进行相加的

举例:1、比如我打开页面后第1次选择“专业类型”为“基本提成”时(对应的返回值为0),得出的“提成小计”为 19 =19+0,这个看似正确的,但是可能并不正确,因为打开表单时,这里的默认值为0
             2、我2次重新选择“专业类型”为“安装审核”时(对应的返回值为10),得出的“提成小计”的值还是19 ,这里说明 返回值10并没有参与计算,参与计算的可能是上一次的返回值0
             3、我第3次重新选择“专业类型”为“钢筋审核”时(对应的返回值为11),得出的“提成小计”的值为29,这里证明参与计算的是上一次选择的返回值10

请教下管理大大 这个问题该如何解决呢
脚本代码:


var line = this.target.parentLine; //获取当前组件所在数据模板/数据表格的行(条目)对象
var zj_professionalType = line.getModule("zj_professionalType").getData(); //获取专业类型的值
var zj_basicCoefficient = line.getModule("zj_basicCoefficient").getData(); //获取基本提成率的值
var zj_professionalCoefficient = line.getModule("zj_professionalCoefficient").getData(); //获取专业提成率的值
var zj_totalCoefficient = line.getModule("zj_totalCoefficient").getData(); //获取提成率小计的值



switch (zj_professionalType) {
    case "基本提成":
         line.getModule("zj_professionalCoefficient").setData(0);
         line.getModule("zj_totalCoefficient").setData(parseFloat(zj_basicCoefficient) + parseFloat(zj_professionalCoefficient));
    break;
    case "安装审核":
         line.getModule("zj_professionalCoefficient").setData(10);
         line.getModule("zj_totalCoefficient").setData(parseFloat(zj_basicCoefficient) + parseFloat(zj_professionalCoefficient));
    break;
    case "钢筋审核":
         line.getModule("zj_professionalCoefficient").setData(11);
         line.getModule("zj_totalCoefficient").setData(parseFloat(zj_basicCoefficient) + parseFloat(zj_professionalCoefficient));
    break;
    case "景观审核":
         line.getModule("zj_professionalCoefficient").setData(12);
         line.getModule("zj_totalCoefficient").setData(parseFloat(zj_basicCoefficient) + parseFloat(zj_professionalCoefficient));
    break;
    case "装修审核":
         line.getModule("zj_professionalCoefficient").setData(13);
         line.getModule("zj_totalCoefficient").setData(parseFloat(zj_basicCoefficient) + parseFloat(zj_professionalCoefficient));
    case "安装编制":
         line.getModule("zj_professionalCoefficient").setData(14);
         line.getModule("zj_totalCoefficient").setData(parseFloat(zj_basicCoefficient) + parseFloat(zj_professionalCoefficient));
    break;
    case "钢筋编制":
         line.getModule("zj_professionalCoefficient").setData(15);
         line.getModule("zj_totalCoefficient").setData(parseFloat(zj_basicCoefficient) + parseFloat(zj_professionalCoefficient));
    break;
    case "景观编制":
         line.getModule("zj_professionalCoefficient").setData(16);
         line.getModule("zj_totalCoefficient").setData(parseFloat(zj_basicCoefficient) + parseFloat(zj_professionalCoefficient));
    case "装修编制":
         line.getModule("zj_professionalCoefficient").setData(17);
         line.getModule("zj_totalCoefficient").setData(parseFloat(zj_basicCoefficient) + parseFloat(zj_professionalCoefficient));
    break;
    case "跟踪审计":
         line.getModule("zj_professionalCoefficient").setData(18);
         line.getModule("zj_totalCoefficient").setData(parseFloat(zj_basicCoefficient) + parseFloat(zj_professionalCoefficient));
    break;
    case "项目管理":
         line.getModule("zj_professionalCoefficient").setData(19);
         line.getModule("zj_totalCoefficient").setData(parseFloat(zj_basicCoefficient) + parseFloat(zj_professionalCoefficient));
    break;
    case "全过程跟踪审计业务":
         line.getModule("zj_professionalCoefficient").setData(0);
         line.getModule("zj_totalCoefficient").setData(parseFloat(zj_basicCoefficient) + parseFloat(zj_professionalCoefficient));
    break;
    default:
         line.getModule("zj_professionalCoefficient").setData(0);
         line.getModule("zj_totalCoefficient").setData(0);                  
    break;
}



论坛管理员 发表于 2023-12-11 10:24:36

1、那您把数字字段为空时的默认值设置为空,不要设置为0,数字默认空时显示0,在右侧属性里可以修改
2、您赋值了10,但是没有重新获取,获取时字段存储的时0,您应该在赋值后再重新获取一下
3、3和2是同一个问题,获取的是上一次的数据

aqsj 发表于 2023-12-11 10:27:02

论坛管理员 发表于 2023-12-11 10:24
1、那您把数字字段为空时的默认值设置为空,不要设置为0,数字默认空时显示0,在右侧属性里可以修改
2、您 ...

好的谢谢

论坛管理员 发表于 2023-12-12 10:02:58

:handshake
页: [1]
查看完整版本: 数据表计算问题求教