使用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,局部钩子函数,全 ...
随机推荐
- 【南工程开源计划】南京工程学院 信息与通信工程学院 课程设计说明书(论文) 宽带接入技术--WLAN接入设计
文章目录 蓝奏云文件存放地址 一.课程设计目的 二.课程设计要求 三.课程设计网络环境 四.课程设计内容 4.1 WLAN接入设计 4.1.1设计拓扑 4.1.2设计原理 1)WLAN 2)RADIU ...
- Asp.Net WebAPI 通过HttpContextBase或者HttpRquest 获取请求参数
WEBAPI中的Request是HttpRequestMessage类型,不能像Web传统那样有querystring和from 方法接收参数,而传统的HttpReqest的基类是HttpReqest ...
- Python轻量级开发工具Genay使用
Genay是一个轻量级的免费,开放源代码的开发工具,支持很多的文件类型,并且支持很多的插件,启动快速.安装包只有十几兆,相关的插件也不大,相比pycharm专业版需要收费,并且社区版的安装包大小有两百 ...
- 在win10系统安装两个不同版本的mySQL数据库
我们项目用的mySQL数据库,为了回家看代码方便,于是在本地安装mySQL数据库,一开始安装了比服务器mySQL5.7.24更高版本的mySQL8.0.11,结果项目启动报错,估计是版本太高项目中引入 ...
- C# 反转单向链表
static void Main(string[] args) { Mynode mynode0 = new Mynode(); Mynode mynode1 = new Mynode(); Myno ...
- 【转】Linux curl命令详解
[From]https://www.cnblogs.com/duhuo/p/5695256.html 命令:curl 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一 ...
- elasticsearch-head-master下运行npm install报npm WARN elasticsearch-head@0.0.0 license should be a valid SPDX license expression
2个月没有启动es和es配套服务,今天运行时,发现如下问题: 运行npm install 出现npm WARN elasticsearch-head@0.0.0 license should be a ...
- python-Web-django-短信登陆
until: import json, urllib from urllib.parse import urlencode # 发送短信 def request2(mobile,num, m=&quo ...
- PJzhang:国外主流站点钓鱼网站示例工具shellphish
猫宁!!! 参考链接:https://www.uedbox.com/post/58583/ 这个是这个项目的github地址 https://github.com/thelinuxchoice/she ...
- Linux常用目录名称
目录 用途 / 虚拟目录的根文件,通常不会在这里存储文件 /bin 二进制目录,存放许多用户的GNU工具 /boot 启动目录,存放启动文件 /dev 设备目录,Linux在这里创建设备节点 /etc ...