作者:黄倩婧 历史版本:1 最后编辑:黄倩婧 更新时间:2025-06-09 14:17
把无关联关系的2个表数据在不新增新数据的情况下进行关联
适用版本:v3.6.0+;
业务场景描述:
1、存在2张表,一张为发票信息表,一张发票明细表;
2、2张表都有数据,但数据之间没有任何关系;
3、需要在页面编辑发票信息时,选择发票明细数据进行关联;
4、关联保存后,发票明细表数据不会进行新增,只是修改与信息表的关联字段,使2张表数据进行关联。
发票明细表设置为自定义对话框
具体创建步骤参考:创建对话框详细步骤
业务对象管理配置步骤:
1、登录系统,选择【表单管理】-【业务对象管理】,点击“添加/编辑”按钮,进入对象编辑页面,设置发票信息、发票明细关联字段,以便后面数据关联时只更新该关联字段,如下图:
表单管理配置步骤:
1、登录系统,选择【表单管理】-【表单管理】,点击“添加/编辑”按钮,进入表单设计页面,点击“表单脚本”,如下图:
2、子表设置新增时,直接选择明细表的数据
3、设置表单脚本
Object.assign(JForm,{
//加载事件
onLoad:function(form){
},
//表单按钮前置事件
beforeSubmit:function(form,action,postValue,callback){
//t_expense_invoice_item为发票明细表,直接点击左边进行替换即可
//当操作【保存】按钮时,把_subDataSaveSign由add改成upd
if (action === 'save') {
const list = form.getData('t_expense_invoice_item')
console.log('new$SubParams => ', form.getData('new$SubParams'))
list.forEach(item => {
if (item._subDataSaveSign === 'add') {
item._subDataSaveSign = 'upd'
}
//把主表id设置到子表外键字段
item.invoiceId = form.getData('id')
})
console.log('list => ', list)
form.getForm().handleSubId(this.models, this.code)
}
callback(true)
}
});
查看配置效果
选择【表单管理】-【数据模版管理】,点击“编辑”按钮,进入数据模版,绑定表单,点击“预览”,如下图:
选中数据,点击“编辑”
点击子表的“添加”
选择数据,点击“确定”
点击“保存”
查看明细,子表数据已正常关联
查看对话框的数据,没有新增