| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328 | 
							- const PUB_STAMP_SIZE_WIDTH = 5 * 96 / 2.54;   // 公章大小:宽度(5 CM)
 
- const PUB_STAMP_SIZE_HEIGHT = 5 * 96 / 2.54;  // 公章大小:高度(5 CM)
 
- function getScreenDPI() {
 
-     if (SCREEN_DPI.length === 0) {
 
-         if (window.screen.deviceXDPI != undefined) {
 
-             SCREEN_DPI.push(window.screen.deviceXDPI);
 
-             SCREEN_DPI.push(window.screen.deviceYDPI);
 
-         } else {
 
-             let tmpNode = document.createElement("DIV");
 
-             tmpNode.style.cssText = "width:1in;height:1in;position:absolute;left:0px;top:0px;z-index:99;visibility:hidden";
 
-             document.body.appendChild(tmpNode);
 
-             SCREEN_DPI.push(parseInt(tmpNode.offsetWidth));
 
-             SCREEN_DPI.push(parseInt(tmpNode.offsetHeight));
 
-             tmpNode.parentNode.removeChild(tmpNode);
 
-         }
 
-     }
 
-     return SCREEN_DPI;
 
- }
 
- function setupDateFormat() {
 
-     Date.prototype.Format = function (fmt) {
 
-         let o = {
 
-             "M+": this.getMonth() + 1, //月份
 
-             "d+": this.getDate(), //日
 
-             "h+": this.getHours(), //小时
 
-             "m+": this.getMinutes(), //分
 
-             "s+": this.getSeconds(), //秒
 
-             "q+": Math.floor((this.getMonth() + 3) / 3), //季度
 
-             "S": this.getMilliseconds() //毫秒
 
-         };
 
-         if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
 
-         for (let k in o)
 
-             if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
 
-         return fmt;
 
-     };
 
- }
 
- function dynamicLoadJs(url, type, callback) {
 
-     let head = document.getElementsByTagName('head')[0];
 
-     let script = document.createElement('script');
 
-     script.type = 'text/javascript';
 
-     script.src = url;
 
-     if(callback) {
 
-         script.onload = script.onreadystatechange = function (event) {
 
-             callback(type);
 
-             script.onload = script.onreadystatechange = null;
 
-         };
 
-     }
 
-     head.appendChild(script);
 
- }
 
- /**
 
-  * 获取 blob
 
-  * @param  {String} url 目标文件地址
 
-  * @return {Promise}
 
-  */
 
-  function getBlobPublic(url) {
 
-     return new Promise(resolve => {
 
-         const xhr = new XMLHttpRequest();
 
-         xhr.open('GET', url, true);
 
-         xhr.responseType = 'blob';
 
-         xhr.onload = () => {
 
-             if (xhr.status === 200) {
 
-                 resolve(xhr.response);
 
-             } else {
 
-                 resolve('not found!');
 
-             }
 
-         };
 
-         xhr.send();
 
-     });
 
- }
 
