表单

说明:

1、必填项设置,在el-form上通过rules属性传入约定的验证规则, el-form-item标签上添加prop属性设置为需要检验的字段名,最后在return里面定义rules 
2、最外层 div 上的margin、padding控制div的外边距和内边距,四个值分别为上、右、下、左 
3、rules表单验证,el-form-item上添加prop验证规则,prop值为当前需要验证的表单的绑定值,demo中提供了手机号、email和密码长度验证 
4、使用clearable属性即可得到一个可清空的输入框 
5、resetFields方法重置表单,el-form-item 上设置prop属性即可重置表单,不设置不重置 
6、如果表单在dialog中,执行表单的验证提交,重置操作需要在外层加入 this.$nextTick(() => {}) -- 在DOM渲染结束后执行
this.$nextTick(() => {
   // 要执行的代码
})

7、通过 disabled 属性指定是否禁用 input 组件
<el-input placeholder="请输入内容" v-model="input1" :disabled="true"></el-input>

8、表单验证点击保存按钮的验证执行以下代码 -- 添加一下代码(并且在form上添加 ref 属性 -- ref="xxx" formName 即为传入的ref值)
this.$refs[formName].validate((valid) => {
    if (valid) {
        alert('submit!');
    } else {
        console.log('error submit!!');
        return false;
    }
});
<div style="padding: 0px 0px 0px 0px;margin: 0px 0px 0px 0px;">
      <el-form :inline="true" :rules="rules" :model="ruleForm" label-position="right" class="demo-form-inline conponentForm" label-width="90px" size="small">
      <el-row>
        <el-col :span="24">
          <el-form-item label="手机号 : " prop="phoneVerification">
            <el-input clearable size="small" v-model="ruleForm.phoneVerification" placeholder="请输入手机号"></el-input>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="24">
          <el-form-item label="邮箱 : " prop="emailVerification">
            <el-input size="small" v-model="ruleForm.emailVerification" placeholder="请输入邮箱"></el-input>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="24">
          <el-form-item label="密码 : " prop="numVerification">
            <el-input size="small" v-model="ruleForm.numVerification" placeholder="请输入"></el-input>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="24">
          <el-form-item label="日期 : " prop="dateSelection">
            <div class="searchTime" style="width: 100%">
              <el-date-picker
                size="small"
                v-model="ruleForm.dateSelection"
                type="date"
                placeholder="选择日期">
              </el-date-picker>
            </div>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="24">
          <el-form-item label="项目编号 : " prop="itemNumber">
            <el-input size="small" v-model="ruleForm.itemNumber" placeholder="请输入项目编号"></el-input>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="24">
          <el-form-item label="描述 : ">
            <el-input
              type="textarea"
              :rows="2"
              placeholder="请输入内容"
              v-model="ruleForm.textarea">
            </el-input>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="24">
          <el-form-item label="跟踪人 : ">
            <el-input size="small" v-model="ruleForm.trackingPeople" placeholder="请选择" suffix-icon="el-icon-search"></el-input>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="24">
          <el-row  :gutter="10">
            <el-col :span="12"><el-form-item label="开始日期 : ">
              <div class="searchTime" style="width: 100%">
                <el-date-picker
                  size="small"
                  v-model="ruleForm.beginTime"
                  type="date"
                  placeholder="选择日期">
                </el-date-picker>
              </div>
            </el-form-item></el-col>
            <el-col :span="12"><el-form-item label="结束日期 : ">
              <div class="searchTime" style="width: 100%">
                <el-date-picker
                  size="small"
                  v-model="ruleForm.endTime"
                  type="date"
                  placeholder="选择日期">
                </el-date-picker>
              </div>
            </el-form-item></el-col>
          </el-row>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="24">
          <el-form-item label="项目状态 : ">
            <el-select v-model="ruleForm.itemState" placeholder="请选择" size="small">
              <el-option
                v-for="item in options2"
                :key="item.value"
                :label="item.label"
                :value="item.value">
              </el-option>
            </el-select>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="24">
          <el-form-item label="性别 : ">
            <el-radio-group v-model="ruleForm.gender">
              <el-radio :label="0"></el-radio>
              <el-radio :label="1"></el-radio>
            </el-radio-group>
          </el-form-item>
        </el-col>
      </el-row>
      <el-row>
        <el-col :span="24">
          <el-form-item label="栏目 : ">
            <el-checkbox-group v-model="ruleForm.checkList">
              <el-checkbox label="0">旅游</el-checkbox>
              <el-checkbox label="1">音乐</el-checkbox>
              <el-checkbox label="2">美术</el-checkbox>
            </el-checkbox-group>
          </el-form-item>
        </el-col>
      </el-row>
     <el-row>
          <el-col :span="24">
           <el-form-item>
              <el-button @click="resetForm('ruleForm')">重置</el-button>
           </el-form-item>
          </el-col>
     </el-row>  
  </el-form>
