表单全局函数

1. 功能简介

在表单设计中的表单设置中编辑全局函数以方便在单个表单中多次使用函数功能

2. 使用场景示例

比如需要在录入的多条子表单中进行数据计算并需要进行求和时,我们可以用过配置表单全局函数来实现相关功能。

3. 示例

  • 表单设计中,表单全局函数使用

    1. 在表单设计中的表单设置中找到表单全局函数。 全局函数
    2. 在弹窗中编写代码。 全局函数代码
    3. 如需要在表单中实现,需要在相应组件中的事件属性onchange中简单编写代码。
  • 表单全局函数(乘法示例) 表单设置-表单全局函数: 单价 * 数量 = 合计金额

  function recalcRowAmount(changeObj, rowId) {                    
	let numR = changeObj.getWidgetRef('quantity' + '@row' + rowId)  
	let priceR = changeObj.getWidgetRef('price' + '@row' + rowId) 
	let amountR = changeObj.getWidgetRef('amount' + '@row' + rowId) 
	let amountMoney = numR.getValue() * 1 * priceR.getValue() 
	amountMoney = Number(amountMoney).toFixed(2)
	amountR.setValue(amountMoney)
}

组件设置-事件事件属性-onChange-编写代码:

  1. 单价单行输入组件所需代码: recalcRowAmount(this, rowId)
  2. 数量计数组件所需代码: recalcRowAmount(this, rowId)
  3. 合计金额单行输入组件所需代码(会同时把结果引入总金额单行输入组件): let taRef = this.getWidgetRef('Totalamount') recalcSubFormTotal(subFormData, 'amount', taRef)

这些字段需要您进行自定义改写并在多次出现时保持一致保持一致:

  1. 与数量相关:numR,quantity.
  2. 与单价相关:priceR,price.
  3. 合计金额:amountR, amount.
  4. 单个函数的命名字段:recalcRowAmount

如何实现单行子表单中的明细表数据计算汇总 应用场景:如需要计算明细表中多个购买项目的总价,并需要在主表中显示。

  1. 在表单设置中找到表单全局函数并编写以下代码
function recalcSubFormTotal(subFormData, rowFieldName, totalFieldRef) {
	let tc = 0
	if (!!subFormData && (subFormData.length > 0)) {
		subFormData.forEach(function(row) {
			tc += row[rowFieldName] * 1
		})
	}
	tc = Number(tc).toFixed(2)
	totalFieldRef.setValue(tc)
}
  1. 在子表单的组件中找到需要汇总的数据字段所属组件并在onchange事件中根据以下代码为模板编写代码:
let taRef = this.getWidgetRef('hjje')
calculateTotal(subFormData, 'bczfje', taRef)

自定义使用中:

  1. 请将hjje替换为主表中需要显示汇总数据的组件所关联的数据字段名称。
  2. 请将bczfje替换为子表单中需要汇总的数据所属组件的关联数据字段名称。