- function getProperSignatureArea(cell, control, offsetX, offsetY, JV = null) {
 
-     // 约定默认长宽比例是2:1,图片分辨率是600*300
 
-     const rst = [0, 0, 0, 0]; // left, top, right, bottom
 
-     if (JV) {
 
-         if (cell && cell[JV.PROP_AREA]) {
 
-             if (cell.hasOwnProperty('isOrgShow') && cell.isOrgShow) {
 
-                 rst[JV.IDX_LEFT] = cell[JV.PROP_AREA][JV.PROP_LEFT];
 
-                 rst[JV.IDX_TOP] = cell[JV.PROP_AREA][JV.PROP_TOP];
 
-                 rst[JV.IDX_RIGHT] = cell[JV.PROP_AREA][JV.PROP_RIGHT];
 
-                 rst[JV.IDX_BOTTOM] = cell[JV.PROP_AREA][JV.PROP_BOTTOM];
 
-             } else {
 
-                 let width = cell[JV.PROP_AREA][JV.PROP_RIGHT] - cell[JV.PROP_AREA][JV.PROP_LEFT],
 
-                     height = cell[JV.PROP_AREA][JV.PROP_BOTTOM] - cell[JV.PROP_AREA][JV.PROP_TOP],
 
-                     centerPh = (cell[JV.PROP_AREA][JV.PROP_RIGHT] + cell[JV.PROP_AREA][JV.PROP_LEFT]) / 2,
 
-                     centerPv = (cell[JV.PROP_AREA][JV.PROP_BOTTOM] + cell[JV.PROP_AREA][JV.PROP_TOP]) / 2
 
-                 ;
 
-                 if (width > height * 2) {
 
-                     width = height * 2;
 
-                 } else {
 
-                     height = width / 2;
 
-                 }
 
-                 switch (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_HORIZON]]) {
 
-                     case 'left':
 
-                         rst[JV.IDX_LEFT] = cell[JV.PROP_AREA][JV.PROP_LEFT];
 
-                         rst[JV.IDX_RIGHT] = rst[0] + width;
 
-                         break;
 
-                     case 'right':
 
-                         rst[JV.IDX_RIGHT] = cell[JV.PROP_AREA][JV.PROP_RIGHT];
 
-                         rst[JV.IDX_LEFT] = rst[JV.IDX_RIGHT] - width;
 
-                         break;
 
-                     default:
 
-                         //center
 
-                         rst[JV.IDX_LEFT] = centerPh - width / 2;
 
-                         rst[JV.IDX_RIGHT] = centerPh + width / 2;
 
-                         break;
 
-                 }
 
-                 switch (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]]) {
 
-                     case 'top':
 
-                         rst[JV.IDX_TOP] = cell[JV.PROP_AREA][JV.PROP_TOP];
 
-                         rst[JV.IDX_BOTTOM] = rst[JV.IDX_TOP] + height;
 
-                         break;
 
-                     case 'bottom':
 
-                         rst[JV.IDX_BOTTOM] = cell[JV.PROP_AREA][JV.PROP_BOTTOM];
 
-                         rst[JV.IDX_TOP] = rst[JV.IDX_BOTTOM] - height;
 
-                         break;
 
-                     default:
 
-                         //center
 
-                         rst[JV.IDX_TOP] = centerPv - height / 2;
 
-                         rst[JV.IDX_BOTTOM] = centerPv + height / 2;
 
-                         break;
 
-                 }
 
-             }
 
-         }
 
-     }
 
-     rst[0] = rst[0] + offsetX;
 
-     rst[2] = rst[2] + offsetX;
 
-     rst[1] = rst[1] + offsetY;
 
-     rst[3] = rst[3] + offsetY;
 
-     return rst;
 
- }
 
- function resetStampArea(ctrl, stampCell, JV, stampFeature = 'not found!') {
 
-     let pLeft = stampCell.orgArea.Left,
 
-         pTop = stampCell.orgArea.Top;
 
-     if (stampFeature !== 'not found!') {
 
-         let std_stamp_size_width = PUB_STAMP_SIZE_WIDTH, std_stamp_size_height = PUB_STAMP_SIZE_HEIGHT;
 
-         let widthRate = 1, heightRate = 1;
 
-         if (stampFeature) {
 
-             std_stamp_size_width = parseFloat(stampFeature.ImageWidth.value);
 
-             std_stamp_size_height = parseFloat(stampFeature.ImageHeight.value);
 
-             if (stampFeature.ImageWidth.value !== stampFeature.ImageHeight.value) {
 
-                 //设置比例
 
-                 if (std_stamp_size_width > std_stamp_size_height) {
 
-                     heightRate = std_stamp_size_height / std_stamp_size_width;
 
-                 } else {
 
-                     widthRate = std_stamp_size_width / std_stamp_size_height;
 
-                 }
 
-             }
 
-             if (std_stamp_size_width > PUB_STAMP_SIZE_WIDTH || std_stamp_size_height > PUB_STAMP_SIZE_HEIGHT) {
 
-                 if (widthRate === 1) {
 
-                     std_stamp_size_width = Math.min(std_stamp_size_width, PUB_STAMP_SIZE_WIDTH);
 
-                     std_stamp_size_height = std_stamp_size_width * heightRate;
 
-                 } else {
 
-                     std_stamp_size_height = Math.min(std_stamp_size_height, PUB_STAMP_SIZE_HEIGHT);
 
-                     std_stamp_size_width = std_stamp_size_height * widthRate;
 
-                 }
 
-             }
 
-         }
 
-         switch (ctrl[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_HORIZON]]) {
 
-             case JV.OUTPUT_ALIGN.H[JV.H_ALIGN_IDX_LEFT]:
 
-                 pLeft = stampCell.orgArea.Left;
 
-                 break;
 
-             case JV.OUTPUT_ALIGN.H[JV.H_ALIGN_IDX_CENTER]:
 
-                 pLeft = (stampCell.orgArea.Left + stampCell.orgArea.Right - std_stamp_size_width) / 2;
 
-                 break;
 
-             case JV.OUTPUT_ALIGN.H[JV.H_ALIGN_IDX_RIGHT]:
 
-                 pLeft = stampCell.orgArea.Right - std_stamp_size_width;
 
-                 break;
 
-             default:break;
 
-         }
 
-         switch (ctrl[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]]) {
 
-             case JV.OUTPUT_ALIGN.H[JV.V_ALIGN_IDX_TOP]:
 
-                 pTop = stampCell.orgArea.Top;
 
-                 break;
 
-             case JV.OUTPUT_ALIGN.H[JV.V_ALIGN_IDX_CENTER]:
 
-                 pTop = (stampCell.orgArea.Top + stampCell.orgArea.Bottom - std_stamp_size_height) / 2;
 
-                 break;
 
-             case JV.OUTPUT_ALIGN.H[JV.V_ALIGN_IDX_BOTTOM]:
 
-                 pTop = stampCell.orgArea.Bottom - std_stamp_size_height;
 
-                 break;
 
-             default:break;
 
-         }
 
