如何实现在主表单行文本中连续扫码,然后在子表单中自动新增明细
扫码入口组件绑定onchange事件如下:
export function onChange({ value, actionType }) {
if (this.state.debounceTimer) {
clearTimeout(this.state.debounceTimer);
}
const debounceTimer = setTimeout(() => {
// console.log('有防抖', value);
if (actionType != 'setValue') {
const tableField = this.$('tableField_m3ije1eo');//需替换成子表单的唯一标识
// 获取表格字段中的所有行数据
let tableData = tableField.getValue();
// 获取最后一行数据
let lastRowIndex = tableData.length > 0 ? tableData.length - 1 : null;
const lastRow = tableData.length > 0 ? tableData[tableData.length - 1] : null;
// 判断最后一行是否为空
// let isLastRowEmpty = lastRow && !Object.values(lastRow).some(val => val !== '');
//判断最后一行的条码单行文本是否为空
if (lastRow.textField_m3ije1ep=='') {
// console.log(`The last row is empty.`);
lastRow['textField_m3ije1ep'] = value;//需替换成子表单内单行文本的唯一标识
// 更新最后一行数据
tableData[lastRowIndex] = lastRow;
}
else {
// 创建一个新行
let newRow = {
'textField_m3ije1ep': value, // 新行中的字段,赋值给它
};
tableData.push(newRow); // 将新行添加到表格数据中
}
// 更新整个表格字段
tableField.setValue(tableData);
}
this.setState({
debounceTimer: null,
});
},1500);
this.setState({
debounceTimer,
});
}
子表绑定onchange事件:
export function onChange2({ value, extra }){
//将扫码入口的单行文本组件赋空
this.$('textField_m3idjl8t').setValue('');
}
数据源变量配置如图:
赞2
踩0