Layui实现TreeTable(树形数据表格)

2023-11-05

参考
Layui实现TreeTable(树形数据表格)
LayUI树形表格treetable使用详解
gitee:ele-admin / treetable-lay

文中涉及的treetable.js、页面代码都可以在这下载gitee代码下载,直接zip下载即可

开发背景

在开源项目看到layui-treetable实现的菜单配置,页面简洁,手上刚好又有个菜单页面可以进行优化(整活)。但是尽管已经有上面三个案例,因为和现业务并不是很匹配、treetable.js版本等原因,整合的过程还是有些波折。

优化结果:
原页面
在这里插入图片描述
treetable实现的页面
在这里插入图片描述

实现

下载引入treetable.js

我用的版本是没有css,只有一个treetable.js,引入可以参考 LayUI树形表格treetable使用详解开篇讲的方式。

使用

HTML页面主要代码

 <!-- 数据表格 -->
<table class="layui-table" id="menus-table" lay-filter="menus-table"></table>
 <!-- 表格操作列 -->
 <script type="text/html" id="menusState">
     <a class="layui-btn layui-btn-xs" lay-event="detail">详情</a>
     <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
 </script>

js

// 渲染表格
    var treemenu = {
        reload: function () {
            treetable.render({
                elem: '#menus-table',
                url: serviceBase + '/service/menuWork/list',
                // toolbar: 'default',
                height: 'full-200',
                method:'get',
                where: {
                    name: $("#name").val()
                },
                tree: {
                    iconIndex: 2,
                    isPidData: true,
                    idName: 'code',//父ID
                    pidName: 'parentCode',//子ID
                    openName: 'open',// 是否默认展开的字段名
                    //public bool open { get; set; }open字段是bool类型
                },
                // defaultToolbar: ['filter', 'print', 'exports'],
                cols: [[
                    {type: 'numbers'},
                    {field: 'code', title: '菜单代码', width: 100},
                    {field: 'name', title: '名称', width: 250},
                    {field: 'description', title: '描述', width: 200},
                    {field: 'url', title: '菜单路由'},
                    {field: 'perCode', title: '权限代码'},
                    {field: 'icon', title: '图标', align: 'center', width: 100,
                        templet:'<div><i class="layui-icon {{d.icon}}"></i></div>'
                    },
                    {field: 'seqNo', title: '顺序号', align: 'center', width: 110},
                    {field: 'createTime', title: '创建时间', align: 'center', width: 200},
                    {toolbar: '#menusState', width: 120, align: 'center', title: '操作'}
                ]],
                style: 'margin-top:0;'

            });
            treetable.on('tool(menus-table)', function (obj) {
                var data = obj.data;
                var layEvent = obj.event;
                if (layEvent === 'detail') {
                    layer.open({
                        type: 2, //type2表示打开iframe层
                        title: ['详情'],  //false表示不显示标题
                        area: ['800px', '600px'],
                        shade: 0.1, //是否显示遮罩层
                        // shadeClose: true, //是否点击遮罩关闭
                        id: "detail",  //设置id防止重复弹出
                        moveType: 0, //拖拽模式0或者1
                        content: kiteBase + "page/configure/menu_detail.html?" + $.param({
                            code: data.code,
                            icon: data.icon,
                        })
                    });
                } else if (layEvent === 'edit') {
                    layer.open({
                        type: 2, //type2表示打开iframe层
                        title: ['新增配置'],  //false表示不显示标题
                        area: ['800px', '700px'],
                        shade: 0.1, //是否显示遮罩层
                        // shadeClose: true, //是否点击遮罩关闭
                        id: "edit1",  //设置id防止重复弹出
                        moveType: 0, //拖拽模式0或者1
                        content: kiteBase + "page/configure/menu_edit.html?" + $.param({
                            code: data.code,
                            icon: data.icon,
                        })
                    });
                }
            });
            form.render();
        }

    }
    
layui.use(['layer', 'form', 'table', 'element', 'treeTable'], function () {
        var $ = layui.$;
        form = layui.form;
        layer = layui.layer;
        element = layui.element;
        menuPerTable = layui.table;
        treetable = layui.treeTable;

        treemenu.reload();
        menuPer.reload();

    })

