官网 api


js
  1. /**
  2. <div id="menuContent" class="menuContent" style=" position: absolute;">
  3. <ul id="orgTree" class="ztree" style="margin-top:0; width:160px;"></ul>
  4. </div>
  5. */
  6. //var allowClick = true; //标记节点是否能被点击
  7. var sdorg={};
  8. /**
  9. * 初始化组织机构树
  10. * renderId 渲染位置
  11. * nodeClick 点击时触发的事件
  12. * beforeNodeClick 点击前触发的事件
  13. * ischkbox 是否显示多选框
  14. */
  15. sdorg.showcurrorg =function (renderId,nodeClick,beforNodeClick,ischkbox) {
  16. var orgNodes;
  17. var setting = {
  18. data:{
  19. simpleData:{
  20. enable:true,
  21. idKey:"id",
  22. pIdKey:"parentId",
  23. root:0
  24. },
  25. key:{
  26. name:"orgName"
  27. }
  28. },
  29. view:{
  30. showIcon:true
  31. },
  32. check:{
  33. enable:ischkbox
  34. ,chkStyle:'checkbox'
  35. ,chkboxType:{ "Y": "", "N": "" }
  36. //,autoCheckTrigger: false
  37. },
  38. async:{
  39. enable:true,
  40. url:baseURL+"/org/org!listOrgNode.action",
  41. autoParam:["id"],
  42. dataFilter:ajaxDataFilter
  43. },
  44. callback:{
  45. // onExpand:expandParentOrg,
  46. onClick:nodeClick||_nodeClick,
  47. beforeClick:beforNodeClick||_beforNodeClick,
  48. }
  49. };
  50. var url =baseURL+'/org/org!listOrgRoot.action';
  51. $.ajax({
  52. url:url,
  53. type:'post',
  54. dataType:'json',
  55. success:function (result) {
  56. if ('0' == result.code) {
  57. $.fn.zTree.init($('#'+renderId), setting, null);
  58. var orgTree = $.fn.zTree.getZTreeObj(renderId);
  59. orgTree.addNodes(null, result.data.orgList );
  60. // 展开机构树的根节点
  61. var rootNodes = orgTree.getNodes();
  62. if (rootNodes.length > 0)
  63. orgTree.expandNode(rootNodes[0], true, false, true);
  64. //orgTree.expandAll(true);
  65. } else {
  66. alert(result.desc);
  67. }
  68. }
  69. });
  70. }
  71. sdorg.showcurrorg1 =function (renderId,nodeClick,nodeCheck,ischkbox,beforeShow,onExpand,orgId,orgName) {
  72. var orgNodes;
  73. var setting = {
  74. data:{
  75. simpleData:{
  76. enable:true,
  77. idKey:"organizationId",
  78. pIdKey:"parentId",
  79. root:0
  80. },
  81. key:{
  82. name:"organizationName"
  83. }
  84. },
  85. view:{
  86. showIcon:true
  87. },
  88. check:{
  89. enable:ischkbox
  90. ,chkStyle:'checkbox'
  91. ,chkboxType: { "Y": "s", "N": "s" }
  92. ,autoCheckTrigger: true
  93. },
  94. async:{
  95. enable:true,
  96. url:baseURL+"/org/org!listOrgNode.action",
  97. autoParam:["organizationId"],
  98. dataFilter:ajaxDataFilter
  99. },
  100. callback:{
  101. // onExpand:expandParentOrg,
  102. onClick:nodeClick||_nodeClick,
  103. onCheck:nodeCheck,
  104. onExpand:onExpand
  105. }
  106. };
  107. //var url = cur_user_id=="admin"?baseURL+'/orgext/orgext!listOrgRoot.action':baseURL+'/orgext/orgext!listOrgUnderCurrentUserOrg.action';
  108. var url = orgId?baseURL+'/org/org!listOrgNode.action':baseURL+'/org/org!listOrgRoot.action';
  109. // alert(orgId); return;
  110. $.ajax({
  111. url:url,
  112. type:'post',
  113. dataType:'json',
  114. data:{organizationId:orgId},
  115. success:function (result) {
  116. if ('0' == result.code) {
  117. $.fn.zTree.init($('#'+renderId), setting, null);
  118. var orgTree = $.fn.zTree.getZTreeObj(renderId);
  119. if(orgId){
  120. var newNode = {organizationId:orgId,organizationName:orgName};
  121. orgTree.addNodes(null, newNode);
  122. orgTree.addNodes(orgTree.getNodeByParam("organizationId",orgId,null), result.data.orgList );
  123. }else{
  124. orgTree.addNodes(null, result.data.orgList );
  125. }
  126. // 展开机构树的根节点
  127. var rootNodes = orgTree.getNodes();
  128. if (rootNodes.length > 0)
  129. orgTree.expandNode(rootNodes[0], true, false, true);
  130. //orgTree.expandAll(true);
  131. beforeShow&&beforeShow.call();
  132. } else {
  133. alert(result.desc);
  134. }
  135. }
  136. });
  137. }
  138. sdorg.showchildorg= function (renderId,orgId,nodeClick,beforNodeClick,ischkbox,iscanexpand) {
  139. var orgNodes;
  140. var setting = {
  141. data:{
  142. simpleData:{
  143. enable:true,
  144. idKey:"organizationId",
  145. pIdKey:"parentId",
  146. root:0
  147. },
  148. key:{
  149. name:"organizationName"
  150. }
  151. },
  152. view:{
  153. showIcon:true
  154. },
  155. check:{
  156. enable:ischkbox
  157. ,chkStyle:'checkbox'
  158. ,chkboxType:{ "Y": "", "N": "" }
  159. //,autoCheckTrigger: false
  160. },
  161. async:{
  162. enable:iscanexpand||false,
  163. url:baseURL+"/orgext/orgext!listOrgNode.action",
  164. autoParam:["organizationId"],
  165. dataFilter:ajaxDataFilter
  166. },
  167. callback:{
  168. // onExpand:expandParentOrg,
  169. onClick:nodeClick||_nodeClick,
  170. beforeClick:beforNodeClick||_beforNodeClick,
  171. }
  172. };
  173. var url = orgId?baseURL+'/orgext/orgext!listOrgNode.action':baseURL+'/orgext/orgext!listOrgRoot.action';
  174. $.ajax({
  175. url:url,
  176. type:'post',
  177. data:{organizationId:orgId},
  178. dataType:'json',
  179. success:function (result) {
  180. if ('0' == result.code) {
  181. orgNodes =ajaxDataFilter(null, null, result); //result.data.orgList;
  182. if (orgNodes.length > 0) {
  183. $.fn.zTree.init($('#'+renderId), setting, orgNodes);
  184. // 展开机构树的根节点
  185. var orgTree = $.fn.zTree.getZTreeObj(renderId);
  186. var rootNodes = orgTree.getNodes();
  187. if ((!orgId||iscanexpand)&&rootNodes.length > 0)
  188. orgTree.expandNode(rootNodes[0], true, false, true);
  189. //orgTree.expandAll(true);
  190. }
  191. } else {
  192. alert(result.desc);
  193. }
  194. }
  195. });
  196. }
  197. //
  198. /**
  199. * 异步加载节点数据后的处理函数
  200. * @param treeId
  201. * @param parent
  202. * @param result
  203. */
  204. function ajaxDataFilter(treeId, parent, result) {
  205. //if ('0' == result.code) {
  206. return result.data.orgList;
  207. //}
  208. }
  209. function _nodeClick(event, treeId, treeNode) {
  210. //console.info(treeNode);
  211. //alert(treeNode.organizationId);
  212. //alert(treeNode.organizationName);
  213. }
  214. /**
  215. * 控制节点是否能被选中
  216. * @param treeId
  217. * @param treeNode
  218. * @param clickFlag
  219. */
  220. function _beforNodeClick(treeId, treeNode, clickFlag) {
  221. }
  222. //当前对应input框 显示的input 和要隐藏id的input
  223. var $_currdom2,$_hiddendom2;
  224. //显示下拉树
  225. function showMenu2(inputid,hiddenid) {
  226. $_currdom2 = $("#"+inputid);
  227. $_hiddendom2 = $("#"+hiddenid);
  228. var cityOffset = $_currdom2.offset();
  229. $("#Content").css({left:cityOffset.left, top:cityOffset.top-50}).slideDown("fast");
  230. $("body").bind("mousedown", onBodyDown2);
  231. }
  232. //隐藏下拉树
  233. function hideMenu2() {
  234. $("#Content").fadeOut("fast");
  235. $("body").unbind("mousedown", onBodyDown2);
  236. }
  237. //点击页面其他位置时,下拉树退出
  238. function onBodyDown2(event) {
  239. if (!(event.target.id == "Btn" || event.target.id == "Content" || $(event.target).parents("#Content").length>0)) {
  240. hideMenu2();
  241. }
  242. }
  243. //节点点击事件
  244. function onClick2(e, treeId, treeNode) {
  245. $_currdom2.val(treeNode.organizationName);
  246. $_currdom2.focus();
  247. $_hiddendom2.val(treeNode.organizationId);
  248. $("#Content").fadeOut("fast");
  249. }
  250. function onCheck(e,treeId,treeNode){
  251. var treeObj = $.fn.zTree.getZTreeObj("org");
  252. var $ckNode = treeObj.getCheckedNodes();
  253. var orgName = "";
  254. var orgId = "";
  255. $($ckNode).each(function(){
  256. orgName+=this.organizationName+",";
  257. orgId+=this.organizationId+",";
  258. })
  259. $_currdom2.val(orgName);
  260. $_hiddendom2.val(orgId);
  261. }


