rpt_main.js 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228
  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. me.displayPageValue();
  86. let size = JpcCanvasOutput.getReportSizeInPixel(me.currentRptPageRst, getScreenDPI());
  87. canvas.width = size[0] + 20;
  88. if (size[1] > size[0]) {
  89. canvas.height = size[1] + 100;
  90. } else {
  91. canvas.height = size[1] + 50;
  92. }
  93. me.showPage(1, canvas);
  94. }
  95. }, null, null
  96. );
  97. }
  98. },
  99. showPage: function (pageNum, canvas) {
  100. let me = zTreeOprObj;
  101. if (pageNum >= 1 && pageNum <= me.maxPages) {
  102. me.currentPage = pageNum;
  103. JpcCanvasOutput.cleanCanvas(canvas);
  104. JpcCanvasOutput.drawPageBorder(me.currentRptPageRst, canvas, getScreenDPI());
  105. JpcCanvasOutput.drawToCanvas(me.currentRptPageRst, canvas, me.currentPage);
  106. }
  107. me.displayPageValue();
  108. },
  109. displayPageValue: function() {
  110. let me = zTreeOprObj;
  111. $("#rpt_page_num").get(0).value = me.currentPage + "/" + me.maxPages;
  112. }
  113. };
  114. let canvasOprObj = {
  115. canvasOnMouseMove: function (event) {
  116. if (zTreeOprObj.currentNode) {
  117. let x = event.offsetX - JpcCanvasOutput.offsetX, canvas = event.originalTarget;
  118. if (x < FIRST_PAGE_OFFSET) {
  119. canvas.style.cursor = "url(/web/building_saas/img/FirstPageSimple.cur), auto";
  120. } else if (x < PRE_PAGE_OFFSET) {
  121. // canvas.style.cursor = "e-resize";
  122. canvas.style.cursor = "url(/web/building_saas/img/PreviousPageSimple.cur), auto";
  123. } else if ((canvas.width - x) < LAST_PAGE_OFFSET) {
  124. canvas.style.cursor = "url(/web/building_saas/img/LastPageSimple.cur), auto";
  125. } else if ((canvas.width - x) < NEXT_PAGE_OFFSET) {
  126. // canvas.style.cursor = "w-resize";
  127. canvas.style.cursor = "url(/web/building_saas/img/NextPageSimple.cur), auto";
  128. } else {
  129. canvas.style.cursor = "";
  130. }
  131. }
  132. },
  133. cavansOnClick: function(event){
  134. if (zTreeOprObj.currentNode) {
  135. let x = event.offsetX - JpcCanvasOutput.offsetX,
  136. //y = event.offsetY - JpcCanvasOutput.offsetY,
  137. canvas = event.originalTarget;
  138. if (x < FIRST_PAGE_OFFSET) {
  139. zTreeOprObj.showPage(1, canvas);
  140. } else if (x < PRE_PAGE_OFFSET) {
  141. zTreeOprObj.showPage(zTreeOprObj.currentPage - 1, canvas);
  142. } else if ((canvas.width - x) < LAST_PAGE_OFFSET) {
  143. zTreeOprObj.showPage(zTreeOprObj.maxPages, canvas);
  144. } else if ((canvas.width - x) < NEXT_PAGE_OFFSET) {
  145. zTreeOprObj.showPage(zTreeOprObj.currentPage + 1, canvas);
  146. }
  147. }
  148. }
  149. };
  150. let rptControlObj = {
  151. currentOutputType: "Excel",
  152. getCurrentPageSize: function() {
  153. let rst = "A4";
  154. //
  155. return rst;
  156. },
  157. getCurrentOrientation: function() {
  158. let rst = "横向";
  159. //
  160. return rst;
  161. },
  162. getCurrentReportOption: function() {
  163. //
  164. },
  165. changeType: function(newType) {
  166. let me = rptControlObj;
  167. let excelDom = document.getElementById("EXCEL_TYPE");
  168. let pdfDom = document.getElementById("PDF_TYPE");
  169. if (newType === "Excel") {
  170. excelDom.className = "btn btn-block btn-primary";
  171. pdfDom.className = "btn btn-block btn-outline-secondary";
  172. me.currentOutputType = newType;
  173. } else if (newType === "PDF") {
  174. excelDom.className = "btn btn-block btn-outline-secondary";
  175. pdfDom.className = "btn btn-block btn-primary";
  176. me.currentOutputType = newType;
  177. } else {
  178. //me.currentOutputType = newType;
  179. }
  180. },
  181. outputRpt: function() {
  182. let me = rptControlObj;
  183. if (me.currentOutputType === "Excel") {
  184. me.getExcel();
  185. } else if (me.currentOutputType === "PDF") {
  186. me.getPDF();
  187. } else {
  188. //other types if needed.
  189. }
  190. },
  191. getExcel: function() {
  192. let me = rptControlObj;
  193. //目前只支持当前打开报表
  194. //zTreeOprObj.currentRptPageRst
  195. if (zTreeOprObj.currentNode && zTreeOprObj.currentNode.refId) {
  196. let orgRptName = zTreeOprObj.currentNode.name;
  197. orgRptName = orgRptName.replace('【', '').replace('】','').replace('-','_').replace(' ','');
  198. let url = "/report_api/getExcel/" + projectInfoObj.projectInfo.ID + "/" + zTreeOprObj.currentNode.refId + "/" +
  199. me.getCurrentPageSize() + "/" + orgRptName + "/" + false + "/" + 'normal';
  200. window.location = url;//这里不能使用get方法跳转,否则下载不成功
  201. }
  202. },
  203. getPDF: function() {
  204. let me = rptControlObj;
  205. //目前只支持当前打开报表
  206. //zTreeOprObj.currentRptPageRst
  207. if (zTreeOprObj.currentNode && zTreeOprObj.currentNode.refId) {
  208. let orgRptName = zTreeOprObj.currentNode.name;
  209. orgRptName = orgRptName.replace('【', '').replace('】','').replace('-','_');
  210. let url = "/report_api/getPDF/" + projectInfoObj.projectInfo.ID + "/" + zTreeOprObj.currentNode.refId + "/" +
  211. me.getCurrentPageSize() + "/" + orgRptName;
  212. window.location = url;//这里不能使用get方法跳转,否则下载不成功
  213. }
  214. },
  215. prePage: function(dom) {
  216. let canvas = document.getElementById("rptCanvas");
  217. zTreeOprObj.showPage(zTreeOprObj.currentPage - 1, canvas);
  218. },
  219. nextPage: function(dom) {
  220. let canvas = document.getElementById("rptCanvas");
  221. zTreeOprObj.showPage(zTreeOprObj.currentPage + 1, canvas);
  222. }
  223. };