作者:黄倩婧 历史版本: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)、产品名称(产品编号),点击【保存】,保存成功