iview 表单提交之前验证是否符合条件

简介: iview 表单提交之前验证是否符合条件

在表单提交之前 调用接口校验用户输入是否符合条件
符合则通过, 不符合 不让提交

 <Card :title="title">
      <Form class="mt10" :model="editFormData" :rules="editFormValidate" style="width:500px;"  ref="editForm"  :label-width="100">
        <FormItem label="商品分类 :" label-position="left" prop="categoryId">
          <Select v-model="editFormData.categoryId" @on-change='changeCategory'>
            <Option v-for="item in classifyList" :value="item.value" :key="item.label">{{item.label}}</Option>
          </Select>
        </FormItem>
        <FormItem label="品牌名称 :" prop="brandName">
          <Input maxlength="50" show-word-limit placeholder="请输入品牌名称" v-model="editFormData.brandName" />
        </FormItem>
        <FormItem label="商品名称 :" prop="name">
          <Input maxlength="50" show-word-limit placeholder="请输入商品名称" v-model="editFormData.name" />
        </FormItem>
       <div class="flex">
        <FormItem label="商品规格 :" prop="specifications" style="width:75%">
          <Input placeholder="请输入商品规格" v-model="editFormData.specifications" maxlength="9" show-word-limit/>
        </FormItem>
        <FormItem prop="unit" class="unitInput" style="width:25%">
          <Select v-model="editFormData.unit"  placeholder="规格单位">
            <Option v-for="item in unitList" :value="item.value" :key="item.label">{{item.label}}</Option>
          </Select>
        </FormItem>
       </div>
        <FormItem label="图片上传 :" prop="file">
          <div v-if="photo" class="upload-img">
            <img height="100%" :src="photo" />
          </div>
          <Upload type="drag" v-model="editFormData.file" style="display:inline-block;width:100px;" :max-size="200" accept=".png" :format="['png']" :before-upload="fileBeforeUpload" action="//">
            <div v-if="!photo" style="width: 100px;height:100px;line-height: 100px;">
              <Icon type="md-add" size="20"></Icon>
            </div>
            <span v-else class="cp">更换</span>
          </Upload>
          <div class="tips">请上传200K以内的PNG格式图片,尺寸为750x750</div>
        </FormItem>
        <FormItem label="商品条码 :" prop="barCode">
          <Input  maxlength="20" show-word-limit placeholder="可以输入商品外包装条形码,或者自行定义的商品码" v-model="editFormData.barCode"/>
        </FormItem>
        <FormItem label="品目编码 :" prop="itemCode">
          <Input maxlength="50" show-word-limit placeholder="(选填)" v-model="editFormData.itemCode" />
        </FormItem>
        </FormItem>
      </Form>
    </Card>
    <div class="tac mt10">
      <Button class="btn" style="margin-right: 8px" @click="handleReset('editForm')">返回</Button>
      <Button class="btn" type="primary" @click="handleSubmit('editForm',submitForm)" :loading="btnLoading">提交</Button>
    </div>
export default {
  data () {
   const validateFile = (rule, value, callback) => {
      if (!this.photo && !this.editFormData.file) {
        callback(new Error('请上传图片'))
      } else {
        callback()
      }
    }
    // 校验商品条码
    const valideBarCode = (rule, value, callback) => {
      var reg = /^[0-9]+$/i
      if (!reg.test(value)) return callback()
      let id
      if (this.actionType === 'add') {
        id = 0
      } else {
        id = this.$route.params['id']
      }
      const data = {
        type: 1,
        code: value,
        id: id
      }
      checkGoods(data).then(res => {
        const {
          data: { data }
        } = res
        if (data) {
          callback(new Error('商品条码重复,请重新输入'))
        } else {
          callback()
        }
      }, err => {
        // 接口错误
        console.log(err)
      }).catch(err => {
        // 处理逻辑出错
        console.log(err)
      })
    }
    // 校验品目条码
    const valideItemCode = (rule, value, callback) => {
      console.log(value)
      let id
      if (this.actionType === 'add') {
        id = 0
      } else {
        id = this.$route.params['id']
      }
      const data = {
        type: 2,
        code: value,
        id: id
      }
      checkGoods(data).then(res => {
        const {
          data: { data }
        } = res
        if (data) {
          callback(new Error('商品条码重复,请重新输入'))
        } else {
          callback()
        }
      }, err => {
        // 接口错误
        console.log(err)
      }).catch(err => {
        // 处理逻辑出错
        console.log(err)
      })
    }
  }
}

 return {
  barCode: [
          { required: true, message: '请输入数字条码', trigger: 'change' },
          { validator: valideBarCode, trigger: 'blur' },
          { message: '请输入20字以内的数字条码', trigger: 'change', pattern: /^[0-9]+$/i }
        ],
        itemCode: [
          { required: false, message: '请输入品目编码', trigger: 'change' },
          { message: '请输入50字以内 数字和字母的品目编码', trigger: 'change', pattern: /^[A-Za-z0-9]+$/ },
          { validator: valideItemCode, trigger: 'blur' }
        ],
}
submitForm () {
// 提交
}
相关文章
|
4天前
uniapp的form表单自定义验证规则
uniapp的form表单自定义验证规则
52 0
|
4天前
|
JavaScript 前端开发 数据安全/隐私保护
提交表单与验证表单案例
提交表单与验证表单案例
22 0
|
JavaScript
VUE element-ui之form表单自定义验证11位手机号码(封装验证规则)
VUE element-ui之form表单自定义验证11位手机号码(封装验证规则)
3279 0
VUE element-ui之form表单自定义验证11位手机号码(封装验证规则)
|
4天前
element-ui中Form表单使用自定义验证规则
element-ui中Form表单使用自定义验证规则
12 0
|
4天前
有关elementUI el-form表单配置了校验规则但是反向校验问题
有关elementUI el-form表单配置了校验规则但是反向校验问题
29 2
|
6月前
element中form表单resetFields()方法重置表单无效
element中form表单resetFields()方法重置表单无效
|
7月前
|
JavaScript
Element-Ui表单移除校验clearValidate和resetFields
添加和修改公用一个弹窗,点击添加弹窗后,如果没移除表单校验的话,再点击修改弹窗时校验就会被记住,所以需要移除校验,但在清空表单校验时会报如下错误: 那么,你只需要加上这段话即可 this.$nextTick(()=&gt;{ this.$refs.addArray.resetFields(); }) 再此,我顺便说一下resetFields和clearValidate的区别: this.$refs.form.resetFields(); //移除表单校验并初始化表单,一般用于.
159 0
Element-Ui表单移除校验clearValidate和resetFields
Element-ui中 表单(Form)校验的几种形式 及 表单嵌套表格含上传(Upload)组件的综合案例
Element-ui中 表单(Form)校验的几种形式 及 表单嵌套表格含上传(Upload)组件的综合案例
670 0
Element-ui中 表单(Form)校验的几种形式 及 表单嵌套表格含上传(Upload)组件的综合案例
|
JavaScript
Vue表单中判断当前行输入框的值与整个表单的输入框的值是否重复(过滤自身数据)
使用Element输入框自带change事件获取到scope.$index以及input框中的值(@change="change(scope,$event)"); 使用forEach遍历整个表单的数据(item是需要遍历的数组,index是数组中元素的下标);
441 0
Vue表单中判断当前行输入框的值与整个表单的输入框的值是否重复(过滤自身数据)
SwiftUI—如何激活表单以及如何使表单失效
SwiftUI—如何激活表单以及如何使表单失效
133 0
SwiftUI—如何激活表单以及如何使表单失效