如何实现在主表单行文本中连续扫码,然后在子表单中自动新增明细
已找到解决方案,只需在主表的单行文本中绑定onChange动作,然后用以下代码可以实现,供大家参考。
/**
* textField onChange
* @param value 当前值
*/
export function onChange({ value, actionType }) {
// 避免给扫码入口置空时又触发了change事件中的代码
if (actionType != 'setValue') {
var tableField = this.$('tableField_lzjjuun1');//需替换成子表单的唯一标识
// 获取表格字段中的所有行数据
var tableData = tableField.getValue();
// 获取最后一行数据
var lastRowIndex = tableData.length > 0 ? tableData.length - 1 : null;
var lastRow = tableData.length > 0 ? tableData[tableData.length - 1] : null;
// 判断最后一行是否为空
var isLastRowEmpty = lastRow && !Object.values(lastRow).some(val => val !== '');
if (isLastRowEmpty) {
console.log(`The last row is empty.`);
lastRow['textField_lzjjuun3'] = value;//需替换成子表单内单行文本的唯一标识
// 更新最后一行数据
tableData[lastRowIndex] = lastRow;
}
else {
console.log(`The last row is not empty.`);
// 创建一个新行
var newRow = {
'textField_lzjjuun3': value, // 新行中的字段,赋值给它
};
tableData.push(newRow); // 将新行添加到表格数据中
}
// 更新整个表格字段
tableField.setValue(tableData);
// 手机可能会比较卡,延迟清空操作,以保障成功
setTimeout(() => {
this.$('textField_lzjjuun0').setValue('');//需替换成主表单行文本的唯一标识
console.log(`textField_lzjjuun0 has been cleared.`);
}, 100); // 延迟100毫秒(可以根据需要调整)
}
}
赞4
踩0