• vue:自定义验证form表单中的数组


    vue:自定义验证form表单中的数组

    如图

     

    html写法:

    form元素: pictures

    添加图片上传框事件:addMealImage
    删除一个图片上传框事件:delMealImage

    div class="flex-row el-form-item-box"   style=" 100%;">
            <el-form-item label="餐食主图" prop="pictures"   style=" 100%;" :required="true">
              <el-col  style="margin-left: 10px; float: left;  100px;" v-for="(item, index) in form.pictures" :key="index">
                <el-upload
                  name="picFile"
                  ref="resumeRefs"
                  :headers="header"
                  class="avatar-uploader"
                  :action="baseURL + '/system/meal/upload/0/'+ mealId+'/'+index+''"
                  :show-file-list="false"
                  :auto-upload="true"
                  :on-success="handleAvatarSuccess"
                  :before-upload="beforeAvatarUpload"
                  :disabled="mealEdit">
                  <img v-if="form.pictures[index].mealImage" :src="form.pictures[index].mealImage" class="avatar">
                  <i v-else class="el-icon-plus avatar-uploader-icon"></i>
                </el-upload>
                <span v-if="index == 0" class="add-date el-icon-circle-plus-outline" style="margin-left: 25px;" title="添加图片" @click="addMealImage"> </span>
                <span v-if="index > 0" class="add-date el-icon-remove-outline" style="margin-left: 25px;" title="删除图片" @click="delMealImage"> </span>
              </el-col>
            </el-form-item>
    
          </div>
    

      

    js部分

    表单部分:给pictures初始化一个数组

    // 表单参数
          form: {
            id: null,
            mealName: null,
            mealCode: null,
            mealPrice: null,
            mealValidityStart: null,
            mealValidityEnd: null,
            flightValidityStart: null,
            flightValidityEnd: null,
            mealContent: null,
            mealAirport: null,
            mealCompany: null,
            mealReceiveMail: null,
    
            mealReceiveMails: [],
            pictures:[{mealImageType: null, mealImage: null, id: null, index:null}], //上传图片
            delPictures: [],//删除的图片
          },
    

      

    rules部分:

      pictures: [
              {  type: "array", validator: validateMealPicture, required: true }
            ],
    

      

    自定义验证部分:

    validateMealPicture
    const validateMealPicture = (rule,value, callback)=>{
          //console.log(rule)
          //console.log(value)
          let item =  value.length>0?value[0]:null;
          if(item==null || (item!=null && item.id==null)){
            return callback(new Error("请至少上传一个图片"));
          }else{
            callback();
          }
    
        };
    

      

  • 相关阅读:
    vue根据不同命令打出不同环境的包
    classpath到底指的哪里
    guava的事件发布订阅功能
    枚举类型的使用
    SpringBoot自动配置的实现原理
    HttpConnection的使用
    SpringBoot下的值注入
    SpringBoot下的Job定时任务
    SpringBoot拦截器的使用
    SpringBoot+MyBatis简单数据访问应用
  • 原文地址:https://www.cnblogs.com/achengmu/p/15744340.html
Copyright © 2020-2023  润新知