-         stampCell.area.Left = pLeft;
 
-         stampCell.area.Top = pTop;
 
-         stampCell.area.Right = pLeft + std_stamp_size_width;
 
-         stampCell.area.Bottom = pTop + std_stamp_size_height;
 
-         // 最后一步,如超过报表范围,则要调整坐标
 
-         if (stampCell.maxRect) {
 
-             const maxRect = stampCell.maxRect;
 
-             if (stampCell.area.Left < maxRect[0]) {
 
-                 const width = maxRect[0] - stampCell.area.Left;
 
-                 stampCell.area.Left += width;
 
-                 stampCell.area.Right += width;
 
-             }
 
-             if (stampCell.area.Top < maxRect[1]) {
 
-                 const height = maxRect[1] - stampCell.area.Top;
 
-                 stampCell.area.Top += height;
 
-                 stampCell.area.Bottom += height;
 
-             }
 
-             if (stampCell.area.Right > maxRect[2]) {
 
-                 const width = maxRect[2] - stampCell.area.Right; // 负
 
-                 stampCell.area.Left += width;
 
-                 stampCell.area.Right += width;
 
-             }
 
-             if (stampCell.area.Bottom > maxRect[3]) {
 
-                 const height = maxRect[3] - stampCell.area.Bottom;
 
-                 stampCell.area.Top += height;
 
-                 stampCell.area.Bottom += height;
 
-             }
 
-         }
 
-     }
 
- }
 
- async function getPicFeature(picPath) {
 
-     const rst = await getHttpBlobText(picPath + '?x-oss-process=image/info');
 
-     return rst;
 
- }
 
- function getHttpBlobText(url) {
 
-     return new Promise(resolve => {
 
-         const xhr = new XMLHttpRequest();
 
-         // let fullUrl = url + '?x-oss-process=image/info';
 
-         xhr.open('GET', url, true);
 
-         xhr.responseType = 'json';
 
-         xhr.onload = () => {
 
-             if (xhr.status === 200) {
 
-                 resolve(xhr.response);
 
-             } else {
 
-                 resolve('not found!');
 
-             }
 
-         };
 
-         xhr.send();
 
-     });
 
- }
 
