作者:黄倩婧  历史版本: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) 
  }

});

查看配置效果

选择【表单管理】-【数据模版管理】,点击“编辑”按钮,进入数据模版,绑定表单,点击“预览”,如下图:

选中数据,点击“编辑”

点击子表的“添加”

选择数据,点击“确定”

点击“保存”

查看明细,子表数据已正常关联

查看对话框的数据,没有新增