rpt_tpl_main.js 8.9 KB

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