el-form实现其中一个填写即可的校验

 

 

      <el-form
        ref="form"
        :model="formData"
        :rules="formRules"
        label-width="130px"
      >
        <el-row :gutter="24">
          <el-col :span="12">
            <el-form-item label="司机姓名 :" prop="driverName">
              <el-input
                :disabled="isDisable"
                v-model="formData.driverName"
                placeholder="请输入司机姓名"
              />
            </el-form-item>
          </el-col>

          <el-col :span="12">
            <el-form-item label="联系方式 :" prop="driverPhone">
              <el-input
                :disabled="isDisable"
                v-model="formData.driverPhone"
                placeholder="请输入联系方式"
              />
            </el-form-item>
          </el-col>

          <el-col :span="12">
            <el-form-item label="身份证号 :" prop="driverCard">
              <el-input
                :disabled="isDisable"
                v-model="formData.driverCard"
                placeholder="请输入身份证号"
              />
            </el-form-item>
          </el-col>

          <el-col :span="12">
            <el-form-item label="归属部门 :" prop="deptId">
              <el-select
                :disabled="isDisable"
                v-model="formData.deptId"
                @change="deptChange"
                filterable
                placeholder="请选择归属部门"
              >
                <el-option
                  v-for="(item, index) in deptList"
                  :key="index"
                  :label="item.deptName"
                  :value="item.deptId"
                />
              </el-select>
            </el-form-item>
          </el-col>

          <el-col :span="12">
            <el-form-item label="驾驶证编号 :" prop="driverNum">
              <el-input
                :disabled="isDisable"
                v-model="formData.driverNum"
                placeholder="请输入驾驶证编号"
              />
            </el-form-item>
          </el-col>

          <el-col :span="12">
            <el-form-item label="过期时间 :" prop="driverExpireTime">
              <el-date-picker
                :disabled="isDisable"
                v-model="formData.driverExpireTime"
                style=""
                type="datetime"
                value-format="yyyy-MM-dd HH:mm:ss"
                format="yyyy-MM-dd HH:mm:ss"
                placeholder="选择日期"
              />
            </el-form-item>
          </el-col>

          <el-col :span="12">
            <el-form-item label="ic卡号 :" prop="cardId">
              <el-select
                v-model="formData.cardId"
                :disabled="isDisable"
                filterable
                placeholder="请输入ic卡号"
              >
                <el-option
                  v-for="(item, index) in cardNumList"
                  :key="index"
                  :label="item.cardNum"
                  :value="item.id"
                />
              </el-select>
            </el-form-item>
          </el-col>

          <el-col :span="12">
            <el-form-item label="指纹编号 :" prop="printCode">
              <el-input
                :disabled="isDisable"
                v-model="formData.printCode"
                placeholder="请输入指纹编号"
              />
            </el-form-item>
          </el-col>

          <el-col :span="12">
            <el-form-item label="人脸编号 :" prop="faceCode">
              <el-input
                :disabled="isDisable"
                v-model="formData.faceCode"
                placeholder="请输入人脸编号"
              />
            </el-form-item>
          </el-col>

          <el-col :span="24">
            <el-form-item label="备注 :" prop="remark">
              <el-input
                :disabled="isDisable"
                v-model="formData.remark"
                placeholder="请输入备注"
              />
            </el-form-item>
          </el-col>

          <el-col :span="24">
            <el-form-item label="图片 :" prop="image">
              <multipleUpload
                v-if="isShowImgVideo"
                :disabled="detailsShow"
                :limit-count="4"
                :img-list="imgList"
                :submit-img="submitImg"
                @getImg="getImgUpload"
              />
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>

  data() {
    return {
        formData: {},
 formRules: {
        driverName: [
          { required: true, message: "请输入司机姓名", trigger: "blur" },
        ],
        deptId: [
          { required: true, message: "请选择归属部门", trigger: "blur" },
        ],
        cardId: [
          {
            required: true,
            validator: this.validateAtLeastOneRequired,
            trigger: "blur",
          },
        ],
        printCode: [
          {
            required: true,
            validator: this.validateAtLeastOneRequired,
            trigger: "blur",
          },
        ],
        faceCode: [
          {
            required: true,
            validator: this.validateAtLeastOneRequired,
            trigger: "blur",
          },
        ],
      },
    }
 }

methods:{

    /**
     * @Event 方法
     * @description: ic卡号 指纹编号 人脸编号 其中一个必填校验
     * */
    validateAtLeastOneRequired(rule, value, callback) {
      const field = "ic卡号、指纹编号、人脸编号";
      if (
        this.formData.cardId ||
        this.formData.printCode ||
        this.formData.faceCode
      ) {
        callback();
      } else {
        callback(new Error(`${field}至少填写一个`));
      }
    },


    submitForm() {
      this.$refs.form.validate((valid) => {
        if (valid) {
          // do something
        } else {
          return false;
        }
      });
    },
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过在el-form-item上设置prop属性来指定校验规则。在data中定义一个rules对象,其中包含每个el-form-item的校验规则。然后,在el-form-item上使用:rules属性将对应的校验规则绑定到prop属性上。这样,只有绑定了校验规则的el-form-item才会进行校验。 以下是一个示例代码: ```html <template> <el-form ref="form" :model="form" :rules="rules"> <el-form-item label="类别" prop="type"> <el-input v-model="form.type"></el-input> </el-form-item> <el-form-item label="建议" prop="desc"> <el-input v-model="form.desc"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form-item> </el-form> </template> <script> export default { data() { return { form: { type: '', desc: '' }, rules: { type: [ { required: true, message: '类别不能为空', trigger: 'blur' } ], desc: [ { required: true, message: '建议不能为空', trigger: 'blur' } ] } }; }, methods: { submitForm() { this.$refs.form.validate(valid => { if (valid) { // 校验通过,执行提交操作 // ... } else { // 校验不通过,进行错误处理 // ... } }); } } }; </script> ``` 在上述代码中,我们通过在el-form-item上设置prop属性来指定校验规则的字段,然后在data中定义了rules对象,其中包含了每个字段的校验规则。最后,在el-form上使用:rules属性将rules对象绑定到el-form上,这样el-form会根据绑定的校验规则进行校验

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值