chapterTree.js 7.6 KB

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