1. 使用场景
在提交订单、入库等场景,需要在子表单多列选择组合是一样的时候去重,可参考本文档实现方式。
2. 单字段校验
2.1 表单设计
1.创建子表单,在里面添加一个组件
这里以“单行文本”组件演示
2.2 添加自定义校验规则
function validateRule(value) { const tableFieldId = '子表单ID' const fieldId = '组件ID' const tableValue = this.$(tableFieldId).getValue() .filter(item => !item[fieldId] == "") .map(item => item[fieldId]) const valueSet = new Set(tableValue) return tableValue.length === valueSet.size }
2.3 效果展示
3. 多字段组合校验
3.1 表单设计
1.创建子表单,在里面添加自己要使用的列
这里我添加两个下拉单选做演示
3.2 添加自定义校验规则
TIP:每一个参与组合校验的子表单组件都要设置自定义校验函数,同一份代码复制粘贴即可。
1.选中要参与组合校验的列组件,右下角勾选“自定义函数”,点击按钮打开编辑框。
2.在编辑框粘贴下面的代码,并替换代码中的idList和tableId为自己表单上的值。
function validateRule(value) { const tableId = 'tableField_l9nmw8iy' const idList = ['textField_l9nmw8iz', 'numberField_l9nmw8j0'] const tableValue = this.$(tableId).getValue() .filter(row => { // 多字段任意一个为空则跳过行 for (const id of idList) { if ('' + row[id] === '') { return false } } return true }) .map(row => { //当前行要校验的值拼接一个字符串 let str = '' idList.forEach(id => str += row[id]) return str }) //利用Set去重 const valueSet = new Set(tableValue) // console.log(tableValue) // console.log(valueSet) //如果长度相等则证明没有重复的 return tableValue.length === valueSet.size }
3.3 效果展示