使用iview 的表单组件验证 Upload 组件

匿名 (未验证) 提交于 2019-12-02 23:34:01

使用iview 的表单组件验证 Upload 组件

结果:

点击提交按钮, 没有填的form

代码:

<template>   <div id="user_add">     <Modal       v-model="build"       title="新建"       @on-cancel="AddData = {}"       class-name="vertical-center-modal"     >       <Form ref="add" :model="AddData" :rules="AddRule" :label-width="90">         <FormItem label="apk文件"  prop="file">           <Upload             v-model="AddData.file"             :before-upload="handleUpload"             accept=".apk"             :format="['.apk']"             :max-size=102400             action="#"             ref="upload"           >             <Button size="small">选择文件</Button>           </Upload>           <span style="margin-left: 10px">               文件名称:               <span v-if="AddData.file === null">未选择文件</span>               <span v-if="AddData.file !== null">{{ AddData.file.name }}</span>             </span>         </FormItem>       </Form>       <div slot="footer">         <Button type="primary" @click="verification" :loading="loadingStatus">确定</Button>       </div>     </Modal>   </div> </template>  <script> import { appVersionAdd } from '@/api/systemManage' export default {   name: 'UserAdd',   data () {     // 自定义验证 判断上传文件 fileList 的长度, 这样就和普通输入框表现一致了     const validateUpload = (rule, value, callback) => {       if (this.AddData.file === null) {         callback(new Error('请选择要上传的文件'))       } else {         callback()       }     }     return {       /* 添加数据 */       AddData: {         remark: '',         file: null       },       /* 表单验证规则 */       AddRule: {         file: [           { required: true, validator: validateUpload, trigger: 'change' }         ]       },       /* 新建框 */       build: false,       /* 上传过程中的加载状态控制 */       loadingStatus: false     }   },   mounted () {     this.init()   },   methods: {     /* 上传excal坐标文件 */     handleUpload (file) {       // 将获取到的文件流赋值给fromData       this.AddData.file = file       // 选择文件后触发验证关闭错误提示       this.$refs['add'].validate(() => {})     },     /* 验证 */     verification () {       this.loadingStatus = true       this.$refs['add'].validate((valid) => {         if (valid) {           this.upload()         } else {           this.loadingStatus = false         }       })     },     /* 提交 */     upload () {       // 创建上传文件用的formData       let param = new FormData()       param.append('file', this.AddData.file)       param.append('remark', this.AddData.remark)       this.params = param       // 将FormData作为参数用axios上传,此处的axios经过封装       appVersionAdd(this.params).then((res) => {         if (res.data.code === '0000') {           this.$Notice.success({ title: '上传成功' })           this.loadingStatus = false         } else {           this.loadingStatus = false         }       })     }   } } </script>  <style scoped lang="scss"> </style> <style lang="scss">   /* 弹出框竖直居中 */   .vertical-center-modal{     display: flex;     align-items: center;     justify-content: center;     text-align: left;     .ivu-modal{       top: 0;     }   } </style>

钻研不易,转载请注明出处。。。。。。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!