/**
* 组织区域关系js.
* @author wangfs
*/
var fun = {
/*1.保存组织与菜单关系**/
org_ok:function(){
$(document).on('click','#org_ok',function(){
//获取左侧选中的组织
var checkedOrgId = orgTree.getCheckedNodesId(true);
if(checkedOrgId == null || checkedOrgId == '' || checkedOrgId ==undefined){
swal({title:"提示",text:'请选择左侧要分配权限的[组织]!',type:"warning",timer:3000,allowOutsideClick:true});
return false;
}
//获取右侧区域选中的“块”id 集合
var checkedResIds = areaTree.getCheckedNodesIdForBlock(true);
var req= {
sysCode:sysComm.sysCode,
orgId:checkedOrgId[0],
resIds:checkedResIds
};
//保存组织区域关系
sysAjax({
method: "post",
url: dataUrl.util.batchInsertOrgRes(),
data: JSON.stringify(req),
contentType: 'application/json; charset=utf-8',
dataType:'json',
success: function(res){
if(res.code == '8888'){
if(res.data){
swal({title:"提示",text:'保存成功!',type:"success",timer:3000,allowOutsideClick:true});
}else{
swal({title:"提示",text:'保存失败!',type:"warning",timer:3000,allowOutsideClick:true});
return false;
}
}else{
swal({title:"提示",text:res.errMsg,type:"warning",timer:3000,allowOutsideClick:true});
return false;
}
}
});
});
}
};
// 组织构建树
var orgTree = {
//初始化树
initTree: function () {
$.fn.zTree.init($("#org_tree"), orgTree.setting, orgTree.getTreeData());
//展开全部
var treeObj = $.fn.zTree.getZTreeObj("org_tree");
treeObj.expandAll(true);
},
setting: {
callback: {
onCheck:zTreeOnCheck
},
view: {
selectedMulti: false //静止多选
},
check: {
enable: true, //显示多选框
chkStyle: "radio",
radioType:"all"
},
data: {
simpleData: {
enable: true, //使用简单模式加载
idKey: "id",
pIdKey: "pId",
rootPId: 0
}
},
edit: {
enable: false
}
},
//添加节点
addNodes: function (newNodes) {
var treeObj = $.fn.zTree.getZTreeObj("org_tree");
newNodes = treeObj.addNodes(null, newNodes);
},
//勾选 或 取消勾选 全部节点
checkAllNodes: function (checked) {
var treeObj = $.fn.zTree.getZTreeObj("org_tree");
treeObj.checkAllNodes(checked);
},
//更新节点
updateNodes: function (treeNode, checkTypeFlag) {
var treeObj = $.fn.zTree.getZTreeObj("org_tree");
treeObj.updateNode(treeNode);
},
//根据id集合更新节点变为选中
updateNodesForChecked: function (ids) {
var nodes = orgTree.getNodesByIds(ids);
for (var i = 0; i < ids.length; i++) {
var node = nodes[i];
if(node==null){
continue;
}
node.checked = true;
orgTree.updateNodes(node);
}
},
//删除节点
removeNode: function (id) {
var treeObj = $.fn.zTree.getZTreeObj("org_tree");
var treeNode = orgTree.getNodeById(id);
treeObj.removeNode(treeNode);
},
//通过id获取某个节点
getNodeById: function (id) {
var treeObj = $.fn.zTree.getZTreeObj("org_tree");
var node = treeObj.getNodeByParam("id", id, null);
return node;
},
//通过id集合获取节点集合
getNodesByIds: function (ids) {
var nodes = [];
for (var i = 0; i < ids.length; i++) {
nodes[i] = orgTree.getNodeById(ids[i]);
}
return nodes;
},
//获取输入框被勾选 或 未勾选的节点ID集合
getCheckedNodesId: function (checked) {
var ids = [];
var treeObj = $.fn.zTree.getZTreeObj("org_tree");
var nodes = treeObj.getCheckedNodes(checked);
for (var i = 0; i < nodes.length; i++) {
ids[i] = nodes[i].id
}
return ids;
},
//获取输入框被勾选 或 未勾选的节点name集合
getCheckedNodesName: function (checked) {
var names= "";
var treeObj = $.fn.zTree.getZTreeObj("org_tree");
var nodes = treeObj.getCheckedNodes(true);
for (var i = 0; i < nodes.length; i++) {
names = names+","+nodes[i].name;
}
return names;
},
//获取选中的节点集合
getSelectedNodes: function () {
var treeObj = $.fn.zTree.getZTreeObj("org_tree");
var nodes = treeObj.getSelectedNodes();
return nodes;
},
//获取树
getTreeData:function() {
var sysCode=sessionStorage.getItem("sysCode");
var zNodes = [];
var req= {
baseRequest:{
pageNum:1,
pageSize:0
},
sysCode:sysCode,
orgLevel:2
};
sysAjax({
method:'POST',
url: dataUrl.util.queryOrgByOrgLevelTree(),
data: JSON.stringify(req),
dataType:'json',
async:false,
success: function(res){
if(isError(res)){
return false;
}
$.each(res.data, function(index,rows) {
var data={id:rows.id,pId:rows.parentOrgId,name:rows.orgName};
zNodes[index] =data;
});
}
});
//增加一个公告根节点
//zNodes[zNodes.length] = {name:'根节点',id:0,checked:true};
return zNodes;
}
}
// 区域构建树
var areaTree = {
//初始化树
initTree: function () {
$.fn.zTree.init($("#area_tree"), areaTree.setting, areaTree.getTreeData());
//展开全部
var treeObj = $.fn.zTree.getZTreeObj("area_tree");
treeObj.expandAll(false);
areaTree.selectedNodes(-1);
areaTree.removeNode(-2);
},
setting: {
callback: {
onCheck:zTreeOnCheckMenu
},
view: {
selectedMulti: false //静止多选
},
check: {
enable: true, //显示多选框
chkStyle: "checkbox"
},
data: {
simpleData: {
enable: true, //使用简单模式加载
idKey: "id",
pIdKey: "pId",
rootPId: 0
}
},
edit: {
enable: false
}
},
//展开某个节点
selectedNodes:function(id){
var treeObj = $.fn.zTree.getZTreeObj("area_tree");
var nodes = treeObj.getNodesByParam("id", id, null);
if(nodes.length>0) {
treeObj.expandNode(nodes[0], true, false, true);
}
},
//添加节点
addNodes: function (newNodes) {
var treeObj = $.fn.zTree.getZTreeObj("area_tree");
newNodes = treeObj.addNodes(null, newNodes);
},
//勾选 或 取消勾选 全部节点
checkAllNodes: function (checked) {
var treeObj = $.fn.zTree.getZTreeObj("area_tree");
treeObj.checkAllNodes(checked);
},
//更新节点
updateNodes: function (treeNode, checkTypeFlag) {
var treeObj = $.fn.zTree.getZTreeObj("area_tree");
treeObj.updateNode(treeNode);
},
//根据id集合更新节点变为选中
updateNodesForChecked: function (ids) {
var nodes = areaTree.getNodesByIds(ids);
for (var i = 0; i < ids.length; i++) {
var node = nodes[i];
if(node==null){
continue;
}
node.checked = true;
areaTree.updateNodes(node);
}
},
//删除节点
removeNode: function (id) {
var treeObj = $.fn.zTree.getZTreeObj("area_tree");
var treeNode = areaTree.getNodeById(id);
treeObj.removeNode(treeNode);
},
//通过id获取某个节点
getNodeById: function (id) {
var treeObj = $.fn.zTree.getZTreeObj("area_tree");
var node = treeObj.getNodeByParam("id", id, null);
return node;
},
//通过id集合获取节点集合
getNodesByIds: function (ids) {
var nodes = [];
for (var i = 0; i < ids.length; i++) {
nodes[i] = areaTree.getNodeById(ids[i]);
}
return nodes;
},
//获取输入框被勾选 或 未勾选的节点ID集合
getCheckedNodesId: function (checked) {
var ids = [];
var treeObj = $.fn.zTree.getZTreeObj("area_tree");
var nodes = treeObj.getCheckedNodes(true);
for (var i = 0; i < nodes.length; i++) {
ids[i] = nodes[i].id
}
return ids;
},
//获取输入框被勾选 或 未勾选的块节点ID集合
getCheckedNodesIdForBlock: function (checked) {
var ids = [];
var treeObj = $.fn.zTree.getZTreeObj("area_tree");
var nodes = treeObj.getCheckedNodes(checked);
index =0;
for (var i = 0; i < nodes.length; i++) {
if(null != nodes[i].id && "-1"!=nodes[i].id ){
ids[index++] =nodes[i].id;
}
}
return ids;
},
//获取输入框被勾选 或 未勾选的节点name集合
getCheckedNodesName: function (checked) {
var names= "";
var treeObj = $.fn.zTree.getZTreeObj("area_tree");
var nodes = treeObj.getCheckedNodes(true);
for (var i = 0; i < nodes.length; i++) {
names = names+","+nodes[i].name;
}
return names;
},
//获取选中的节点集合
getSelectedNodes: function () {
var treeObj = $.fn.zTree.getZTreeObj("area_tree");
var nodes = treeObj.getSelectedNodes();
return nodes;
},
//获取树
getTreeData:function() {
var sysCode=sessionStorage.getItem("sysCode");
var zNodes = [];
var req= {
baseRequest:{
pageNum:1,
pageSize:0
},
sysCode:sysCode,
dataStatus:1
};
sysAjax({
method:'POST',
url: dataUrl.util.queryAllResTree(),
data: JSON.stringify(req),
dataType:'json',
async:false,
success: function(res){
if(isError(res)){
return false;
}
$.each(res.data, function(index,rows) {
var data={id:rows.id,pId:rows.parentResId,name:rows.resName,resType:rows.resType};
zNodes[index] =data;
});
}
});
//增加一个公告根节点
zNodes[zNodes.length] = {name:'根节点',id:-1};
return zNodes;
}
}
$(function(){
orgTree.initTree(); //初始化组织tree
areaTree.initTree(); //初始化区域tree
fun.org_ok(); //保存
});
/**
* 处理错误信息
* @param {Object} res
*/
function isError(res){
if(res == null || res == undefined){
return true;
}
if(res.code!='8888'){
var errorPop = new Pop({
header:'错误提示',
content:$(''+res.msg+''),
buttons:[{
type:'popOk',
text:'确定',
callback:function(){
errorPop.close();
}
}]
});
return true;
}else{
return false;
}
}
/**
* 左侧单选按钮点击选中右侧.
* @param {Object} event
* @param {Object} treeId
* @param {Object} treeNode
*/
function zTreeOnCheck (event, treeId, treeNode) {
// alert(treeNode.id + ", " + treeNode.name + "," + treeNode.checked);
var sysCode=sessionStorage.getItem("sysCode");
var zNodes = [];
var req= {
sysCode:sysCode,
orgId:treeNode.id,
};
sysAjax({
method:'POST',
url: dataUrl.util.queryResIdsByOrgId(),
data: JSON.stringify(req),
dataType:'json',
async:false,
success: function(res){
if(isError(res)){
return false;
}
areaTree.checkAllNodes(false);
areaTree.updateNodesForChecked(res.data);
}
});
}
/**
* 菜单判断自动选中公共服务节点
* @param {Object} event
* @param {Object} treeId
* @param {Object} treeNode
*/
function zTreeOnCheckMenu (event, treeId, treeNode) {
//1.如果为叶子节点则选中同级,resType=3(公共服务)
if(!treeNode.isParent){
var pId = treeNode.pId;
var treeObj = $.fn.zTree.getZTreeObj("area_tree");
var node = treeObj.getNodeByParam("id", pId, null);
if(node != null){
//获取所有公共服务节点
$.each(node.children, function(index,rows) {
if(rows != null){
if(rows.resType ==3){
var treeObj = $.fn.zTree.getZTreeObj("area_tree");
var node = treeObj.getNodeByParam("id", rows.id, null);
if(node != null || node != undefined){
node.checked = true;
var treeObj = $.fn.zTree.getZTreeObj("area_tree");
treeObj.updateNode(node);
}
}
}
});
}
}
}