section_tree.js 8.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. /**
  2. * Created by Tony on 2017/4/27.
  3. */
  4. var pageOprObj = {
  5. rationLibName : null,
  6. rationLibId : null,
  7. initPage : function() {
  8. var me = this, rationLibId = getQueryString("repository"),//获取定额库参数
  9. rationLibName = storageUtil.getSessionCache("RationGrp","repositoryID_" + rationLibId);
  10. if (rationLibName) {
  11. var html = $("#rationname")[0].outerHTML;
  12. html = html.replace("XXX定额库", rationLibName);
  13. $("#rationname")[0].outerHTML = html;
  14. me.rationLibName = rationLibName;
  15. me.rationLibId = rationLibId;
  16. zTreeOprObj.getRationTree(rationLibId);
  17. }
  18. }
  19. }
  20. var zTreeOprObj = {
  21. treeObj: null,
  22. getRationTree: function(rationLibId){
  23. var me = this;
  24. $.ajax({
  25. type:"POST",
  26. url:"api/getRationTree",
  27. data:{"rationLibId": rationLibId},
  28. dataType:"json",
  29. cache:false,
  30. timeout:20000,
  31. success:function(result,textStatus,status){
  32. if(status.status == 200) {
  33. if (result.data.length > 0) {
  34. storageUtil.setSessionCache("RationGrp","repositoryID",result.data[0].rationRepId);
  35. }
  36. zTreeHelper.createTree(result.data, setting, "rationChapterTree", me);
  37. }
  38. },
  39. error:function(err){
  40. alert(err.responseJSON.error);
  41. }
  42. })
  43. },
  44. addRootNode: function() {
  45. var me = zTreeOprObj, rawNode = {ParentID: -1, NextSiblingID: -1, name: "新增节点"}, lastNodeId = -1;
  46. if (me.treeObj) {
  47. var rootNodes = me.treeObj.getNodes();
  48. if (rootNodes.length > 0) {
  49. lastNodeId = rootNodes[rootNodes.length - 1].ID;
  50. }
  51. }
  52. me.addNewNode(rawNode, lastNodeId, function(err, rst){
  53. if (!(err)) {
  54. var newNodes = [], isSilent = false;
  55. newNodes.push({ rationRepId: rst.data.rationRepId, ID: rst.data.ID, ParentID:-1, NextSiblingID:-1, name:"新增节点",isParent:false, items:[]});
  56. if (me.treeObj) {
  57. me.treeObj.addNodes(null, -1, newNodes, isSilent);
  58. } else {
  59. me.treeObj = $.fn.zTree.init($("#rationChapterTree"), setting, newNodes);
  60. }
  61. }
  62. });
  63. },
  64. addNewNode : function(rawNode, lastNodeId, callback){
  65. $.ajax({
  66. type:"POST",
  67. url:"api/createNewNode",
  68. data:{"rationLibId":pageOprObj.rationLibId,"lastNodeId": lastNodeId, "rawNodeData": JSON.stringify(rawNode)},
  69. dataType:"json",
  70. cache:false,
  71. timeout:1000,
  72. success: function(result,textStatus,status){
  73. callback(false, result);
  74. },
  75. error:function(err){
  76. callback(err);
  77. }
  78. })
  79. },
  80. beforeRename: function(treeId, treeNode, newName, isCancel) {
  81. if (newName.length == 0) {
  82. return false;
  83. }
  84. return true;
  85. },
  86. onRename : function(e, treeId, treeNode, isCancel) {
  87. var nodes = [];
  88. nodes.push(treeNode);
  89. zTreeOprObj.updateNodes(nodes);
  90. },
  91. onBeforeRemove: function(treeId, treeNode){
  92. var nodeIds = [], preNode = treeNode.getPreNode(), preNodeId = -1;
  93. if (preNode) {
  94. preNodeId = preNode.ID;
  95. }
  96. private_fetchAllSubItems = function(pItem){
  97. nodeIds.push(pItem.ID);
  98. if (pItem.items && pItem.items.length > 0) {
  99. for (var i = 0; i < pItem.items.length; i++) {
  100. private_fetchAllSubItems(pItem.items[i]);
  101. }
  102. }
  103. };
  104. nodeIds.push(treeNode.ID);
  105. for (var i = 0; i < treeNode.items.length; i++) {
  106. private_fetchAllSubItems(treeNode.items[i]);
  107. }
  108. $.ajax({
  109. type:"POST",
  110. url:"api/deleteNodes",
  111. data:{"nodes": JSON.stringify(nodeIds), "preNodeId": preNodeId, "preNodeNextId": treeNode.NextSiblingID},
  112. dataType:"json",
  113. cache:false,
  114. timeout:5000,
  115. success:function(result,textStatus,status){
  116. var pNode = treeNode.getParentNode();
  117. if (pNode && pNode.items && pNode.items.length == 1) {
  118. pNode.isParent = false;
  119. }
  120. },
  121. error:function(){
  122. }
  123. });
  124. return true;
  125. },
  126. onRemove: function(e, treeId, treeNode){
  127. var me = zTreeOprObj, pNode = me.treeObj.getNodeByTId(treeNode.parentTId);
  128. if (pNode && pNode.items && pNode.items.length == 0) {
  129. pNode.isParent = false;
  130. me.treeObj.refresh();
  131. //me.treeObj.updateNode(pNode, false); //这方法有后遗症,多次操作后会造成节点新增子节点时,父节点icon显示不正确
  132. }
  133. },
  134. updateNodes: function(nodes){
  135. if (nodes && nodes.length > 0) {
  136. var reqData = []
  137. for (var i = 0; i < nodes.length; i++) {
  138. var node = {};
  139. node.rationRepId = nodes[i].rationRepId;
  140. node.ID = nodes[i].ID;
  141. node.ParentID = nodes[i].ParentID;
  142. node.NextSiblingID = nodes[i].NextSiblingID;
  143. node.name = nodes[i].name;
  144. if (nodes[i].__v != null) node.__v = nodes[i].__v + 1
  145. else node.__v = 0;
  146. reqData.push(node);
  147. }
  148. $.ajax({
  149. type:"POST",
  150. url:"api/updateNodes",
  151. data:{"nodes": JSON.stringify(reqData)},
  152. dataType:"json",
  153. cache:false,
  154. timeout:5000,
  155. success:function(result,textStatus,status){
  156. console.log(status + ' : ' + result);
  157. },
  158. error:function(){
  159. }
  160. })
  161. }
  162. },
  163. addHoverDom: function(treeId, treeNode) {
  164. var me = zTreeOprObj, sObj = $("#" + treeNode.tId + "_span");
  165. if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length>0) return;
  166. var addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='新增子节点' onfocus='this.blur();'></span>";
  167. sObj.after(addStr);
  168. var btn = $("#addBtn_"+treeNode.tId);
  169. if (btn) btn.bind("click", function(){
  170. var rawNode = {ParentID: treeNode.ID, NextSiblingID: -1, name: "新增子节点"}, lastNodeId = -1, lastNode = null;
  171. if (treeNode.items.length > 0) {
  172. lastNodeId = treeNode.items[treeNode.items.length - 1].ID;
  173. lastNode = treeNode.items[treeNode.items.length - 1];
  174. }
  175. zTreeOprObj.addNewNode(rawNode, lastNodeId, function(err, rst){
  176. if (!(err)) {
  177. var newNodes = [], isSilent = false;
  178. if (lastNode) {
  179. lastNode.NextSiblingID = rst.ID;
  180. }
  181. newNodes.push({ rationRepId: rst.data.rationRepId, ID: rst.data.ID, ParentID: rst.data.ParentID, NextSiblingID:-1, name:"新增子节点",isParent:false, items:[]});
  182. treeNode.isParent = true;
  183. if (me.treeObj) {
  184. me.treeObj.addNodes(treeNode, -1, newNodes, isSilent);
  185. } else {
  186. me.treeObj = $.fn.zTree.init($("#rationChapterTree"), setting, newNodes);
  187. }
  188. }
  189. });
  190. });
  191. },
  192. removeHoverDom: function(treeId, treeNode) {
  193. $("#addBtn_"+treeNode.tId).unbind().remove();
  194. },
  195. onClick: function(event,treeId,treeNode) {
  196. var sectionID = treeNode.ID;
  197. if (!(treeNode.items) || treeNode.items.length == 0) {
  198. rationOprObj.getRationItems(sectionID);
  199. } else {
  200. sheetCommonObj.cleanSheet(rationOprObj.workBook.getSheet(0), rationOprObj.setting, -1);
  201. sheetCommonObj.shieldAllCells(rationOprObj.workBook.getSheet(0));
  202. }
  203. sheetCommonObj.cleanSheet(rationGLJOprObj.workBook.getSheet(0), rationGLJOprObj.setting, -1);
  204. sheetCommonObj.shieldAllCells(rationGLJOprObj.workBook.getSheet(0));
  205. }
  206. };