作者:黄倩婧  历史版本:1  最后编辑:黄倩婧  更新时间:2025-08-14 15:48

适用版本:v3.6.0+;

业务场景描述:

1、有1个表:产品信息;
2、数据填报时,产品编号、产品名称2个字段联合校验唯一性。

表单管理配置步骤:

1、选择【表单管理】-【表单管理】,点击“添加/编辑”按钮,进入表单设计页面,产品信息的字段及表单设计如下图所示

2、设置唯一校验脚本脚本


完整脚本如下:

import com.lc.ibps.base.framework.table.model.Column;
import com.lc.ibps.base.db.table.model.DefaultColumn;

String tableName = "t_cpxx";// 表名
String name = "cpxx";//检验器名称,随便怎么写都可以,只要保证唯一即可
String fullName = "validation.cpxx";//检验器完整名称,随便怎么写都可以,只要保证唯一即可
boolean isSingleUniqueValue = false;// 是组合唯一还是单字段唯一,区别:SQL使用and还是or

Column pkProperty = new DefaultColumn("id", "id_", "主键");
Column[] uniqueProperties = new Column[2];// 需要校验唯一性的字段个数
uniqueProperties[0] = new DefaultColumn("chanPinBianHao", "chan_pin_bian_hao_", "产品编码");
uniqueProperties[1] = new DefaultColumn("chanPinMingCheng", "chan_pin_ming_", "产品名称");
// 校验的字段,chanPinBianHao为业务对象的字段编码,chan_pin_bian_hao_为业务对象的字段

validationScript.validationFull(tableName,data,name,fullName,isSingleUniqueValue,pkProperty,uniqueProperties);

3、设置表单脚本

完整脚本如下:

Object.assign(JForm, {
  //加载事件
  onLoad: function(form) {
  },
  //表单按钮前置事件
  beforeSubmit: function(form, action, postValue, callback) {
    if (action === 'save') {
      this.uniqueVerify(this.$form).then(res => {
        console.log(`res => `, res)
        if (res?.state === 200) {
          callback(true)
        } else {
          form.$message.closeAll()
          form.$message.warning(`产品编号【${form.getData('chanPinBianHao')}】和产品名称【${form.getData('chanPinMingCheng')}】已存在,请检查!`)
          callback(false)
        }
      }).catch(e => {
        console.log(`e => ${e}`)
        callback(false)
      })
    } else {
      callback(true)
    }
  }
});

数据模板配置步骤:

登录系统,选择【表单管理】-【数据模板管理】,进入设计页面,添加显示字段

查看配置效果

1、已存在产品编号(cp001)、产品名称(产品编号1)的数据

2、添加数据,输入产品编号(cp001)、产品名称(产品编号1),点击【保存】,弹出提示

3、添加数据,输入产品编号(cp001)、产品名称(产品编号),点击【保存】,保存成功