rpt_main.js 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  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(1, canvas);
  89. }
  90. }, null, null
  91. );
  92. }
  93. },
  94. showPage: function (pageNum, canvas) {
  95. let me = zTreeOprObj;
  96. if (pageNum >= 1 && pageNum <= me.maxPages) {
  97. me.currentPage = pageNum;
  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, canvas = event.originalTarget;
  107. if (x < 80) {
  108. canvas.style.cursor = "url(/web/building_saas/img/FirstPageSimple.cur), auto";
  109. } else 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) < 80) {
  113. canvas.style.cursor = "url(/web/building_saas/img/LastPageSimple.cur), auto";
  114. } else if ((canvas.width - x) < 200) {
  115. // canvas.style.cursor = "w-resize";
  116. canvas.style.cursor = "url(/web/building_saas/img/NextPageSimple.cur), auto";
  117. } else {
  118. canvas.style.cursor = "";
  119. }
  120. },
  121. cavansOnClick: function(event){
  122. let x = event.offsetX - JpcCanvasOutput.offsetX,
  123. //y = event.offsetY - JpcCanvasOutput.offsetY,
  124. canvas = event.originalTarget;
  125. if (x < 80) {
  126. zTreeOprObj.showPage(1, canvas);
  127. } else if (x < 200) {
  128. zTreeOprObj.showPage(zTreeOprObj.currentPage - 1, canvas);
  129. } else if ((canvas.width - x) < 80) {
  130. zTreeOprObj.showPage(zTreeOprObj.maxPages, canvas);
  131. } else if ((canvas.width - x) < 200) {
  132. zTreeOprObj.showPage(zTreeOprObj.currentPage + 1, canvas);
  133. }
  134. }
  135. };
  136. let rptHeaderObj = {
  137. getCurrentPageSize: function() {
  138. let rst = "A4";
  139. //
  140. return rst;
  141. },
  142. getCurrentOrientation: function() {
  143. let rst = "横向";
  144. //
  145. return rst;
  146. },
  147. getCurrentReportOption: function() {
  148. //
  149. },
  150. getExcel: function() {
  151. let me = rptHeaderObj;
  152. //目前只支持当前打开报表
  153. //zTreeOprObj.currentRptPageRst
  154. if (zTreeOprObj.currentNode && zTreeOprObj.currentNode.refId) {
  155. let orgRptName = zTreeOprObj.currentNode.name;
  156. orgRptName = orgRptName.replace('【', '').replace('】','').replace('-','_');
  157. let url = "/report_api/getExcel/" + projectInfoObj.projectInfo.ID + "/" + zTreeOprObj.currentNode.refId + "/" +
  158. me.getCurrentPageSize() + "/" + orgRptName + "/" + false + "/" + 'normal';
  159. window.location = url;//这里不能使用get方法跳转,否则下载不成功
  160. }
  161. }
  162. };