rpt_main.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  1. /**
  2. * Created by Tony on 2017/6/26.
  3. */
  4. 'use strict'
  5. let rptTplObj = {
  6. hasInitialized: false,
  7. iniPage: function() {
  8. let me = this;
  9. if (!me.hasInitialized) {
  10. zTreeOprObj.getReportTemplateTree(userID);
  11. me.hasInitialized = true;
  12. let canvas = document.getElementById("rptCanvas");
  13. canvas.onclick = canvasOprObj.cavansOnClick;
  14. canvas.onmousemove = canvasOprObj.canvasOnMouseMove;
  15. }
  16. }
  17. }
  18. let zTreeOprObj = {
  19. treeObj: null,
  20. currentNode: null,
  21. currentRptPageRst: null,
  22. currentPage: 1,
  23. maxPages: 0,
  24. getReportTemplateTree: function(userId) {
  25. let me = zTreeOprObj, params = {};
  26. params.userId = [];
  27. params.userId.push(userId);
  28. params.userId.push(-100);
  29. // let allEngIds = [];
  30. // for (let item of engineeringList) {
  31. // allEngIds.push(item.value);
  32. // }
  33. // params.engineerId = allEngIds;
  34. params.engineerId = projectInfoObj.projectInfo.property.engineering;
  35. CommonAjax.postEx("report_tpl_api/getRptTplTree", params, 20000, true, function(result){
  36. zTreeHelper.createTreeDirectly(result, rpt_tpl_setting, "rptTplTree", me);
  37. me.refreshNodes();
  38. }, null, null
  39. );
  40. },
  41. refreshNodes: function() {
  42. let me = this;
  43. let private_setupIsParent = function(node){
  44. node.isParent = (node.nodeType === RT.NodeType.NODE || node.level === 0);
  45. if (node.items && node.items.length) {
  46. for (let i = 0; i < node.items.length; i++) {
  47. private_setupIsParent(node.items[i]);
  48. }
  49. }
  50. };
  51. let topNodes = me.treeObj.getNodes();
  52. for (let i = 0; i < topNodes.length; i++) {
  53. private_setupIsParent(topNodes[i]);
  54. }
  55. me.treeObj.refresh();
  56. },
  57. onCheck: function() {
  58. //count();
  59. //if (clearFlag) {
  60. // clearCheckedOldNodes();
  61. //}
  62. },
  63. onClick: function(event,treeId,treeNode) {
  64. let me = zTreeOprObj;
  65. let canvas = document.getElementById("rptCanvas");
  66. if (treeNode.nodeType === TPL_TYPE_TEMPLATE && treeNode.refId > 0) {
  67. let params = {};
  68. let pageSize = rptHeaderObj.getCurrentPageSize();
  69. params.user_id = userID;
  70. params.pageSize = pageSize;
  71. params.rpt_tpl_id = treeNode.refId;
  72. params.prj_id = projectInfoObj.projectInfo.ID;
  73. me.currentNode = treeNode;
  74. CommonAjax.postEx("report_api/getReport", params, 5000, true,
  75. function(result){
  76. let pageRst = result;
  77. if (pageRst) {
  78. me.currentRptPageRst = pageRst;
  79. me.maxPages = pageRst.items.length;
  80. me.currentPage = 1;
  81. let size = JpcCanvasOutput.getReportSizeInPixel(me.currentRptPageRst, getScreenDPI());
  82. canvas.width = size[0] + 20;
  83. if (size[1] > size[0]) {
  84. canvas.height = size[1] + 100;
  85. } else {
  86. canvas.height = size[1] + 50;
  87. }
  88. me.showPage(0, canvas);
  89. }
  90. }, null, null
  91. );
  92. }
  93. },
  94. showPage: function (pageStep, canvas) {
  95. let me = zTreeOprObj;
  96. if (me.currentPage + pageStep >= 1 && me.currentPage + pageStep <= me.maxPages) {
  97. me.currentPage = me.currentPage + pageStep;
  98. JpcCanvasOutput.cleanCanvas(canvas);
  99. JpcCanvasOutput.drawPageBorder(me.currentRptPageRst, canvas, getScreenDPI());
  100. JpcCanvasOutput.drawToCanvas(me.currentRptPageRst, canvas, me.currentPage);
  101. }
  102. }
  103. };
  104. let canvasOprObj = {
  105. canvasOnMouseMove: function (event) {
  106. let x = event.offsetX - JpcCanvasOutput.offsetX,
  107. canvas = event.originalTarget
  108. ;
  109. if (x < 200) {
  110. // canvas.style.cursor = "e-resize";
  111. canvas.style.cursor = "url(/web/building_saas/img/PreviousPageSimple.cur), auto";
  112. } else if ((canvas.width - x) < 200) {
  113. // canvas.style.cursor = "w-resize";
  114. canvas.style.cursor = "url(/web/building_saas/img/NextPageSimple.cur), auto";
  115. } else {
  116. canvas.style.cursor = "";
  117. }
  118. },
  119. cavansOnClick: function(event){
  120. let x = event.offsetX - JpcCanvasOutput.offsetX,
  121. //y = event.offsetY - JpcCanvasOutput.offsetY,
  122. canvas = event.originalTarget;
  123. if (x < 300) {
  124. zTreeOprObj.showPage(-1, canvas);
  125. } else if ((canvas.width - x) < 300) {
  126. zTreeOprObj.showPage(1, canvas);
  127. }
  128. }
  129. };
  130. let rptHeaderObj = {
  131. getCurrentPageSize: function() {
  132. let rst = "A4";
  133. //
  134. return rst;
  135. },
  136. getCurrentOrientation: function() {
  137. let rst = "横向";
  138. //
  139. return rst;
  140. },
  141. getCurrentReportOption: function() {
  142. //
  143. },
  144. getExcel: function() {
  145. let me = rptHeaderObj;
  146. //目前只支持当前打开报表
  147. //zTreeOprObj.currentRptPageRst
  148. if (zTreeOprObj.currentNode && zTreeOprObj.currentNode.refId) {
  149. let orgRptName = zTreeOprObj.currentNode.name;
  150. orgRptName = orgRptName.replace('【', '').replace('】','').replace('-','_');
  151. let url = "/report_api/getExcel/" + projectInfoObj.projectInfo.ID + "/" + zTreeOprObj.currentNode.refId + "/" +
  152. me.getCurrentPageSize() + "/" + orgRptName + "/" + false + "/" + 'normal';
  153. window.location = url;//这里不能使用get方法跳转,否则下载不成功
  154. }
  155. }
  156. };