layui - 父子表

效果图

 代码

<!doctype html>
<html>
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
		<meta name="apple-mobile-web-app-capable" content="yes">
		<meta name="apple-mobile-web-app-status-bar-style" content="black" />
		<meta id="viewport" name="viewport"
			content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,minimal-ui">
		<link rel="shortcut icon" href="img/jujianguan28x28.png" />
		<meta name="description" content="重庆人才网" />
		<meta name="keywords" content="重庆人才网" />
		<title>layui - 父子表</title>
		<link rel="stylesheet" href="//res.layuion.com/layui/dist/css/layui.css?t=1637741861917" media="all">
		<script src="js/jquery-2.1.1.min.js" type="text/javascript" charset="utf-8"></script>
	</head>
	<body>

		<table id="bmtable" class="layui-hide" lay-filter="baoming"></table>
		<style>
			.c1 {
				color: rgb(9, 80, 13);
			}

			.c2 {
				color: rgb(223, 18, 18);
				cursor: pointer;
			}
		</style>
		<script type="text/html" id="nametpl">
			<span class="c2">{{d.college_name}}</span>
		</script>
		<script type="text/html" id="toolbartpl">
			<a class="layui-btn layui-btn-xs" href="javascript:collegeadd({{d.id}},'{{d.college_name}}')">编辑</a>
			<a class="layui-btn layui-btn-xs" href="index.php?c=zhaosheng&act=professionaladd&c_id={{d.id}}">添加专业</a>
		</script>

		<script type="text/html" id="toolbartpl_child">
			<a class="layui-btn layui-btn-xs" href="javascript:professionalDel({{d.id}})">删除</a>
			<a class="layui-btn layui-btn-xs" href="index.php?c=zhaosheng&act=professionaladd&id={{d.id}}">编辑</a>
		</script>
		<script src="//res.layuion.com/layui/dist/layui.js?t=1637741861917"></script>
		<script type="text/javascript" charset="utf-8">
			var bmtable;
			var childurl = "{yun:}$childurl{/yun}";
			layui.use(['table', 'form'], function() {
				var table = layui.table;
				var form = layui.form;
				bmtable = table.render({
					elem: "#bmtable",
					url: '{yun:}$url{/yun}',
					cellMinWidth: 80,
					limit: 10,
					page: true,
					cols: [
						[{
								type: 'checkbox'
							}, {
								field: 'id',
								title: 'ID',
								width: 80
							}, {
								field: 'college_name',
								title: '院系名称',
								event: 'collapse',
								templet: '#nametpl'
							}, {
								field: 'ctime',
								title: '时间'
							}, {
								fixed: 'right',
								title: '',
								toolbar: '#toolbartpl'
							}

						]
					],
					done: function(res, curr, count) {
						console.log(res)
					}
				});


				//监听工具条
				table.on('tool(baoming)',
					function(obj) {
						var data = obj.data;
						if (obj.event === 'collapse') {
							var trObj = layui.$(this).parent('tr'); //当前行
							var accordion = true //开启手风琴,那么在进行折叠操作时,始终只会展现当前展开的表格。
							var content = '<table></table>' //内容
							//表格行折叠方法
							collapseTable({
								elem: trObj,
								accordion: accordion,
								content: content,
								success: function(trObjChildren, index) { //成功回调函数
									//trObjChildren 展开tr层DOM
									//index 当前层索引
									trObjChildren.find('table').attr("id", index);
									table.render({
										elem: "#" + index,
										url: childurl + '&c_id=' + data.id,
										limit: 10,
										cellMinWidth: 80,
										page: true,
										cols: [
											[{
													field: 'id',
													width: 80,
													title: 'ID',
													sort: true
												},
												{
													field: 'name',
													title: '院系专业'
												},
												{
													field: 'introduce',
													title: '专业介绍',
													sort: true
												},
												{
													field: 'ctime',
													title: '时间'
												}, {
													fixed: 'right',
													title: '',
													toolbar: '#toolbartpl_child'
												}
											]
										]
									});

								}
							});

						}
					});

				function collapseTable(options) {
					var trObj = options.elem;
					if (!trObj) return;
					var accordion = options.accordion,
						success = options.success,
						content = options.content || '';
					var tableView = trObj.parents('.layui-table-view'); //当前表格视图
					var id = tableView.attr('lay-id'); //当前表格标识
					var index = trObj.data('index'); //当前行索引
					var leftTr = tableView.find('.layui-table-fixed.layui-table-fixed-l tr[data-index="' + index +
						'"]'); //左侧当前固定行
					var rightTr = tableView.find('.layui-table-fixed.layui-table-fixed-r tr[data-index="' + index +
						'"]'); //右侧当前固定行
					var colspan = trObj.find('td').length; //获取合并长度
					var trObjChildren = trObj.next(); //展开行Dom
					var indexChildren = id + '-' + index + '-children'; //展开行索引
					var leftTrChildren = tableView.find('.layui-table-fixed.layui-table-fixed-l tr[data-index="' +
						indexChildren + '"]'); //左侧展开固定行
					var rightTrChildren = tableView.find('.layui-table-fixed.layui-table-fixed-r tr[data-index="' +
						indexChildren + '"]'); //右侧展开固定行
					var lw = leftTr.width() + 15; //左宽
					var rw = rightTr.width() + 15; //右宽
					//不存在就创建展开行
					if (trObjChildren.data('index') != indexChildren) {
						//装载HTML元素
						var tr = '<tr data-index="' + indexChildren + '"><td colspan="' + colspan +
							'"><div style="height: auto;padding-left:' + lw + 'px;padding-right:' + rw +
							'px" class="layui-table-cell">' + content + '</div></td></tr>';
						trObjChildren = trObj.after(tr).next().hide(); //隐藏展开行
						var fixTr = '<tr data-index="' + indexChildren + '"></tr>'; //固定行
						leftTrChildren = leftTr.after(fixTr).next().hide(); //左固定
						rightTrChildren = rightTr.after(fixTr).next().hide(); //右固定
					}
					//展开|折叠箭头图标
					trObj.find('td[lay-event="collapse"] i.layui-colla-icon').toggleClass(
						"layui-icon-right layui-icon-down");
					//显示|隐藏展开行
					trObjChildren.toggle();
					//开启手风琴折叠和折叠箭头
					if (accordion) {
						trObj.siblings().find('td[lay-event="collapse"] i.layui-colla-icon').removeClass(
							"layui-icon-down").addClass("layui-icon-right");
						trObjChildren.siblings('[data-index$="-children"]').hide(); //展开
						rightTrChildren.siblings('[data-index$="-children"]').hide(); //左固定
						leftTrChildren.siblings('[data-index$="-children"]').hide(); //右固定
					}
					success(trObjChildren, indexChildren); //回调函数
					heightChildren = trObjChildren.height(); //展开高度固定
					rightTrChildren.height(heightChildren + 115).toggle(); //左固定
					leftTrChildren.height(heightChildren + 115).toggle(); //右固定
				}
				// layui.table.on('checkbox(baoming)', function(obj){
				// 	console.log(obj.checked); //当前是否选中状态
				// 	console.log(obj.data); //选中行的相关数据
				// 	console.log(obj.type); //如果触发的是全选,则为:all,如果触发的是单选,则为:one
				// });	


			});

			function collegeDel() {
				var data = layui.table.checkStatus("bmtable").data;
				if (data.length == 0) {
					layer.msg("请选择要删除的数据!", 2, 8);
					return;
				}
				layer.confirm("确定要删除吗?", function(index) {
					var arr = new Array();
					data.forEach(function(ele) {
						arr.push(ele["id"]);
					});
					var body = {
						"data": arr
					};
					$.post("", body, function() {
						layer.close(index);
						bmtable.reload();
					});

				});
			}

			function collegeadd(id = 0, name = '') {
				var title = "添加院系";
				if (id) {
					title = "编辑院系";
				}
				layer.prompt({
					title: title,
					value: name
				}, function(value, index, elem) {
					layer.close(index);
					var body = {
						"college_name": value,
						"id": id,
					};
					$.post("", body, function() {
						layer.close(index);
						bmtable.reload();
					});
				});
			}

			function professionalDel(id) {
				layer.confirm("确定要删除吗?", function(index) {
					var body = {
						"id": id
					};
					$.post("", body, function(e) {
						layer.close(index);
						bmtable.reload();
					}, 'json');

				});
			}
		</script>
	</body>

</html>

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值