You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
312 lines
7.7 KiB
JavaScript
312 lines
7.7 KiB
JavaScript
//用户树操作
|
|
var zNodes;
|
|
var menu = {
|
|
setting: {
|
|
view:{
|
|
fontCss : {"font-family": "微软雅黑","color":"blue"}
|
|
},
|
|
data:{
|
|
simpleData: {
|
|
enable: true,
|
|
idKey: "id",
|
|
pIdKey: "parentId",
|
|
isParent:"isParent"
|
|
},
|
|
},
|
|
callback: { //回调函数
|
|
onClick: zTreeOnClick,
|
|
onExpand: addChildNodes
|
|
}
|
|
},
|
|
//加载树
|
|
loadMenuTree:function(){
|
|
var key = $("#key").val();
|
|
$.ajax({
|
|
type: "post",
|
|
url: path+"/menuPower/getUserPowerTree",
|
|
data:{key:key},
|
|
dataType:"json",
|
|
success:function(data){
|
|
$.fn.zTree.init($("#ztree"), menu.setting, data);
|
|
zTree = $.fn.zTree.getZTreeObj("ztree");
|
|
if(key == ''){
|
|
var nodes = zTree.getNodes();
|
|
zTree.expandNode(nodes[0], true);
|
|
}else{
|
|
zTree.expandAll(true);
|
|
}
|
|
/*
|
|
for (var i = 0; i < nodes.length; i++) { //设置节点展开
|
|
zTree.expandNode(nodes[i], true, false, true);
|
|
}*/
|
|
zNodes = data;
|
|
$('#loadingModal').modal('hide');
|
|
}
|
|
})
|
|
}
|
|
};
|
|
//加载用户树
|
|
$().ready(function(data){
|
|
menu.loadMenuTree();
|
|
//fuzzySearch('ztree','#key',null,true,menu.setting,zNodes); //初始化模糊搜索方法
|
|
});
|
|
//定义最后一级的树id的前缀
|
|
var streeId = 's';
|
|
//展开节点添加子节点
|
|
function addChildNodes(event, treeId, treeNode){
|
|
var children = treeNode.children;
|
|
var ztree = $.fn.zTree.getZTreeObj("ztree");
|
|
var level = treeNode.level;
|
|
treeId = treeNode.id;
|
|
var sysFlag = treeNode.sysFlag;
|
|
if(children == undefined) {
|
|
//1.权限系统,加载该医院所有用户
|
|
if (level == 1 && sysFlag == 'power') {
|
|
//获取父节点及医院的医院id
|
|
var hospitalId = treeNode.getParentNode().selfId;
|
|
$.ajax({
|
|
type: 'get',
|
|
url: path + '/menuPower/getUserTreeByHospitalId',
|
|
data: {hospitalId: hospitalId},
|
|
dataType: 'json',
|
|
async: false,
|
|
success: function (data) {
|
|
if (data != null) {
|
|
var sTreeId = 0;
|
|
var treeList = [];
|
|
for (var i = 0; i < data.length; i++) {
|
|
sTreeId++;
|
|
var newNode = {
|
|
id: streeId + sTreeId,
|
|
parentId: treeId,
|
|
name: data[i].name,
|
|
newName: data[i].newName,
|
|
sysFlag: sysFlag,
|
|
selfId: data[i].name.split('-')[0]
|
|
}
|
|
treeList.push(newNode);
|
|
}
|
|
ztree.addNodes(treeNode, treeList);
|
|
}
|
|
}
|
|
})
|
|
}
|
|
//1.其他系统,加载该科室下用户
|
|
if (level == 2) {
|
|
var deptId = treeNode.getParentNode().selfId;
|
|
$.ajax({
|
|
type: 'get',
|
|
url: path + '/menuPower/getUserTreeByDeptId',
|
|
data: {deptId: deptId},
|
|
dataType: 'json',
|
|
async: false,
|
|
success: function (data) {
|
|
if (data != null) {
|
|
var sTreeId = 0;
|
|
var treeList = [];
|
|
for (var i = 0; i < data.length; i++) {
|
|
sTreeId++;
|
|
var newNode = {
|
|
id: streeId + sTreeId,
|
|
parentId: treeId,
|
|
name: data[i].name,
|
|
newName: data[i].newName,
|
|
sysFlag: sysFlag,
|
|
selfId: data[i].name.split('-')[0]
|
|
}
|
|
treeList.push(newNode);
|
|
}
|
|
ztree.addNodes(treeNode, treeList);
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
}
|
|
|
|
//关键字搜索树
|
|
function reloadTree() {
|
|
var key = $("#key").val();
|
|
if(key.length > 2){
|
|
$('#loadingModal').modal('show');
|
|
menu.loadMenuTree();
|
|
}else{
|
|
toastr.warning("数据较多,搜索内容字符不少于2位");
|
|
}
|
|
}
|
|
|
|
|
|
//用户树点击事件
|
|
var sysZnodes;
|
|
function zTreeOnClick(event, treeId, treeNode) {
|
|
$("#block").empty();
|
|
//系统id
|
|
var sysFlag = treeNode.sysFlag;
|
|
var level = treeNode.level;
|
|
$("#sysFlag").val("");
|
|
if(sysFlag != null && sysFlag != '' &&
|
|
((sysFlag == 'power' && level == 2)) || (sysFlag != 'power' && level > 2)){
|
|
//设置用户id ==
|
|
var userId = treeNode.selfId;
|
|
$.ajax({
|
|
type: "post",
|
|
url: path+"/menuPower/getMenuBySysIdAndUerIdPowerTree",
|
|
data:{sysFlag:sysFlag,userId:userId},
|
|
dataType:"json",
|
|
success:function(data){
|
|
var menuData = [];
|
|
var methodData = [];
|
|
if(data != null && data != ''){
|
|
for(var i = 0; i < data.length; i++) {
|
|
if(data[i].method == '' || data[i].method == null){
|
|
//菜单
|
|
menuData.push(data[i]);
|
|
}else{
|
|
//方法
|
|
methodData.push(data[i]);
|
|
}
|
|
}
|
|
if(null != menuData){
|
|
sysZnodes = menuData;
|
|
//初始化菜单树
|
|
initSysMenuTree();
|
|
//选中节点的menuId赋值到隐藏域
|
|
var menus = '';
|
|
for(var i = 0; i < menuData.length; i++) {
|
|
if(menuData[i].checked == 'true'){
|
|
menus += menuData[i].menuId + ",";
|
|
}
|
|
}
|
|
$("#userId").val(userId);
|
|
$("#menus").val(menus);
|
|
}
|
|
$("#sysFlag").val(sysFlag);
|
|
//赋值方法区隐藏复选框
|
|
if(null != methodData && methodData.length > 0){
|
|
var html = '';
|
|
var parentIds = [];
|
|
for(var i = 0; i < methodData.length; i++) {
|
|
parentIds.push(methodData[i].parentId);
|
|
}
|
|
//父id去重
|
|
parentIds = array_remove_repeat(parentIds);
|
|
for(var i = 0; i < parentIds.length; i++) {
|
|
var methods = '';
|
|
var method = [];
|
|
for(var j = 0; j < methodData.length; j++) {
|
|
if(methodData[j].parentId == parentIds[i]){
|
|
method.push(methodData[j]);
|
|
}
|
|
//选中节点的方法demenuId赋值到隐藏域
|
|
if(methodData[j].checked == 'true'){
|
|
methods += methodData[j].menuId + ',';
|
|
}
|
|
}
|
|
if(method != null){
|
|
html += appendHtmlTotal(method,treeNode.menuId);
|
|
}
|
|
$("#methods").val(methods);
|
|
}
|
|
$("#block").append(html);
|
|
}
|
|
}else{
|
|
$("#ztree1").empty();
|
|
$("#userId").val('');
|
|
}
|
|
}
|
|
})
|
|
}else{
|
|
toastr.warning("请选中用户!");
|
|
}
|
|
};
|
|
//菜单树操作
|
|
var setting = {
|
|
view:{
|
|
fontCss : {"font-family": "微软雅黑","color":"blue"}
|
|
},
|
|
check: {
|
|
enable: true
|
|
},
|
|
data:{
|
|
simpleData: {
|
|
enable: true,
|
|
idKey: "menuId",
|
|
pIdKey: "parentId",
|
|
},
|
|
key:{
|
|
name:"menuName"
|
|
}
|
|
},
|
|
callback: { //回调函数
|
|
onClick: menuZTreeOnClick,
|
|
onCheck:onCheck}
|
|
};
|
|
//菜单点击事件
|
|
function menuZTreeOnClick(event, treeId, treeNode) {
|
|
var menuId = treeNode.menuId;
|
|
//原来的divIndex隐藏
|
|
var divIndex = $("#divIndex").val();
|
|
$("#methodDiv"+divIndex).hide();
|
|
//改节点为父节点的方法显示
|
|
$("#methodDiv"+menuId).show();
|
|
$("#divIndex").val(menuId);
|
|
}
|
|
//菜单树复选框选中事件
|
|
function onCheck(e,treeId,treeNode){
|
|
var treeObj=$.fn.zTree.getZTreeObj("ztree1");
|
|
truenodes=treeObj.getCheckedNodes(true);
|
|
falsenodes=treeObj.getCheckedNodes(false);
|
|
var divIndex = $("#divIndex").val();
|
|
var isExist;
|
|
var menus = '';
|
|
if(null != truenodes){
|
|
for(var i=0;i<truenodes.length;i++){
|
|
//获取树选中节点的menu集合
|
|
var menu = truenodes[i].menuId;
|
|
menus += menu + ",";
|
|
}
|
|
}
|
|
childNodeTrue(treeNode.menuId);
|
|
//菜单id集合赋值到隐藏域
|
|
$("#menus").val(menus);
|
|
if(falsenodes != null){
|
|
for(var i = 0; i < falsenodes.length; i++) {
|
|
//方法区全不选
|
|
$("#methodDiv"+falsenodes[i].menuId+" input[type='checkbox']").each(function(){
|
|
$(this).prop("checked",false);
|
|
});
|
|
}
|
|
}
|
|
}
|
|
//保存用户菜单信息
|
|
function addUserMenu(){
|
|
var methods = '';
|
|
$("input[name='methodId']:checked").each(function(){
|
|
methods += $(this).val() + ",";
|
|
})
|
|
var menus = ztree.getCheckedNodes(true);
|
|
var menu = '';
|
|
for(var i = 0; i < menus.length; i++) {
|
|
menu += menus[i].menuId + ",";
|
|
}
|
|
$("#menus").val(menu+methods);
|
|
var userId = $("#userId").val();
|
|
if(userId != null && userId != ''){
|
|
$.ajax({
|
|
type:'post',
|
|
url:path+"/menuPower/addUserMenu",
|
|
data:{userId:$("#userId").val(),sysFlag:$("#sysFlag").val(),menus:$("#menus").val()},
|
|
dataType:"json",
|
|
success:function(data){
|
|
if(data.code == 100){
|
|
toastr.success("保存成功!");
|
|
}else{
|
|
toastr.error(data.msg);
|
|
}
|
|
}
|
|
})
|
|
}else{
|
|
toastr.warning("请先选中用户!")
|
|
}
|
|
}
|