Layui如何实现点击表格行时在右侧弹出该行的轨迹流程图

风涛姑娘_5825

风涛姑娘_5825

2026-05-18

244人浏览

原创

应使用 layui.table.on('row(tablefilter)') 监听表格行点击事件,它自动携带行数据对象;弹窗需在表格父容器内动态创建绝对定位 div,基于 tr.offset() 计算位置;流程图优先用原生 svg 绘制,通过 viewbox 和固定 font-size 保证清晰度与适配性。

点击表格行触发弹窗,layui 中该用哪个事件监听

直接绑定 layui.table.on('row(tablefilter)'),而不是 click 或 rowdouble。layui 表格的行点击事件必须通过内置的 row 事件监听,它会在点击任意行时触发,并自动携带该行的完整数据(data 对象)。若用原生 click 绑定到 .layui-table-body td 上,会丢失数据上下文,且容易和分页、排序等内部逻辑冲突。

常见错误是写成:table.on('tool(tableFilter)', ...) —— 这是工具栏按钮专用,不适用于整行点击。

  • 确保在 table.render() 中设置了 id 和 lay-filter,二者需一致,否则事件无法匹配
  • 事件回调中拿到的 data 是后端返回的原始字段,不是 DOM 节点,别试图用 $(this).find(...)
  • 如果表格启用了 skin: 'line' 或 even: true,不影响事件触发,但注意 CSS 可能遮挡点击热区

弹窗容器怎么放才不被遮挡、不破坏布局

右侧弹出流程图,不能用 layer.open({type: 1}) 直接塞 <div> 到 <code>body 底层——这样会脱离表格上下文,滚动时错位,且无法对齐当前行。正确做法是:在表格父容器内动态插入一个绝对定位的 <div class="flow-popup">,用 JS 计算当前行位置 + 表格容器偏移,再设置 <code>top 和 right。

关键点在于获取行 DOM 元素的位置:tr = $(obj.tr),然后调用 tr.offset(),再减去表格容器的 offset().top 和 scrollLeft 偏移(尤其当表格横向滚动时)。

  • 弹窗 div 必须设 position: absolute,父容器(如 .layui-table-box)要加 position: relative
  • 避免用 layer.tips(),它不支持自定义宽高和内嵌 SVG/Canvas,画流程图会变形
  • 首次渲染流程图前,先清空旧弹窗内容,防止数据残留($('.flow-popup').remove())

流程图用什么渲染,SVG 还是 ECharts?

轨迹流程图通常是带时间戳、状态节点、箭头连线的线性路径,不需要复杂交互或缩放,优先选原生 <svg></svg> 手动绘制。ECharts 太重,初始化慢,且 graph 类型默认是力导向布局,不适合严格按时间顺序排布的轨迹;而 lines 或 sankey 又不贴合“节点+步骤+流向”语义。

实操建议:把后端返回的轨迹数组(如 [{time: '09:20', loc: 'A区东门', status: '进入'}, {...}])映射为 SVG 的 <circle></circle>(节点)、<line></line>(连接线)、<text></text>(标签),用 transform: translateY() 控制垂直间距,宽度固定为 280px,高度随节点数动态计算。

深蓝色网站后台管理系统layui框架模板-AdminPro
深蓝色网站后台管理系统layui框架模板-AdminPro

一款深蓝色网站后台管理系统layui框架模板

下载
  • 每个节点 Y 坐标 = i * 60 + 40(i 从 0 开始),留出顶部标题和底部留白
  • 连线起点 Y = 当前节点 Y + 12,终点 Y = 下一节点 Y - 12,避免覆盖圆点
  • 若轨迹超 8 步,加 overflow-y: auto 并限制最大高度,不然弹窗撑爆视口

如何让流程图响应式适配不同屏幕宽度

