1. 使用场景

在提交订单、入库等场景,需要在子表单多列选择组合是一样的时候去重,可参考本文档实现方式。

2. 单字段校验

2.1 表单设计

1.创建子表单,在里面添加一个组件

这里以“单行文本”组件演示

2.2 添加自定义校验规则

function validateRule(value) {
  const tableFieldId = '子表单ID'
  const fieldId = '组件ID'
  const tableValue = this.$(tableFieldId).getValue()
    .map(item => item[fieldId])
    .filter(item => !item == "")
  const valueSet = new Set(tableValue)
  return tableValue.length === valueSet.size
}

3. 多字段组合校验

2.1 表单设计

1.创建子表单,在里面添加自己要使用的列

这里我添加两个下拉单选做演示

2.2 添加自定义校验规则

TIP:每一个参与组合校验的子表单组件都要设置自定义校验函数,同一份代码复制粘贴即可。

1.选中要参与组合校验的列组件,右下角勾选“自定义函数”,点击按钮打开编辑框。

2.在编辑框粘贴下面的代码,并替换代码中的idListtableId为自己表单上的值。

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
}


点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部