chapterTree.js 8.1 KB

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