sysOrgTree.jsp 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"
  2. pageEncoding="UTF-8"%>
  3. <%@include file="/commons/include/html_doctype.html" %>
  4. <html>
  5. <head>
  6. <title>组织架构左边树</title>
  7. <%@include file="/commons/include/get.jsp" %>
  8. <base target="_self"/>
  9. <f:link href="tree/zTreeStyle.css"></f:link>
  10. <script type="text/javascript" src="${ctx }/js/tree/jquery.ztree.js"></script>
  11. <script type="text/javascript" src="${ctx }/js/lg/plugins/ligerMenu.js"></script>
  12. <script type="text/javascript">
  13. var orgTree; //树
  14. var menu;
  15. var menu_root;
  16. var treeNodelickAble=true;
  17. $(function ()
  18. {
  19. loadTree(0);
  20. menu();
  21. menu_root();
  22. });
  23. //添加节点
  24. function addNode()
  25. {
  26. orgTree = $.fn.zTree.getZTreeObj("orgTree");
  27. var nodes = orgTree.getSelectedNodes();
  28. var treeNode = nodes[0];
  29. var orgId=treeNode.orgId;//如果是新增时它就变成父节点Id
  30. var demId=treeNode.demId;
  31. var url="edit.ht?orgId="+orgId+"&demId="+demId+"&flag=TA";
  32. parent.$("#viewFrame").attr("src", url);
  33. };
  34. //编辑节点
  35. function editNode()
  36. {
  37. orgTree = $.fn.zTree.getZTreeObj("orgTree");
  38. var nodes = orgTree.getSelectedNodes();
  39. var treeNode = nodes[0];
  40. var orgId=treeNode.orgId;//如果是新增时它就变成父节点Id
  41. var demId=treeNode.demId;
  42. var url="edit.ht?orgId="+orgId+"&demId="+demId+"&flag=TE";
  43. parent.$("#viewFrame").attr("src", url);
  44. };
  45. //删除节点
  46. function delNode(){
  47. orgTree = $.fn.zTree.getZTreeObj("orgTree");
  48. var nodes = orgTree.getSelectedNodes();
  49. var node = nodes[0];
  50. var callback = function(rtn)
  51. {
  52. if(rtn)
  53. {
  54. $.ajax({
  55. type: "POST",
  56. url: "orgdel.ht",
  57. data: "orgId="+node.orgId,
  58. success: function()
  59. {
  60. orgTree.removeNode(node);
  61. }
  62. });
  63. }
  64. };
  65. parent.sdel(callback);//为了窗口在框架外面弹出 ,方法在sysOrgList.jsp里
  66. };
  67. //左击前
  68. function zTreeBeforeClick(treeId, treeNode, clickFlag){
  69. return treeNodelickAble;
  70. };
  71. //左击事件
  72. function zTreeOnLeftClick(event, treeId, treeNode){
  73. var orgId=treeNode.orgId;
  74. var path=treeNode.path;
  75. var demId=treeNode.demId;
  76. parent.$("#viewFrame").attr("src","get.ht?path="+path+"&orgId="+orgId+"&demId="+demId);
  77. };
  78. /**
  79. * 右击事件
  80. */
  81. function zTreeOnRightClick(e, treeId, treeNode) {
  82. if (treeNode&&!treeNode.notRight) {
  83. orgTree.selectNode(treeNode);
  84. if(treeNode.orgSupId==0 && treeNode.orgId==0){//根节点时,把删除和编辑隐藏掉
  85. menu_root.show({ top: e.pageY, left: e.pageX });
  86. }else{
  87. menu.show({ top: e.pageY, left: e.pageX });
  88. }
  89. }
  90. };
  91. //展开收起
  92. function treeExpandAll(type){//在sysOrgList.jsp调用
  93. orgTree = $.fn.zTree.getZTreeObj("orgTree");
  94. orgTree.expandAll(type);
  95. };
  96. //异步加载展开
  97. function treeExpand() {
  98. orgTree = $.fn.zTree.getZTreeObj("orgTree");
  99. var treeNodes = orgTree.transformToArray(orgTree.getNodes());
  100. for(var i=1;i<treeNodes.length;i++){
  101. if(treeNodes[i].children){
  102. orgTree.expandNode(treeNodes[i], true, false, false);
  103. }
  104. }
  105. };
  106. //右键菜单
  107. function menu(){
  108. menu = $.ligerMenu({ top: 100, left: 100, width: 100, items:
  109. [
  110. { text: '增加', click: addNode },
  111. { text: '编辑', click: editNode },
  112. { text: '删除', click: delNode }
  113. ]
  114. });
  115. };
  116. //右键菜单,当点跟节点时
  117. function menu_root(){
  118. menu_root = $.ligerMenu({ top: 100, left: 100, width: 100, items:
  119. [
  120. { text: '增加', click: addNode }
  121. ]
  122. });
  123. };
  124. //生成树
  125. function loadTree(selid){
  126. var setting = {
  127. data: {
  128. key : {
  129. name: "orgName",
  130. title: "orgName"
  131. },
  132. simpleData: {
  133. enable: true,
  134. idKey: "orgId",
  135. pIdKey: "orgSupId",
  136. rootPId: 0
  137. }
  138. },
  139. view: {
  140. addHoverDom: addHoverDom,
  141. removeHoverDom: removeHoverDom,
  142. selectedMulti: true
  143. },
  144. // 拖动
  145. edit: {
  146. drag: {
  147. prev: dropEnable,
  148. inner: dropEnable,
  149. next: dropEnable
  150. },
  151. enable: true,
  152. showRemoveBtn: false,
  153. showRenameBtn: false
  154. },
  155. onRightClick: true,
  156. async: {
  157. enable: true,
  158. url:"${ctx}/platform/system/sysOrg/getTreeData.ht?demId="+selid,
  159. autoParam:["orgId","orgSupId"]
  160. },
  161. callback:{
  162. oonClick: zTreeOnLeftClick,
  163. onRightClick: zTreeOnRightClick,
  164. beforeClick:zTreeBeforeClick,
  165. beforeDrop:beforeDrop,
  166. onDrop: onDrop,
  167. onAsyncSuccess: orgTreeOnAsyncSuccess
  168. }
  169. };
  170. orgTree=$.fn.zTree.init($("#orgTree"), setting);
  171. };
  172. //判断是否为子结点,以改变图标
  173. function orgTreeOnAsyncSuccess(event, treeId, treeNode, msg) {
  174. if(treeNode){
  175. var children=treeNode.children;
  176. if(children.length==0){
  177. treeNode.isParent=true;
  178. orgTree = $.fn.zTree.getZTreeObj("orgTree");
  179. if(orgTree)//不为空时更新节点
  180. orgTree.updateNode(treeNode);
  181. }
  182. }
  183. };
  184. //保存排序后的顺序
  185. function sortType(orgIds){
  186. $.post("${ctx}/platform/system/sysOrg/sort.ht?orgIds="+orgIds,
  187. function(result){
  188. var selid=parent.$("#demensionId").children('option:selected').val();
  189. loadTree(selid);
  190. });
  191. };
  192. /**
  193. *显示
  194. */
  195. var newCount = 1;
  196. function addHoverDom(treeId, treeNode){
  197. //判断存在
  198. var sObj = $("#" + treeNode.tId + "_span");
  199. if ($("#upBtn_"+treeNode.id).length>0) return;
  200. //加入
  201. if(treeNode.getPreNode()!=null){
  202. var upStr = "<button type='button' class='link-sortUp' id='upBtn_" + treeNode.id + "' title='向前' ></button>";
  203. sObj.append(upStr);
  204. }
  205. if ($("#downBtn_"+treeNode.id).length>0) return;
  206. if(treeNode.getNextNode()!=null){
  207. var upStr = "<button type='button' class='link-sortDown' id='downBtn_" + treeNode.id + "' title='向后' ></button>";
  208. sObj.append(upStr);
  209. }
  210. if ($("#topBtn_"+treeNode.id).length>0) return;
  211. if(treeNode.getPreNode()!=null){
  212. var topBtnStr = "<button type='button' class='link-sortTop' id='topBtn_" + treeNode.id + "' title='最前' ></button>";
  213. sObj.append(topBtnStr);
  214. }
  215. if ($("#bottomBtn_"+treeNode.id).length>0) return;
  216. if(treeNode.getNextNode()!=null)
  217. {
  218. var bottomBtnStr = "<button type='button' class='link-sortBottom' id='bottomBtn_" + treeNode.id + "' title='最后' ></button>";
  219. sObj.append(bottomBtnStr);
  220. }
  221. var topBtn_ = $("#topBtn_"+treeNode.id);
  222. if (topBtn_) topBtn_.bind("click", function(){
  223. treeNodelickAble=false;
  224. //取父结点
  225. var parentNode = treeNode.getParentNode();
  226. //如果父结点存在
  227. if(parentNode!=null){
  228. var childs=parentNode.children;
  229. var orgIds=treeNode.orgId+",";
  230. $.each( childs, function(i, c){
  231. if(c.orgId!=treeNode.orgId)
  232. orgIds+=c.orgId+",";
  233. });
  234. if(orgIds.length>1){
  235. orgIds=orgIds.substring(0,orgIds.length-1);
  236. sortType(orgIds);
  237. }
  238. }else{
  239. alert("要排序的节点没有父节点,这是一个bug ,请联系作者优化!");
  240. }
  241. });
  242. var bottomBtn_ = $("#bottomBtn_"+treeNode.id);
  243. if (bottomBtn_) bottomBtn_.bind("click", function(){
  244. treeNodelickAble=false;
  245. //取父结点
  246. var parentNode = treeNode.getParentNode();
  247. //如果父结点存在
  248. if(parentNode!=null){
  249. var childs=parentNode.children;
  250. var orgIds="";
  251. $.each( childs, function(i, c){
  252. if(c.orgId!=treeNode.orgId)
  253. orgIds+=c.orgId+",";
  254. });
  255. orgIds+=treeNode.orgId+",";
  256. if(orgIds.length>1){
  257. orgIds=orgIds.substring(0,orgIds.length-1);
  258. sortType(orgIds);
  259. }
  260. }else{
  261. alert("要排序的节点没有父节点,这是一个bug ,请联系作者优化!");
  262. }
  263. });
  264. //绑定
  265. var upBtn_ = $("#upBtn_"+treeNode.id);
  266. if (upBtn_) upBtn_.bind("click", function(){
  267. treeNodelickAble=false;
  268. //取前结点
  269. var preNode = treeNode.getPreNode();
  270. //如果前结点存在
  271. if(preNode!=null){
  272. //前后结点置换
  273. var thisOrgId= treeNode.orgId;
  274. var preOrgId= preNode.orgId;
  275. treeNode.orgId=preOrgId;
  276. preNode.orgId =thisOrgId;
  277. //取当下同级结点所有ID
  278. var parentNode=treeNode.getParentNode();
  279. var childs=parentNode.children;
  280. var orgIds="";
  281. $.each( childs, function(i, c){
  282. orgIds+=c.orgId+",";
  283. });
  284. if(orgIds.length>1){
  285. orgIds=orgIds.substring(0,orgIds.length-1);
  286. sortType(orgIds);
  287. }
  288. }
  289. });
  290. var downBtn_ = $("#downBtn_"+treeNode.id);
  291. if (downBtn_) downBtn_.bind("click", function(){
  292. treeNodelickAble=false;
  293. //取后结点
  294. var nextNode = treeNode.getNextNode();
  295. //如果前结点存在
  296. if(nextNode!=null){
  297. //前后结点置换
  298. var thisOrgId= treeNode.orgId;
  299. var nextOrgId= nextNode.orgId;
  300. treeNode.orgId =nextOrgId;
  301. nextNode.orgId =thisOrgId;
  302. //取当下同级结点所有ID
  303. var parentNode=treeNode.getParentNode();
  304. var childs=parentNode.children;
  305. var orgIds="";
  306. $.each( childs, function(i, c){
  307. orgIds+=c.orgId+",";
  308. });
  309. if(orgIds.length>1){
  310. orgIds=orgIds.substring(0,orgIds.length-1);
  311. //保存排序后的顺序
  312. sortType(orgIds);
  313. }
  314. }
  315. });
  316. };
  317. /**
  318. *隐藏
  319. */
  320. function removeHoverDom(treeId, treeNode) {
  321. $("#upBtn_"+treeNode.id).unbind().remove();
  322. $("#downBtn_"+treeNode.id).unbind().remove();
  323. $("#topBtn_"+treeNode.id).unbind().remove();
  324. $("#bottomBtn_"+treeNode.id).unbind().remove();
  325. };
  326. //向前拖
  327. function dropEnable(treeId,curDragNodes,treeNode) {
  328. if (!treeNode) return false;
  329. if(treeNode.isRoot)
  330. return false;
  331. return true;
  332. };
  333. //拖放 前准备
  334. function beforeDrop(treeId, treeNodes, targetNode, moveType) {
  335. if (!treeNodes) return false;
  336. if(targetNode.isRoot)
  337. return false;
  338. return true;
  339. };
  340. //拖放 后动作
  341. function onDrop(event, treeId, treeNodes, targetNode, moveType) {
  342. if(targetNode==null || targetNode==undefined) return;
  343. var targetId=targetNode.orgId;
  344. var dragId=treeNodes[0].orgId;
  345. var url=__ctx + "/platform/system/sysOrg/move.ht";
  346. var params={targetId:targetId,dragId:dragId,moveType:moveType};
  347. $.post(url,params,function(result){
  348. if(moveType=="inner"){
  349. reAsyncChild(targetNode);
  350. }
  351. });
  352. }
  353. </script>
  354. <style type="text/css">
  355. html{scroll:no;height:100%}
  356. body {scroll:no;height:100%; padding:0px; margin:0;}
  357. </style>
  358. </head>
  359. <body>
  360. <ul id="orgTree" class="ztree" style="width:180px;margin:0; padding:0;" >
  361. </ul>
  362. </body>
  363. </html>