Sfoglia il codice sorgente

Merge remote-tracking branch 'origin/master'

user5 4 anni fa
parent
commit
7639b0c22b

+ 1 - 0
src/main/java/com/jeeplus/modules/sys/dao/AreaDao.java

@@ -23,6 +23,7 @@ public interface AreaDao extends TreeDao<Area> {
 	public String getAreaIdByCityName(@Param("cityName")String cityName);
 	public Area findByName(String name);
 	public Area findByPId(String parentId);
+	public List<Area> findByPIds(String parentId);
 
 	List<Area> getChildren(String parentId);
 

+ 4 - 0
src/main/java/com/jeeplus/modules/sys/service/AreaService.java

@@ -103,4 +103,8 @@ public class AreaService extends TreeService<AreaDao, Area> {
 		}
 		return areaList;
 	}
+
+	public List<Area> getParents(String parentId){
+		return areaDao.findByPIds(parentId);
+	}
 }

+ 32 - 0
src/main/java/com/jeeplus/modules/sys/web/AreaController.java

@@ -159,6 +159,7 @@ public class AreaController extends BaseController {
 	@RequestMapping(value = "treeData")
 	public List<Map<String, Object>> treeData(@RequestParam(required=false) String extId,@RequestParam(required=false) String selectName, HttpServletResponse response) {
 //		List<Map<String, Object>> mapList = Lists.newArrayList();
+//		List<Area> list = areaService.findAll();
 		List<Area> list = areaService.findByArae(selectName);
 		LinkedList<Map<String,Object>> prantsSet = new LinkedList<>();
 		for (int i=0; i<list.size(); i++){
@@ -247,4 +248,35 @@ public class AreaController extends BaseController {
 		}
 		return mapList;
 	}
+
+	@ResponseBody
+	@RequestMapping(value = "treeDataParent")
+	public List<Map<String, Object>> treeDataParent(@RequestParam(required=false) String extId,@RequestParam(required=false) String selectName, HttpServletResponse response) {
+//		List<Map<String, Object>> mapList = Lists.newArrayList();
+		List<Area> list = areaService.getParents("1");
+		Area area = areaService.getParent("0");
+		LinkedList<Map<String,Object>> prantsSet = new LinkedList<>();
+		Map<String, Object> map1 = Maps.newHashMap();
+		map1.put("id", area.getId());
+		map1.put("pId", area.getParentId());
+		map1.put("pIds", area.getParentIds());
+		map1.put("name", area.getName());
+		map1.put("selectName", selectName);
+		prantsSet.add(map1);
+		for (int i=0; i<list.size(); i++){
+			Area e = list.get(i);
+			if (StringUtils.isBlank(extId) || (extId!=null && !extId.equals(e.getId()) && e.getParentIds().indexOf(","+extId+",")==-1)){
+				Map<String, Object> map = Maps.newHashMap();
+				map.put("id", e.getId());
+				map.put("pId", e.getParentId());
+				map.put("pIds", e.getParentIds());
+				map.put("name", e.getName());
+				map.put("selectName", selectName);
+				prantsSet.add(map);
+			}
+		}
+		List<Map<String,Object>> s=paichong(prantsSet);
+		List<Map<String,Object>> mapList = Lists.newArrayList(s);
+		return mapList;
+	}
 }

+ 10 - 0
src/main/resources/mappings/modules/sys/AreaDao.xml

@@ -221,4 +221,14 @@
 			a.parent_id LIKE concat('%',#{id},'%')
 		</where>
 	</select>
+	<select id="findByPIds" resultType="com.jeeplus.modules.sys.entity.Area">
+		SELECT
+		<include refid="areaColumns"/>
+		FROM sys_area a
+		<include refid="areaJoins"/>
+		<where>
+			a.parent_id = #{parentId}
+		</where>
+		ORDER BY a.sort=29 desc, a.code
+	</select>
 </mapper>

+ 66 - 66
src/main/webapp/WEB-INF/tags/sys/treeselectArea.tag

@@ -23,17 +23,17 @@
 <%@ attribute name="disabled" type="java.lang.String" required="false" description="是否限制选择,如果限制,设置为disabled"%>
 <%@ attribute name="dataMsgRequired" type="java.lang.String" required="false" description=""%>
 <%@ attribute name="rule" type="java.lang.String" required="false" description="考勤规则模块用"%>
-	<input id="${id}Id" name="${name}" class="${cssClass}" type="hidden" value="${value}" />
-	<div class="input-group">
-		<input id="${id}Name" placeholder="请选择${title}" name="${labelName}" ${allowInput?'':'readonly="readonly"'}  type="text" value="${labelValue}" data-msg-required="${dataMsgRequired}"
-		class="${cssClass}" style="${cssStyle}"/>
-       		 <span class="input-group-btn">
+<input id="${id}Id" name="${name}" class="${cssClass}" type="hidden" value="${value}" />
+<div class="input-group">
+	<input id="${id}Name" placeholder="请选择${title}" name="${labelName}" ${allowInput?'':'readonly="readonly"'}  type="text" value="${labelValue}" data-msg-required="${dataMsgRequired}"
+		   class="${cssClass}" style="${cssStyle}"/>
+	<span class="input-group-btn">
 	       		 <button type="button"  id="${id}Button" class="btn <c:if test="${fn:contains(cssClass, 'input-sm')}"> btn-sm </c:if><c:if test="${fn:contains(cssClass, 'input-lg')}"> btn-lg </c:if>  btn-primary ${disabled} ${hideBtn ? 'hide' : ''}"><i class="fa fa-search"></i>
-	             </button> 
+	             </button>
        		 </span>
 
-    </div>
-	 <label id="${id}Name-error" class="error" for="${id}Name" style="display:none"></label>
+</div>
+<label id="${id}Name-error" class="error" for="${id}Name" style="display:none"></label>
 <script type="text/javascript">
 	$("#${id}Button, #${id}Name").click(function(){
 		// 是否限制选择,如果限制,设置为disabled
@@ -42,64 +42,64 @@
 		}
 		// 正常打开
 		top.layer.open({
-		    type: 2,
-		    area: ['300px', '420px'],
-		    title:"选择${title}",
-		    ajaxData:{selectIds: $("#${id}Id").val()},
-		    content: "${ctx}/tag/treeselect?url="+encodeURIComponent("${url}")+"&module=${module}&checked=${checked}&extId=${extId}&isAll=${isAll}&unit=${unit}" ,
-		    btn: ['确定', '关闭']
-    	       ,yes: function(index, layero){ //或者使用btn1
-						var tree = layero.find("iframe")[0].contentWindow.tree;//h.find("iframe").contents();
-						var ids = [], names = [], nodes = [];
-						if ("${checked}" == "true"){
-							nodes = tree.getCheckedNodes(true);
-						}else{
-							nodes = tree.getSelectedNodes();
-						}
-						for(var i=0; i<nodes.length; i++) {//<c:if test="${checked && notAllowSelectParent}">
-							if (nodes[i].isParent){
-								continue; // 如果为复选框选择,则过滤掉父节点
-							}//</c:if><c:if test="${notAllowSelectRoot}">
-							if (nodes[i].level == 0){
-								//top.$.jBox.tip("不能选择根节点("+nodes[i].name+")请重新选择。");
-								top.layer.msg("不能选择根节点("+nodes[i].name+")请重新选择。", {icon: 0});
-								return false;
-							}//</c:if><c:if test="${notAllowSelectParent}">
-							if (nodes[i].isParent){
-								//top.$.jBox.tip("不能选择父节点("+nodes[i].name+")请重新选择。");
-								//layer.msg('有表情地提示');
-								top.layer.msg("不能选择父节点("+nodes[i].name+")请重新选择。", {icon: 0});
-								return false;
-							}//</c:if><c:if test="${not empty module && selectScopeModule}">
-							if (nodes[i].module == ""){
-								//top.$.jBox.tip("不能选择公共模型("+nodes[i].name+")请重新选择。");
-								top.layer.msg("不能选择公共模型("+nodes[i].name+")请重新选择。", {icon: 0});
-								return false;
-							}else if (nodes[i].module != "${module}"){
-								//top.$.jBox.tip("不能选择当前栏目以外的栏目模型,请重新选择。");
-								top.layer.msg("不能选择当前栏目以外的栏目模型,请重新选择。", {icon: 0});
-								return false;
-							}//</c:if>
-							ids.push(nodes[i].id);
-							names.push(nodes[i].name);//<c:if test="${!checked}">
-							break; // 如果为非复选框选择,则返回第一个选择  </c:if>
-						}
-						$("#${id}Id").val(ids.join(",").replace(/u_/ig,"")).change();
-						$("#${id}Name").val(names.join(",")).change();
-						$("#${id}Name").focus();
-						var rule="${rule}";
-						var id="${id}";
-						if(rule=='rule'){
-                            var _placeName =  id.split("_")[0]+"_placeName";
-                            var _itude =  id.split("_")[0]+"_itude";
-                            $("#"+_placeName).val("");
-                            $("#"+_itude).val("");
-						}
-						top.layer.close(index);
-				    	       },
-    	cancel: function(index){ //或者使用btn2
-    	           //按钮【按钮二】的回调
-    	       }
+			type: 2,
+			area: ['300px', '420px'],
+			title:"选择${title}",
+			ajaxData:{selectIds: $("#${id}Id").val()},
+			content: "${ctx}/tag/treeselect?url="+encodeURIComponent("${url}")+"&module=${module}&checked=${checked}&extId=${extId}&isAll=${isAll}&unit=${unit}" ,
+			btn: ['确定', '关闭']
+			,yes: function(index, layero){ //或者使用btn1
+				var tree = layero.find("iframe")[0].contentWindow.tree;//h.find("iframe").contents();
+				var ids = [], names = [], nodes = [];
+				if ("${checked}" == "true"){
+					nodes = tree.getCheckedNodes(true);
+				}else{
+					nodes = tree.getSelectedNodes();
+				}
+				for(var i=0; i<nodes.length; i++) {//<c:if test="${checked && notAllowSelectParent}">
+					if (nodes[i].isParent){
+						continue; // 如果为复选框选择,则过滤掉父节点
+					}//</c:if><c:if test="${notAllowSelectRoot}">
+					if (nodes[i].level == 0){
+						//top.$.jBox.tip("不能选择根节点("+nodes[i].name+")请重新选择。");
+						top.layer.msg("不能选择根节点("+nodes[i].name+")请重新选择。", {icon: 0});
+						return false;
+					}//</c:if><c:if test="${notAllowSelectParent}">
+					if (nodes[i].isParent){
+						//top.$.jBox.tip("不能选择父节点("+nodes[i].name+")请重新选择。");
+						//layer.msg('有表情地提示');
+						top.layer.msg("不能选择父节点("+nodes[i].name+")请重新选择。", {icon: 0});
+						return false;
+					}//</c:if><c:if test="${not empty module && selectScopeModule}">
+					if (nodes[i].module == ""){
+						//top.$.jBox.tip("不能选择公共模型("+nodes[i].name+")请重新选择。");
+						top.layer.msg("不能选择公共模型("+nodes[i].name+")请重新选择。", {icon: 0});
+						return false;
+					}else if (nodes[i].module != "${module}"){
+						//top.$.jBox.tip("不能选择当前栏目以外的栏目模型,请重新选择。");
+						top.layer.msg("不能选择当前栏目以外的栏目模型,请重新选择。", {icon: 0});
+						return false;
+					}//</c:if>
+					ids.push(nodes[i].id);
+					names.push(nodes[i].name);//<c:if test="${!checked}">
+					break; // 如果为非复选框选择,则返回第一个选择  </c:if>
+				}
+				$("#${id}Id").val(ids.join(",").replace(/u_/ig,"")).change();
+				$("#${id}Name").val(names.join(",")).change();
+				$("#${id}Name").focus();
+				var rule="${rule}";
+				var id="${id}";
+				if(rule=='rule'){
+					var _placeName =  id.split("_")[0]+"_placeName";
+					var _itude =  id.split("_")[0]+"_itude";
+					$("#"+_placeName).val("");
+					$("#"+_itude).val("");
+				}
+				top.layer.close(index);
+			},
+			cancel: function(index){ //或者使用btn2
+				//按钮【按钮二】的回调
+			}
 		});
 
 	});

+ 46 - 37
src/main/webapp/webpage/modules/sys/tagTreeselectArae.jsp

@@ -173,46 +173,55 @@
 		}
 		function copyText() {
 			var selectName = $("#selectName").val();
-			$.ajax({
-				url:"${ctx}/sys/area/treeDataReimbur",
-				async:false,
-				type:"post",
-				success:function (result) {
-					$.get("${ctx}${url}${fn:indexOf(url,'?')==-1?'?':'&'}&extId=${extId}&isAll=${isAll}&module=${module}&t="
-							+ new Date().getTime()+"&flagOffice=${flagOffice}"+"&branchOffice=${branchOffice}"+"&selectName="+selectName, function(zNodes){
-						// 初始化树结构
-						tree = $.fn.zTree.init($("#tree"), setting, zNodes);
-
-						// 默认展开一级节点
-						var nodes = tree.getNodesByParam("level", 0);
-						for(var i=0; i<nodes.length; i++) {
-							tree.expandNode(nodes[i], true, false, false);
-						}
-						//默认展开到查询的节点
-						var nodes = tree.transformToArray(tree.getNodes());
-						for(var i=0; i<nodes.length; i++) {
-							//展开相关的字节点
-							tree.expandNode(nodes[i], true, true, true);
-							//配合使用打开相关联的父节点
-							tree.selectNode(nodes[i]);
-						}
-						//异步加载子节点(加载用户)
-						var nodesOne = tree.getNodesByParam("isParent", true);
-						for(var j=0; j<nodesOne.length; j++) {
-							tree.reAsyncChildNodes(nodesOne[j],"!refresh",true);
-						}
-						selectCheckNode();
-					});
-					key = $("#key");
-					key.bind("focus", focusKey).bind("blur", blurKey).bind("change cut input propertychange", searchNode);
-					key.bind('keydown', function (e){if(e.which == 13){searchNode();}});
-					setTimeout("search();", "300");
+			$.get("${ctx}${url}${fn:indexOf(url,'?')==-1?'?':'&'}&extId=${extId}&isAll=${isAll}&module=${module}&t="
+					+ new Date().getTime()+"&flagOffice=${flagOffice}"+"&branchOffice=${branchOffice}"+"&selectName="+selectName, function(zNodes){
+				// 初始化树结构
+				tree = $.fn.zTree.init($("#tree"), setting, zNodes);
+				// var node = tree.getNodesByParamFuzzy("name", selectName, null);
+				// var treenode = treeObj.getNodeByParam("id", 111, null);
+				// treeObj.expandNode(treenode, true, true, true);
+				// zTree.getNodesByParamFuzzy('name', selectName, zNodes)
+				// 默认展开一级节点
+				var nodes = tree.getNodesByParam("level", 0);
+				for(var i=0; i<nodes.length; i++) {
+					tree.expandNode(nodes[i], true, false, false);
 				}
-			})
+				//默认展开到查询的节点
+				var nodes = tree.transformToArray(tree.getNodes());
+				for(var i=0; i<nodes.length; i++) {
+					//展开相关的字节点
+					tree.expandNode(nodes[i], true, true, true);
+					//配合使用打开相关联的父节点
+					tree.selectNode(nodes[i]);
+				}
+				//异步加载子节点(加载用户)
+				var nodesOne = tree.getNodesByParam("isParent", true);
+				for(var j=0; j<nodesOne.length; j++) {
+					tree.reAsyncChildNodes(nodesOne[j],"!refresh",true);
+				}
+				selectCheckNode();
+			});
+			key = $("#key");
+			key.bind("focus", focusKey).bind("blur", blurKey).bind("change cut input propertychange", searchNode);
+			key.bind('keydown', function (e){if(e.which == 13){searchNode();}});
+			setTimeout("search();", "300");
 
 		}
-		
-		
+
+		//查找不符合条件的结点
+		//返回true表示需要隐藏,返回false表示不需要隐藏 。
+		function filterFunc(node){
+			var selectName = $("#selectName").val();
+			//如果当前结点或其子节点匹配模糊查询的关键字,则该结点不隐藏
+			if(node.name.indexOf(keyword)!=-1){
+				return false;
+			}
+			if(node.isParent){
+				var b=searchChildren(node,keyword);
+				return b;
+			}
+			return true;
+		}
 	</script>
 </head>
 <body>