在做中台项目添加数据的时候,自定义表单验证,如果在input框中输入的数据和同一节点下的名称相同,则提示不能重复名称。
具体实现思想:
- 首先获得选择添加数据的父节点的数据,这是判断子节点的依据,因为同一节点下他们的pid是相同的,都为父节点的id。
- 然后写自定义表单验证:
var checkName=async(rule,value,callback)=>{
1.调用api接口,获取所有数据,
const {data} = await getList()
2.筛选数组中的数据的pid有没有和父节点id相同的数据
const isOk = list.filter(item=>{
return data.id===item.pid
//然后在该结果的基础上进行二次筛选,判断是否存在同名的
}).some(item=>{
return item.name===value
})
//用三元表达式如果有相同的实例化一个错误,提示名称相同,如果没有通过验证
isOk ? callback(new Error(`存在相同的名称${value}!`)) : callback()
}