1. 前端脚本对页面数据补充

1.1. 简介

智元平台的前端脚本,是在单据新增、编辑、查看数据时,通过操作的动作,比如打开单据,字段编辑等动作,能够触发的自定义js代码(开发人员通过智元平台编写)。前端脚本可以在单据操作动作时,通过表单上的数据或查询数据库的数据,计算其他字段的数据值。本教程将介绍如果通过智元平台前端脚本来完成对页面数据的补充。

1.2. 案例实现

编辑单据时,填写根据字段A和字段B后,根据字段A和字段B来自动计算字段C。

根据出发时间来计算对应的补贴, 工作人员在因公在外出差期间给予的差旅补贴标准为:每人每天50元(早10、中/晚各20。

离京(出发),早于8.30当天给予50元补助,8.30之后当天给予40元补助。

返京(返回),早于17.30返京给予30元补助,17.30之后返京,给予50元补助。

1.2.1. 效果展示

步骤1、新增差旅报销单,选择差旅补贴中的开始日期,结束日期,出发补贴标准,结束日补贴标准。

步骤2,自动计算对应的补贴金额。

1.2.2. 功能实现

1、新增自定义档案【起止日补贴标准】,并分别维护其数据。

维护对应的补贴标准金额

2、在报销单出差补贴中,新增两个自定义字段【出发日补贴标准、结束日补贴标准】,并引用起止日补贴标准档案。

3、新建前端脚本calculationAmount,在新增或编辑时触发

4、脚本实现

thisApp.fieldOnChanged = async (ctx) => {
    const form = ctx.getFormContext().form;
    // subGridName表示子表名称,currentField 子表行数据,subGridLine子表所在行
    const { subGridName, currentField, subGridLine } = ctx.getCurrentContext();
    // 如果当前子表是 差旅补贴
    if (subGridName === 'reimburseAllowances') {
        // 获取开始日期
        var begindate = form.getSubGrid('reimburseAllowances').getRowAt(subGridLine).getField('startDate').value;
        // 获取结束日期
        var endDate = form.getSubGrid('reimburseAllowances').getRowAt(subGridLine).getField('endDate').value;
        // 获取出发补贴标准
        var beginstandard = form.getSubGrid('reimburseAllowances').getRowAt(subGridLine).getField('csChuFaRiBuTieBiaoZhunCc9u8800c2001').value;
       // 获取结束日补贴标准
        var endstandard = form.getSubGrid('reimburseAllowances').getRowAt(subGridLine).getField('csJieShuRiBuTieBiaoZhunCc9u88f0cfl01').value;

      //判断开始日期,结束日期,出发补贴标准,结束日补贴标准有值
        if (begindate != null && endDate != null && beginstandard != null && endstandard != null) {
           //出发日标准
            var days = qiqi.dayjs.diff(endDate,begindate,  'day');
            const bbz = ctx.getFormContext().entityQuery('CsQiZhiRiBuTieBiaoZhun');//CsQiZhiRiBuTieBiaoZhun 起止日补贴标准实体表,根据不同环境需要改变
            // 聚合查询出发日补贴标准
            bbzresp = await bbz.aggregate({
                last: {
                    csDangRiBuTieBiaoZhunCc9u81x0c2001: true
                },
                where: {
                    id: beginstandard.id,//出发日补贴标准
                }
            });
            //出发日当天补贴金额
            var bmoney = qiqi.util.get(bbzresp, 'last.csDangRiBuTieBiaoZhunCc9u81x0c2001', 0);
            // 聚合查询结束日标准
            ebzresp = await bbz.aggregate({
                last: {
                    csDangRiBuTieBiaoZhunCc9u81x0c2001: true
                },
                where: {
                    id: endstandard.id,//结束日补贴标准
                }
            });
            //计算结束日当天补贴金额
            var emoney = qiqi.util.get(ebzresp, 'last.csDangRiBuTieBiaoZhunCc9u81x0c2001', 0);
            //计算总的补贴金额
            var money = (days - 1) * 50 + bmoney + emoney;
            //赋值给原币机金额
            form.getSubGrid('reimburseAllowances').getRowAt(subGridLine).getField('originAmount').value = money;
        }
    }
};

results matching ""

    No results matching ""