使用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,局部钩子函数,全 ...
随机推荐
- Ubuntu16.04配置vncserver后 导致重复进入登陆界面,无法进入桌面的问题
1.在配置vncserver的时候,可能导致该用户不能正常登录桌面. 2.问题现象:正确输入密码,系统无法进入桌面,闪回到登录界面. 3.在登录界面按ctrl+Alt+F1,进入虚拟控制台(输入r ...
- idea将springboot打包成jar或者war
1.首先在pom.xml中添加下面配置 <groupId>com.melo</groupId> <artifactId>focus</artifactId&g ...
- 六十八:flask上下文之app上下文和request上下文
app上下文: 先看现象 current_app源码 手动入栈 app_context()源码 with语句入栈 request上下文 不在app上下文中 即使手动入栈也会报错,不在请求上下文中 ur ...
- 解决oracle 物化视图刷新失败
oracle 物化视图刷新失败可能原因: 1.视图未建立物化视图日志 2.基表为授权给用户 1.物化视图语法 create materialized view [view_name] refresh ...
- 安装xampp扩展你要注意这些
Windows下安装PHP扩展是一件很麻烦的事情,看一个xampp扩展的附件名一般都是这样的命名规则,如:xampp_http-5.3-nts-svn20091125-vc9-x86.zip 你要了解 ...
- c语言小端转大端
//小端转大端 int little2big(int le) { | (le & | (le & | (le >> ) & 0xff; } //大端转小端 int ...
- RSA签名、验签、加密、解密
最近在做一个项目,与一个支付渠道进行连接进行充值,为了安全,每个接口访问时,都要先登陆(调用登陆接口),拿到一个sessionKey,后续业务接口内容用它来进行3DES加密处理.而登陆需要用到RSA进 ...
- JavaScript高程第三版笔记(1-5章)
第2章:在html中使用javascript ①script标签的defer属性 <script type="text/javascript" defer="def ...
- java游戏服务器 建造者模式
这里的具体的建造者ConcreteBuilder可以多个 这里我们以建造汽车为例: 假设汽车需要:方向盘.汽车壳.还有四个轮子 ---------这三样才能跑起来 如果你因为粗心漏了其中的某个建造过 ...
- TCP协议基础(一)
TCP为应用层提供的服务 提供进程和进程之间的通信 答: 怎么区分服务目的主机上的哪个进程呢? 通过提供端口号(well-known port), 如Telnet 23,DNS 53, HTTP 80 ...