使用iview 的表单组件验证 Upload 组件
使用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>
钻研不易,转载请注明出处。。。。。。
使用iview 的表单组件验证 Upload 组件的更多相关文章
- Form表单组件验证
第一版:最基本版本 views源码 #——————————————————————form验证—————————————— from django import forms from django.f ...
- 文档驱动 —— 表单组件(六):基于AntDV的Form表单的封装,目标还是不写代码
开源代码 https://github.com/naturefwvue/nf-vue3-ant 也不知道大家是怎么写代码的,这里全当抛砖引玉 为何封装? AntDV非常强大,效果也非常漂亮,功能强大, ...
- ReactJS实用技巧(2):从新人大坑——表单组件来看State
不太清楚有多少初学React的同学和博主当时一样,在看完React的生命周期.数据流之后觉得已经上手了,甩开文档啪啪啪的开始敲了起来.结果...居然被一个input标签给教做人了. 故事是这样的:首先 ...
- 【form】 表单组件说明
form表单组件 1)将form组件内的用户输入的<switch/> <input/> <checkbox/> <slider/> <radio/ ...
- 文档驱动 —— 表单组件(五):基于Ant Design Vue 的表单控件的demo,再也不需要写代码了。
源码 https://github.com/naturefwvue/nf-vue3-ant 特点 只需要更改meta,既可以切换表单 可以统一修改样式,统一升级,以最小的代价,应对UI的升级.切换,应 ...
- reactjs入门到实战(八)----表单组件的使用
表单组件支持几个受用户交互影响的属性: value,用于 <input>.<textarea> 组件. checked,用于类型为 checkbox 或者 radio 的 &l ...
- 通过html()的方法获取文本内容, form表单组件显示的值与获取到的值不一致的问题
我在通过 html()获取对应节点的内容,发现一个问题,获取到的 form表单组件的内容值是初始加载的值,而不是经过用户修改后的值.例如页面加载时组件<input type="text ...
- 如何实现Ant design表单组件封装?
目标:自己实现一个antd表单组件 先看下Ant Design官网上给出的表单组件用法: import React, { Component } from 'react' import { Form, ...
- django基础之day09,创建一个forms表单组件进行表单校验,知识点:error_messages,label,required,invalid,局部钩子函数,全局钩子函数, forms_obj.cleaned_data,forms_obj.errors,locals(), {{ forms.label }}:{{ forms }},{{ forms.errors.0 }}
利用forms表单组件进行表单校验,完成用户名,密码,确认密码,邮箱功能的校验 该作业包含了下面的知识点: error_messages,label,required,invalid,局部钩子函数,全 ...
随机推荐
- CSS、Bulma介绍
文章目录 一.序章 二.CSS 基础 1. CSS 介绍 2. CSS 语法 3. CSS常用元素 1.颜色 2.字体大小 3.宽高 4.盒模型(单独拿出来讲) 5.背景 4.1样式和内容分离 4.2 ...
- 从Ubuntu 14.04 LTS版升级到Ubuntu 16.04 LTS
Ubuntu 16.04 (Xerial Xerus) Long Term Support版于最近发布了.要想了解它的新功能和新特性,就必须升级或安装这个新系统. 本文讲述怎样一步步从Ubuntu ...
- laravel where orwhere的写法
orWhere如果不用闭包的形式写很容易写成分开的查询条件 要写成一组查询条件需要这样闭包写(就相当于把这两个条件放在一个小括号里,是一组查询条件“(xxx or xxx)”): if (!empty ...
- 判断List是否为空的问题
今天公司安排给页面调试Bug,感觉公司人员写的判断判断List是否为空存在一定的问题,公司判断是list!=null这是完全不对的,这只会判断是否有list对象.如果为空,他也会执行if(list!= ...
- Failed to start LSB: start and stop MariaDB
Failed to start LSB: start and stop MariaDB */--> Failed to start LSB: start and stop MariaDB Tab ...
- Session案例-用户登录场景
package com.loaderman.demo; import java.io.IOException; import java.io.PrintWriter; import javax.ser ...
- #ifdef _WIN32的来源
宏定义:#ifdef _WIN32 由编译器(ml.exe/ml64.exe)内部定义的.具体描述是: _WIN32:Defined for applications for Win32 and ...
- [Python]python-jenkins 启动需要参数的job
需求: 我要用python通过api,启动这个job,并且启动这个job需要1个参数 安装依赖: pipenv install python-jenkins 熟悉API的使用方法: 了解一个API的最 ...
- java线程锁之synchronized
声明:该博客参考https://www.cnblogs.com/kaituorensheng/p/10079916.html,感谢哥们. 1.Sync.java package com.cn.comm ...
- lucene 快速入门
日常开发中,相信大家经常会用like去匹配一些数据,同时我们也知道,like往往会导致全表扫描,当数据量越来越大的时候,我们会纠结于 数据库的龟速查找,此时我们必须另寻蹊跷,这时lucene就可以大显 ...