</div>
import BaseCard from '@/components/BaseCard/BaseCard'
export default {
  components: {
    BaseCard
  },
  data() {
    var changePhone = (rule, value, callback) => {
      console.log(value)
      if (!value) {
        return callback(new Error('手机号不能为空'))
      }
      setTimeout(() => {
        var reg = /^[1][3,4,5,7,8][0-9]{9}$/
        var regus = new RegExp(reg)
        if (regus.test(value)) {
          callback()
        } else {
          callback(new Error('请输入正确的手机号'))
        }
      }, 100)
    }
    var changeEmail = (rule, value, callback) => {
      if (!value) {
        return callback(new Error('邮箱不能为空'))
      }
      setTimeout(() => {
        var reg = /^([a-zA-Z0-9._-])+@([a-zA-Z0-9_-])+(\.[a-zA-Z0-9_-])+/
        var regus = new RegExp(reg)
        if (regus.test(value)) {
          callback()
        } else {
          callback(new Error('请输入正确的邮箱'))
        }
      }, 100)
    }
    var changeNum = (rule, value, callback) => {
      if (!value) {
        return callback(new Error('密码不能为空'))
      }
      setTimeout(() => {
        // var reg = '^\\d{0,6}$'
        // var regus = new RegExp(reg)
        console.log(value.length)
        if (value.length > 6) {
          callback()
        } else {
          callback(new Error('密码长度必须大于6位'))
        }
      }, 100)
    }
    return {
      options2: [{
        value: '0',
        label: '开始'
      }, {
        value: '1',
        label: '未开始'
      }],
      ruleForm: {
        phoneVerification: '',
        emailVerification: '',
        numVerification: '',
        dateSelection: '',
        itemNumber: '',
        textarea: '',
        beginTime: '',
        endTime: '',
        itemState: '',
        trackingPeople: '',
        gender: 0,
        checkList: ['0']
      },
      rules: {
        phoneVerification: [ // 手机号验证
          { required: true, validator: changePhone, trigger: 'blur' }
        ],
        emailVerification: [ // 邮箱验证
          { required: true, validator: changeEmail, trigger: 'blur' }
        ],
        numVerification: [ // 长度验证
          { required: true, validator: changeNum, trigger: 'blur' }
        ],
        dateSelection: [
          { required: true, message: '请选择日期', trigger: 'blur' }
        ],
        itemNumber: [
          { required: true, message: '请输入项目编号', trigger: 'blur' }
        ]
      }
    }
  },
  methods: {
    resetForm(formName) {
      console.log(this.$refs)
      this.$refs[formName].resetFields()
    },
    timeClick() {
      if (!this.ruleForm.beginTime) {
        this.ruleForm.beginTime = ''
      }
      console.log(this.ruleForm.beginTime)
    }
  }
}
<style scoped>
   .searchTime > div{
     width: 100%;
   }
   .conponentForm >>> .el-form-item__content{
     width: calc(100% - 90px);
   }
   .conponentForm >>> .el-form-item{
     width: 100%;
   }
</style>