You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

345 lines
14 KiB

11 months ago
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>菜单信息管理</title>
<meta name="renderer" content="webkit">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<meta name="viewport"
content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0">
<link rel="stylesheet" href="../../static/css/font.css">
<link rel="stylesheet" href="../../static/css/weadmin.css">
<link rel="stylesheet" href="../../lib/layui/css/layui.css">
<link rel="stylesheet" href="../../lib/tabletree/css/jquery.treetable.css">
<link rel="stylesheet" href="../../lib/tabletree/css/screen.css">
<link rel="stylesheet" href="../../lib/tabletree/css/jquery.treetable.theme.default.css">
<!-- 让IE8/9支持媒体查询从而兼容栅格 -->
<!--[if lt IE 9]>
<script src="https://cdn.staticfile.org/html5shiv/r29/html5.min.js"></script>
<script src="https://cdn.staticfile.org/respond.js/1.4.2/respond.min.js"></script>
<![endif]-->
<style>
table.treetable thead tr th {
border: 1px solid #e6e6e6 !important;
}
#example-basic thead tr {
background-color: #f2f2f2 !important;
font-size: 14px !important;
color: #666 !important;
height: 28px !important;
line-height: 28px !important;
border: 1px solid #e6e6e6 !important;
}
#example-basic tbody tr {
background-color: #fff !important;
font-size: 14px !important;
color: #666 !important;
height: 33px !important;
line-height: 33px !important;
border: 1px solid #e6e6e6 !important;
}
#example-basic tbody tr td {
border-right: 1px solid #e6e6e6 !important;
}
#example-basic tr td:nth-child(1) {
width: 30%;
}
#example-basic tr td:nth-child(2) {
width: 15%;
}
#example-basic tr td:nth-child(3) {
width:5%;
}
#example-basic tr td:nth-child(4) {
width:20%;
}
#example-basic tr td:nth-child(5) {
width: 30%;
}
</style>
</head>
<body>
<div class="weadmin-nav">
<span class="layui-breadcrumb">
<a href="">首页</a>
<a href="">基础管理</a>
<a>
<cite>菜单维护</cite></a>
</span>
<a class="layui-btn layui-btn-sm" style="line-height:1.6em;margin-top:3px;float:right"
href="javascript:location.replace(location.href);" title="刷新">
<i class="layui-icon layui-icon-refresh-3" style="line-height:30px"></i></a>
</div>
<!-- 表头 -->
<div style="padding:20px 20px 0 20px">
<table id="example-basic">
<thead>
<tr>
<th>名称</th>
<th>url地址</th>
<th>排序号</th>
<th>描述信息</th>
<th>操作</th>
</tr>
</thead>
<tbody id="tb1">
<tr data-node-id="1" data-tt-branch="true">
<td><span class='folder'></span>菜单</td>
<td>#</td>
<td>1</td>
<td>未填写</td>
<td>
<a class="layui-btn layui-btn-xs addBtn">添加</a><a class="layui-btn layui-btn-xs editBtn">编辑</a><a class="layui-btn layui-btn-xs layui-btn-danger delBtn">删除</a>
</td>
</tr>
</tbody>
</table>
<script type="text/html" id="test1">
{{# for(var i = 0, len = d.data.length; i < len; i++){ }}
<tr data-node-id={{d.data[i].menu_id}} data-parent-id={{d.data[i].parent_id}} data-level={{d.data[i].level_id}} data-node-name={{d.data[i].menu_name}} data-tt-branch={{d.data[i].is_leaf}}>
<td>
{{# if(d.data[i].is_leaf){ }}
<span class="folder"></span>{{d.data[i].menu_name}}
{{# } else { }}
<span class="file"></span>{{d.data[i].menu_name}}
{{# } }}
</td>
<td>{{d.data[i].url}}</td>
<td>{{d.data[i].sort_id}}</td>
<td>{{d.data[i].memo}}</td>
<td>
<a class="layui-btn layui-btn-xs addBtn">添加</a>
<a class="layui-btn layui-btn-xs editBtn">编辑</a>
<a class="layui-btn layui-btn-xs layui-btn-danger delBtn">删除</a>
</td>
</tr>
{{# } }}
</script>
</div>
<script src="../../lib/layui/layui.js"></script>
<script src="../../lib/jquery-3.6.0.min.js"></script>
<script src="../../lib/tabletree/jquery.treetable.js"></script>
<script type="text/javascript">
layui.extend({
admin: '{/}../../static/js/admin'
});
layui.use(['jquery', 'admin', 'layer','laytpl'], function () {
var $ = layui.jquery,
admin = layui.admin,
layer = layui.layer,
laytpl=layui.laytpl;
function loadHtml(id) {
var list=selectChildAsync(id);
console.log(list);
var str = '';
$.each(list, function (i, item) {
str += '<tr data-node-id="' + item.menu_id + '" data-parent-id="' + item.parent_id + '" data-level="' + item.level_id + '" data-node-name="' + item.menu_name + '" data-tt-branch="' + (item.is_leaf == 0 ? "false" : "true") + '">' +
'<td>' +
(item.is_leaf > 0 ? '<span class="folder"></span>' : '<span class="file"></span>') +
item.menu_name + '</td>' +
'<td>' + item.url + '</td>' +
'<td>' + item.sort_id + '</td>' +
'<td>' + item.memo + '</td>' +
'<td>' +
'<a href="javascript:void(0);" class="layui-btn layui-btn-xs addBtn" >添加</a>' +
'<a href="javascript:void(0);" class="layui-btn layui-btn-xs editBtn">编辑</a>' +
'<a href="javascript:void(0);" class="layui-btn layui-btn-xs layui-btn-danger delBtn">删除</a>' +
'</td>' +
'</tr>';
})
return str;
}
// parent_id
function selectChildAsync(id){
var list="";
$.ajax({
type: "GET",
async: false,
async:false,
11 months ago
url: '/dsBase/menu/selectChildAsync?parent_id='+id,
11 months ago
dataType: "json",
success: function (data) {
list=data.data;
}
});
return list;
}
// id
function selectSingle(id) {
var list = "";
$.ajax({
type : "GET",
dataType : "json",
11 months ago
url:'/dsBase/menu/selectSingle?menu_id='+id,
11 months ago
async : false,
success : function(data) {
list=data.menu_info[0];
}
});
return list;
}
function loadTr(id) {
var lis=selectSingle(id);
var str = "";
str += '<tr data-node-id="' + lis.menu_id + '" data-parent-id="' + lis.parent_id + '" data-level="' + lis.level_id + '" data-node-name="' + lis.menu_name + '" data-tt-branch="' + (lis.is_leaf == 0 ? "false" : "true") + '">' +
'<td>' +
(lis.is_leaf ? '<span class="folder"></span>' : '<span class="file"></span>') +
lis.menu_name + '</td>' +
'<td>' + lis.url + '</td>' +
'<td>' + lis.sort_id + '</td>' +
'<td>' + lis.memo + '</td>' +
'<td>' +
'<a class="layui-btn layui-btn-xs addBtn" href="javascript:void(0);" >添加</a>' +
'<a href="javascript:void(0);" class="layui-btn layui-btn-xs editBtn" >编辑</a>' +
'<a href="javascript:void(0);" class="layui-btn layui-btn-xs layui-btn-danger delBtn">删除</a>' +
'</td>' +
'</tr>';
return str;
}
$(function () {
$("#example-basic").treetable({
nodeIdAttr: "nodeId",
parentIdAttr: "parentId",
stringCollapse: "收起",
stringExpand: "展开",
expandable: true,
clickableNodeNames: true,
onInitialized: function () {
$("#example-basic tr:first a").trigger('click');
$("#example-basic").treetable('expandNode', '1');
},
//展开
onNodeExpand: function () {
var node = this;
//是否已经加载
if (node.children && !node.children.length) {
var html = loadHtml(node.id);
$("#example-basic").treetable("loadBranch", node, html);
}
}
}).on("click", ".delBtn", function (e) {
e.preventDefault();
var id = $(this).closest("tr").data("node-id");
var pId = $(this).closest("tr").data("parent-id");
var name = $(this).closest("tr").data("node-name");
var list=selectSingle(id);
var branch = list.is_leaf;
layer.confirm('确定删除' + name + '吗?', {
icon: 7
}, function () {
console.log("branch="+branch)
if(branch>0){
layer.alert('存在子节点,不可以直接删除',{icon:0});
}else{
$.ajax({
type: "POST",
dataTYpe: "json",
data: {
menu_id: id
},
11 months ago
url: "/dsBase/menu/DeleteMenu",
11 months ago
success: function (data) {
if (data.success) {
layer.msg(data.message, {icon: 1, time: 2000, shade: 0.1}, function () {
$("#example-basic").treetable("removeNode", id);
var list=selectSingle(pId);
if (list.is_leaf == 0) {
$("tr[data-node-id='" + pId + "']").find("td .folder").removeClass("folder").addClass("file");
$("tr[data-node-id='" + pId + "']").find(".indenter a").hide();
} else {
$("tr[data-node-id='" + id + "']").find("td .folder").removeClass("file").addClass("folder");
$("tr[data-node-id='" + pId + "']").find(".indenter a").show();
}
});
} else {
layer.alert(data.message, {icon: 0});
}
},
error: function (data) {
layer.alert(data.message, {icon: 0})
}
})
}
});
}).on("click", ".addBtn", function (e) {
e.preventDefault();
var id = $(this).closest("tr").data("node-id");
var level = $(this).closest("tr").data("level");
operation('添加', './add.html', id, level);
}).on("click", ".editBtn", function (e) {
e.preventDefault();
var id = $(this).closest("tr").data("node-id");
var level = $(this).closest("tr").data("level");
operation('编辑', './edit.html', id, level);
});
})
// 操作:增 改
function operation(title,url,id){
layer.open({
type: 2,
10 months ago
area: ['600px', '600px'],
11 months ago
fix: false, //不固定
maxmin: true,
shadeClose: false,
shade: 0.4,
title: title,
content: url+'?id='+id,
});
}
window.treeReload=function(id){
var lis=selectSingle(id);
var pdl=(lis.level_id-1)*19;
var txt="";
if(lis.is_leaf !==0){
txt="<span class=\"indenter\" style=\"padding-left:"+pdl+"px;\"><a href=\"#\" title=\"展开\">&nbsp;</a></span><span class=\"folder\"></span>"+lis.menu_name;
}else{
txt="<span class=\"indenter\" style=\"padding-left:"+pdl+"px;\"></span><span class=\"file\"></span>"+lis.menu_name;
}
$("tr[data-node-id='"+id+"']").find("td:eq(0)").html(txt);
$("tr[data-node-id='"+id+"']").find("td:eq(1)").text(lis.url);
$("tr[data-node-id='"+id+"']").find("td:eq(2)").text(lis.sort_id);
$("tr[data-node-id='"+id+"']").find("td:eq(3)").text(lis.memo);
}
// 增加树
window.reloadTree = function (pId, nodeId) {
var node = $("#example-basic").treetable("node", pId);
var html = loadTr(nodeId);
$("#example-basic").treetable("loadBranch", node, html);
$("tr[data-node-id='" + pId + "']").find("td .file").removeClass("file").addClass("folder");
$("tr[data-node-id='" + pId + "']").find(".indenter a").show();
}
})
</script>
</body>
</html>