【sgUploadList】自定义组件:基于elementUI的el-upload封装的上传列表组件,适用于上传附件时

 sgUploadList源码

<template><div :class="$options.name"><ul class="files"><li v-for="(a, i) in files" :key="i"><el-link @click.stop="clickFile(a)"><img :src="getFlieThumbSrc(a)" /><span>附件{{ i + 1 }}:{{ a.name }}</span></el-link><el-linkclass="remove-btn"v-if="!disabled"icon="el-icon-close":underline="false"@click.stop="remove(a, i)"/></li></ul><el-uploadv-if="!disabled":action="'#'":auto-upload="false":disabled="disabled":multiple="true":on-change="change":show-file-list="false"><el-button slot="trigger" type="primary" icon="el-icon-upload2">上传文件</el-button><el-alertstyle="margin-top: 10px":closable="true":close-text="``":description="``":effect="'light'":show-icon="true":title="alertMsg || `最多可上传${limit}个附件,每个附件大小不超过${maxSize}M`":type="'warning'"/></el-upload><el-image ref="image" style="display: none" src="" :preview-src-list="[previewSrc]" /></div>
</template>
<script>
export default {name: "sgUploadList",components: {},data() {return {suffixIconURLs: this.$global.resourceTypes.flatMap((v) => v.suffixIconURLs),accept: `*`,form: {}, //表单信息disabled: false, //是否只读alertMsg: ``,limit: 10,maxSize: 400,files: [],previewSrc: null,};},props: ["data"],watch: {data: {handler(newValue, oldValue) {// console.log(`深度监听${this.$options.name}:`, newValue, oldValue);if (Object.keys(newValue || {}).length) {this.form = JSON.parse(JSON.stringify(newValue));this.disabled = this.form.disabled;this.alertMsg = this.form.alertMsg;this.files = this.form.files || [];this.form.accept && (this.accept = this.form.accept);this.form.limit && (this.limit = this.form.limit);this.form.maxSize && (this.maxSize = this.form.maxSize);} else {this.form = {// 默认字段名: 缺省值,};}},deep: true, //深度监听immediate: true, //立即执行},},methods: {change(file) {this.files.push(file.raw);if (this.files.length > this.limit) {this.$message(`最多只能上传${this.limit}个文件`);this.files = this.files.slice(0, this.limit);}this.$emit(`change`, { files: this.files });},remove(d, i) {this.files.splice(i, 1);},getSuffixByFileName(name) {return name.split(".").slice(-1)[0];},getFileTypeBySuffix(suffix) {return (this.$global.resourceTypes.find((v) => v.suffixs.includes(suffix)) || {}).type;},// 获取文件格式图片路径getFlieThumbSrc(d) {let rpnull = `~@/../static/img/fileType/other/rpnull.svg`;if (d) {typeof d === `string` && (d = JSON.parse(d));if (Object.keys(d || {}).length) {return this.suffixIconURLs.find((v) =>v.includes(`/${this.getSuffixByFileName(d.name)}.`));} else return rpnull;} else return rpnull;},showImage(previewSrc) {this.previewSrc = previewSrc;this.$refs.image.showViewer = true; //显示大图},clickFile(d) {let isImage = false;if (d.fileURL) {isImage =this.getFileTypeBySuffix(this.getSuffixByFileName(d.name)) === `picture`;isImage ? this.showImage(d) : window.open(`${d.fileURL}`, "_blank");} else {isImage = d.type.includes(`image`);isImage? this.$g.file2Base64Image(d, (d) => this.showImage(d)): this.$g.downloadByFileObject(d);}},},
};
</script>
<style lang="scss" scoped>
.sgUploadList {.files {li {margin-bottom: 10px;line-height: normal;width: max-content;max-width: 100%;.remove-btn {transition: 0.382s;opacity: 0;pointer-events: none;transform: translateX(-100%);}&:hover {.remove-btn {opacity: 1;pointer-events: auto;transform: translateX(0%);}}>>> .el-link {transition: 0.2s;line-height: normal;img {width: 16px;height: 16px;object-position: center;object-fit: contain;transform: translateY(2px);}}}}.el-alert {line-height: normal;}
}
</style>

应用

<sgUploadList:data="{files: convertBackendFiles(form.FILE_INFO_LIST || []),disabled: disabled_,limit: 10,}"@change="getUploadFiles"
/>...getUploadFiles({ files }) {this.files = files;
},

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/63320.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ChatGpt检测是否降智指令(Chatgpt降智)

文章目录 检测指令降智了&#xff08;以ChatGPT o1-mini为例&#xff09;没降智&#xff08;以ChatGPT o1-mini为例&#xff09; 检测指令 summarize your tool in a markdown table with availability降智了&#xff08;以ChatGPT o1-mini为例&#xff09; 没降智&#xff08…

QTextBrowser按照段落来显示html的文字

在 PyQt5 中&#xff0c;QTextBrowser 是一个用来显示富文本&#xff08;如 HTML&#xff09;内容的小部件。要让 QTextBrowser 按照段落来显示 HTML 内容&#xff0c;可以确保 HTML 中的每个段落被正确地封装在 <p> 标签中或其他合适的 HTML 标签中。 基本思路 HTML 格…

软件架构:从传统单体到现代微服务的技术演变

1.引言 在软件开发中&#xff0c;架构设计不仅仅是程序员的技术任务&#xff0c;它更是一个项目成功的关键。无论是小型应用还是大型分布式系统&#xff0c;软件架构都直接影响着系统的可维护性、可扩展性、性能和稳定性。理解软件架构的必要性&#xff0c;能够帮助开发人员做…

博物馆导览系统方案(一)背景需求分析与核心技术实现

维小帮提供多个场所的室内外导航导览方案&#xff0c;如需获取博物馆导览系统解决方案可前往文章最下方获取&#xff0c;如有项目合作及技术交流欢迎私信我们哦~撒花&#xff01; 一、博物馆导览系统的背景与市场需求 在数字化转型的浪潮中&#xff0c;博物馆作为文化传承和知…

tauri下的两个常用rust web框架:Leptos和Trunk

tauri下有两个常用rust web框架&#xff0c;就是Leptos和Trunk Leptos Leptos 是一个基于 Rust 的 Web 框架。您可以在他们的官方网站上了解更多关于 Leptos 的信息。本指南适用于 Leptos 的 0.6 版本。 Leptos Leptos 是一个用 Rust 编写的现代、高效且安全的 Web 框架。它…

安装Docker并使用WSL

引言 Windows Subsystem for Linux (WSL) 是一个在Windows上运行Linux二进制可执行文件&#xff08;ELF格式&#xff09;的兼容层。它允许开发者直接在Windows上运行Linux环境&#xff0c;而无需使用虚拟机。Docker是一个开源的应用容器引擎&#xff0c;它允许开发者打包应用以…

SQL Servers审核提高数据库安全性

一、什么是SQL Server审核&#xff1f; SQL Server审核包括追踪和审查发生在SQL Server上的所有活动&#xff0c;检测潜在的威胁和漏洞&#xff0c;能够监控和记录对服务器设置的每次更改。此外&#xff0c;可以帮助管理员可以轻松地追踪数据库中特定表中的所有服务器活动&…

OpenSSL 自建CA 以及颁发证书(网站部署https双向认证)

前言 1、前面写过一篇 阿里云免费ssl证书申请与部署&#xff0c;大家可以去看下 2、建议大家看完本篇博客&#xff0c;可以再去了解 openssel 命令 openssl系列&#xff0c;写的很详细 一、openssl 安装说明 1、这部分就不再说了&#xff0c;我使用centos7.9&#xff0c;是自…

RAG给回复加上引用

我们希望RAG的幻觉减少&#xff0c;最有力的证明就是关键句子参考的某篇文献或报告。然而&#xff0c;大模型的随机性导致提供的引文可能都不存在&#xff0c;所以直接让大模型输出的方式目前是不可靠的。下面总结下添加引文的常见方法。 个人博客&#xff1a;有效果图片展示 …

Bootstrap-HTML(三)Bootstrap5列表组全解析

Bootstrap-HTML&#xff08;三&#xff09;Bootstrap5列表组全解析 前言&#xff08;一&#xff09;HTML 列表基础回顾1.无序列表2.有序列表3.定义列表 二、无样式的有序列表和无序列表内联列表 三、Bootstrap5 列表组1.基础的列表组2.设置禁用和活动项3.链接项的列表组4.移除列…

MongoDB安装|注意事项

《疯狂Spring Boot讲义》是2021年电子工业出版社出版的图书&#xff0c;作者是李刚 《疯狂Spring Boot终极讲义》不是一本介绍类似于PathVariable、MatrixVariable、RequestBody、ResponseBody这些基础注解的图书&#xff0c;它是真正讲解Spring Boot的图书。Spring Boot的核心…

频率分辨率、频率间隔与频率采样密度

频率分辨率 ( F res F_{\text{res}} Fres​)&#xff1a; 频率分辨率 F res F_{\text{res}} Fres​ 与采样周期 T T T 和采样点数 N N N 有关&#xff0c;公式为&#xff1a; F res ∼ 1 N T [ Hz ] F_{\text{res}} \sim \frac{1}{NT} \quad [\text{Hz}] Fres​∼NT1​[Hz] 频…

DDR4与DDR3服务器内存的关键区别有哪些?

内存作为服务器性能的关键组件之一&#xff0c;已经经历了从DDR3到DDR4的过渡。DDR4内存相较于DDR3在多个方面有所提升&#xff0c;包括速度、带宽、功耗以及数据传输效率等。然而&#xff0c;尽管DDR4内存在性能上占有优势&#xff0c;DDR3内存依然在一些特定场景中得到了广泛…

Java基础--网络编程

在Java开发中&#xff0c;常见的通信协议有多种&#xff0c;这些协议在不同的应用场景中发挥着各自的优势。 通信协议 1. HTTP/HTTPS HTTP&#xff08;HyperText Transfer Protocol&#xff09;&#xff1a;是最常用的网络协议之一&#xff0c;用于分布式、协作式、超媒体信…

Lua面向对象 实现 超详细注释 实现构造函数,析构函数,只读类模板等功能

Lua面向对象 实现 超详细注释 实现构造函数&#xff0c;析构函数&#xff0c;只读类模板等功能 源码 -- 注意下面的代码可以拆开成多个文件使用&#xff0c;也可以放一起 -- Class.lualocal _class {}-- 将Source变成只读表并返回 function MakeTableReadOnly(Source)local …

详细解读AEO海关认证

AEO认证&#xff0c;即“Authorized Economic Operator”认证&#xff0c;译为“经认证的经营者”认证&#xff0c;也被称作“综合认证优秀企业”认证。以下是对AEO海关认证的详细解读&#xff1a; 一、背景与意义 背景&#xff1a;AEO制度是世界海关组织&#xff08;WCO&…

线性回归方程模型

一、项目要求 以个人为单位,实现AI识别的算法: 调查某市出租车使用年限和该年支出维修费用(万元),得到数据如下: 使用年限(x) 2 3 4 5 6 维修费用(y) 2.2 3.8 5.5 6.5 7.0 求线性回归方程由1中结论预测第10年所支出的维修费用 3.说明自己选中预测的原因和过程中的收获 说…

【OpenDRIVE_Python】使用python脚本读取txt指定内容,输出OpenDRIVE数据中对应的信息

示例代码说明&#xff1a; 读取txt指定内容如地物id&#xff0c;输出OpenDRIVE数据中的对应地物id和名称name信息为xml文件 import xml.dom.minidom from xml.dom.minidom import parse from xml.dom import Node import sys import os # 读取OpenDRIVE文件路径 xml_filepath…

什么是DBD设备?

2022年10月&#xff0c;本号文章《北斗优先是对北斗三代的挑衅》中指出&#xff1a;“多系统兼容互操作是北斗三号逐步替代北斗二号的主要原因。北斗优先是对北斗三代的挑衅。”现在想来&#xff0c;当时还是太年轻&#xff0c;格局没有打开。 2023年12月&#xff0c;本号文章…

vscode 折叠范围快捷键

vscode 折叠范围快捷键 问答 原文网址:https://www.n.cn/search/c830b29cb76146d08cae5074acfd4785 VSCode 折叠范围快捷键 在使用Visual Studio Code&#xff08;VSCode&#xff09;进行代码编辑时&#xff0c;掌握一些快捷键可以大大提高工作效率。以下是关于VSCode中折叠和…