/** * Created by Tony on 2017/6/26. */ 'use strict' const PRE_PAGE_OFFSET = 150; const NEXT_PAGE_OFFSET = 160; const FIRST_PAGE_OFFSET = 50; const LAST_PAGE_OFFSET = 60; let rptTplObj = { hasInitialized: false, iniPage: function() { let me = this; if (!me.hasInitialized) { zTreeOprObj.getReportTemplateTree(userID); me.hasInitialized = true; let canvas = document.getElementById("rptCanvas"); canvas.onclick = canvasOprObj.cavansOnClick; canvas.onmousemove = canvasOprObj.canvasOnMouseMove; } } } let zTreeOprObj = { treeObj: null, currentNode: null, currentRptPageRst: null, currentPage: 1, maxPages: 0, getReportTemplateTree: function(userId) { let me = zTreeOprObj, params = {}; params.userId = []; params.userId.push(userId); params.userId.push(-100); // let allEngIds = []; // for (let item of engineeringList) { // allEngIds.push(item.value); // } // params.engineerId = allEngIds; params.engineerId = projectInfoObj.projectInfo.property.engineering; CommonAjax.postEx("report_tpl_api/getRptTplTree", params, 20000, true, function(result){ zTreeHelper.createTreeDirectly(result, rpt_tpl_setting, "rptTplTree", me); me.refreshNodes(); }, null, null ); }, refreshNodes: function() { let me = this; let private_setupIsParent = function(node){ node.isParent = (node.nodeType === RT.NodeType.NODE || node.level === 0); if (node.items && node.items.length) { for (let i = 0; i < node.items.length; i++) { private_setupIsParent(node.items[i]); } } }; let topNodes = me.treeObj.getNodes(); for (let i = 0; i < topNodes.length; i++) { private_setupIsParent(topNodes[i]); } me.treeObj.refresh(); }, onCheck: function() { //count(); //if (clearFlag) { // clearCheckedOldNodes(); //} }, onClick: function(event,treeId,treeNode) { let me = zTreeOprObj; let canvas = document.getElementById("rptCanvas"); if (treeNode.nodeType === TPL_TYPE_TEMPLATE && treeNode.refId > 0) { let params = {}; let pageSize = rptControlObj.getCurrentPageSize(); params.user_id = userID; params.pageSize = pageSize; params.rpt_tpl_id = treeNode.refId; params.prj_id = projectInfoObj.projectInfo.ID; me.currentNode = treeNode; CommonAjax.postEx("report_api/getReport", params, 5000, true, function(result){ let pageRst = result; if (pageRst) { me.currentRptPageRst = pageRst; me.maxPages = pageRst.items.length; me.currentPage = 1; let size = JpcCanvasOutput.getReportSizeInPixel(me.currentRptPageRst, getScreenDPI()); canvas.width = size[0] + 20; if (size[1] > size[0]) { canvas.height = size[1] + 100; } else { canvas.height = size[1] + 50; } me.showPage(1, canvas); } }, null, null ); } }, showPage: function (pageNum, canvas) { let me = zTreeOprObj; if (pageNum >= 1 && pageNum <= me.maxPages) { me.currentPage = pageNum; JpcCanvasOutput.cleanCanvas(canvas); JpcCanvasOutput.drawPageBorder(me.currentRptPageRst, canvas, getScreenDPI()); JpcCanvasOutput.drawToCanvas(me.currentRptPageRst, canvas, me.currentPage); } } }; let canvasOprObj = { canvasOnMouseMove: function (event) { if (zTreeOprObj.currentNode) { let x = event.offsetX - JpcCanvasOutput.offsetX, canvas = event.originalTarget; if (x < FIRST_PAGE_OFFSET) { canvas.style.cursor = "url(/web/building_saas/img/FirstPageSimple.cur), auto"; } else if (x < PRE_PAGE_OFFSET) { // canvas.style.cursor = "e-resize"; canvas.style.cursor = "url(/web/building_saas/img/PreviousPageSimple.cur), auto"; } else if ((canvas.width - x) < LAST_PAGE_OFFSET) { canvas.style.cursor = "url(/web/building_saas/img/LastPageSimple.cur), auto"; } else if ((canvas.width - x) < NEXT_PAGE_OFFSET) { // canvas.style.cursor = "w-resize"; canvas.style.cursor = "url(/web/building_saas/img/NextPageSimple.cur), auto"; } else { canvas.style.cursor = ""; } } }, cavansOnClick: function(event){ if (zTreeOprObj.currentNode) { let x = event.offsetX - JpcCanvasOutput.offsetX, //y = event.offsetY - JpcCanvasOutput.offsetY, canvas = event.originalTarget; if (x < FIRST_PAGE_OFFSET) { zTreeOprObj.showPage(1, canvas); } else if (x < PRE_PAGE_OFFSET) { zTreeOprObj.showPage(zTreeOprObj.currentPage - 1, canvas); } else if ((canvas.width - x) < LAST_PAGE_OFFSET) { zTreeOprObj.showPage(zTreeOprObj.maxPages, canvas); } else if ((canvas.width - x) < NEXT_PAGE_OFFSET) { zTreeOprObj.showPage(zTreeOprObj.currentPage + 1, canvas); } } } }; let rptControlObj = { currentOutputType: "Excel", getCurrentPageSize: function() { let rst = "A4"; // return rst; }, getCurrentOrientation: function() { let rst = "横向"; // return rst; }, getCurrentReportOption: function() { // }, changeType: function(newType) { let me = rptControlObj; let excelDom = document.getElementById("EXCEL_TYPE"); let pdfDom = document.getElementById("PDF_TYPE"); if (newType === "Excel") { excelDom.className = "btn btn-block btn-primary"; pdfDom.className = "btn btn-block btn-outline-secondary"; me.currentOutputType = newType; } else if (newType === "PDF") { excelDom.className = "btn btn-block btn-outline-secondary"; pdfDom.className = "btn btn-block btn-primary"; me.currentOutputType = newType; } else { //me.currentOutputType = newType; } }, outputRpt: function() { let me = rptControlObj; if (me.currentOutputType === "Excel") { me.getExcel(); } else if (me.currentOutputType === "PDF") { me.getPDF(); } else { //other types if needed. } }, getExcel: function() { let me = rptControlObj; //目前只支持当前打开报表 //zTreeOprObj.currentRptPageRst if (zTreeOprObj.currentNode && zTreeOprObj.currentNode.refId) { let orgRptName = zTreeOprObj.currentNode.name; orgRptName = orgRptName.replace('【', '').replace('】','').replace('-','_').replace(' ',''); let url = "/report_api/getExcel/" + projectInfoObj.projectInfo.ID + "/" + zTreeOprObj.currentNode.refId + "/" + me.getCurrentPageSize() + "/" + orgRptName + "/" + false + "/" + 'normal'; window.location = url;//这里不能使用get方法跳转,否则下载不成功 } }, getPDF: function() { let me = rptControlObj; //目前只支持当前打开报表 //zTreeOprObj.currentRptPageRst if (zTreeOprObj.currentNode && zTreeOprObj.currentNode.refId) { let orgRptName = zTreeOprObj.currentNode.name; orgRptName = orgRptName.replace('【', '').replace('】','').replace('-','_'); let url = "/report_api/getPDF/" + projectInfoObj.projectInfo.ID + "/" + zTreeOprObj.currentNode.refId + "/" + me.getCurrentPageSize() + "/" + orgRptName; window.location = url;//这里不能使用get方法跳转,否则下载不成功 } } };