html
  1. <!-- 组织架构树 -->
  2. <div id="Content" class="menuContent" style="position:absolute;display:none;z-index:10000;">
  3. <ul id="org" class="ztree" style="margin-top:0; width:350px; background:white; border:2px dotted #cccccc;"></ul>
  4. </div>

js 树菜单 ztree的更多相关文章

  1. vue.js 树菜单 递归组件树来实现

    树形视图 Example: https://vuefe.cn/v2/examples/tree-view.html 参照前辈方法实现的,觉得不错,记录一下: 父组件: <!-- 菜单树 --&g ...

  2. js无限级树菜单

    以前做网站,树形菜单一般都很简单,自己定义风格样式,简单的js控制,后来原来网上很多文章都在讨论Js树型菜单,看了几个实例,发现这个树比较简单好用. http://hovertree.com/texi ...

  3. JS树形菜单

    超全的JS树形菜单源代码共享(有实例图) 树形菜单是很常用的效果,常用在管理软件当中,但是一套树形菜单已经不能满足需求,所以如果能有一套比较全面的树形菜单JS特效代码,将会非常方便,下面懒人萱将超全的 ...

  4. C#动态加载树菜单

    在做权限系统的时候,需要有一个树形的菜单.下图就是一个树形菜单的样式 但问题是,我们可以实现写死的树形菜单.什么是写死的?就是在前台代码中写好要加载的树形菜单是什么样子的.但是我们权限系统的要求是动态 ...

  5. EasyUI 树菜单

    EasyUI 树菜单 通过ssm框架项目实现EasyUI 的树菜单的单选,复选,异步加载树,同步加载树和树权限控制等功能. 本章知识点 效果图: 需求:通过SSM框架,实现EasyUI 树菜单的单选, ...

  6. 基于Bootstrap Ace模板+bootstrap.addtabs.js的菜单

    这几天研究了基于bootstrap Ace模板+bootstra.addtabs.js实现菜单的效果 参考了这个人的博客 https://www.cnblogs.com/landeanfen/p/76 ...

  7. js矩阵菜单或3D立体预览图片效果

    js矩阵菜单或3D立体预览图片效果 下载地址: http://files.cnblogs.com/elves/js%E7%9F%A9%E9%98%B5%E8%8F%9C%E5%8D%95%E6%88% ...

  8. 顶 兼容各种浏览器js折叠菜单

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  9. 适合移动手机使用的js环形菜单特效插件

    blooming-menu是一款适合在移动手机上使用的js环形菜单插件.该环形菜单提供了众多的參数,通过结合CSS3动画制作出效果很炫酷的圆形菜单展开和隐藏动画效果. 以下是这个圆形菜单菜价的可用參数 ...

