rpt_tpl_main.js 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. 'use strict'
  2. let rptTplObj = {
  3. iniPage: function() {
  4. let me = this
  5. zTreeOprObj.getReportTemplateTree(RT.GrpType.CONSTRUCT);
  6. }
  7. }
  8. let zTreeOprObj = {
  9. treeObj: null,
  10. currentNode: null,
  11. getReportTemplateTree: function(grpType) {
  12. let me = zTreeOprObj, params = {};
  13. params.grpType = grpType;
  14. params.userId = userID;
  15. params.tplType = RT.TplType.ALL;
  16. CommonAjax.postEx("report_tpl_api/getRptTplTree", params, 20000, true, function(result){
  17. zTreeHelper.createTree(result, setting, "rptTplTree", me);
  18. me.refreshNodes();
  19. }, null, null
  20. );
  21. },
  22. refreshNodes: function() {
  23. let me = this;
  24. let private_setupIsParent = function(node){
  25. if (node.nodeType == RT.NodeType.NODE) {
  26. node.isParent = true;
  27. } else {
  28. node.isParent = false;
  29. }
  30. if (node.items && node.items.length) {
  31. for (let i = 0; i < node.items.length; i++) {
  32. private_setupIsParent(node.items[i]);
  33. }
  34. }
  35. };
  36. let topNodes = me.treeObj.getNodes();
  37. for (let i = 0; i < topNodes.length; i++) {
  38. private_setupIsParent(topNodes[i]);
  39. }
  40. me.treeObj.refresh();
  41. },
  42. addRootNode: function() {
  43. let me = this, rawNode = me.createIniRootNode(), lastNodeId = -1, lastNode = null;
  44. if (me.treeObj) {
  45. let rootNodes = me.treeObj.getNodes();
  46. if (rootNodes.length > 0) {
  47. lastNodeId = rootNodes[rootNodes.length - 1].ID;
  48. lastNode = rootNodes[rootNodes.length - 1];
  49. }
  50. me.addNewNode(rawNode, lastNodeId, function(rst){
  51. let newNodes = [], isSilent = false;
  52. if (lastNode) {
  53. lastNode.NextSiblingID = rst.ID;
  54. }
  55. rawNode.ID = rst.ID;
  56. rawNode.isParent = true;
  57. rawNode.items = [];
  58. newNodes.push(rawNode);
  59. if (me.treeObj) {
  60. me.treeObj.addNodes(null, -1, newNodes, isSilent);
  61. } else {
  62. me.treeObj = $.fn.zTree.init($("#rptTplTree"), setting, newNodes);
  63. }
  64. }, null);
  65. }
  66. },
  67. updateNodes: function(nodes){
  68. if (nodes && nodes.length > 0) {
  69. let me = this;
  70. for (let i = 0; i < nodes.length; i++) {
  71. if (nodes[i].__v != null) node.__v = nodes[i].__v + 1
  72. else nodes[i].__v = 0;
  73. }
  74. let params = {};
  75. params.nodes = nodes;
  76. CommonAjax.postEx("report_tpl_api/updateTptTplNodes", params, 5000, true, null, null, null);
  77. }
  78. },
  79. addTplNode: function (){
  80. let me = this;
  81. if (me.currentNode) {
  82. let rawNode = me.createIniRootNode(), lastNodeId = -1, lastNode = null;
  83. rawNode.nodeType = RT.NodeType.TEMPLATE;
  84. rawNode.ParentID = me.currentNode.ID;
  85. rawNode.name = "新增报表模板";
  86. if (me.treeObj) {
  87. let nodes = me.currentNode.items;
  88. if (nodes.length > 0) {
  89. lastNodeId = nodes[nodes.length - 1].ID;
  90. lastNode = nodes[nodes.length - 1];
  91. }
  92. me.addNewNode(rawNode, lastNodeId, function(rst){
  93. let newNodes = [], isSilent = false;
  94. if (lastNode) {
  95. lastNode.NextSiblingID = rst.ID;
  96. }
  97. rawNode.ID = rst.ID;
  98. rawNode.isParent = false;
  99. rawNode.items = [];
  100. newNodes.push(rawNode);
  101. if (me.treeObj) {
  102. me.treeObj.addNodes(me.currentNode, -1, newNodes, isSilent);
  103. } else {
  104. me.treeObj = $.fn.zTree.init($("#rptTplTree"), setting, newNodes);
  105. }
  106. }, null);
  107. }
  108. }
  109. },
  110. addNewNode: function(rawNode, lastNodeId, callback, failcallback) {
  111. let params = {};
  112. params.lastNodeId = lastNodeId;
  113. params.rawNodeData = rawNode;
  114. CommonAjax.postEx("report_tpl_api/createTplTreeNode", params, 5000, true, callback, failcallback, null);
  115. },
  116. createIniRootNode: function() {
  117. let rst = {
  118. ID: -1,
  119. ParentID: -1,
  120. NextSiblingID: -1,
  121. grpType: RT.GrpType.CONSTRUCT,
  122. nodeType: RT.NodeType.NODE,
  123. tplType: RT.TplType.ALL,
  124. userId: userID,
  125. refId: -1,
  126. name: '新增节点'
  127. };
  128. return rst;
  129. },
  130. createNodeFromZTreeNode: function(treeNode) {
  131. let rst = {};
  132. rst.ID = treeNode.ID;
  133. rst.ParentID = treeNode.ParentID;
  134. rst.NextSiblingID = treeNode.NextSiblingID;
  135. rst.grpType = treeNode.grpType;
  136. rst.nodeType = treeNode.nodeType;
  137. rst.tplType = treeNode.tplType;
  138. rst.userId = treeNode.userId;
  139. rst.refId = treeNode.refId;
  140. rst.name = treeNode.name;
  141. return rst;
  142. },
  143. addHoverDom: function(treeId, treeNode) {
  144. let me = zTreeOprObj, sObj = $("#" + treeNode.tId + "_span");
  145. if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length > 0 || treeNode.nodeType == RT.NodeType.TEMPLATE) return;
  146. let addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='新增子节点' onfocus='this.blur();'></span>";
  147. sObj.after(addStr);
  148. let btn = $("#addBtn_"+treeNode.tId);
  149. if (btn) btn.bind("click", function(){
  150. let rawNode = me.createIniRootNode(), lastNodeId = -1, insertIdx = -1, lastNode = null;
  151. rawNode.ParentID = treeNode.ID;
  152. rawNode.name = "新增子节点";
  153. if (treeNode.items.length > 0) {
  154. for (let i = treeNode.items.length - 1; i >= 0; i--) {
  155. if (treeNode.items[i].nodeType == RT.NodeType.NODE) {
  156. lastNodeId = treeNode.items[i].ID;
  157. lastNode = treeNode.items[i];
  158. rawNode.NextSiblingID = treeNode.items[i].NextSiblingID;
  159. insertIdx = i + 1;
  160. break;
  161. } else {
  162. rawNode.NextSiblingID = treeNode.items[i].ID;
  163. insertIdx = i;
  164. }
  165. }
  166. }
  167. zTreeOprObj.addNewNode(rawNode, lastNodeId, function(rst){
  168. let newNodes = [], isSilent = false;
  169. if (lastNode) {
  170. lastNode.NextSiblingID = rst.ID;
  171. }
  172. rawNode.ID = rst.ID;
  173. rawNode.NextSiblingID = rst.NextSiblingID;
  174. rawNode.isParent = true;
  175. rawNode.items = [];
  176. newNodes.push(rawNode);
  177. treeNode.isParent = true;
  178. if (me.treeObj) {
  179. me.treeObj.addNodes(treeNode, insertIdx, newNodes, isSilent);
  180. } else {
  181. me.treeObj = $.fn.zTree.init($("#rptTplTree"), setting, newNodes);
  182. }
  183. }, null);
  184. });
  185. },
  186. removeHoverDom: function(treeId, treeNode) {
  187. $("#addBtn_"+treeNode.tId).unbind().remove();
  188. },
  189. onBeforeRemove: function(treeId, treeNode){
  190. let nodeIds = [], preNode = treeNode.getPreNode(), preNodeId = -1, canRemove = false, params = {};
  191. if (preNode) {
  192. preNodeId = preNode.ID;
  193. }
  194. let private_fetchAllSubItems = function(pItem){
  195. nodeIds.push(pItem.ID);
  196. if (pItem.items && pItem.items.length > 0) {
  197. for (let i = 0; i < pItem.items.length; i++) {
  198. private_fetchAllSubItems(pItem.items[i]);
  199. }
  200. }
  201. };
  202. nodeIds.push(treeNode.ID);
  203. for (let i = 0; i < treeNode.items.length; i++) {
  204. private_fetchAllSubItems(treeNode.items[i]);
  205. }
  206. params.nodeIds = nodeIds;
  207. params.preNodeId = preNodeId;
  208. params.preNodeNextId = treeNode.NextSiblingID;
  209. CommonAjax.postEx("report_tpl_api/deleteTptTplNodes", params, 5000, false, function(data){
  210. canRemove = true;
  211. }, null, null);
  212. return canRemove;
  213. },
  214. onRemove: function(e, treeId, treeNode){
  215. let me = zTreeOprObj, pNode = me.treeObj.getNodeByTId(treeNode.parentTId);
  216. if (pNode && pNode.items && pNode.items.length == 0) {
  217. if (pNode.nodeType == RT.NodeType.NODE) pNode.isParent = true
  218. else pNode.isParent = false;
  219. me.treeObj.refresh();
  220. }
  221. },
  222. beforeRename: function(treeId, treeNode, newName, isCancel) {
  223. if (newName.length == 0) {
  224. return false;
  225. }
  226. return true;
  227. },
  228. onRename : function(e, treeId, treeNode, isCancel) {
  229. let me = zTreeOprObj, nodes = [];
  230. nodes.push(me.createNodeFromZTreeNode(treeNode));
  231. me.updateNodes(nodes);
  232. },
  233. onClick: function(event,treeId,treeNode) {
  234. let me = zTreeOprObj;
  235. if (treeNode.nodeType == RT.NodeType.NODE) {
  236. me.currentNode = treeNode;
  237. } else if (treeNode.nodeType == RT.NodeType.TEMPLATE) {
  238. me.currentNode = null;
  239. }
  240. }
  241. }