前端实现动态模板框添加信息(ElementUI动态增减表多项)

1 项目需求

        • 在新增修改中需要多添加多成员信息,用ElementUI动态增减表多项来实现

在新增修改中需要多添加多成员信息,用ElementUI动态增减表多项来实现

ElementUi展示代码

        • 在新增修改中需要多添加多成员信息,用ElementUI动态增减表多项来实现

效果展示:

<el-form :model="dynamicValidateForm" ref="dynamicValidateForm" label-width="100px" class="demo-dynamic">
  <el-form-item
    prop="email"
    label="邮箱"
    :rules="[
      { required: true, message: '请输入邮箱地址', trigger: 'blur' },
      { type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }
    ]"
  >
    <el-input v-model="dynamicValidateForm.email"></el-input>
  </el-form-item>
  <el-form-item
    v-for="(domain, index) in dynamicValidateForm.domains"
    :label="'域名' + index"
    :key="domain.key"
    :prop="'domains.' + index + '.value'"
    :rules="{
      required: true, message: '域名不能为空', trigger: 'blur'
    }"
  >
    <el-input v-model="domain.value"></el-input><el-button @click.prevent="removeDomain(domain)">删除</el-button>
  </el-form-item>
  <el-form-item>
    <el-button type="primary" @click="submitForm('dynamicValidateForm')">提交</el-button>
    <el-button @click="addDomain">新增域名</el-button>
    <el-button @click="resetForm('dynamicValidateForm')">重置</el-button>
  </el-form-item>
</el-form>
<script>
  export default {
    data() {
      return {
        dynamicValidateForm: {
          domains: [{
            value: ''
          }],
          email: ''
        }
      };
    },
    methods: {
      submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            alert('submit!');
          } else {
            console.log('error submit!!');
            return false;
          }
        });
      },
      resetForm(formName) {
        this.$refs[formName].resetFields();
      },
      removeDomain(item) {
        var index = this.dynamicValidateForm.domains.indexOf(item)
        if (index !== -1) {
          this.dynamicValidateForm.domains.splice(index, 1)
        }
      },
      addDomain() {
        this.dynamicValidateForm.domains.push({
          value: '',
          key: Date.now()
        });
      }
    }
  }
</script>

按照我的需求实现代码

        • 在新增修改中需要多添加多成员信息,用ElementUI动态增减表多项来实现

  1. 组件中代码
 <!-- 固定项目 -->
              <el-form ref="dynamicValidate" :model="dynamicValidate" size="small" label-width="120px" class="demo-dynamic" :label-position="labelPosition">
                <h2>家庭主要成员及重要社会关系</h2>
                <el-form-item label="称谓" prop="appellation">
                  <el-input v-model="dynamicValidate.appellation" style="width: 340px;" />
                </el-form-item>
                <el-form-item label="姓名" prop="usernames">
                  <el-input v-model="dynamicValidate.username" style="width: 340px;" />
                </el-form-item>
                <el-form-item label="出生年月" prop="familyBirthday">
                  <el-date-picker v-model="dynamicValidate.familyBirthday" type="datetime" style="width: 340px;" />
                </el-form-item>
                <el-form-item label="政治面貌" prop="politics">
                  <el-input v-model="dynamicValidate.politics" style="width: 340px;" />
                </el-form-item>
                <el-form-item label="工作单位及职务" prop="workUnit">
                  <el-input v-model="dynamicValidate.workUnit" style="width: 450px;" />
                </el-form-item>
                <!-- 动态增加项目 -->
                <!-- 不止一个项目,用div包裹起来 -->
                <div v-for="(item, index) in dynamicValidate.dynamicItem" :key="index" :label-position="labelPosition">
                  <el-form-item
                    label="称谓"
                    :prop="'dynamicItem.' + index + '.appellation'"
                    :rules="{
                      required: true, message: '称谓不能为空', trigger: 'blur'
                    }"
                  >
                    <el-input v-model="item.appellation" style="width: 340px;" />
                  </el-form-item>
                  <el-form-item
                    label="姓名"
                    :prop="'dynamicItem.' + index + '.username'"
                    :rules="{
                      required: true, message: '姓名不能为空', trigger: 'blur'
                    }"
                  >
                    <el-input v-model="item.username" style="width: 340px;" />
                  </el-form-item>
                  <el-form-item
                    label="出生年月"
                    :prop="'dynamicItem.' + index + '.familyBirthday'"
                    :rules="{
                      required: true, message: '出生年月不能为空', trigger: 'blur'
                    }"
                  >
                    <el-date-picker v-model="item.familyBirthday" type="datetime" style="width: 340px;" />
                  </el-form-item>
                  <el-form-item
                    label="政治面貌"
                    :prop="'dynamicItem.' + index + '.politics'"
                    :rules="{
                      required: true, message: '政治面貌不能为空', trigger: 'blur'
                    }"
                  >
                    <el-input v-model="item.politics" style="width: 340px;" />
                  </el-form-item>
                  <el-form-item
                    label="工作单位及职务"
                    :prop="'dynamicItem.' + index + '.workUnit'"
                    :rules="{
                      required: true, message: '工作单位及职务不能为空', trigger: 'blur'
                    }"
                  >
                    <el-input v-model="item.workUnit" style="width: 340px;" />
                  </el-form-item>
                  <el-form-item>
                    <i class="el-icon-delete" @click="deleteItem(item, index)" />
                  </el-form-item>
                </div>
                <el-button type="success" plain @click="addItem">添加成员</el-button>
                <el-button type="success" plain @click="resetForm('dynamicValidate')"> 重 置 </el-button>
              </el-form>
  1. data中
// 添加家庭成员初始化
      dynamicValidate: {
        appellation: '',
        username: '',
        familyBirthday: '',
        politics: '',
        workUnit: '',
        dynamicItem: []
      },
  1. methods中
// 添加家庭成员
    addItem() {
      this.dynamicValidate.dynamicItem.push({
        appellation: '',
        username: '',
        familyBirthday: '',
        politics: '',
        workUnit: ''
      })
    },
    deleteItem(item, index) {
      this.dynamicValidate.dynamicItem.splice(index, 1)
    },
    resetForm(formName) {
      this.$refs[formName].resetFields()
    },

你可能感兴趣的:(JAVA)