rpt_tpl_main.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371
  1. 'use strict'
  2. let rptTplObj = {
  3. iniPage: function() {
  4. //zTreeOprObj.getReportTemplateTree(RT.GrpType.CONSTRUCT);
  5. zTreeOprObj.getReportTemplateTree("598d239605cdd825682925d1", [1,2]);
  6. bandTreeOprObj.getReportTplCfg();
  7. selectableFiledTreeOprObj.iniTree();
  8. preview_util.drawBorder($("#tplCanvas")[0]);
  9. }
  10. }
  11. let zTreeOprObj = {
  12. treeObj: null,
  13. currentNode: null,
  14. getCompilationList: function(){
  15. //
  16. },
  17. // getReportTemplateTree: function(grpType) {
  18. // let me = zTreeOprObj, params = {};
  19. // params.grpType = grpType;
  20. // params.userId = (userAccount === 'admin')?('-100'):userID;
  21. // params.tplType = RT.TplType.ALL;
  22. // CommonAjax.postEx("report_tpl_api/getRptTplTree", params, 20000, true, function(result){
  23. // zTreeHelper.createTree(result, setting, "rptTplTree", me);
  24. // me.refreshNodes();
  25. // }, null, null
  26. // );
  27. // },
  28. getReportTemplateTree: function(compilationId, engineerId) {
  29. let me = zTreeOprObj, params = {};
  30. params.compilationId = compilationId;
  31. params.userId = (userAccount === 'admin')?(parseInt(-100)):parseInt(userID);
  32. params.engineerId = engineerId;
  33. CommonAjax.postEx("report_tpl_api/getRptTplTree", params, 20000, true, function(result){
  34. zTreeHelper.createTreeDirectly(result, setting, "rptTplTree", me);
  35. me.refreshNodes();
  36. }, null, null
  37. );
  38. },
  39. refreshNodes: function() {
  40. let me = this;
  41. let private_setupIsParent = function(node){
  42. if (node.nodeType == RT.NodeType.NODE) {
  43. node.isParent = true;
  44. } else {
  45. node.isParent = false;
  46. }
  47. if (node.items && node.items.length) {
  48. for (let i = 0; i < node.items.length; i++) {
  49. private_setupIsParent(node.items[i]);
  50. }
  51. }
  52. };
  53. let topNodes = me.treeObj.getNodes();
  54. for (let i = 0; i < topNodes.length; i++) {
  55. private_setupIsParent(topNodes[i]);
  56. }
  57. me.treeObj.refresh();
  58. },
  59. moveUpNode: function() {
  60. let me = this, nodes = [];
  61. if (me.currentNode && me.currentNode.getPreNode()) {
  62. let preNode = me.currentNode.getPreNode(), pre_preNode = preNode.getPreNode();
  63. me.treeObj.moveNode(preNode, me.currentNode, "prev", true);
  64. //then update the db
  65. if (pre_preNode) {
  66. pre_preNode.NextSiblingID = me.currentNode.ID;
  67. nodes.push(me.createNodeFromZTreeNode(pre_preNode));
  68. }
  69. preNode.NextSiblingID = me.currentNode.NextSiblingID;
  70. me.currentNode.NextSiblingID = preNode.ID;
  71. nodes.push(me.createNodeFromZTreeNode(me.currentNode));
  72. nodes.push(me.createNodeFromZTreeNode(preNode));
  73. me.updateNodes(nodes);
  74. }
  75. },
  76. moveDownNode: function() {
  77. let me = this, nodes = [];
  78. if (me.currentNode && me.currentNode.getNextNode()) {
  79. let preNode = me.currentNode.getPreNode(), nextNode = me.currentNode.getNextNode();
  80. me.treeObj.moveNode(nextNode, me.currentNode, "next", true);
  81. //then update the db
  82. if (preNode) {
  83. preNode.NextSiblingID = nextNode.ID;
  84. nodes.push(me.createNodeFromZTreeNode(preNode));
  85. }
  86. me.currentNode.NextSiblingID = nextNode.NextSiblingID;
  87. nextNode.NextSiblingID = me.currentNode.ID;
  88. nodes.push(me.createNodeFromZTreeNode(me.currentNode));
  89. nodes.push(me.createNodeFromZTreeNode(nextNode));
  90. me.updateNodes(nodes);
  91. }
  92. },
  93. addRootNode: function() {
  94. let me = this, rawNode = me.createIniRootNode(), lastNodeId = -1, lastNode = null;
  95. if (me.treeObj) {
  96. let rootNodes = me.treeObj.getNodes();
  97. if (rootNodes.length > 0) {
  98. lastNodeId = rootNodes[rootNodes.length - 1].ID;
  99. lastNode = rootNodes[rootNodes.length - 1];
  100. }
  101. me.addNewNode(rawNode, lastNodeId, function(rst){
  102. let newNodes = [], isSilent = false;
  103. if (lastNode) {
  104. lastNode.NextSiblingID = rst.ID;
  105. }
  106. rawNode.ID = rst.ID;
  107. rawNode.isParent = true;
  108. rawNode.items = [];
  109. newNodes.push(rawNode);
  110. if (me.treeObj) {
  111. me.treeObj.addNodes(null, -1, newNodes, isSilent);
  112. } else {
  113. me.treeObj = $.fn.zTree.init($("#rptTplTree"), setting, newNodes);
  114. }
  115. }, null);
  116. }
  117. },
  118. updateNodes: function(nodes){
  119. if (nodes && nodes.length > 0) {
  120. let me = this;
  121. for (let i = 0; i < nodes.length; i++) {
  122. if (nodes[i].__v != null) node.__v = nodes[i].__v + 1
  123. else nodes[i].__v = 0;
  124. }
  125. let params = {};
  126. params.nodes = nodes;
  127. CommonAjax.postEx("report_tpl_api/updateRptTplNodes", params, 5000, true, null, null, null);
  128. }
  129. },
  130. addTplNode: function (){
  131. let me = this;
  132. if (me.currentNode && me.currentNode.nodeType === RT.NodeType.NODE) {
  133. let rawNode = me.createIniRootNode(), lastNodeId = -1, lastNode = null;
  134. rawNode.nodeType = RT.NodeType.TEMPLATE;
  135. rawNode.ParentID = me.currentNode.ID;
  136. rawNode.name = "新增报表模板";
  137. if (me.treeObj) {
  138. let nodes = me.currentNode.items;
  139. if (nodes.length > 0) {
  140. lastNodeId = nodes[nodes.length - 1].ID;
  141. lastNode = nodes[nodes.length - 1];
  142. }
  143. me.addNewNode(rawNode, lastNodeId, function(rst){
  144. let newNodes = [], isSilent = false;
  145. if (lastNode) {
  146. lastNode.NextSiblingID = rst.ID;
  147. }
  148. rawNode.ID = rst.ID;
  149. rawNode.isParent = false;
  150. rawNode.items = [];
  151. newNodes.push(rawNode);
  152. if (me.treeObj) {
  153. me.treeObj.addNodes(me.currentNode, -1, newNodes, isSilent);
  154. } else {
  155. me.treeObj = $.fn.zTree.init($("#rptTplTree"), setting, newNodes);
  156. }
  157. }, null);
  158. }
  159. }
  160. },
  161. addNewNode: function(rawNode, lastNodeId, callback, failCallback) {
  162. let params = {};
  163. params.lastNodeId = lastNodeId;
  164. params.rawNodeData = rawNode;
  165. CommonAjax.postEx("report_tpl_api/createTplTreeNode", params, 5000, true, callback, failCallback, null);
  166. },
  167. createIniRootNode: function() {
  168. let rst = {
  169. ID: -1,
  170. ParentID: -1,
  171. NextSiblingID: -1,
  172. grpType: RT.GrpType.CONSTRUCT,
  173. nodeType: RT.NodeType.NODE,
  174. tplType: RT.TplType.ALL,
  175. userId: (userAccount === 'admin')?('-100'):userID,
  176. refId: -1,
  177. name: '新增节点'
  178. };
  179. return rst;
  180. },
  181. createNodeFromZTreeNode: function(treeNode) {
  182. let rst = {};
  183. rst.ID = treeNode.ID;
  184. rst.ParentID = treeNode.ParentID;
  185. rst.NextSiblingID = treeNode.NextSiblingID;
  186. rst.grpType = treeNode.grpType;
  187. rst.nodeType = treeNode.nodeType;
  188. rst.tplType = treeNode.tplType;
  189. rst.userId = treeNode.userId;
  190. rst.refId = treeNode.refId;
  191. rst.name = treeNode.name;
  192. return rst;
  193. },
  194. addHoverDom: function(treeId, treeNode) {
  195. let me = zTreeOprObj, sObj = $("#" + treeNode.tId + "_span");
  196. if (treeNode.editNameFlag || $("#addBtn_"+treeNode.tId).length > 0 || treeNode.nodeType == RT.NodeType.TEMPLATE) return;
  197. let addStr = "<span class='button add' id='addBtn_" + treeNode.tId + "' title='新增子节点' onfocus='this.blur();'></span>";
  198. sObj.after(addStr);
  199. let btn = $("#addBtn_"+treeNode.tId);
  200. if (btn) btn.bind("click", function(){
  201. let rawNode = me.createIniRootNode(), lastNodeId = -1, insertIdx = -1, lastNode = null;
  202. rawNode.ParentID = treeNode.ID;
  203. rawNode.name = "新增子节点";
  204. if (treeNode.items.length > 0) {
  205. for (let i = treeNode.items.length - 1; i >= 0; i--) {
  206. if (treeNode.items[i].nodeType == RT.NodeType.NODE) {
  207. lastNodeId = treeNode.items[i].ID;
  208. lastNode = treeNode.items[i];
  209. rawNode.NextSiblingID = treeNode.items[i].NextSiblingID;
  210. insertIdx = i + 1;
  211. break;
  212. } else {
  213. rawNode.NextSiblingID = treeNode.items[i].ID;
  214. insertIdx = i;
  215. }
  216. }
  217. }
  218. zTreeOprObj.addNewNode(rawNode, lastNodeId, function(rst){
  219. let newNodes = [], isSilent = false;
  220. if (lastNode) {
  221. lastNode.NextSiblingID = rst.ID;
  222. }
  223. rawNode.ID = rst.ID;
  224. rawNode.NextSiblingID = rst.NextSiblingID;
  225. rawNode.isParent = true;
  226. rawNode.items = [];
  227. newNodes.push(rawNode);
  228. treeNode.isParent = true;
  229. if (me.treeObj) {
  230. me.treeObj.addNodes(treeNode, insertIdx, newNodes, isSilent);
  231. } else {
  232. me.treeObj = $.fn.zTree.init($("#rptTplTree"), setting, newNodes);
  233. }
  234. }, null);
  235. });
  236. },
  237. removeHoverDom: function(treeId, treeNode) {
  238. $("#addBtn_"+treeNode.tId).unbind().remove();
  239. },
  240. onBeforeRemove: function(treeId, treeNode){
  241. let nodeIds = [], preNode = treeNode.getPreNode(), preNodeId = -1, canRemove = false, params = {};
  242. if (preNode) {
  243. preNodeId = preNode.ID;
  244. }
  245. let private_fetchAllSubItems = function(pItem){
  246. nodeIds.push(pItem.ID);
  247. if (pItem.items && pItem.items.length > 0) {
  248. for (let i = 0; i < pItem.items.length; i++) {
  249. private_fetchAllSubItems(pItem.items[i]);
  250. }
  251. }
  252. };
  253. nodeIds.push(treeNode.ID);
  254. for (let i = 0; i < treeNode.items.length; i++) {
  255. private_fetchAllSubItems(treeNode.items[i]);
  256. }
  257. params.nodeIds = nodeIds;
  258. params.preNodeId = preNodeId;
  259. params.preNodeNextId = treeNode.NextSiblingID;
  260. CommonAjax.postEx("report_tpl_api/deleteRptTplNodes", params, 5000, false, function(data){
  261. canRemove = true;
  262. }, null, null);
  263. return canRemove;
  264. },
  265. onRemove: function(e, treeId, treeNode){
  266. let me = zTreeOprObj, pNode = me.treeObj.getNodeByTId(treeNode.parentTId);
  267. if (pNode && pNode.items && pNode.items.length == 0) {
  268. if (pNode.nodeType == RT.NodeType.NODE) pNode.isParent = true
  269. else pNode.isParent = false;
  270. me.treeObj.refresh();
  271. }
  272. },
  273. beforeRename: function(treeId, treeNode, newName, isCancel) {
  274. if (newName.length == 0) {
  275. return false;
  276. }
  277. return true;
  278. },
  279. onRename : function(e, treeId, treeNode, isCancel) {
  280. let me = zTreeOprObj, nodes = [];
  281. nodes.push(me.createNodeFromZTreeNode(treeNode));
  282. me.updateNodes(nodes);
  283. if (treeNode.nodeType == RT.NodeType.TEMPLATE && treeNode.refId >= 0) {
  284. if (treeNode.rptTpl != null) {
  285. treeNode.rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MAIN_INFO_RPT_NAME] = treeNode.name;
  286. $("#rptTplName")[0].value = treeNode.rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MAIN_INFO_RPT_NAME];
  287. } else {
  288. me.onClick(e, treeId, treeNode);
  289. }
  290. }
  291. },
  292. onClick: function(event,treeId,treeNode) {
  293. let me = zTreeOprObj;
  294. me.currentNode = treeNode;
  295. bandTreeOprObj.currentNode = null;
  296. if (treeNode.nodeType == RT.NodeType.NODE) {
  297. $("#rpt_tpl_display_label")[0].innerText = "...";
  298. } else if (treeNode.nodeType == RT.NodeType.TEMPLATE) {
  299. let showText = treeNode.name, parentNode = treeNode.getParentNode();
  300. while (parentNode !== null) {
  301. showText = parentNode.name + ' > ' + showText;
  302. parentNode = parentNode.getParentNode();
  303. }
  304. $("#rpt_tpl_display_label")[0].innerText = showText;
  305. if (treeNode.refId < 0) {
  306. //创建新报表模板
  307. $('#rptTypeSelectionModal').modal('show');
  308. } else {
  309. //显示报表模板
  310. me.chkAndRreshRefTpl();
  311. }
  312. }
  313. },
  314. createNewTpl: function () {
  315. let me = zTreeOprObj, params = {};
  316. if (me.currentNode && me.currentNode.nodeType == RT.NodeType.TEMPLATE) {
  317. params.treeNodeId = me.currentNode.ID;
  318. let rptTypeId = common_rpt_type_ids.flow;
  319. if ($("#crossTypeOpt")[0].checked) rptTypeId = common_rpt_type_ids.cross;
  320. if ($("#billTypeOpt")[0].checked) rptTypeId = common_rpt_type_ids.bill;
  321. params.rptDftTplId = rptTypeId
  322. CommonAjax.postEx("report_tpl_api/createDftRptTpl", params, 20000, true, function(result){
  323. me.currentNode.rptTpl = result;
  324. }, null, null
  325. );
  326. }
  327. },
  328. chkAndRreshRefTpl: function() {
  329. let me = zTreeOprObj, params = {};
  330. if (me.currentNode && me.currentNode.nodeType == RT.NodeType.TEMPLATE && me.currentNode.refId > 0) {
  331. if (!(me.currentNode.rptTpl)) {
  332. params.rptTplId = me.currentNode.refId;
  333. CommonAjax.postEx("report_tpl_api/getRefRptTpl", params, 20000, true, function(result){
  334. me.currentNode.rptTpl = result;
  335. me.currentNode.rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MAIN_INFO_RPT_NAME] = me.currentNode.name;
  336. tplHelper.refreshTplView(me.currentNode.rptTpl);
  337. }, null, null
  338. );
  339. } else {
  340. me.currentNode.rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MAIN_INFO_RPT_NAME] = me.currentNode.name;
  341. tplHelper.refreshTplView(me.currentNode.rptTpl);
  342. }
  343. }
  344. },
  345. getRefTpl: function() {
  346. let me = zTreeOprObj, rst = null;
  347. if (me.currentNode && me.currentNode.nodeType == RT.NodeType.TEMPLATE && me.currentNode.refId > 0) {
  348. rst = me.currentNode.rptTpl
  349. }
  350. return rst;
  351. },
  352. extractMainInfo: function (rptTpl) {
  353. //模板信息
  354. rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MAIN_INFO_RPT_NAME] = $("#rptTplName")[0].value;
  355. rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_PAGE_SIZE] = JV.PAGES_SIZE_STR[$("#rptTplPageSize")[0].selectedIndex];
  356. if ($("#rptTplPageOrientation")[0].selectedIndex == 1) {
  357. rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_ORIENTATION] = JV.ORIENTATION_PORTRAIT;
  358. } else {
  359. rptTpl[JV.NODE_MAIN_INFO][JV.NODE_PAGE_INFO][JV.PROP_ORIENTATION] = JV.ORIENTATION_LANDSCAPE;
  360. }
  361. if (rptTpl[JV.NODE_FLOW_INFO]) {
  362. rptTpl[JV.NODE_FLOW_INFO][JV.PROP_MULTI_COLUMN] = parseInt($("#rptTplMultiCols")[0].value);
  363. }
  364. rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_LEFT] = $("#rptTplMarginLeft")[0].value;
  365. rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_RIGHT] = $("#rptTplMarginRight")[0].value;
  366. rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_TOP] = $("#rptTplMarginTop")[0].value;
  367. rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MARGINS][JV.PROP_BOTTOM] = $("#rptTplMarginBottom")[0].value;
  368. }
  369. };