sysEveRolePCMenu.js 6.9 KB
Newer Older
doc_wei's avatar
doc_wei 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13

layui.config({
	base: basePath, 
	version: skyeyeVersion
}).extend({
    window: 'js/winui.window'
}).define(['window', 'table', 'jquery', 'winui', 'fsCommon', 'fsTree', 'form'], function (exports) {
	winui.renderColor();
	var index = parent.layer.getFrameIndex(window.name);
	var $ = layui.$,
		form = layui.form,
		fsTree = layui.fsTree,
		fsCommon = layui.fsCommon;
doc_wei's avatar
doc_wei 已提交
14
	var id = GetUrlParam("id");
doc_wei's avatar
doc_wei 已提交
15 16 17 18 19 20 21 22 23 24 25 26 27
	var checkeRows = '';

	matchingLanguage();
	form.render();
	form.on('submit(formEditBean)', function (data) {
		if (winui.verifyForm(data.elem)) {
			var tree = $.fn.zTree.getZTreeObj("treeDemo");
			var nodes = tree.getCheckedNodes(true);
			var menuIds = new Array();
			for(var i = 0; i < nodes.length; i++){
				menuIds.push(nodes[i].id);
			}
			var params = {
doc_wei's avatar
doc_wei 已提交
28 29
				name: $("#name").html(),
				remark: $("#remark").html(),
doc_wei's avatar
doc_wei 已提交
30
				menuIds: JSON.stringify(menuIds),
doc_wei's avatar
doc_wei 已提交
31
				rowId: id
doc_wei's avatar
doc_wei 已提交
32 33
			};

W
weizhiqiang 已提交
34
			AjaxPostUtil.request({url: reqBasePath + "editSysRolePCAuth", params: params, type: 'json', method: "PUT", callback: function (json) {
35 36
				parent.layer.close(index);
				parent.refreshCode = '0';
doc_wei's avatar
doc_wei 已提交
37 38 39 40 41 42
			}});
		}
		return false;
	});

	/********* tree 处理   start *************/
doc_wei's avatar
doc_wei 已提交
43
	var tree;
doc_wei's avatar
doc_wei 已提交
44

doc_wei's avatar
doc_wei 已提交
45
	AjaxPostUtil.request({url: reqBasePath + "querySysRoleById", params: {id: id}, type: 'json', method: "GET", callback: function (json) {
doc_wei's avatar
doc_wei 已提交
46 47
		$("#name").text(json.bean.name);
		$("#remark").text(json.bean.remark);
doc_wei's avatar
doc_wei 已提交
48
		checkeRows = isNull(json.bean.menuIds) ? [] : json.bean.menuIds;
doc_wei's avatar
doc_wei 已提交
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63

		tree = fsTree.render({
			id: "treeDemo",
			url: reqBasePath + "sys014",
			getTree: getTree,
			checkEnable: true,
			loadEnable: false,
			showLine: false,
			showIcon: false,
			addDiyDom: addDiyDom,
			fontCss: setFontCss
		}, function(id) {
			var zTreeObj = $.fn.zTree.getZTreeObj(id);
			var zTree = zTreeObj.getCheckedNodes(false);
			for (var i = 0; i < zTree.length; i++) {
doc_wei's avatar
doc_wei 已提交
64 65
				for (var j = 0; j < checkeRows.length; j++) {
					if (zTree[i].id == checkeRows[j]) {
doc_wei's avatar
doc_wei 已提交
66
						zTreeObj.checkNode(zTree[i], true);
doc_wei's avatar
doc_wei 已提交
67
					}
68
				}
doc_wei's avatar
doc_wei 已提交
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
			}
			var li_head = '<li class="head"><a>' +
				'<div class="diy" style="width: 40%">菜单权限</div>' +
				'<div class="diy">所属系统</div>' +
				'<div class="diy">菜单类型</div>' +
				'</a></li>';
			var rows = $("#treeDemo").find('li');
			if(rows.length > 0) {
				rows.eq(0).before(li_head);
			} else {
				$("#" + treeId).append(li_head);
				$("#" + treeId).append('<li ><div style="text-align: center;line-height: 30px;" >无符合条件数据</div></li>')
			}
		});
		// 绑定按钮事件
		fsCommon.buttonEvent("tree", getTree);
doc_wei's avatar
doc_wei 已提交
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
	}});

	function getTree(treeId) {
		if($.isEmpty(trees)) {
			fsCommon.warnMsg("未配置tree!");
			return;
		}
		if($.isEmpty(treeId)) {
			treeId = "treeDemo";
		}
		return trees[treeId];
	}

	/********* tree 处理   end *************/

	/**
	 * 自定义DOM节点
	 */
	function addDiyDom(treeId, treeNode) {
		var aObj = $("#" + treeNode.tId + "_a");
		var switchObj = $("#" + treeNode.tId + "_switch");
		var icoObj = $("#" + treeNode.tId + "_ico");
		var spanObj = $("#" + treeNode.tId + "_span");
		aObj.attr('title', '');
doc_wei's avatar
doc_wei 已提交
109
		aObj.append('<div class="diy swich" style="width: 40%"></div>');
doc_wei's avatar
doc_wei 已提交
110 111 112
		switchObj.remove();
		spanObj.remove();
		icoObj.remove();
doc_wei's avatar
doc_wei 已提交
113 114

		var div = $("#" + treeNode.tId).find('.swich').eq(0);
doc_wei's avatar
doc_wei 已提交
115 116 117
		div.append(switchObj);
		div.append(spanObj);

doc_wei's avatar
doc_wei 已提交
118 119 120 121 122 123
		switchObj.before("<span style='height:1px; display: inline-block; width:" + (15 * treeNode.level) + "px'></span>");
		// 所属系统
		aObj.append('<div class="diy">' + treeNode.sysName + '</div>');
		// 菜单类型
		aObj.append('<div class="diy">' + treeNode.pageType + '</div>');
	}
doc_wei's avatar
doc_wei 已提交
124

doc_wei's avatar
doc_wei 已提交
125
	var lastValue = "", nodeList = [], hiddenNodes = [];
doc_wei's avatar
doc_wei 已提交
126 127
	$("#menuName").val('');
	var key = $("#menuName");
doc_wei's avatar
doc_wei 已提交
128
	key.bind("focus", function(e) {
doc_wei's avatar
doc_wei 已提交
129 130 131
		if (key.hasClass("empty")) {
			key.removeClass("empty");
		}
doc_wei's avatar
doc_wei 已提交
132
	}).bind("blur",  function(e) {
doc_wei's avatar
doc_wei 已提交
133 134 135
		if (key.get(0).value === "") {
			key.addClass("empty");
		}
doc_wei's avatar
doc_wei 已提交
136 137
	}).bind("propertychange", searchNode) //property(属性)change(改变)的时候,触发事件
	.bind("input", searchNode);
doc_wei's avatar
doc_wei 已提交
138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185

	//搜索树
	function searchNode(e) {
		var zTreeObj = $.fn.zTree.getZTreeObj("treeDemo");
		var value = $.trim(key.get(0).value);
		var keyType = "name";

		if (key.hasClass("empty")) {
			value = "";
		}

		//显示上次搜索后背隐藏的结点
		zTreeObj.showNodes(hiddenNodes);
		//查找不符合条件的叶子节点
		function filterFunc(node){
			var _keywords = $("#menuName").val();
			if(node.name.indexOf(_keywords) != -1)
				return false;
			if(node.isParent) {
				//是父节点时需要判断子节点是否符合条件,是的话则父节点需要保留
				var bl = CheckChildNodesIsContainKeyword(node);
				return bl;
			} else {
				//是子节点时,需要判断父节点是否符合条件,是的话则子节点需要保留
				var bl2 = CheckParentNodesIsContainKeyword(node);
				return bl2;
			}
			return true;
		};
		//获取不符合条件的叶子结点
		hiddenNodes = zTreeObj.getNodesByFilter(filterFunc);
		//隐藏不符合条件的叶子结点
		zTreeObj.hideNodes(hiddenNodes);
		if (lastValue === value) return;
		lastValue = value;
		if (value === ""){
			updateNodes(false);
			return;
		};
		updateNodes(false);
		nodeList = zTreeObj.getNodesByParamFuzzy(keyType, value); //调用ztree的模糊查询功能,得到符合条件的节点
		updateNodes(true); //更新节点
	};

	//tree搜索时:是父节点时需要判断子节点是否符合条件,是的话则父节点需要保留
	function CheckChildNodesIsContainKeyword(pNode) {
		var childs = pNode.children;
		var isexit = true;
W
weizhiqiang 已提交
186
		if (!isNull(childs)){
doc_wei's avatar
doc_wei 已提交
187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228
			for(var i = 0; i < childs.length; i++) {
				if(childs[i].isParent) {
					isexit = CheckChildNodesIsContainKeyword(childs[i]);
					if(!isexit)
						return isexit;
				} else {
					var _keywords = $("#menuName").val();
					if(childs[i].name.indexOf(_keywords) != -1)
						return false;
				}
			}
		}

		return true;
	}

	//tree 搜索时:子节点时,需要判断父节点是否符合条件,是的话则子节点需要保留
	function CheckParentNodesIsContainKeyword(cNode) {
		var pnode = cNode.getParentNode();
		if(pnode != null) {
			var _keywords = $("#menuName").val();
			if(pnode.name.indexOf(_keywords) != -1)
				return false;
			else {
				return CheckParentNodesIsContainKeyword(pnode)
			}
		}
		return true;
	}


	//高亮显示被搜索到的节点
	function updateNodes(highlight) {
		var zTree = $.fn.zTree.getZTreeObj("treeDemo");
		for( var i = 0; i < nodeList.length; i++) {
			nodeList[i].highlight = highlight;//高亮显示搜索到的节点(highlight是自己设置的一个属性)
			zTree.expandNode(nodeList[i].getParentNode(), true, false, false);//将搜索到的节点的父节点展开
			zTree.updateNode(nodeList[i]);//更新节点数据,主要用于该节点显示属性的更新
		}
	}

	function setFontCss(treeId, treeNode) {
doc_wei's avatar
doc_wei 已提交
229
		return (!!treeNode.highlight) ? {color: "#00ff66", "font-weight": "bold"} : {color: "#333", "font-weight": "normal"};
doc_wei's avatar
doc_wei 已提交
230 231 232
	}

	// 取消
doc_wei's avatar
doc_wei 已提交
233
	$("body").on("click", "#cancle", function() {
doc_wei's avatar
doc_wei 已提交
234 235 236 237
		parent.layer.close(index);
	});

});