右侧弹窗宽度不能写死,应根据视口剩余空间动态调整:const availWidth = $(window).width() - $('.layui-table-box').offset().left - 320(预留左侧表格约 320px 宽)。若结果小于 240px,就改用全屏弹层(layer.open({area: ['90%', '90%']})并把流程图居中显示。

更关键的是 SVG 内部缩放:不要靠 CSS 缩放整个 <svg></svg>,会导致文字模糊、线条发虚。应在生成 SVG 时,用 viewBox 控制逻辑坐标系,再用 width 和 height 属性控制渲染尺寸。例如:<svg viewbox="0 0 240 400" width="100%" height="auto"></svg>。

  • 文字大小统一用 font-size: 12px,避免用 rem/em,SVG 中单位处理不稳定
  • 移动端点击行后,弹窗若超出屏幕底部,需检测 bottom > $(window).height(),然后向上偏移并加箭头指示源行
  • 别忘了监听 resize 事件重新计算弹窗位置和 SVG 尺寸,但加防抖(setTimeout 延迟 150ms)

流程图部分最容易被忽略的是节点时间格式一致性——后端返回的 time 字段可能是 ISO 字符串、秒级时间戳或无格式数字,前端不做校验直接 new Date(time).toLocaleTimeString() 会抛错或显示 NaN。务必在绘图前做兜底转换。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

layui

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
ajax教程
ajax教程

php中文网为大家带来ajax教程合集,Ajax是一种用于创建快速动态网页的技术。通过在后台与服务器进行少量数据交换,Ajax可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。php中文网还为大家带来ajax的相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.14

2840

4

ajax中文乱码解决方法
ajax中文乱码解决方法

ajax中文乱码解决方法有设置请求头部的字符编码、在服务器端设置响应头部的字符编码和使用encodeURIComponent对中文进行编码。本专题为大家提供ajax中文乱码相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.31

360

5

ajax传递中文乱码怎么办
ajax传递中文乱码怎么办

ajax传递中文乱码的解决办法:1、设置统一的编码方式;2、服务器端编码;3、客户端解码;4、设置HTTP响应头;5、使用JSON格式。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.11.15

2673

5

ajax网站有哪些
ajax网站有哪些

使用ajax的网站有谷歌、维基百科、脸书、纽约时报、亚马逊、stackoverflow、twitter、hacker news、shopify和basecamp等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2024.09.24

1161

6

html5动画制作有哪些制作方法
html5动画制作有哪些制作方法

html5动画制作方法有使用CSS3动画、使用JavaScript动画库、使用HTML5 Canvas等。想了解更多html5动画制作方法相关内容,可以阅读本专题下面的文章。

2023.10.23

4131

6

canva可画使用技巧汇总
canva可画使用技巧汇总

本专题汇集了PHP中文网精心整理的Canva可画新手使用技巧大全,专为零基础用户打造。无论你是想制作精美海报、PPT还是社交媒体配图,这里都有从注册登录、模板搜索到AI辅助设计、导出分享的全流程保姆级教程。通过深入浅出的图文指南,帮助你快速跨越设计门槛,轻松掌握Canva可画的实用操作,让每个人都能成为设计达人!

2026.05.19

244

21

OpenJDK JVM参数怎么调优
OpenJDK JVM参数怎么调优

Java应用运行缓慢,如何调整JVM参数?本专题介绍OpenJDK JVM性能调优的基本流程,涵盖性能指标确认、运行数据采集、内存配置和垃圾回收分析,帮助你先定位瓶颈,再通过对照测试验证效果,避免直接套用参数而影响应用稳定性。

2026.10.16

0

10

OpenJDK怎么配置Java开发环境
OpenJDK怎么配置Java开发环境

怎样用OpenJDK搭建开发环境?本专题介绍版本选择、下载安装、环境变量配置和编译运行验证,帮助你理清JDK的作用及基本配置流程,并通过简单程序检查环境是否可用,为后续项目开发做好准备。

2026.10.16

0

10

OpenJDK怎么部署Java应用
OpenJDK怎么部署Java应用

Java项目开发完成后,怎样部署到目标环境并正常运行?本专题介绍OpenJDK应用部署流程,涵盖运行环境准备、版本兼容检查、应用打包、启动参数配置和日志查看,帮助你理清部署前后的操作顺序,减少环境差异造成的运行问题。

2026.10.16

0

10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
ThinkPHP配置开发与CMS后台实战
ThinkPHP配置开发与CMS后台实战

共87课时 | 12.9万人学习

第二十三期_综合实战
第二十三期_综合实战

共89课时 | 11.1万人学习

Layui 快速入门精讲
Layui 快速入门精讲

共5课时 | 1.6万人学习