| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 | /** * Created by Tony on 2020/10/16. */let G_OFFSET_X = 0, G_OFFSET_Y = 0;function loading() {    if (sessionStorage.multiRptsData) {        let multiRptData = JSON.parse(sessionStorage.multiRptsData);        let scaleFactor = parseInt(sessionStorage.scaleFactor);        for (let idx = 0; idx < multiRptData.length; idx++) {            let pageData = multiRptData[idx];            if (idx === 0) {                $(document).attr("title", pageData[JV.NODE_PAGE_INFO][JV.NODE_MAIN_INFO_RPT_NAME]);            }            let orgPixelSize = getPixelSize(pageData);            let actArea = getActualArea(pageData);            let svgArr = rptPrintHelper.buildSvgArr(pageData, actArea, G_OFFSET_X, G_OFFSET_Y);            //let orientation = (pageData[JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE][0] < pageData[JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE][1])?"纵向":"横向";            let orientation = "纵向";            showPreviewData(svgArr, actArea, scaleFactor, sessionStorage.pageSize, orientation, orgPixelSize);        }        window.print();    } else if (sessionStorage.currentPageData) {        let pageData = JSON.parse(sessionStorage.currentPageData);        let scaleFactor = parseInt(sessionStorage.scaleFactor);        let orgPixelSize = getPixelSize(pageData);        let actArea = getActualArea(pageData);        let svgArr = rptPrintHelper.buildSvgArr(pageData, actArea, G_OFFSET_X, G_OFFSET_Y);        $(document).attr("title", pageData[JV.NODE_PAGE_INFO][JV.NODE_MAIN_INFO_RPT_NAME]);        //showPreviewData(svgArr, scaleFactor, sessionStorage.pageSize, sessionStorage.orientation);        showPreviewData(svgArr, actArea, scaleFactor, sessionStorage.pageSize, "纵向", orgPixelSize);        window.print();    } else if (sessionStorage.currentPageSvgData) {        let svgArr = JSON.parse(sessionStorage.currentPageSvgData);        let scaleFactor = 1;        //showPreviewData(svgArr, scaleFactor, sessionStorage.pageSize, sessionStorage.orientation);        showPreviewData(svgArr, null, scaleFactor, sessionStorage.pageSize, "纵向", null);        window.print();    } else {        //alert("没有报表数据!");    }}function showPreviewData(svgArr, actAreaArr, scaleFactor, pageSize, orientation, orgPixelSize) {    let orgHeight = 793, orgWidth = 1122;    let DFT_MARGIN = 3;    if (pageSize === 'A3') {        orgHeight = 1122;        orgWidth = 793 * 2;    } else if (pageSize.indexOf('自定义') >= 0) {        //自定义    } else {        //其他size(LEGAL, 16K etc.)    }    let pageHeight = orgHeight * scaleFactor, pageWidth = orgWidth * scaleFactor;    if (orientation === "纵向") {        pageHeight = orgWidth * scaleFactor;        pageWidth = orgHeight * scaleFactor;    }    for (let i = 0; i < svgArr.length; i++) {        let offsetHeight = 0, offsetWidth = 0;        let paddingStr = '';        if (actAreaArr) {            paddingStr = `padding: ${actAreaArr[i].Top}px 0px 0px ${actAreaArr[i].Left}px`;            if (actAreaArr[i].Right > actAreaArr[i].Bottom) {                //横向,需要重新调整padding                paddingStr = `padding: ${actAreaArr[i].Left}px 0px 0px ${orgHeight - actAreaArr[i].Bottom}px`;            }            offsetWidth = actAreaArr[i].Left + (pageWidth - actAreaArr[i].Right) - DFT_MARGIN;            offsetHeight = actAreaArr[i].Top + (pageHeight - actAreaArr[i].Bottom) - DFT_MARGIN;            if (orgPixelSize[0] > orgPixelSize[1]) {                //横向强制改纵向(系统是以纵向为准),那么计算offset的方式会有所不同                offsetWidth = actAreaArr[i].Top + (pageWidth - actAreaArr[i].Bottom) - DFT_MARGIN;                //offsetHeight = actAreaArr[i].Left + (pageHeight - actAreaArr[i].Right) - (actAreaArr[i].Left - actAreaArr[i].Top) - DFT_MARGIN;                //新方式下,没那么复杂了                offsetHeight = actAreaArr[i].Left + (pageHeight - actAreaArr[i].Right) - DFT_MARGIN;            }        }        // let div = $('<div class="pageBreak"></div>');        let div = $(`<div class="pageBreak" style="${paddingStr}"></div>`);        div.append($(svgArr[i].join("")));        $(div).find("svg").each(function(cIdx,elementSvg){            elementSvg.setAttribute('height', pageHeight - offsetHeight);            elementSvg.setAttribute('width', pageWidth - offsetWidth);        });        $("body").append(div);    }}function getActualArea(pageData) {    let rst = [];    for (let item of pageData.items) {        let area = {Left: 10000, Right: 0, Top: 10000, Bottom: 0};        for (let cell of item.cells) {            if (cell.area.Left < area.Left) {                area.Left = cell.area.Left;            }            if (cell.area.Right > area.Right) {                area.Right = cell.area.Right;            }            if (cell.area.Top < area.Top) {                area.Top = cell.area.Top;            }            if (cell.area.Bottom > area.Bottom) {                area.Bottom = cell.area.Bottom;            }        }        rst.push(area);    }    return rst;}function closing() {    //}
 |