接口请求的数据为:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

注意点: treetable.js中需要修改相应的代码,下面是修改后跟我上面接口返回的type一致,原代码用的code去判断请求是否成功,数据用的是data,所以如果你数据用的是其它字段,这边的data也要改成你相应的字段
在这里插入图片描述
上面js部分代码主要改的就下面两个,改成和你自己的数据一致

idName: 'code',//父ID
pidName: 'parentCode',//子ID
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Layui实现TreeTable(树形数据表格) 的相关文章

  • 禁用内容安全策略

    当我开发网站时 我经常想看看特定功能在网站上的外观如何 所以我会使用 chrome 开发者工具并经常运行一些 javascript 脚本 我经常发现一些脚本由于内容安全策略 CSP 而无法运行的问题 我完全理解该策略是为了防止跨站点脚本攻击
  • 我如何在 AngularJS 中监听点击并按住的情况?

    我制作了一个时间计数器 您可以通过单击按钮来增加或减少时间 然而 我希望当我单击并按住按钮时 时间的价值会不断攀升 所以目前如果你看到我的Plunkr http plnkr co edit BxX9x5zYFMXVqt5JsN1F p pr
  • chrome 调试器承诺在暂停时不会解析?

    也许我没有正确调试承诺 但基本上 如果您在断点处停止并运行异步代码 它实际上不会完成 直到您恢复执行为止 这是一个问题 调试器允许您快速试验多个 api 方法 但如果您恢复它 您就不能 debugger now type the follo
  • 取消html5浏览器中的单图请求

    我正在动态加载 大 图像以绘制到 html5 画布中 如下所示 var t new Image t onload t src http myurl 但每隔一段时间就会想取消图片请求完全地 我想出的唯一方法是设置src to i e t sr
  • 网站 YouTube 嵌入视频不断播放

    我正在使用 youtube 提供的 iframe 在我的网站上嵌入视频 我还使用了一个 css 弹出窗口 这是我从这个页面学到的http www pat burt com web development how to do a css po
  • Node js 使用中间件重定向进行过多重定向

    在我的 Node js 应用程序 我使用的是express 4 x 中 我想检查用户是否已登录 如果用户未登录 我想重定向到我的登录页面 然后我在中间件中这样做 服务器 js app use function req res next if
  • 在网页上的文本框中键入内容时删除所有空格

    我如何在用户打字时即时删除输入到文本框中的空格 function var txt myTextbox var func function txt val txt val replace s g txt keyup func blur fun
  • jquery 验证错误位置

    这看起来很简单 但我无法弄清楚 我正在使用 jquery 验证插件 我验证所有文件 但我想要的是在输入文本行中显示验证消息警报 例如在电子邮件输入中 请填写电子邮件地址 但现在它出现在所有字段下 在我的html中
  • Jquery从下拉列表中获取所选值的id

    我有一个下拉列表 可以从数据库获取值 如下所示 get getJobs function jobs seljobs jobs var i 0 jobs forEach function n alert job id n id 32 67 4
  • 如何使用canvas.toDataURL()将画布保存为图像?

    我目前正在构建一个 HTML5 Web 应用程序 Phonegap 本机应用程序 我似乎不知道如何将画布保存为图像canvas toDataURL 有人可以帮我吗 这是代码 有什么问题吗 我的画布被命名为 canvasSignature J
  • 如何使用 jest 模拟第三方库

    我正在开发一个node js应用程序使用nestjs我有一堂课叫LoggerService如下 export class LoggerService private logger Rollbar constructor this logge
  • jquery window.open 在 ajax 成功中被阻止

    尝试在我的 ajax 成功调用中打开一个新的浏览器窗口 但是 它被阻止为弹出窗口 我做了一些搜索 发现用户事件需要绑定到 window open 才能避免这种情况发生 我还找到了这个解决方案 您可以在 ajax 之前打开一个空白窗口 然后在
  • javascript中按tab键时如何调用函数?

    我有一个这样的功能 function whenEmpty field if field value field style backgroundColor ffcccc alert Please fill the field field f
  • 在d3.js中将2D形状转换为3D,并根据ANGULAR中的值调整高度

    我正在使用 d3 js v6 创建以下 2D 图表表示的 3D 图表 这个圆圈中有多个正方形 每个正方形都根据值分配了一种颜色 值越大 正方形越暗 现在我想将其转换为 3D 形状 其中当值变高时 只有特定正方形的高度会增加 因此结果在某种程
  • Typeahead.js substringMatcher 函数说明

    我只是在做一些研究Typeahead js这是一个非常酷的图书馆 感谢文档 我已经成功地获得了一个基本的示例 该文档也非常好 但是我试图弄清楚以下代码块实际上在做什么 var substringMatcher function strs r
  • 当用户单击链接时,如何记录 MixPanel 事件?

    当用户单击某种类型的链接时 我试图在 MixPanel 中记录一个事件 我正在使用 JQuery 不引人注意地完成此操作 据我所知 我需要添加一个回调函数 以便在记录事件后将用户带到 URL 这是我正在使用的代码 不幸的是
  • Nodejs mysql 获取正确的时间戳格式

    我在用着mysqljs https github com mysqljs mysql得到结果后sql我变得不同TimeStamp格式如下 created at Sat Jul 16 2016 23 52 54 GMT 0430 IRDT 但
  • 如何在 Google 地图 V3 中创建编号地图标记?

    我正在制作一张上面有多个标记的地图 这些标记使用自定义图标 但我还想在顶部添加数字 我已经了解了如何使用旧版本的 API 来实现这一点 我怎样才能在V3中做到这一点 注意 当您将鼠标悬停在标记上时 标题 属性会创建一个工具提示 但我希望即使
  • 如何在打字稿文件中导入没有定义文件的js库

    随着我们的项目变得越来越大 我想从 JavaScript 切换到 TypeScript 以帮助进行代码管理 然而 我们使用许多库作为 amd 模块 我们不想将其转换为 TypeScript 我们仍然想将它们导入 TypeScript 文件
  • KeyboardAvoidingView - 隐藏键盘时重置高度

    我正在使用 React NativeKeyboardAvoidingView设置我的高度View当显示键盘时 但是当我关闭应用程序中的键盘时 视图的高度不会变回原来的值

