rpt_main.js 8.2 KB

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