viewer.js 在layui中使用,并且实现表格中点击预览,点击图片名称定位到表格中某一条数据并高亮显示

下载viewer.js到本地,并在页面中引入

下载地址: https://www.dowebok.com/demo/192/
页面引入js和css
<link rel="stylesheet" href="/plugins/viewer/viewer.min.css"  th:href="@{/plugins/viewer/viewer.min.css}">
<script src="/plugins/viewer/viewer.js" th:src="@{/plugins/viewer/viewer.js}" type="text/javascript"></script>

创建imgView.js

// api(表格列表接口地址)
// limit(点击表格时的下标,用来默认显示当前点击的是第几张图片)
// where(接口入参条件)
// count(总条数)
async function imgview(api,limit,where,count) {$("#UploaderHiddenImg").remove();$.ajax({type:"get",async:true,url: api,dataType:"json",data:{...where,page: 1,limit: count},success:function(result){var imgList = result.dataif (imgList.length > 0) {$("body").append('<div id="UploaderHiddenImg" style="display:none;"></div>');for (let index = 0; index < imgList.length; index++) {var url = "展示图片地址的接口路径";var imgs = JSON.parse(imgList[index].fileList); // 图片listlet name = 'xxxx'; // 图片名称$("#UploaderHiddenImg").append('<img alt="'+name +'" src="' + url + '" style="width: 100% !important;height: 100%;!important;"/>');}var viewer = new Viewer(document.getElementById('UploaderHiddenImg'), {// initialViewIndex: currentIndex,zIndex: 999, // 预览层级// title: false, // 是否展示图片名字hidden: function () {// 关闭预览回调viewer.destroy();$("#UploaderHiddenImg").remove();},});viewer.show()// 获取图片名称的元素,并且添加点击事件var titleButton = viewer.viewer.querySelector('.viewer-footer .viewer-title');titleButton.style.cursor = 'pointer'titleButton.addEventListener('click', function(e) {// 获取点击元素的下标var elem = viewer.viewer.querySelector('.viewer-navbar .viewer-list .viewer-active')var index = elem.dataset.index;viewer.hidden()positioning(index)});// 默认展示的图片viewer.view(limit-1);}else{layer.msg(result.msg);}},error:function(){layer.msg("错误");},});
}}
function positioning(index) {// 获取当前页码var currentPageNo = 0;// 获取每页显示条数var pageLimit = 0;currentPageNo = abnormalTable.config.page.curr;pageLimit = abnormalTable.config.limit;abnormalTablePageInfo = getPageAndIndex(currentPageNo,pageLimit,index)if(currentPageNo != abnormalTablePageInfo.currentPage) {searchAbnormalTable(taskRunCodes)} else {dwTableRow('abnormalTableDiv')}
}
// 每次点击清除所有表格背景色
function clearRowBg(arr) {arr.each(function (index,elemnt) {if(index % 2) {arr[index].style.backgroundColor = 'rgba(13,51,114,0.5)'} else {arr[index].style.backgroundColor = 'transparent'}})
}
// 定位表格行
// id(表格父级元素的id)
function dwTableRow(id) {var indexToStyle = abnormalTablePageInfo.currentIndex - 1var view = $('#'+id+' .layui-table-body .layui-table'); // 获取表格视图var viewTable = $('#'+id+' .layui-table-body'); // 获取表格视图var trs = view.find('tr'); // 获取所有行if(trs.length > 0) {clearRowBg(trs)if(trs[indexToStyle]){trs[indexToStyle].style.backgroundColor = '#0576d1'; // 标记颜色// 滚动到指定位置viewTable[0].scrollTop = trs[indexToStyle].offsetTop - viewTable[0].offsetTop;}} else {// 因为layui表格在渲染时是异步的,但是在setTimeout(() => {dwTableRow(id)}, 1000)}
}
// dataLength(表格每页展示的条数),pageSize(你想每页展示的条数),clickIndex(点击行的下标)
// 根据已知分页数,从新获取当前点击下标是在第几页第几条
function getPageAndIndex(dataLength, pageSize, clickIndex) {const totalPages = Math.ceil(dataLength / pageSize);const currentPage = Math.floor(clickIndex / pageSize) + 1;const currentIndex = clickIndex % pageSize + 1;return { totalPages, currentPage, currentIndex };
}
// 点击图片获取当前行的下标
function myFunction(e) {layui.use('table', function() {var table = layui.table;var api = '';var tabelId = ''var imgList = []var count = 0tabelId = 'abnormalTable'imgList = imgList1count = imgList1Countapi = 'xxxxxx'imgview(api,Number(e.dataset.index),{},count)})
}

表格数据获取

function searchAbnormalTable(){layui.use('table',function(){var table =layui.table;abnormalTable = table.render({elem:'#abnormalTable',url: url,where:{},cols: [[{type:'numbers',  title:'序号',align:'center',width:50},{field: 'fileList', title: '巡视图像', align: 'center', width: 250,templet: function (d) {var barDiv = '<div>';barDiv += '<a data-index="'+d.LAY_INDEX+'" href="javascript:void(0);" οnclick="myFunction(this)" style="width:100%;height:20px;word-break:break-word">预览图片</a>'return barDiv + '</div>';}}]],height:'500px',page:true,limit:10,limits:[10,15,20],done: function(res, curr, count){},});// dwTableRow('abnormalTableDiv')if(abnormalTablePageInfo.currentPage) {// 每次加载表格都清除一次背景色,防止多次定位导致会高亮多个var view = $('#abnormalTableDiv .layui-table-body .layui-table'); // 获取表格视图var trs = view.find('tr'); // 获取所有行clearRowBg(trs)// 根据点击图片的下标跳转到对应页码table.reload('abnormalTable', {page: {curr: abnormalTablePageInfo.currentPage // 假设你想要跳转到第2页},});}});}

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

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

相关文章

基于jeecgboot-vue3的Flowable流程-我的任务(一)

因为这个项目license问题无法开源&#xff0c;更多技术支持与服务请加入我的知识星球。 1、首先可以用现成生成代码的前端来做这个&#xff0c;只要做一些调整就可以了&#xff0c;这样利用现有的一些模板可以快速构建我的任务&#xff0c;否则vue2与vue3相差太大&#xff0c;移…

【设计模式】生成器

来源&#xff1a;爱编程的大丙 复杂的问题化繁为简&#xff0c;逐个击破。也就是分步骤创建复杂的对象&#xff0c;并允许使用相同代码生成不同类型和形式的对象&#xff0c;这种模式叫做生成器模式&#xff08;也叫建造者模式&#xff09;。 生成器模式建议将造船工序的代码…

质量人,你还在等什么?快来六西格玛培训公司充电吧!——张驰咨询

在竞争激烈的商业环境中&#xff0c;质量成为了企业生存和发展的关键。而六西格玛&#xff0c;作为一种全球公认的质量管理方法论&#xff0c;正在成为越来越多企业追求品质革命的重要工具。而六西格玛培训公司&#xff0c;则成为了这场品质革命中&#xff0c;质量人不可或缺的…

mysql数据库管理面试题-1

1. 描述MySQL架构及其主要组件&#xff08;例如存储引擎、缓存、优化器等&#xff09;。 MySQL的架构可以分为三层&#xff1a; 客户端层&#xff1a;这是用户和MySQL数据库交互的接口&#xff0c;包括命令行工具、图形化管理工具等。 服务层&#xff1a;这是MySQL的核心部分…

菊花链通信技术整理

目录 一、菊花链简介 二、菊花链与CAN通信的区别 三、常见的菊花链AFE芯片 四、菊花链数据结构 五、菊花链方案介绍 一、菊花链简介 首先简单的说一下菊花链以及菊花链的应用&#xff0c;在目前国内的BMS开发中&#xff0c;我们应用最广泛的目前还还是分布式&#xff0c;…

c++ thread detach

#include <thread> #include <iostream>using namespace std;void func() {cout << "子线程func开始执行&#xff01;" << endl;//do somethingcout << "子线程func执行结束&#xff01;" << endl; }int main() {cout…

SOA 并不是一个单纯的 API

例子1&#xff1a;一个API不是SOA 场景&#xff1a;考虑一个简单的天气预报API&#xff0c;它允许开发者通过HTTP请求获取特定城市的天气信息。 说明&#xff1a; 单一功能&#xff1a;这个API可能只是提供了一个端点&#xff08;endpoint&#xff09;&#xff0c;比如/weat…

Linux:线程

文章目录 前言1. 线程概念1.1 什么是线程1.2 线程比进程更加轻量化1.3 虚拟地址到物理地址的转化物理内存的管理页表 1.4 线程的优点1.5 线程的缺点1.6 线程异常1.7 线程用途 2. 进程 vs 线程3. 线程控制3.1 线程创建3.2 线程退出3.3 线程等待3.4 分离线程3.5 线程取消 4. 线程…

Linux 系统的目录和文件管理

一、目录结 目录 一、目录结构和每个目录的作用 二、基本命令 1.分页查看more tail 命令 wc命令grep | 管道符 打包和解包 以及vim的用法 vim 文本编辑器单行替换 一、目录结构和每个目录的作用 二、基本命令 1.分页查看more tail 命令 wc命令 grep | 管道符 …

机器学习-6-对随机梯度下降算法SGD的理解

参考一文带您了解随机梯度下降(Stochastic Gradient Descent):python代码示例 参考sklearn-SGDClassifier 1 梯度下降 在机器学习领域,梯度下降扮演着至关重要的角色。梯度下降是一种优化算法,通过迭代沿着由梯度定义的最陡下降方向,以最小化函数。类似于图中的场景,可以…

mysql使用distinct去重计数

场景说明&#xff1a; 现在有一张表table_a&#xff0c;有字段a,b,c,d 现在需要对字段a和b进行去重计数&#xff0c;如果使用语句&#xff1a; select count(distinct(a, b)) from table_a; 那么执行后会报错&#xff1a; > 1241 - Operand should contain 1 column(s) 解…

english语法

从句&#xff1a;简单句连词 介词

Android studio sdk 虚拟机无法打开运行

1.确认是否在BIOS开启硬件虚拟化支持,选择Enable 2.win8/win10 Hyper-V冲突。控制面板-》程序与功能-》windows功能-》关闭 Hyper-V 3.sdk 路径非默认路径 复制avd C:\Users\Administrator\.android\avd 到 sdk的安装路径下 D:\Android\sdk 。重启软件重新启动即可

老板:2个亿的销售额,利润只有55万!电商这个生意真的到头了?

近来&#xff0c;一段对话轰动了半个电商圈的老板&#xff0c;干拼多多&#xff0c;2亿的销售额&#xff0c;利润只有55万&#xff01; 其实造成这一现象的原因就是“内卷” 说一句电商行业真实的现状&#xff0c;电商发展了十几年&#xff0c;网友对网购已经完全熟悉&#x…

js怎么生成验证码?js生成指定长度的随机字符串

在项目中经常有生成随机字符串的需求&#xff0c;比如验证接口签名、验证码(Node.js发送短信或邮箱验证码、生成图片验证码)&#xff0c;我们可以使用Javascript生成随机字符。 使用随机数从给出的可能字符中抽取合并字符串 优点是可以自定义结果中字符的取值&#xff0c;比如…

react 结合 ts

useState 中使用 ts type User {name: stringage: number } function App() {// 直接使用对象// const [user, setUser] useState<User | null>(null)// const [user, setUser] useState<User>({// name: jack,// age: 18// })// 使用函数返回对象cons…

DuGa-DIT论文翻译

Dual Gated Graph Attention Networks with Dynamic Iterative Training for Cross-Lingual Entity Alignment 双门控图注意力网络与跨语言实体对齐的动态迭代训练 Abstract 近年来&#xff0c;跨语言实体对齐引起了相当大的关注。过去使用传统方法来匹配实体的研究都有一个…

Ubuntu 22.04 docker方式启动artifactory相关

本地部署JFrog Artifactory&#xff0c;简单记录一下&#xff0c;以省去一些不必要的搜索。 新建artifactory-network docker网络 因为要用到postgres&#xff0c;然后因为一些后续的报错&#xff0c;所以预先统一一下network docker network create artifactory-network 下…

Linux--构建进程池

目录 1.进程池 1.1.我们先完成第一步&#xff0c;创建子进程和信道 1.2. 通过channel控制&#xff0c;发送任务 1.3回收管道和子进程 1.4进行测试 1.5完整代码 1.进程池 进程池其产生原因主要是为了优化大量任务需要多进程完成时频繁创建和删除进程所带来的资源消耗&#…

CentOS7 部署单机版 ElasticSearch + Logstash

一、部署ElasticSearch Elasticsearch部署参考下面文章&#xff1a; CentOS7 部署单机版 elasticsearch-CSDN博客文章浏览阅读285次&#xff0c;点赞6次&#xff0c;收藏3次。ElasticSearch&#xff0c;用于检索、聚合分析和大数据存储https://blog.csdn.net/weixin_44295677…