|
@@ -256,11 +256,95 @@ let rptArchiveObj = {
|
|
|
let rst = (aItem && aItem.items && aItem.items.length === 3);
|
|
|
return rst;
|
|
|
},
|
|
|
+ _getPageSignatureInfo: function(pageData, rpt_id) {
|
|
|
+ let psInfo = [], psInfoStr = [];
|
|
|
+ let offsetX = 0, offsetY = 0; //这个跟导出pdf一致,以防万一有变化
|
|
|
+ let controls = pageData[JV.NODE_CONTROL_COLLECTION];
|
|
|
+ const _getProperSignatureArea = function(cell, control) {
|
|
|
+ // 约定默认长宽比例是2:1,图片分辨率是600*300
|
|
|
+ const rst = [0, 0, 0, 0]; // left, top, right, bottom
|
|
|
+ if (cell && cell[JV.PROP_AREA]) {
|
|
|
+ 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];
|
|
|
+ if (width > height * 2) {
|
|
|
+ width = height * 2;
|
|
|
+ } else {
|
|
|
+ height = width / 2;
|
|
|
+ }
|
|
|
+ switch (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_HORIZON]]) {
|
|
|
+ case 'left':
|
|
|
+ rst[0] = cell[JV.PROP_AREA][JV.PROP_LEFT];
|
|
|
+ rst[1] = cell[JV.PROP_AREA][JV.PROP_TOP];
|
|
|
+ rst[2] = rst[0] + width;
|
|
|
+ rst[3] = rst[1] + height;
|
|
|
+ break;
|
|
|
+ case 'right':
|
|
|
+ rst[2] = cell[JV.PROP_AREA][JV.PROP_RIGHT];
|
|
|
+ rst[3] = cell[JV.PROP_AREA][JV.PROP_BOTTOM];
|
|
|
+ rst[0] = rst[2] - width;
|
|
|
+ rst[1] = rst[3] - height;
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ //center
|
|
|
+ rst[0] = (cell[JV.PROP_AREA][JV.PROP_LEFT] + cell[JV.PROP_AREA][JV.PROP_RIGHT] - width) / 2;
|
|
|
+ rst[1] = cell[JV.PROP_AREA][JV.PROP_TOP];
|
|
|
+ rst[2] = rst[0] + width;
|
|
|
+ rst[3] = rst[1] + height;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ rst[0] = rst[0] + offsetX;
|
|
|
+ rst[2] = rst[2] + offsetX;
|
|
|
+ rst[1] = rst[1] + offsetY;
|
|
|
+ rst[3] = rst[3] + offsetY;
|
|
|
+ return rst;
|
|
|
+ }
|
|
|
+ for(let i = 0; i < pageData.items.length; i++) {
|
|
|
+ let page = pageData.items[i];
|
|
|
+ for (let sCell of page.signature_cells) {
|
|
|
+ let control = null;
|
|
|
+ if (typeof sCell[JV.PROP_CONTROL] === "string") {
|
|
|
+ control = controls[sCell[JV.PROP_CONTROL]];
|
|
|
+ } else {
|
|
|
+ control = sCell[JV.PROP_CONTROL];
|
|
|
+ }
|
|
|
+ let idx = psInfoStr.indexOf(sCell.signature_name);
|
|
|
+ let actSignArea = _getProperSignatureArea(sCell, control);
|
|
|
+ if (idx < 0) {
|
|
|
+ psInfoStr.push(sCell.signature_name);
|
|
|
+ let newPsInfo = {'name': sCell.signature_name, areas: []};
|
|
|
+ let area = {Left: actSignArea[JV.IDX_LEFT] + offsetX, Top: actSignArea[JV.IDX_TOP] + offsetY, width: (actSignArea[JV.IDX_RIGHT] - actSignArea[JV.IDX_LEFT]), height: (actSignArea[JV.IDX_BOTTOM] - actSignArea[JV.IDX_TOP]), pages: []};
|
|
|
+ area.pages.push(i + 1);
|
|
|
+ newPsInfo.areas.push(area);
|
|
|
+ psInfo.push(newPsInfo);
|
|
|
+ } else {
|
|
|
+ let hasArea = false;
|
|
|
+ for (let areaItem of psInfoStr[idx].areas) {
|
|
|
+ if (areaItem.Left === actSignArea[JV.IDX_LEFT] + offsetX && areaItem.Top === actSignArea[JV.IDX_TOP] + offsetX &&
|
|
|
+ areaItem.width === actSignArea[JV.IDX_RIGHT] - actSignArea[JV.IDX_LEFT] && areaItem.height === actSignArea[JV.IDX_BOTTOM] - actSignArea[JV.IDX_TOP]) {
|
|
|
+ areaItem.pages.push(i + 1);
|
|
|
+ hasArea = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!hasArea) {
|
|
|
+ let area = {Left: actSignArea[JV.IDX_LEFT] + offsetX, Top: actSignArea[JV.IDX_TOP] + offsetY, width: (actSignArea[JV.IDX_RIGHT] - actSignArea[JV.IDX_LEFT]), height: (actSignArea[JV.IDX_BOTTOM] - actSignArea[JV.IDX_TOP]), pages: []};
|
|
|
+ area.pages.push(i + 1);
|
|
|
+ psInfoStr[idx].areas.push(area);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // sCell.signature_name
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return psInfo;
|
|
|
+ },
|
|
|
archiveCurrentReport: function(currentRptPageRst, currentNode) {
|
|
|
// 归档当前报表
|
|
|
if (currentRptPageRst !== null) {
|
|
|
try {
|
|
|
let doc = JpcJsPDFHelper._createPdf(currentRptPageRst, rptControlObj.getCurrentPageSize(), ROLE_REL_LIST, STAGE_AUDIT);
|
|
|
+ let pageEncryptInfo = rptArchiveObj._getPageSignatureInfo(currentRptPageRst, currentNode.refId);
|
|
|
+ console.log(pageEncryptInfo);
|
|
|
let formData = new FormData();
|
|
|
formData.append('file', doc.output('blob'), 'upload.pdf'); //上传单个文件的添加方式
|
|
|
if (!rptArchiveObj._chkIfFullArchives(currentNode)) {
|
|
@@ -271,9 +355,24 @@ let rptArchiveObj = {
|
|
|
ARCHIVE_LIST = result.addedRst;
|
|
|
rptArchiveObj.showArchivedItem(currentNode);
|
|
|
zTreeOprObj.refreshNodes();
|
|
|
+ //第二步:增加
|
|
|
+ let params = {};
|
|
|
+ params.prjId = PROJECT_ID;
|
|
|
+ params.stgId = current_stage_id;
|
|
|
+ params.rptId = currentNode.refId;
|
|
|
+ params.content = pageEncryptInfo;
|
|
|
+ CommonAjax.postXsrfEx("/tender/report_api/addArchiveEncryption", params, 10000, true, getCookie('csrfToken_j'),
|
|
|
+ function(result){
|
|
|
+ //
|
|
|
+ }, function(err){
|
|
|
+ //
|
|
|
+ }, function(ex){
|
|
|
+ //
|
|
|
+ }
|
|
|
+ );
|
|
|
} else {
|
|
|
// 有冲突,需要删除
|
|
|
- CommonAjax.postXsrfEx('/tender/report_api/removeArchive/' + PROJECT_ID + '/' + current_stage_id + '/' + currentNode.refId + result.fileName, '', 3000, true, getCookie('csrfToken'),
|
|
|
+ CommonAjax.postXsrfEx('/tender/report_api/removeArchive/' + PROJECT_ID + '/' + current_stage_id + '/' + currentNode.refId + result.fileName, '', 3000, true, getCookie('csrfToken_j'),
|
|
|
function(result){
|
|
|
//
|
|
|
}
|
|
@@ -322,7 +421,7 @@ let rptArchiveObj = {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
-function _dataURLtoFile(dataurl, filename) {
|
|
|
+function dataURLtoFile(dataurl, filename) {
|
|
|
var arr = dataurl.split(','), mime = arr[0].match(/:(.*?);/)[1],
|
|
|
bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
|
|
|
while(n--){
|