Vue element组件el-upload之on-preview图片预览,实战篇之多种预览方式

废话不多说,直接上代码:

1、首先,项目需要先引入 element 组件

2、第一种预览方式

1、组件使用
<div style="display: inline-block;width: 10px;width: 84%;"><el-upload multiple action="#" list-type="picture-card" :on-preview="handlePictureCardPreview" :on-remove="handleRemove" :on-exceed="(fileList)=>{this.$message({type:'warning' , message : '已选数量超出上传限制,请重新选择'})}" :on-change="handleChange" accept=".png, .jpg, .jpeg" :auto-upload="false" :file-list="fileList" :limit="3" :class="fileList && fileList.length >= 3 ? 'hide' : 'show'"><i class="el-icon-plus"></i></el-upload><el-dialog :append-to-body="true" :visible.sync="PreviewVisible" style="width: 60%;margin-left: 20%;"><el-image style="width: 500px;height: 500px;" :src="dialogImageUrl" fit='fill' alt=""></el-image></el-dialog></div>js:handlePictureCardPreview(file) {console.log(file)this.PreviewVisible = true;this.dialogImageUrl = file.url;
},

第二种预览方案

App.vue

<template><div id="app" :pageName="$route.name"><router-view v-if="isRouterFresh"></router-view><!--图片预览--><el-image-viewer v-if="showViewer" :on-close="closeViewer" :url-list="showViewerImages" :initialIndex="initialIndex" /></div>
</template><script>
import ElImageViewer from 'element-ui/packages/image/src/image-viewer'
export default {name: "app",components: { ElImageViewer },data() {return {// 图片预览showViewer: false,showViewerImages: [], // 预览地址集合['xxx.jpg','xxx.jpg']//重新渲染页面isRouterFresh: true,initialIndex: 0,}},methods: {// 预览createPreview(arrUrl) {this.showViewerImages = arrUrl;this.showViewer = true//检查播放器if (window.oWebControl) {window.oWebControl.JS_HideWnd();}},closeViewer() {this.showViewer = false;this.showViewerImages = [];//检查播放器if (window.oWebControl) {window.oWebControl.JS_ShowWnd();}},isFreshView() {this.isRouterFresh = false;this.$nextTick(() => {this.isRouterFresh = true;});}},created() {var vue = this;//调用方式:window.createPreview(['ddd.jpg', 'ddd.jpg'])window.createPreview = function (arrUrl, initialIndex) {vue.createPreview(arrUrl)vue.initialIndex = initialIndex}window.isFreshView = function () {vue.isFreshView();}//禁止右键// window.oncontextmenu = function(){//     return false;// }}
};
</script><style lang="less">
#app {height: 100%;
}
</style>

组件的使用

vue文件:<div style="display: inline-block;width: 10px;width: 84%;"><el-upload multiple action="#" list-type="picture-card" :on-preview="handlePictureCardPreview" :on-remove="handleRemove" :on-exceed="(fileList)=>{this.$message({type:'warning' , message : '已选数量超出上传限制,请重新选择'})}" :on-change="handleChange" accept=".png, .jpg, .jpeg" :auto-upload="false" :file-list="fileList" :limit="3" :class="fileList && fileList.length >= 3 ? 'hide' : 'show'"><i class="el-icon-plus"></i></el-upload></div>js 图片预览:
handlePictureCardPreview(file) {window.createPreview([file.url]);},遮罩层层级需要设置一下:
.el-image-viewer__wrapper{z-index: 99999999999 !important;
}

第三种预览方案viewer.js

1、下载资源包

Viewer.js官网下载地址:Viewer.js

CSDN下载

2、将下载的js引入本地

main.js

//图片预览
import '@/assets/viewer/viewer.css'
import VueViewer from '@/assets/viewer/index.mjs'app.use(VueViewer, {defaultOptions: {zIndex: 9999, //图片查看器的modal模式时的z-indextitle : false, //显示当前图片标题navbar: false, //缩略图导航BUTTONS : ['prev', 'next' ,'zoom-in', 'zoom-out', 'one-to-one', 'rotate-right']}
})

App.vue

 previewImages(urls ,index = 0){this.$viewerApi({images : urls,options : {initialViewIndex : index}})},

操作图片的vue

<el-form-item label="附件" prop="att_info" online><div style="display:flex; flex-wrap: wrap;"><el-upload ref="upload" action="#" multiple :limit="9 - dialogData.att_info.length" accept=".jpg,.jpeg,.png,.bmp,.pdf,.xls,.xlsx,.doc,.docx" :show-file-list="false" :on-exceed="(fileList)=>{this.$message({type:'warning' , message : '已选数量超出上传限制,请重新选择'})}" :on-change="uploadChange" :auto-upload="false" style="display:none;" v-if="uploadFresh" /><div class="avatar avatar-animate" v-for="(item ,index) in dialogData.att_info" :key="index" style="margin-right:10px;"><div class="img-box" v-if="item.file_url"><img v-if="item.mime_type == 'image/png' || item.mime_type == 'image/jpg' || item.mime_type == 'image/jpeg' || item.mime_type == 'image/bmp'" :src="item.file_url" /><img v-if="item.mime_type == 'application/pdf'" src="/static/images/pdf.png" /><img v-if="item.mime_type == 'application/msword' || item.mime_type ==  'application/vnd.openxmlformats-officedocument.wordprocessingml.document'" src="/static/images/word.png" /><img v-if="item.mime_type == 'application/vnd.ms-excel' || item.mime_type == 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'" src="/static/images/excle.png" /><span><i-zoom-in @click.stop="previewImages(index)" /><i-delete @click.stop="deleteImages(index)" /></span></div></div><div class="d-upload" @click="uploadClick" v-if="dialogData.att_info.length < 9"><i-plus /></div><p style="color:#999; display:block; width:100%; padding:5px 0 0; line-height:20px; font-size:12px;">附件支持png、jpg、bmp、pdf、word、xls且最多可上传9个,单附件不能超过10M,请压缩后再上传</p></div></el-form-item>previewImages(index) {switch(this.dialogData.att_info[index].mime_type){case 'image/png':case 'image/jpg':case 'image/jpeg':case 'image/bmp'://标记var imgItems = JSON.parse(JSON.stringify(this.dialogData.att_info))imgItems[index].indexNow = trueimgItems = imgItems.filter(c=>c.mime_type == 'image/png' || c.mime_type == 'image/jpg' || c.mime_type == 'image/jpeg' || c.mime_type == 'image/bmp')window.$previewImages(imgItems.map(c=>c.file_url) , imgItems.findIndex(c=>c.indexNow))break;default:window.open(this.dialogData.att_info[index].file_url)break;}},

第四种预览方案

<div class="demo-image__preview" style="height: 0;"><el-image style="height: 0;" ref="previewImg" :preview-src-list="imageUrlListYl" :src="imageUrlYl"></el-image></div>imageUrlYl:'',
imageUrlListYl:[],handlePictureCardPreview(file) {this.imageUrlYl = file.urlthis.fileList.forEach(item => {this.imageUrlListYl.push(item.url)})this.$refs.previewImg.showViewer = true},

   附送250套精选项目源码

源码截图

源码获取:关注公众号「码农园区」,回复 【源码】,即可获取全套源码下载链接

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

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

相关文章

介绍一下Redis的集群模式?

Redis有三种主要的集群模式&#xff0c;用于在分布式环境中实现高可用性和数据复制。这些集群模式分别是&#xff1a;主从复制&#xff08;Master-Slave Replication&#xff09;、哨兵模式&#xff08;Sentinel&#xff09;和Redis Cluster模式。 一、问题解析 主从模式 主从…

systemd-journal(四)之systemd-journald.service

文章目录 写在前面概述描述流日志记录&#xff08;Stream logging&#xff09;日志命名空间&#xff08;Journal Namespaces&#xff09;信号 SignalsSIGUSR1SIGUSR2SIGRTMIN1 内核命令行 Kernel Command Linesystemd.journald.forward_to_syslogsystemd.journald.forward_to_k…

高精密基准源 国产替代 REF191 ADR4520 ADR420 ADR430 ADR440 REF5020 MAX6126

高精密基准源 国产替代 REF191 ADR4520 ADR420 ADR430 ADR440 REF5020 MAX6126 ADR03 REF03 REF192 AD580 AD780 ADR441 ADR4525 ADR431 ADR421 REF5025ADR423 ADR433 ADR443 ADR4530 REF193 AD780 ADR06 REF5030ADR434 ADR444 ADR4540 REF198 REF5040ADR425 ADR435 ADR445 AD…

2024-03-26 Android8.1 px30 WI-FI 模块rtl8821cu调试记录

一、kernel 驱动&#xff0c;我这里使用v5.8.1.2_35530.20191025_COEX20191014-4141这个版本&#xff0c;下载这个版本的驱动可以参考下面的文章。 2021-04-12 RK3288 Android7.1 USB wifi bluetooth 模块RTL8821CU 调试记录_rk平台rtl8821cu蓝牙调试-CSDN博客 二、Makefile文…

面试题 之 webpack

1.说说你对webpack理解&#xff1f;解决什么问题&#xff1f; Webpack 是实现前端项目的模块化&#xff0c;用于现代 JavaScript 应用程序的静态模块打包工具&#xff0c;被webpack 直接引用的资源打包进 bunde.js的资源&#xff0c;当webpack 处理应用程序时,它会在内部构建一…

MicroPython字节码文件——mpy文件解析

参考文档&#xff1a;MicroPython .mpy files 前置注意点 mpy文件的二进制文件是一种嵌套格式。先描述外层模块&#xff0c;然后描述子模块。使用vint&#xff08;变长编码&#xff09;表示整数&#xff0c;当前字节最高位置1表示还有后续字节。不同版本的MicroPython对应的m…

中霖教育:不是会计专业能参加24年的中级会计师考试吗?

经常有很多同学问&#xff1a;我不是会计专业的能报中级会计师考试吗? 先来看报名需要满足的必要条件&#xff1a; 1、大学专科学历&#xff0c;从事会计工作满5年。 2、大学本科学历或学士学位&#xff0c;从事会计工作满4年。 3、第二学士学位或研究生班毕业&#xff0c…

通过Jmeter准备压测数据-mysql示例

1、新建线程组 总共30万条数据 2、创建jdbc链接 创建jdbc连接配置 配置mysql连接 需要在jmeter安装的路径\apache-jmeter-5.6.3\lib\ext 目录下添加mysql 驱动 3、创建jdbc请求 jdbc链接名称需要与上一步中的保持一致&#xff0c;同时添加insert语句 例如 INSERT INTO test…

电子商务营销中大数据分析的应用|大数据分析在B2C中的应用案例【抖音/京东/淘宝商品数据采集API接口的应用】

文章围绕对大数据分析在电子商务营销中的应用开展&#xff0c;研究了什么是大数据分析和电子商务的营销&#xff0c;以及对于电子商务的营销与大数据分析的结合目前是一个什么样的趋势&#xff0c;分析了大数据分析在电子商务营销中的作用&#xff0c;希望能帮助到大家。抖音/京…

iOS App 上架指南及关键

引言 上架App Store是将iOS应用提交申请并上线的过程&#xff0c;旨在让应用在App Store上展示&#xff0c;吸引用户并获取流量。本文将介绍iOS上架的整体流程&#xff0c;并提供一些建议和注意事项。 一、iOS上架的整体流程 1. 申请开发者账号 首先&#xff0c;需要申请苹…

【免费】面向多微网网络结构设计的大规模二进制矩阵优化算法

目录 1 主要内容 节点故障网络拓扑变化示意 约束条件 目标函数 2 部分代码 3 结果一览 4 下载链接 1 主要内容 当前电力系统中微电网逐步成为发展的主力军&#xff0c;微网中包括分布式电源和负荷&#xff0c;单一的微电网是和外部电源进行连接&#xff0c;即保证用电的…

灰豚技术:数字人系统一定要源码部署,原因有三

数字人源码部署指的是将AI数字人系统源代码进行安装和配置的过程。这通常涉及准备本地服务器或云服务器、准备域名并进行网站备案&#xff0c;然后将源码部署到服务器上。完成部署后&#xff0c;用户就可以开始运营自己的数字人平台&#xff0c;进行数字人的本地化部署&#xf…