tree.html 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. <!DOCTYPE html>
  2. <html lang="zh" xmlns:th="http://www.thymeleaf.org" >
  3. <meta charset="utf-8">
  4. <head th:include="include :: header"></head>
  5. <link th:href="@{/ajax/libs/jquery-ztree/3.5/css/metro/zTreeStyle.css}" rel="stylesheet"/>
  6. <style>
  7. body{height:auto;font-family: "Microsoft YaHei";}
  8. button{font-family: "SimSun","Helvetica Neue",Helvetica,Arial;}
  9. </style>
  10. <body class="hold-transition box box-main">
  11. <input id="treeId" name="treeId" type="hidden" th:value="${dept.deptId}"/>
  12. <input id="treeName" name="treeName" type="hidden" th:value="${dept.deptName}"/>
  13. <div class="wrapper"><div class="treeShowHideButton" onclick="search();">
  14. <label id="btnShow" title="显示搜索" style="display:none;">︾</label>
  15. <label id="btnHide" title="隐藏搜索">︽</label>
  16. </div>
  17. <div class="treeSearchInput" id="search">
  18. <label for="keyword">关键字:</label><input type="text" class="empty" id="keyword" maxlength="50">
  19. <button class="btn" id="btn" onclick="searchNode()"> 搜索 </button>
  20. </div>
  21. <div class="treeExpandCollapse">
  22. <a href="javascript:" id="btnExpand">展开</a> /
  23. <a href="javascript:" id="btnCollapse">折叠</a>
  24. </div>
  25. <div id="tree" class="ztree treeselect"></div>
  26. </div>
  27. <div class="layui-layer-btn">
  28. <a class="layui-layer-btn0" th:onclick="'javascript:loadObj()'"><i class="fa fa-check"></i> 确定</a>
  29. <a class="layui-layer-btn1" onclick="$.modal.close()"><i class="fa fa-close"></i> 关闭</a>
  30. </div>
  31. <div th:include="include::footer"></div>
  32. <script th:src="@{/ajax/libs/jquery-ztree/3.5/js/jquery.ztree.all-3.5.js}"></script>
  33. <script th:inline="javascript">
  34. // 树结构初始化加载
  35. var setting = {view:{selectedMulti:false},data:{key:{title:"title"},simpleData:{enable:true}},
  36. callback:{onClick:function(event, treeId, treeNode){
  37. var treeId = treeNode.id;
  38. var treeName = treeNode.name;
  39. $("#treeId").val(treeId);
  40. $("#treeName").val(treeName);
  41. }}
  42. }, tree, loadTree = function(){
  43. $.get(ctx + "system/dept/treeData", function(data) {
  44. var treeName = $("#treeName").val();
  45. tree = $.fn.zTree.init($("#tree"), setting, data);
  46. // 展开第一级节点
  47. var nodes = tree.getNodesByParam("level", 0);
  48. for (var i = 0; i < nodes.length; i++) {
  49. tree.expandNode(nodes[i], true, false, false);
  50. selectCheckNode(treeName,nodes[i]);
  51. }
  52. // 展开第二级节点
  53. nodes = tree.getNodesByParam("level", 1);
  54. for (var i = 0; i < nodes.length; i++) {
  55. tree.expandNode(nodes[i], true, false, false);
  56. selectCheckNode(treeName,nodes[i]);
  57. }
  58. // 展开第二级节点
  59. nodes = tree.getNodesByParam("level", 2);
  60. for (var i = 0; i < nodes.length; i++) {
  61. tree.expandNode(nodes[i], true, false, false);
  62. selectCheckNode(treeName,nodes[i]);
  63. }
  64. }, null, null, "正在加载,请稍后...");
  65. };
  66. $(function() {
  67. loadTree();
  68. });
  69. function selectCheckNode(treeName, node) {
  70. if(treeName == node.name){
  71. tree.selectNode(node, true);
  72. }
  73. }
  74. $('#btnExpand').click(function() {
  75. tree.expandAll(true);
  76. });
  77. $('#btnCollapse').click(function() {
  78. tree.expandAll(false);
  79. });
  80. function loadObj(){
  81. var treeId = $("#treeId").val();
  82. var treeName = $("#treeName").val();
  83. parent.$("#treeId").val(treeId);
  84. parent.$("#treeName").val(treeName);
  85. var index = parent.layer.getFrameIndex(window.name); // 获取窗口索引
  86. parent.layer.close(index);
  87. }
  88. var lastValue = "", nodeList = [], key = $("#keyword");
  89. key.bind("focus", focusKey).bind("blur", blurKey).bind("change cut input propertychange", searchNode);
  90. key.bind("keydown", function (e){if(e.which == 13){searchNode();}});
  91. function focusKey(e) {
  92. if (key.hasClass("empty")) {
  93. key.removeClass("empty");
  94. }
  95. }
  96. function blurKey(e) {
  97. if (key.get(0).value === "") {
  98. key.addClass("empty");
  99. }
  100. searchNode(e);
  101. }
  102. function searchNode() {
  103. var value = $.trim(key.get(0).value);
  104. var keyType = "name";
  105. if (lastValue === value) {
  106. return;
  107. }
  108. lastValue = value;
  109. var nodes = tree.getNodes();
  110. if (value == "") {
  111. showAllNode(nodes);
  112. return;
  113. }
  114. hideAllNode(nodes);
  115. nodeList = tree.getNodesByParamFuzzy(keyType, value);
  116. updateNodes(nodeList);
  117. }
  118. function hideAllNode(nodes){
  119. var tree = $.fn.zTree.getZTreeObj("tree");
  120. nodes = tree.transformToArray(nodes);
  121. for(var i=nodes.length-1; i>=0; i--) {
  122. tree.hideNode(nodes[i]);
  123. }
  124. }
  125. function showAllNode(nodes){
  126. nodes = tree.transformToArray(nodes);
  127. for(var i=nodes.length-1; i>=0; i--) {
  128. if(nodes[i].getParentNode()!=null){
  129. tree.expandNode(nodes[i],false,false,false,false);
  130. }else{
  131. tree.expandNode(nodes[i],true,true,false,false);
  132. }
  133. tree.showNode(nodes[i]);
  134. showAllNode(nodes[i].children);
  135. }
  136. }
  137. function updateNodes(nodeList) {
  138. tree.showNodes(nodeList);
  139. for(var i=0, l=nodeList.length; i<l; i++) {
  140. var treeNode = nodeList[i];
  141. showChildren(treeNode);
  142. showParent(treeNode)
  143. }
  144. }
  145. function showChildren(treeNode){
  146. if (treeNode.isParent){
  147. for(var idx in treeNode.children){
  148. var node = treeNode.children[idx];
  149. tree.showNode(node);
  150. showChildren(node);
  151. }
  152. }
  153. }
  154. function showParent(treeNode){
  155. var parentNode;
  156. while((parentNode = treeNode.getParentNode()) != null){
  157. tree.showNode(parentNode);
  158. tree.expandNode(parentNode, true, false, false);
  159. treeNode = parentNode;
  160. }
  161. }
  162. function search($this) {
  163. $('#search').slideToggle(200);
  164. $('#btnShow').toggle();
  165. $('#btnHide').toggle();
  166. $('#keyword').focus();
  167. }
  168. </script>
  169. </body>
  170. </html>