赞
踩
下图添加了样式区分一级二级嵌套,与上图是一样的
循环:<div v-for="(item, index) in form.producte" :key="index">
prop绑定::prop="`producte[${index}].name`"
规则绑定::rules="{
required: true,
message: '基本名称不能为空',
trigger: 'blur',
}"
循环:<div v-for="(item1, index1) in item.rules" :key="index1"> //item为上面一级中的item,下面的producte同理
prop绑定::prop="`producte[${index}].rules[${index1}].ruleName`"
规则绑定::rules="{
required: true,
message: '域名不能为空',
trigger: 'blur',
}"
<template> <div class="form"> <el-row> <el-col :span="12"> <el-card class="box-card"> <div slot="header" class="clearfix"> <span>卡片名称</span> <!-- 表单 --> <el-form ref="form" :model="form" :rules="rules" label-width="80px" label-position="top" size="mini" > <el-row> <el-col :span="12"> <el-form-item label="活动名称" prop="baseInfo.username"> <el-input v-model="form.baseInfo.username" style="width: 200px" ></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="活动密码" prop="baseInfo.pasword"> <el-input v-model="form.baseInfo.pasword" style="width: 200px" ></el-input> </el-form-item> </el-col> </el-row> <div v-for="(item, index) in form.producte" :key="index"> <el-divider content-position="left"></el-divider> <el-row> <el-form-item label="基本名称" :prop="`producte[${index}].name`" :rules="{ required: true, message: '基本名称不能为空', trigger: 'blur', }" > <el-input v-model="item.name" style="width: 200px" ></el-input> </el-form-item> </el-row> <div v-for="(item1, index1) in item.rules" :key="index1"> <el-row> <el-col :span="5"> <el-form-item label="规格" :prop="`producte[${index}].rules[${index1}].ruleName`" :rules="{ required: true, message: '域名不能为空', trigger: 'blur', }" > <el-input v-model="item1.ruleName" style="width: 100px" ></el-input> </el-form-item> </el-col> <el-col :span="8"> <el-col :span="10"> <el-form-item label="价格" :prop="`producte[${index}].rules[${index1}].isFixed`" :rules="{ required: true, message: '价格不能为空', trigger: 'change', }" > <el-select v-model="item1.isFixed" placeholder="请选择" > <el-option v-for="item1 in options" :key="item1.value" :label="item1.label" :value="item1.value" > </el-option> </el-select> </el-form-item> </el-col> <el-col :span="10"> <el-form-item :prop="`producte[${index}].rules[${index1}].price`" :rules="{ required: true, message: '价格不能为空', trigger: 'blur', }" > <div style="height: 38px"></div> <el-input v-model="item1.price"> <template slot="append">↑</template> </el-input> </el-form-item></el-col > </el-col> <el-col :span="4"> <el-form-item :prop="`producte[${index}].rules[${index1}].other`" :rules="{ required: true, message: '其他不能为空', trigger: 'blur', }" > <div style="height: 38px"></div> <el-input v-model="item1.other"> <template slot="append">↑</template> </el-input> </el-form-item></el-col > <el-col :span="5"> <div style="height: 38px"></div> <el-button type="warning" size="mini" @click="addRule(index, index1)" v-if="index1 == 0" >添加规则</el-button > <el-button type="warning" size="mini" @click="deleteRule(index, index1)" v-else >删除规则</el-button > </el-col> </el-row> </div> <el-row> <el-button size="mini" @click="createTable(index)" v-if="index == form.producte.length - 1" >创建新表</el-button > <el-button size="mini" @click="deleteTable(index)" v-else >删除表</el-button > </el-row> <el-divider content-position="left"></el-divider> </div> <el-form-item> <el-button type="primary" @click="submitForm('form')" >立即创建</el-button > <el-button @click="resetForm('form')">重置</el-button> </el-form-item> </el-form> </div> </el-card> </el-col> </el-row> </div> </template> <script> export default { data() { return { options: [ { value: 1, label: "固定", }, { value: 0, label: "非固定", }, ], value: "", form: { baseInfo: { username: "", pasword: "", }, producte: [ { name: "", rules: [ { ruleName: null, isFixed: null, price: null, other: null, }, ], }, ], }, rules: { "baseInfo.username": [ { required: true, message: "请输入活动名称", trigger: "blur" }, ], "baseInfo.pasword": [ { required: true, message: "请选择活动区域", trigger: "blur" }, ], date1: [ { type: "date", required: true, message: "请选择日期", trigger: "change", }, ], date2: [ { type: "date", required: true, message: "请选择时间", trigger: "change", }, ], type: [ { type: "array", required: true, message: "请至少选择一个活动性质", trigger: "change", }, ], resource: [ { required: true, message: "请选择活动资源", trigger: "change" }, ], desc: [{ required: true, message: "请填写活动形式", trigger: "blur" }], }, }; }, methods: { //删除规则 deleteRule(index, index1) { this.form.producte[index].rules.splice(index1, 1); }, //添加规则 addRule(index, index1) { console.log(index, index1); let producteItem = { name: "", ruleName: null, isFixed: null, price: null, other: null, }; this.form.producte[index]["rules"].push(producteItem); }, //创建新表 createTable(index) { let newTable = { name: "", rules: [ { ruleName: null, isFixed: null, price: null, other: null, }, ], }; this.form.producte.push(newTable); }, //删除信表 deleteTable(index) { this.form.producte.splice(index, 1); }, //提交表单验证 submitForm(formName) { this.$refs[formName].validate((valid) => { if (valid) { alert("submit!"); } else { console.log("error submit!!"); return false; } }); }, //重置表单 resetForm(formName) { this.$refs[formName].resetFields(); }, }, }; </script> <style scoped> </style>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。