|
@@ -502,6 +502,18 @@ function preAnalyzePos(pageData, sheetData, xPos, yPos, yMultiPos) {
|
|
|
cell = theShtData[JV.PROP_SIGNATURE_AUDIT_CELLS][i];
|
|
|
private_set_cell_pos(cell, theXPos, theYPos);
|
|
|
}
|
|
|
+ for (let i = 0; i < theShtData[JV.PROP_WATERMARK_CELLS].length; i++) {
|
|
|
+ cell = theShtData[JV.PROP_WATERMARK_CELLS][i];
|
|
|
+ // private_set_cell_pos(cell, theXPos, theYPos);
|
|
|
+ let cellControl;
|
|
|
+ if (typeof cell[JV.PROP_CONTROL] === 'string') {
|
|
|
+ cellControl = pageData[JV.NODE_CONTROL_COLLECTION][cell[JV.PROP_CONTROL]];
|
|
|
+ } else {
|
|
|
+ cellControl = cell[JV.PROP_CONTROL];
|
|
|
+ }
|
|
|
+ const area = getProperSignatureArea(cell, cellControl);
|
|
|
+ private_set_cell_pos2(area, theXPos, theYPos);
|
|
|
+ }
|
|
|
};
|
|
|
xPos.push(0);
|
|
|
if (sheetData) {
|
|
@@ -1129,6 +1141,12 @@ function writeDrawing(pageData, sheetData, subSignKeyArr) {
|
|
|
startPicIdx++;
|
|
|
}
|
|
|
}
|
|
|
+ for (const sCell of sheetData[JV.PROP_WATERMARK_CELLS]) {
|
|
|
+ if (subSignKeyArr.indexOf(sCell.signature_name) >= 0) {
|
|
|
+ private_setSheetDrawingCellData(sCell, yPos, startPicIdx, 0);
|
|
|
+ startPicIdx++;
|
|
|
+ }
|
|
|
+ }
|
|
|
} else {
|
|
|
// total data in one sheet
|
|
|
let rowOffset = 0;
|
|
@@ -1142,6 +1160,12 @@ function writeDrawing(pageData, sheetData, subSignKeyArr) {
|
|
|
startPicIdx++;
|
|
|
}
|
|
|
}
|
|
|
+ for (const sCell of shtItemData[JV.PROP_WATERMARK_CELLS]) {
|
|
|
+ if (subSignKeyArr.indexOf(sCell.signature_name) >= 0) {
|
|
|
+ private_setSheetDrawingCellData(sCell, tmpPos, startPicIdx, rowOffset);
|
|
|
+ startPicIdx++;
|
|
|
+ }
|
|
|
+ }
|
|
|
rowOffset += tmpPos.length - 2;
|
|
|
}
|
|
|
}
|
|
@@ -1242,9 +1266,9 @@ function createDummySignatureCell(pageData) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-function checkAndSetSignatureCache(pageData, signKeyArr, signPathArr, roleRel, signSheetIdxArr) {
|
|
|
+function _checkAndSetSignatureCache(pageData, signKeyArr, signPathArr, roleRel, signSheetIdxArr) {
|
|
|
// 备注:电子签名是以图形的方式处理,一页可以有多个签名,多页的签名基本是引用同样的图片,在这里先处理一下,后期统一引用。
|
|
|
- // 另:以后的图片(在电子签名(signature_cells)以外的图片)会单独处理(如计算草图等)
|
|
|
+ // 另:以后的图片(在电子签名(signature_cells)以外的图片)会单独处理(如计算草图、水印等)
|
|
|
let rst = false;
|
|
|
let chkRoles = [];
|
|
|
if (roleRel instanceof Array) {
|
|
@@ -1306,6 +1330,19 @@ function checkAndSetSignatureCache(pageData, signKeyArr, signPathArr, roleRel, s
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ if (page[JV.PROP_WATERMARK_CELLS] && page[JV.PROP_WATERMARK_CELLS].length > 0) {
|
|
|
+ // 水印,单独处理
|
|
|
+ const waterMarkCell = page[JV.PROP_WATERMARK_CELLS][0];
|
|
|
+ // console.log('waterMarkCell');
|
|
|
+ // console.log(waterMarkCell);
|
|
|
+ const signPath = { path: null, pic: null };
|
|
|
+ signPathArr[pageIdx].push(signPath);
|
|
|
+ signPath.pic = waterMarkCell.pic;
|
|
|
+ signPath.path = waterMarkCell.path;
|
|
|
+ signKeyArr[pageIdx].push(waterMarkCell.signature_name);
|
|
|
+ rst = true;
|
|
|
+ signSheetIdxArr[pageIdx] = true;
|
|
|
+ }
|
|
|
}
|
|
|
return rst;
|
|
|
}
|
|
@@ -1330,7 +1367,7 @@ module.exports = {
|
|
|
const signSheetIdxArr = []; // 确定哪些sheet有签名(在多表导出的时候,有些表可能没有签名,但其他的表有签名)
|
|
|
// console.log('in exportExcel!');
|
|
|
// console.log(roleRel);
|
|
|
- // const hasSignature = (roleRel !== null) ? checkAndSetSignatureCache(pageData, signKeyArr, signPathArr, roleRel, signSheetIdxArr) : false;
|
|
|
+ // const hasSignature = (roleRel !== null) ? _checkAndSetSignatureCache(pageData, signKeyArr, signPathArr, roleRel, signSheetIdxArr) : false;
|
|
|
let thisRoleRel = [];
|
|
|
if (roleRel !== null && roleRel !== undefined) {
|
|
|
thisRoleRel = roleRel;
|
|
@@ -1338,8 +1375,8 @@ module.exports = {
|
|
|
resetDummuySignature(pageData, thisRoleRel); // 把草图转换一下roleRel
|
|
|
// console.log(thisRoleRel);
|
|
|
|
|
|
- const hasSignature = false; // 暂时不支持电子签名、草图导出excel
|
|
|
- // const hasSignature = checkAndSetSignatureCache(pageData, signKeyArr, signPathArr, thisRoleRel, signSheetIdxArr); // 因草图的关系,thisRoleRel是否为null就不是充要的条件
|
|
|
+ // const hasSignature = false; // 暂时不支持电子签名、草图导出excel
|
|
|
+ const hasSignature = _checkAndSetSignatureCache(pageData, signKeyArr, signPathArr, thisRoleRel, signSheetIdxArr); // 因草图的关系,thisRoleRel是否为null就不是充要的条件
|
|
|
// console.log('signKeyArr');
|
|
|
// console.log(signKeyArr);
|
|
|
// console.log('signPathArr');
|
|
@@ -1641,6 +1678,12 @@ module.exports = {
|
|
|
pageItem[JV.PROP_SIGNATURE_AUDIT_CELLS].push(pageDataArray[i].items[j][JV.PROP_SIGNATURE_AUDIT_CELLS][k]);
|
|
|
}
|
|
|
}
|
|
|
+ pageItem[JV.PROP_WATERMARK_CELLS] = [];
|
|
|
+ for (let j = 0; j < pageDataArray[i].items.length; j++) {
|
|
|
+ for (let k = 0; k < pageDataArray[i].items[j][JV.PROP_WATERMARK_CELLS].length; k++) {
|
|
|
+ pageItem[JV.PROP_WATERMARK_CELLS].push(pageDataArray[i].items[j][JV.PROP_WATERMARK_CELLS][k]);
|
|
|
+ }
|
|
|
+ }
|
|
|
newPagePos[i][JV.NODE_PAGE_SIZE] = pageDataArray[i][JV.NODE_PAGE_INFO][JV.NODE_PAGE_SIZE];
|
|
|
pageItem[JV.PAGE_SPECIAL_MERGE_POS] = newPagePos[i];
|
|
|
newPageData.items.push(pageItem);
|