关于layui的树形表格treeTable

4,444 阅读2分钟

前言

项目需要要做一个树形表格,项目用的技术框架是layui。去查看了文档,layui没有treeTable的相关内容,但是他的拓展里面有,感觉有点生硬。后面是百度看大牛们写的,自己跟着写的,觉得还是做个笔记好一点。 注意:我用的layui的版本2.4.5,低版本的可能会使树形表格的样式会加载不全的。 话不说多,当代码:

代码


<body>
	<div class="admin-main">
		<table class="layui-table layui-form" id="tree-table"></table>
	</div>
	<script type="text/javascript" src="./layui.js"></script>
	<script type="text/javascript">
		layui.config({
			base: 'js/', //存放treeTable.js的文件夹
		})
		layui.use(['treeTable', 'layer', 'code', 'form'], function () {

			var $ = layui.$,
				form = layui.form,
				layer = layui.layer,
				treeTable = layui.treeTable;

			function getList() {
				var info = {
					"pageSize": 15,
					"pageNumber": 1,
					"pMenuId": '',
					"searchValue": '',
				};
				api.url(info, function (res) { //	api.url 这个是我获取数据的接口
					if (res.status == 0) {
						layer.msg(res.msg);
					} else if (res.status == 1) {
                        // 处理后台数据,使他成为treeTable能够用的数据
						for (var i = 0; i < res.ResInfo.length; i++) {
							if (res.ResInfo[i].PMenuID) {
								res.ResInfo[i].PMenuID = res.ResInfo[i].PMenuID;
							} else {
								res.ResInfo[i].PMenuID = 0;
							}
							res.ResInfo[i].id = res.ResInfo[i].MenuID;
							res.ResInfo[i].pid = res.ResInfo[i].PMenuID;
						}
						treeTable.render({
							elem: '#tree-table',
							icon_key: 'Title',
							is_checkbox: true,
							// checked: {
							// 	key: 'id',
							// 	data: [],
							// },
							data: res.ResInfo,
							cols: [{
									key: 'Title',
									title: '菜单名称',
									width: '100px',
									template: function (item) {
										if (item.level == 0) {
											return '<span>' + item.Title + '</span>';
										} else if (item.level == 1) {
											return '<span>' + item.Title +
												'</span>';
										} else if (item.level == 2) {
											return '<span>' + item.Title + '</span>';
										}
									}
								},
								{
									key: 'Href',
									title: 'URL'
								},
								{
									key: 'Icon',
									title: '图标'
								},
								{
									key: 'OrderNo',
									title: '排序'
								},
								{
									key: 'RightName',
									title: '权限'
								},
								{
									key: 'Remark',
									title: '备注'
								},
								{
									title: '操作',
									align: 'center',
									width: '150px',
									template: function (item) {
									// item.level 这个是treetable.js处理好的,我们可以直接用
										if (item.level == 0) {
											return '<button class="layui-btn layui-btn-normal layui-btn-xs" lay-filter="add">添加</button>' +
												'<button class="layui-btn layui-btn-xs" lay-filter="edit">编辑</button>' +
												'<button class="layui-btn layui-btn-xs layui-btn-danger" lay-filter="del">删除</button>';
										} else {
											return '<button class="layui-btn layui-btn-xs" lay-filter="edit">编辑</button>' +
												'<button class="layui-btn layui-btn-xs layui-btn-danger" lay-filter="del">删除</button>';
										}
									}
								}
							],
							end: function (e) {
								form.render();
							},
						})
					}
				})
			}
			getList();

			// 添加
			treeTable.on('tree(add)', function (data) {
				layer.open({
					title: "添加",
					type: 2,
					content: "modelInfo.html?modelType=1" + '&MenuID=' + data.item.MenuID,
					area: ["600px", "500px"],
					success: function (layero, index) {
						var body = layer.getChildFrame('body', index);
						body.find("#Title").val('');
						body.find("#MLevel").val('');
						body.find("#Icon").val('');
						body.find("#Hrefurl").val('');
						body.find("#RightName").val('');
						body.find("#OrderNo").val('');
						body.find("#Remark").val('');
					},
					end: function () {
						getList();
					}
				});
			})

			// 编辑
			treeTable.on('tree(edit)', function (data) {
				layer.open({
					title: "编辑",
					type: 2,
					content: "modelInfo.html?modelType=2" + '&MenuID=' + data.item.MenuID +
						'&PMenuID=' + data.item.PMenuID,
					area: ["600px", "500px"],
					success: function (layero, index) {
						var body = layer.getChildFrame('body', index);
						body.find("#Title").val(data.item.Title);
						body.find("#MLevel").val(data.item.MLevel);
						body.find("#Icon").val(data.item.Icon);
						body.find("#Hrefurl").val(data.item.Href);
						body.find("#RightName").val(data.item.RightName);
						body.find("#OrderNo").val(data.item.OrderNo);
						body.find("#Remark").val(data.item.Remark);
					},
					end: function () {
						getList();
					}
				});
			})

			// 删除
			treeTable.on('tree(del)', function (data) {
				layer.confirm("是否这列数据?", {}, function (index) {
					var menuId = data.item.MenuID;
					WF.JSysMenuDelete(menuId, function (res) {
						if (res.status == 0) {
							layer.msg(res.msg);
						} else if (res.status == 1) {
							layer.msg("删除成功");
							getList();
							setTimeout(function () {
								layer.closeAll();
							}, 1000);
						} else {
							WF.Loginout();
						}
					})
				});
			})
			$('.layui-select-title').click(function () {
				$(this).parent().hasClass('layui-form-selected') ? $(this).next().hide() : $(
						this)
					.next()
					.show(), $(this).parent().toggleClass('layui-form-selected');
			})
			$(document).on("click", function (i) {
				!$(i.target).parent().hasClass('layui-select-title') && !$(i.target).parents(
						'table')
					.length && !(!$(i.target).parents('table').length && $(i.target).hasClass(
						'layui-icon')) && $(".layui-form-select").removeClass(
						"layui-form-selected")
					.find(
						'.layui-anim').hide();
			})
		})
	</script>
</body>

给你放着链接下载demo看看。demo跟上面的文件相似不相同啊!

链接:pan.baidu.com/s/1_pmNLFlN… 提取码:eayk

里面有layui、treetable.js 以及例子,各位自行拿吧,