<el-form ref="dataFormRef" :model="state.formData" :rules="rules" class="margin-top">
<el-form-item :key="label.key" :label="'资产标签-' + index" :prop="'labels.' + index + '.value'" :rules="rules.label">
<el-input class="label-input" v-model.trim="label.value" :disabled="state.mode === 'ReadOnly'" placeholder="adn_offline">
</el-input>
</el-form-item>
</el-form>
value是我们input中输入的值
// 自定义资产标签校验规则
const labelRule = (rule: any, value: any, callback: any) => {
//数组中是否有label的值等于输入值,有则返回true,无则返回false
const isIndexOf = state.newList.some(item=>{
if (item.label==value) {
return true
} else {
return false
}
})
if(isIndexOf){
callback()
}else{
callback(new Error("资产标签输入错误,请重新输入"))
}
}
// 表单校验
const rules = {
label: [
{ required: true, message: '资产标签不能为空', trigger: 'blur' },
{ pattern: /^([a-z]|[A-Z]|\d|-|_){5,}/, message: '非法标签' },
{ validator: labelRule, trigger: 'blur'}
] // 至少5个有效字符
}