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.
180 lines
5.9 KiB
180 lines
5.9 KiB
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<title></title>
|
|
<link rel="stylesheet" href="../../../component/ztree/zTreeStyle.css">
|
|
<link rel="stylesheet" href="../../../component/pear/css/pear.css" />
|
|
|
|
<style>
|
|
.ztree li span.button.add {
|
|
margin-left: 2px;
|
|
margin-right: -1px;
|
|
background-position: -144px 0;
|
|
vertical-align: top;
|
|
}
|
|
|
|
html,
|
|
body {
|
|
height: 98%;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
.container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
height: 100%;
|
|
}
|
|
|
|
.layui-card {
|
|
flex: 1;
|
|
}
|
|
</style>
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<form class="layui-form" action="">
|
|
<div class="mainBox">
|
|
<div class="main-container">
|
|
<div class='ztree' id='mytree'></div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="bottom">
|
|
<div class="button-container">
|
|
<button type="submit" class="pear-btn pear-btn-primary pear-btn-sm" lay-submit="" lay-filter="save">
|
|
<i class="layui-icon layui-icon-ok"></i>
|
|
提交
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
|
|
|
|
|
|
|
|
|
|
<script src="../../../component/layui/layui.js"></script>
|
|
<script src="../../../component/pear/pear.js"></script>
|
|
<script src="../../../admin/js/jquery-3.6.0.min.js"></script>
|
|
<script src="../../../component/ztree/jquery.ztree.core-3.5.min.js"></script>
|
|
<script src="../../../component/ztree/jquery.ztree.excheck-3.5.min.js"></script>
|
|
<script>
|
|
layui.use(['form', 'jquery', 'layer'], function () {
|
|
var form = layui.form;
|
|
var $ = layui.jquery
|
|
var layer = layui.layer;
|
|
|
|
var id = GetQueryString("id");
|
|
|
|
var setting = {
|
|
view: {
|
|
dblClickExpand: false,
|
|
showLine: true,
|
|
selectedMulti: false
|
|
},
|
|
data: {
|
|
simpleData: {
|
|
enable: true,
|
|
idKey: "id",
|
|
pIdKey: "pid",
|
|
rootPId: 0
|
|
}
|
|
},
|
|
check: {
|
|
enable: true,
|
|
chkboxType: { "Y": "ps", "N": "ps" }
|
|
}
|
|
};
|
|
|
|
$.ajax({
|
|
type: "GET",
|
|
async: false,
|
|
dataType: "json",
|
|
url: "/dsBase/menu/selectMenuByDuty?id=" + GetQueryString("id"),
|
|
success: function (data) {
|
|
if (data.success) {
|
|
var selectedArray = data.list.map(item => item.menu_id);
|
|
loadTree(selectedArray);
|
|
} else {
|
|
layer.alert(data.message, { icon: 0 });
|
|
return false;
|
|
}
|
|
}
|
|
});
|
|
|
|
function loadTree(selectedArray) {
|
|
$.ajax({
|
|
type: "GET",
|
|
async: false,
|
|
url: '/dsBase/menu/selectAll',
|
|
dataType: "json",
|
|
success: function (data) {
|
|
if (data.code == 0) {
|
|
var zNodes = data.data;
|
|
for (var i = 0; i < data.data.length; i++) {
|
|
for (var j = 0; j < selectedArray.length; j++) {
|
|
if (zNodes[i].id == selectedArray[j]) {
|
|
zNodes[i].checked = true;
|
|
}
|
|
}
|
|
}
|
|
$.fn.zTree.init($("#mytree"), setting, zNodes);
|
|
var treeObj = $.fn.zTree.getZTreeObj("mytree");
|
|
treeObj.expandAll(true);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
|
|
form.on('submit(save)', function (data) {
|
|
var zTree = $.fn.zTree.getZTreeObj("mytree");
|
|
var nodes = zTree.getCheckedNodes(true);
|
|
var selectNodeIds = "";
|
|
if (nodes.length > 0) {
|
|
var arr = nodes.map(item => item.id);
|
|
selectNodeIds = arr.join(',');
|
|
}
|
|
|
|
|
|
$.ajax({
|
|
url: "/dsBase/menu/saveMenuByDuty",
|
|
async: false,
|
|
data: { "id": id, "menu_ids": selectNodeIds },
|
|
type: 'post',
|
|
success: function (result) {
|
|
if (result.success) {
|
|
layer.msg("设置权限成功!", {
|
|
icon: 1,
|
|
time: 1300
|
|
}, function () {
|
|
parent.layer.close(parent.layer.getFrameIndex(window.name));
|
|
});
|
|
} else {
|
|
layer.msg(result.message, {
|
|
icon: 2,
|
|
time: 2000
|
|
});
|
|
}
|
|
}
|
|
});
|
|
return false;
|
|
});
|
|
|
|
function GetQueryString(name, istop) {
|
|
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
|
|
var r = window.location.search.substr(1).match(reg);
|
|
if (typeof (istop) != "undefined") r = top.location.search.substr(1).match(reg);
|
|
|
|
if (r != null) return unescape(r[2]);
|
|
return null;
|
|
}
|
|
})
|
|
</script>
|
|
</body>
|
|
|
|
</html> |