对应表中的某字段,要求不能与数据库中的数据重复,那么如何做呢,jeecg-boot已经为我们封装好了,
场景:设备类型表,的设备类型编码不能重复,typeCode
表名:sui_base_device_type_info
字段:type_code
排除本记录的ID的数据
1:表单代码
<a-input placeholder="请输入设备类型编码" v-decorator="['typeCode', validatorRules.typeCode ]" v-model="typeCode" />
2:js区域定义校验规则:
validatorRules: {
typeCode: {
rules:
[
{
required: true,
message: '请输入设备类型编码!'
},
{validator: this.validateTypeCode}
]
},
}
3:引入APIdupicateCheck方法
import {duplicateCheck} from '@/api/api'
4:在数据域创建typeId保存ID
typeId:"",
5:如果是编辑,那么在进入编辑界面的时候将该记录的ID保存到typeId
/** 调用完edit()方法之后会自动调用此方法 */
editAfter() {
this.$nextTick(() => {
this.form.setFieldsValue(pick(this.model, 'typeCode', 'typeName', 'deviceModal', 'factoryId', 'deviceBigTypeId', 'databaseTable', 'pluginName', 'pluginHandler', 'pluginUrl', 'pluginVersion', 'protocoType', 'controllable', 'sortOrder', 'remark', ))
// 时间格式化
})
// 加载子表数据
if (this.model.id) {
//将ID赋值到typeId
this.typeId = this.model.id;
let params = { id: this.model.id }
this.requestSubTableData(this.url.deviceTypeItem.list, params, this.deviceTypeItemTable)
}
6:method区域的validateTypeCode方法
validateTypeCode(rule, value, callback){
if(!value){
callback();
}else{
var params = {
tableName: 'sui_base_device_type_info',
fieldName: 'type_code',
fieldVal: value,
dataId: this.typeId
};
duplicateCheck(params).then((res) => {
if (res.success) {
callback();
} else {
callback("设备类型编码已存在!")
}
})
}
},
效果:
成功!