随机推荐

  1. TensorFlow进阶(五)---图与会话

    图与会话 图 tf.Graph TensorFlow计算,表示为数据流图.一个图包含一组表示 tf.Operation计算单位的对象和tf.Tensor表示操作之间流动的数据单元的对象.默认Graph ...

  2. 【LeetCode】Jump Game (一维动态规划 + 线性扫描)

    Given an array of non-negative integers, you are initially positioned at the first index of the arra ...

  3. 用php当作cat使用

    今天,本来是想敲 node test.js 执行一下,test.js文件,结果 惯性的敲成了 php  test.js, 原文输出了 test.js的内容. 突然觉得,这东西 感觉好像是 cat  命 ...

  4. 让Netty入门变得简单

    让Netty入门变得简单 https://mp.weixin.qq.com/s/MBnbLmCmFJo0QK9WNwXrXQ 如果先启动nettyClient就不会有nettyServer输出了: p ...

  5. RS报表设计采用Total汇总过滤出错

    错误信息: DMR 子查询计划失败,并产生意外错误.: java.lang.NullPointerException 如图 原因是在RS过滤器中添加了: total([门诊人次] for [明细科室] ...

  6. 第一章:走近java-深入理解java虚拟机-读书总结

    java技术体系: 1.java程序设计语言 2.硬件平台上的java虚拟机 3.class文件格式 4.java的API类库 5.第三方的类库 JDK: java语言,虚拟机,java API类库  ...

  7. Unity3D开发之Mac OS 开发环境搭建 笔记

    http://www.cnblogs.com/zhaoqingqing/p/3383167.html 首先上几张图: 摸索了一上午,才搞定在模拟器中运行.至于在Iphone真机中运行,虽然有开发者证书 ...

  8. proxy [ˈprɒksi] 代理

    谷歌.QQ支持,360.搜狗不支持 使用proxy代理可以实现,对原先的类不进行处理,新建一个类,对此进行拦截处理,以实现低耦合 可以通过代理拦截的方法,将方法进行重写. //------------ ...

  9. 解构赋值 和 symbol

    1.数组解构 let [a,b,c,d] = ['aa','bb',77,88] 嵌套数组解构 let [a,b,[c,d],e] = ['aa','bb',[33,44],55] 空缺变量 let ...

  10. JS 运算、判断优化

    1.二级制操作优于Math 如: //函数向下取整 console.log(Math.floor(8.9)); //二进制向下取整 console.log(8.9>>0); 2.慎用|| ...