vue elementUI 上传非空验证

news/2024/11/29 8:39:05/

<el-form-item label="照片" prop="staffImg"><template v-slot:label><span v-show="!rules.staffImg[0].required"style="color: #ff4949;margin-right: 4px;">*</span><span>照片</span></template><el-upload class="avatar-uploader" :action="action" ref="upload" :show-file-list="false":on-change="uploadChange" :headers="headers" :before-upload="fileBeforeUpload":on-success="fileUploadSuccess" accept=".jpg,.png"><img v-if="imageUrl" :src="imageUrl" class="avatar" /><i v-else class="el-icon-plus avatar-uploader-icon"></i></el-upload>
</el-form-item>

 

            // 表单校验rules: {staffImg: [{ required: true, message: "图片不能为空", trigger: ["blur", 'change'] },],},
    computed: {// 上传头像action() {let baseUrl = "";if (process.env.NODE_ENV === "development") {baseUrl = process.env.VUE_APP_BASE_API + "/base/common/uploadFile";} else {baseUrl = process.env.VUE_APP_BASE_API + "/base/common/uploadFile";}return baseUrl;},},
        uploadChange(file, fileList) {// console.log("上传进行改变", this.imageUrl);this.headFile = file;this.rules.staffImg[0].required = false;},//图片上传之前fileBeforeUpload(file) {const that = this;let size = file.size / 1024 / 1024;if (size >= 1) {that.$modal.msgError("上传图片过大!请上传1M以内的图片");return;}const isJpgOrPng =file.type === "image/jpeg" || file.type === "image/png";// const isLt1M = file.size / 1024 / 1024 < 1;const isLt1M = true;if (!isJpgOrPng) {this.$message.error("上传图片只能是 JPG 或 PNG 格式!");return false;}// 加密const time = toString(new Date().getTime());const p = encrypt(time);this.headers["s"] = p;this.headers["t"] = time;return new Promise((resolve) => {// 小于1M 不压缩if (isLt1M) {resolve(file);}// 压缩到400KB,这里的400就是要压缩的大小,可自定义imageConversion.compressAccurately(file, 200).then((res) => {resolve(res);});// compressAccurately有多个参数时传入对象imageConversion.compressAccurately(file, {size: 1024, //图片大小压缩到1024kbwidth: 1280, //宽度压缩到1280}).then((res) => {resolve(res);});});},//照片上传成功fileUploadSuccess(res, file) {this.form.staffImg = res.data.dbPath;this.imageUrl = URL.createObjectURL(file.raw);this.rules.staffImg[0].required = false;},

 

原理就是写一个假的红色*号,每次点击查看的时候执行 this.rules.staffImg[0].required = false;

关闭原有的非空验证,打开假的红色*号

表单重置的时候执行this.rules.staffImg[0].required = true;

上传文件改变后执行this.rules.staffImg[0].required = false;

图片上传成功后执行this.rules.staffImg[0].required = false;

 


http://www.ppmy.cn/news/1259935.html

相关文章

Java利用UDP实现简单群聊

一、创建新项目 首先新建一个新的项目&#xff0c;并按如下操作 二、实现代码 界面ChatFrame类 package 群聊; import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.net.InetAddress; public abstract class ChatFrame extends JFrame { p…

IO / day04 作业

1.使用两个子进程完成两个文件的拷贝&#xff0c;子进程1拷贝前一半内容&#xff0c;子进程2拷贝后一半内容&#xff0c;父进程用于回收两个子进程的资源 代码 #include <myhead.h>int main(int argc, const char *argv[]) {if(argc<3){printf("input error\n&q…

Memory-augmented Deep Autoencoder for Unsupervised Anomaly Detection 论文阅读

Memorizing Normality to Detect Anomaly: Memory-augmented Deep Autoencoder for Unsupervised Anomaly Detection 摘要1.介绍2.相关工作异常检测Memory networks 3. Memory-augmented Autoencoder3.1概述3.2. Encoder and Decoder3.3. Memory Module with Attention-based S…

【数据结构】动态规划(Dynamic Programming)

一.动态规划&#xff08;DP&#xff09;的定义&#xff1a; 求解决策过程&#xff08;decision process&#xff09;最优化的数学方法。 将多阶段决策过程转化为一系列单阶段问题&#xff0c;利用各阶段之间的关系&#xff0c;逐个求解。 二.动态规划的基本思想&#xff1a; …

京东数据运营(京东API接口):10月投影仪店铺数据分析

鲸参谋监测的京东平台10月份投影仪市场销售数据已出炉&#xff01; 10月份&#xff0c;环同比来看&#xff0c;投影仪市场销售均上涨。鲸参谋数据显示&#xff0c;今年10月&#xff0c;京东平台投影仪的销量为16万&#xff0c;环比增长约22%&#xff0c;同比增长约8%&#xff1…

python HTML文件标题解析问题的挑战

引言 在网络爬虫中&#xff0c;HTML文件标题解析扮演着至关重要的角色。正确地解析HTML文件标题可以帮助爬虫准确地获取所需信息&#xff0c;但是在实际操作中&#xff0c;我们常常会面临一些挑战和问题。本文将探讨在Scrapy中解析HTML文件标题时可能遇到的问题&#xff0c;并…

Django回顾7

一.Django缓存 1.缓存介绍 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消耗很多的服务端资源,所以必须使用缓存来减轻后端服务器的压力…

9_企业架构队列缓存中间件分布式Redis

企业架构队列缓存中间件分布式Redis 学习目标和内容 1、能够描述Redis作用及其业务适用场景 2、能够安装配置启动Redis 3、能够使用命令行客户端简单操作Redis 4、能够实现操作基本数据类型 5、能够理解描述Redis数据持久化机制 6、能够操作安装php的Redis扩展 7、能够操作实现…