使用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,局部钩子函数,全 ...
随机推荐
- linux安装软件时/usr/lib/python2.7/site-packages/urlgrabber/grabber.py文件异常
linux安装软件时,经常出现以下异常信息 Traceback (most recent call last): File , in <module> main() File , in m ...
- 【转】composer proc_open(NUL)报错问题
composer 执行的时候报错错误信息如下: [ErrorException] proc_open(NUL): failed to open stream: No such file or dir ...
- kubernetes系列:(三)、helm的安装和使用
一.helm简介 kubernetes : 解决了容器维护的难题,通过yaml编写,比如deployment,job,statefulset.configmap等等,通过控制循环,让容器镜像便于管理, ...
- Python简单网络爬虫实战—下载论文名称,作者信息(下)
在Python简单网络爬虫实战—下载论文名称,作者信息(上)中,学会了get到网页内容以及在谷歌浏览器找到了需要提取的内容的数据结构,接下来记录我是如何找到所有author和title的 1.从sou ...
- ES5与ES6常用语法教程之 ④展开运算符...在数组和对象中的作用
展开操作符(spread) 展开运算符(spread operator)允许一个表达式在某处展开.展开运算符在多个参数(用于函数调用)或多个元素(用于数组字面量)或者多个变量(用于解构赋值)的地方可以 ...
- Git命令与介绍
一. Git[命令与介绍] 1. 作用 可以用于个的项目版本控制和管理 目前多用于团队间的多人协作项目开发 2. 安装 l 安装包路径 l 安装 后的路径: 3. 工作流程 (1) 创建项目目录 在路 ...
- centos下kill、killall、pkill命令区别
kill是用来终止进程的 首先可以通过ps aux查看系统有哪些进程正在运行. 1.用kill来杀死某一个进程 #kill,加选项-9,加PID,表示杀死进程编号为PID的这个进程# -1 重启#ki ...
- CentOS 7 安装java 环境
1.创建安装目录 mkdir /usr/local/java/ 2.将下载的安装包 上传到 安装目录 (可用Xftp 上传) 3.解压 tar -xzvf jdk-8u221-linux-x64. ...
- pandas中.value_counts()用于统计数据集中的某一列
value_counts()是一种查看表格某列中有多少个不同值的快捷方法,并计算每个不同值有在该列中有多少重复值.value_counts()是Series拥有的方法,一般在DataFrame中使用时 ...
- 攻防世界新手区pwn writeup
CGfsb 题目地址:https://adworld.xctf.org.cn/task/answer?type=pwn&number=2&grade=0&id=5050 下载文 ...