select_area.html 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <link rel="stylesheet" href="/static/layui/css/layui.css"/>
  2. <link rel="stylesheet" type="text/css" href="/static/css/zTreeStyle/zTreeStyle.css">
  3. <script type="text/javascript" src="/static/layui/layui.js"></script>
  4. <script type="text/javascript" src="/static/js/jquery.min.js"></script>
  5. <script type="text/javascript" src="/static/js/global.js"></script>
  6. <script type="text/javascript" src="/static/js/ztree/jquery.ztree.core-3.5.js"></script>
  7. <script type="text/javascript" src="/static/js/ztree/jquery.ztree.excheck-3.5.min.js"></script>
  8. <style type="text/css">
  9. </style>
  10. <div class="layui-form" lay-filter="example"
  11. style="margin:2%;padding: 0 1rem;width:90%;height:88%;overflow-y: auto;;border: 1px solid #ededed;">
  12. <ul id="area_tree" class="ztree tree">&nbsp;</ul>
  13. </div>
  14. <div class="cloud_button" style="width: 100%;">
  15. <div class="layui-layer-btn layui-layer-btn" style="text-align: center;">
  16. <button id="ok" class="layui-btn layui-btn-normal cloud_button_ok">确定</button>
  17. <a class="layui-layer-btn1" style="margin-right:0px;" onclick="parent.layer.closeAll();">取消</a>
  18. </div>
  19. </div>
  20. <script type="text/javascript">
  21. var saveing = 0;
  22. var userAdminArealist = [];
  23. var isUpdate = false; //是否修改
  24. $(document).ready(function () {
  25. $.getJSON(Global.AccessUrl + "/api/getUserAreaList", {userid: parent.UserInfoObject.tableId}, function (r) {
  26. if (r.code != 0) {
  27. layer.msg("获取用户管理区域错误:" + r.msg);
  28. return false;
  29. }
  30. userAdminArealist = r.data || [];
  31. Global.Ztree.Init($("#area_tree"), {
  32. url: Global.AccessUrl + "/api/area/children/list",
  33. idKey: "id",
  34. pidKey: "pid",
  35. nameKey: "title",
  36. check: {
  37. enable: true,
  38. chkStyle: "checkbox",
  39. chkboxType: {"Y": "p", "N": "s"}
  40. },
  41. callback: {
  42. beforeAsync: beforeAsync,
  43. onAsyncSuccess: onAsyncSuccess,
  44. onCheck: zTreeOnCheck,
  45. dataFilter: function (treeId, parentNode, childNodes) {
  46. isUpdate = true;
  47. for (var i = 0; i < childNodes["data"].length; i++) {
  48. if (userAdminArealist.length == 0)
  49. childNodes["data"][i]["checked"] = parentNode.checked;
  50. else {
  51. childNodes["data"][i]["checked"] = false;
  52. for (var j = 0; j < userAdminArealist.length; j++) {
  53. if (userAdminArealist[j].areaid == childNodes["data"][i].id) {
  54. childNodes["data"][i]["checked"] = true;
  55. }
  56. }
  57. }
  58. }
  59. return childNodes["data"];
  60. },
  61. onInitLoad: asyncAll
  62. }
  63. });
  64. })
  65. function zTreeOnCheck(event, treeId, treeNode) {
  66. if (treeNode.checked)
  67. isUpdate=true;
  68. }
  69. function asyncAll(rootNode) {
  70. if (rootNode == null) return;
  71. var childnodes = rootNode.children;
  72. if (childnodes == null || childnodes.length == 0) return;
  73. for (var i = 0; i < childnodes.length; i++) {
  74. for (var j = 0; j < userAdminArealist.length; j++) {
  75. if (userAdminArealist[j].areaid == childnodes[i].id) {
  76. childnodes[i]["checked"] = true;
  77. Global.Ztree.zTreeObj.updateNode(childnodes[i]);
  78. }
  79. }
  80. }
  81. var zTree = $.fn.zTree.getZTreeObj("area_tree");
  82. asyncNodes(zTree.getNodes());
  83. }
  84. var curAsyncCount = 0, curStatus = "";
  85. function beforeAsync() {
  86. curAsyncCount++;
  87. }
  88. function expandNodes(nodes) {
  89. if (!nodes) return false;
  90. var zTree = $.fn.zTree.getZTreeObj("area_tree");
  91. for (var i = 0, l = nodes.length; i < l; i++) {
  92. zTree.expandNode(nodes[i], true, false, false);
  93. if (nodes[i].isParent && nodes[i].zAsync) {
  94. PlatformConfigerObject.expandNodes(nodes[i].children);
  95. }
  96. }
  97. }
  98. function onAsyncSuccess(event, treeId, treeNode, msg) {
  99. curAsyncCount--;
  100. if (curStatus == "expand") {
  101. expandNodes(treeNode.children);
  102. } else if (curStatus == "async") {
  103. asyncNodes(treeNode.children);
  104. }
  105. if (curAsyncCount <= 0) {
  106. var treeObj = $.fn.zTree.getZTreeObj("area_tree");
  107. treeObj.expandAll(true);
  108. }
  109. }
  110. function asyncNodes(nodes) {
  111. curStatus = "async";
  112. var zTree = $.fn.zTree.getZTreeObj("area_tree");
  113. var upnode = [];
  114. for (var i = 0, l = nodes.length; i < l; i++) {
  115. if (nodes[i].isParent && nodes[i].zAsync) {
  116. var newnode = nodes[i].children;
  117. if (newnode != null && newnode.length > 0) {
  118. for (var j = 0; j < newnode.length; j++) {
  119. if (newnode[j]["checked"])
  120. upnode.push(newnode[j]);
  121. }
  122. }
  123. if (upnode.length > 0)
  124. asyncNodes(upnode);
  125. } else {
  126. if (nodes[i].checked)
  127. zTree.reAsyncChildNodes(nodes[i], "refresh", true);
  128. }
  129. }
  130. }
  131. $("#ok").on("click", function () {
  132. if (saveing == 1) return;
  133. var selectnodes = Global.Ztree.zTreeObj.getCheckedNodes();
  134. var dataids = [];
  135. if (!isUpdate) { //未有修改直接关闭
  136. parent.layer.closeAll();
  137. return false;
  138. }
  139. for (var i = 0; i < selectnodes.length; i++) {
  140. //父节点是否全选.half为false表示全选
  141. var isall = !selectnodes[i].getCheckStatus().half && selectnodes[i].isParent && !selectnodes[i].open ? "all" : "";
  142. dataids.push({"id": selectnodes[i].id, "allchecked": isall})
  143. }
  144. var uid = parent.UserInfoObject.tableId;
  145. saveing = 1;
  146. $.post(Global.AccessUrl + "/api/saveUserAreaList", {
  147. "userid": uid,
  148. "areaid": JSON.stringify(dataids)
  149. }, function (r) {
  150. saveing = 0;
  151. if (r.code != 0) {
  152. layer.msg("操作失败:" + r.msg);
  153. return;
  154. }
  155. layer.msg("操作成功!");
  156. parent.UserInfoObject.SearchUserInfo();
  157. setTimeout(function () {
  158. parent.layer.closeAll();
  159. }, 3000);
  160. });
  161. });
  162. });
  163. </script>