template部分
<div class="form-items" v-for="(data, index) in form.list" :key="index">
<el-form-item
label="共用单位"
:rules="rules['attribute']"
:prop="'list.'+ index + '.attribute'"
></el-form-item>
</div>
data部分
rules: {
attribute: [
{ required: true, message: "请选择", trigger: "change" },
// 自定义校验
{ required: true, validator: (rule, value, callback) => {
if (value && this.form.list) {
let arr = this.form.list.reduce((r, v, i) => {
return r.concat(v.attribute === value? i : [])
}, [])
if (value === this.form.institutionId) {
callback(new Error('共用单位为本单位,请选择其他单位'))
} else if (arr && arr.length > 1 && arr instanceof Array) {
callback(new Error('单位填写重复,请重新选择'))
} else {
callback()
}
}
}, trigger: "change" },
],
}