随机推荐

  • 计算机最高单价公式,CFA考试中计算器的三种最高频率的用法

    原标题 CFA考试中计算器的三种最高频率的用法 CFA考试中使用计算机的频率还是比较多的 但是你知道使用CFA考试中使用计算机最高频率的使用方法你知道吗 下边有小跃给大家分享一下在CFA考试中计算器的三种最高频的用法 CFA考试时只允许使用
  • 在OpenCV中使用Canny边缘检测

    点击上方 小白学视觉 选择加 星标 或 置顶 重磅干货 第一时间送达 边缘检测是非常常见和广泛使用的图像处理 对于许多不同的计算机视觉应用非常必要 如数据提取 图像分割 在更细粒度的特征提取和模式识别中 它降低了图像中的噪声和细节数量 但保
  • dos进入mysql不记得密码_windos mysql 忘记密码,无密码登录,重新登录

    上一节的MySQL的配置安装里 并没有用到配置文件my ini 那在MYSQL8 0 13如何解决密码重置问题呢 我去网上搜了好多的资料都是改配置文件my ini的 后来终于找到了一条命令 操作步骤如下 1 打开命令窗口cmd 输入命令 n
  • Android开发学习【简单控件】

    Android开发学习 Day01 Android onCreate 详解 简单控件 文本显示 设置文本内容方式 设置文本的大小 设置文本的颜色 设置视图的宽高 直接设置 在代码中设置视图宽高 设置视图间距 设置视图的对齐方式 线性布局Li
  • 【深入理解C++】内存布局

    关于 C 的内存布局 网上说法不一 有人将其分为 4 4 4 区 也有人将其分为 5 5 5 区 不同的人分成的 5
  • 什么是JWT?

    在HTTP接口调用的时候 服务端经常需要对调用方做认证 以保证安全性 一种常见的认证方式是使用JWT Json Web Token 采用这种方式时 经常在header传入一个authorization字段 值为对应的jwt token 或者
  • python调用hive脚本_python 中写hive 脚本

    1 直接执行 sql脚本 import numpy as np import pandas as pd import lightgbm as lgb from pandas import DataFrame from sklearn mod
  • wkhtmltopdf 实现html 文档对象转换为pdf 文件核心功能代码

    环境说明 环境 windows10 客户端软件 wkhtmltopdf 记得配置wkhtmltopdf 全局环境变量 相关的安装步骤可以baidu或者google wkhtmltopdf 安装包已经上传csdn Java 核心功能代码 添加
  • javaweb 如何在前端根据数据画出图像曲线

    一个实现画板的程序 与我的项目没啥关系 发现一个实现图表的js程序 chartjs官网 我一会儿得学学 echarts的js的实例 唉 找不到一个好的方法 看了看echarts的官方文档 发现echarts确实非常强悍相比如chartjs来
  • 龙书笔记

    1 我们可以设置第四个参数w 当w设置为1时 为了让点可以恰当的转变 当w设置为0时 为了防止向量被平移 2 一个平面 n d 可以被当做一个4d向量来交换 将这个4D向量乘期望的变换矩阵的逆矩阵就可以了 3 顶点操作 并非所有的显卡都支持
  • 小程序练手

    上个星期学了一下小程序 然后写了一个项目练练手 主要实现了三个功能 实现文件的上传功能 实现评论功能 实现展示功能 这里记录一下云开发几个重要的点 首先的是文件的上传并预览 wxml
  • MYSQL02高级_目录结构、默认数据库、表文件、系统独立表空间

    文章目录 MySQL目录结构 查看默认数据库 MYSQL5 7和8表文件 系统 独立表空间 MySQL目录结构 如何查看关联mysql目录 root mysql8 find name mysql var lib mysql var lib
  • SpringSecurity学习笔记(九)RememberMe进阶

    参考视频 编程不良人 前面我们介绍了rememberMe的实现原理 从中我们可以思考这样一个问题 如果我们的cookie被非法用户获取 然后携带这个cookie进行访问我们的项目中的内容 就会导致非法用户登录 这个问题怎么解决呢 Remem
  • MySQL 字符串函数:字符串截取

    MySQL 字符串函数 字符串截取 MySQL 字符串截取函数 left right substring substring index 还有 mid substr 其中 mid substr 等价于 substring 函数 substr
  • linux 新建用户无 .profile 问题

    1 新建一个用户 其家目录下面默认生成什么文件由 etc skel 目录决定 就是 这个目录下面有什么新建用户后家目录就生成什么 2 新建一个用户可以由 d 参数指定家目录 如 useradd d home test u 500 g ora
  • 微信小程序wx.getUserInfo授权获取用户信息(头像、昵称)

    这个接口只能获得一些非敏感信息 例如用户昵称 用户头像 经过用户授权允许获取的情况下即可获得用户信息 至于openid这些 需要调取wx login来获取 index wxml
  • VS2013使用技巧汇总

    1 Peek View 在不新建TAB的情况下快速查看 编辑一个函数的代码 以前要看一个函数的实现 需要在使用的地方点击F12跳转到该函数 实际上这是很浪费时间的 VS2013Peek View便解决了这个问题 在光标移至某个函数下 按下a
  • go-diskqueue数据结构

    一 本文目的是介绍go diskqueue go diskqueue 应用于nsq https github com nsqio nsq 作用是存储内存装不下的消息到磁盘 并支持读取 go diskqueue https github co
  • stm32寄存器

    define RCC APB2ENR volatile unsigned int 0x40021000 0x18 RCC APB2ENR 1 lt lt 3 CRH是控制高八位引脚 CRL是控制低八位引脚 配置推挽输出 GPIOB CRH
  • Layui实现TreeTable(树形数据表格)

    参考 Layui实现TreeTable 树形数据表格 LayUI树形表格treetable使用详解 gitee ele admin treetable lay 文中涉及的treetable js 页面代码都可以在这下载gitee代码下载 直