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;
}
}
};