用的是公司基于ant design开发的ui组件,但是大部分都是一样的。直接上代码
<div v-for="(formItem,formIndex) in form.formInline" :key="formItem">
<a-form-model-item>
<a-form-model-item :prop="'formInline.' + formIndex + '.strategyName'" :rules="{ required: true, message: '请输入', trigger: 'blur' }" label="策略名称">
<a-input @change="inpName(formIndex)" class="w320" v-model="formItem.strategyName" placeholder="请输入">
</a-input>
</a-form-model-item>
<!-- 优先级 -->
<div >
<a-form-model-item :prop="'formInline.' + formIndex + '.ownOrderList'" :rules="ownRules.selctRules" style="display: inline-block;margin-bottom: 0px;">
<a-checkbox-group v-model="formItem.ownOrderList" >
</a-checkbox-group>
</a-form-model-item>
</div>
<!-- 权重 -->
<div class="ml17" >
<a-form-model-item :prop="'formInline.' + formIndex + '.ownweightOrderInfo'" :rules="ownRules.selctRules" style="display: inline-block;margin-bottom: 0px;">
<a-checkbox-group @change="(val)=>onweightOrderTypeChange(val,formIndex)" v-model="formItem.ownweightOrderInfo">
<div v-for="(i,inds) in formItem.weightOrderInfoList" :key="i.code" class="mb10">
<a-checkbox @change="(val)=>OwnCheckboxChange(val,formIndex,inds)" :value="i.code">
{{ i.name }}
</a-checkbox>
<a-form-model-item :prop="'formInline.'+formIndex +'.weightOrderInfoList.' + inds + '.weigth'" :rules="(i.enable == 'true' && formItem.weightOrderType=='custom')?ownRules.baseRules:null" >
<a-input :disabled="formItem.weightOrderType=='AI' || i.enable=='false'" v-model="i.weigth"></a-input>
</a-form-model-item>
</div>
</a-checkbox-group>
</a-form-model-item>
</div>
</a-form-model-item>
</div>
通过formIndex来拼接循环的prop字段,然后rules里面通过三元判断是否需要验证,不需要验证就为null
ownRules: {
baseRules: { required: true, message: '请输入', trigger: 'blur' },
selctRules: [
{ required: true, message: '请选择', trigger: 'blur' },
{ required: true, message: '请选择', trigger: 'change' },
],
}