rpt_main.js 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  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 (!(canvas)) canvas = event.target; //chrome浏览器不认event.originalTarget,只认event.target或event.currentTarget
  119. if (x < FIRST_PAGE_OFFSET) {
  120. canvas.style.cursor = "url(/web/building_saas/img/FirstPageSimple.cur), auto";
  121. } else if (x < PRE_PAGE_OFFSET) {
  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 = "url(/web/building_saas/img/NextPageSimple.cur), auto";
  127. } else {
  128. canvas.style.cursor = "";
  129. }
  130. }
  131. },
  132. cavansOnClick: function(event){
  133. if (zTreeOprObj.currentNode) {
  134. let x = event.offsetX - JpcCanvasOutput.offsetX, canvas = event.originalTarget;
  135. if (!(canvas)) canvas = event.target; //chrome浏览器不认event.originalTarget,只认event.target或event.currentTarget
  136. if (x < FIRST_PAGE_OFFSET) {
  137. zTreeOprObj.showPage(1, canvas);
  138. } else if (x < PRE_PAGE_OFFSET) {
  139. zTreeOprObj.showPage(zTreeOprObj.currentPage - 1, canvas);
  140. } else if ((canvas.width - x) < LAST_PAGE_OFFSET) {
  141. zTreeOprObj.showPage(zTreeOprObj.maxPages, canvas);
  142. } else if ((canvas.width - x) < NEXT_PAGE_OFFSET) {
  143. zTreeOprObj.showPage(zTreeOprObj.currentPage + 1, canvas);
  144. }
  145. }
  146. }
  147. };
  148. let rptControlObj = {
  149. currentOutputType: "Excel",
  150. getCurrentPageSize: function() {
  151. let rst = "A4";
  152. //
  153. return rst;
  154. },
  155. getCurrentOrientation: function() {
  156. let rst = "横向";
  157. //
  158. return rst;
  159. },
  160. getCurrentReportOption: function() {
  161. //
  162. },
  163. changeType: function(newType) {
  164. let me = rptControlObj;
  165. let excelDom = document.getElementById("EXCEL_TYPE");
  166. let pdfDom = document.getElementById("PDF_TYPE");
  167. if (newType === "Excel") {
  168. excelDom.className = "btn btn-block btn-primary";
  169. pdfDom.className = "btn btn-block btn-outline-secondary";
  170. me.currentOutputType = newType;
  171. } else if (newType === "PDF") {
  172. excelDom.className = "btn btn-block btn-outline-secondary";
  173. pdfDom.className = "btn btn-block btn-primary";
  174. me.currentOutputType = newType;
  175. } else {
  176. //me.currentOutputType = newType;
  177. }
  178. },
  179. outputRpt: function() {
  180. let me = rptControlObj;
  181. if (me.currentOutputType === "Excel") {
  182. me.getExcel();
  183. } else if (me.currentOutputType === "PDF") {
  184. me.getPDF();
  185. } else {
  186. //other types if needed.
  187. }
  188. },
  189. getExcel: function() {
  190. let me = rptControlObj;
  191. //目前只支持当前打开报表
  192. //zTreeOprObj.currentRptPageRst
  193. if (zTreeOprObj.currentNode && zTreeOprObj.currentNode.refId) {
  194. let orgRptName = zTreeOprObj.currentNode.name;
  195. orgRptName = orgRptName.replace('【', '').replace('】','').replace('-','_').replace(' ','');
  196. let url = "/report_api/getExcel/" + projectInfoObj.projectInfo.ID + "/" + zTreeOprObj.currentNode.refId + "/" +
  197. me.getCurrentPageSize() + "/" + orgRptName + "/" + false + "/" + 'normal';
  198. window.location = url;//这里不能使用get方法跳转,否则下载不成功
  199. }
  200. },
  201. getPDF: function() {
  202. let me = rptControlObj;
  203. //目前只支持当前打开报表
  204. //zTreeOprObj.currentRptPageRst
  205. if (zTreeOprObj.currentNode && zTreeOprObj.currentNode.refId) {
  206. let orgRptName = zTreeOprObj.currentNode.name;
  207. orgRptName = orgRptName.replace('【', '').replace('】','').replace('-','_');
  208. let url = "/report_api/getPDF/" + projectInfoObj.projectInfo.ID + "/" + zTreeOprObj.currentNode.refId + "/" +
  209. me.getCurrentPageSize() + "/" + orgRptName;
  210. window.location = url;//这里不能使用get方法跳转,否则下载不成功
  211. }
  212. },
  213. prePage: function(dom) {
  214. let canvas = document.getElementById("rptCanvas");
  215. zTreeOprObj.showPage(zTreeOprObj.currentPage - 1, canvas);
  216. },
  217. nextPage: function(dom) {
  218. let canvas = document.getElementById("rptCanvas");
  219. zTreeOprObj.showPage(zTreeOprObj.currentPage + 1, canvas);
  220. }
  221. };