- function filterSignCells(pageObj, bkSignCells, bkTxtSignCells, bkPicSignCells, isTextSignature = false, isCloseArchive = false) {
 
-     if (isTextSignature) {
 
-         pageObj.items.forEach((pageItem) => {
 
-             const dtlSignCells = [];
 
-             bkSignCells.push(dtlSignCells);
 
-             for (let sCellIdx = pageItem.signature_cells.length - 1; sCellIdx >= 0; sCellIdx--) {
 
-                 let sCell = pageItem.signature_cells[sCellIdx];
 
-                 if (sCell.signature_name.indexOf('dummy_pic') < 0) {
 
-                     dtlSignCells.push(sCell);
 
-                     pageItem.signature_cells.splice(sCellIdx, 1);
 
-                     if (isCloseArchive) {
 
-                         // 如果还有closeArchiveSignature标记,那么不显示文本文档(只是清除匹配cell的Value,后续需要恢复)
 
-                         const cCell = pageItem.cells.find(cell => cell.area.Left === sCell.area.Left && cell.area.Top === sCell.area.Top && cell.Value === sCell.Value);
 
-                         if (cCell) {
 
-                             bkTxtSignCells.push({bkCell: cCell, bkValue: cCell.Value});
 
-                             cCell.Value = '';
 
-                         }
 
-                     }
 
-                 } else if (isCloseArchive) {
 
-                     // 这个跟上面的判断属性不同,是orgArea(签章的)
 
-                     for (let cIdx = pageItem.cells.length - 1; cIdx >= 0; cIdx--) {
 
-                         const cCell = pageItem.cells[cIdx];
 
-                         if (cCell.area.Left === sCell.orgArea.Left && cCell.area.Right === sCell.orgArea.Right &&
 
-                             cCell.area.Top === sCell.orgArea.Top && cCell.area.Bottom === sCell.orgArea.Bottom &&
 
-                             cCell.Value !== '') {
 
-                             bkTxtSignCells.push({bkCell: cCell, bkValue: cCell.Value});
 
-                             cCell.Value = '';
 
-                             break;
 
-                         }
 
-                     }
 
-                 }
 
-             }
 
-         });
 
-     } else if (isCloseArchive) {
 
-         pageObj.items.forEach((pageItem, pageIdx) => {
 
-             const dtlSignCells = [];
 
-             const dtlDummyCells = [];
 
-             bkSignCells.push(dtlSignCells);
 
-             bkPicSignCells.push(dtlDummyCells);
 
-             for (let sCellIdx = pageItem.signature_cells.length - 1; sCellIdx >= 0; sCellIdx--) {
 
-                 let sCell = pageItem.signature_cells[sCellIdx];
 
-                 if (sCell.signature_name.indexOf('dummy_pic') < 0) {
 
-                     // IMPORTANT: 所有不是dummy_pic的签名都处理,不用管用户有没有真实选择签名
 
-                     dtlSignCells.push(sCell);
 
-                     pageItem.signature_cells.splice(sCellIdx, 1);
 
-                     // 还得加一个dummy cell,处理边框用的
 
-                     const newCell = {
 
-                         font: 'Footer',
 
-                         control: sCell.control,
 
-                         style: sCell.style,
 
-                         Value: '',
 
-                         area: { Left: sCell.area.Left, Right: sCell.area.Right, Top: sCell.area.Top, Bottom: sCell.area.Bottom },
 
-                     };
 
-                     dtlDummyCells.push(newCell);
 
-                     pageItem.cells.push(newCell);
 
-                 }
 
-             }
 
-         });
 
-     }
 
- }
 
- function restoreSignCells(pageObj, bkSignCells, bkTxtSignCells, bkPicSignCells) {
 
-     if (bkSignCells && pageObj.items.length === bkSignCells.length) {
 
-         pageObj.items.forEach((pageItem, pageIdx) => {
 
-             bkSignCells[pageIdx].forEach((srcCell) => {
 
-                 pageItem.signature_cells.push(srcCell);
 
-             });
 
-             bkSignCells[pageIdx] = null;
 
-         });
 
-         bkSignCells.splice(0);
 
-     }
 
-     if (bkTxtSignCells && bkTxtSignCells.length) {
 
-         bkTxtSignCells.forEach(txtCellBkObj => {
 
-             txtCellBkObj.bkCell.Value = txtCellBkObj.bkValue;
 
-         });
 
-         bkTxtSignCells.splice(0);
 
-     }
 
-     if (bkPicSignCells && bkPicSignCells.length === pageObj.items.length) {
 
-         pageObj.items.forEach((pageItem, pageIdx) => {
 
-             bkPicSignCells[pageIdx].forEach((dummyCell) => {
 
-                 const idx = pageItem.cells.indexOf(dummyCell);
 
-                 if (idx >= 0) pageItem.cells.splice(idx, 1);
 
-             });
 
-             bkPicSignCells[pageIdx] = null;
 
-         });
 
-         bkPicSignCells.splice(0);
 
-     }
 
- }
 
 
  |