|
@@ -1089,25 +1089,28 @@ function writeDrawings(pageData, signKeyArr, signPathArr, isSinglePage, signShee
|
|
|
// 优化调整,不再每页都设置一个,重复的签名只需要一个即可(极端case: 13xx多页的签名文档,导出有1.3G大)
|
|
|
if (isSinglePage) {
|
|
|
// console.log('singlePage! ');
|
|
|
- rst.push(writeDrawing(pageData, null, signKeyArr));
|
|
|
+ rst.push(writeDrawing(pageData, null, signKeyArr, 0));
|
|
|
} else {
|
|
|
// console.log('pageData! ');
|
|
|
+ // console.log(signKeyArr);
|
|
|
for (let i = 0; i < pageData.items.length; i++) {
|
|
|
if (signSheetIdxArr[i]) {
|
|
|
+ // if (signSheetIdxArr[i]) {
|
|
|
// console.log('signKeyArr[' + i + ']');
|
|
|
// console.log(signKeyArr[i]);
|
|
|
- rst.push(writeDrawing(pageData, pageData.items[i], signKeyArr));
|
|
|
+ rst.push(writeDrawing(pageData, pageData.items[i], signKeyArr, i));
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
// */
|
|
|
return rst;
|
|
|
}
|
|
|
-function writeDrawing(pageData, sheetData, subSignKeyArr) {
|
|
|
+function writeDrawing(pageData, sheetData, subSignKeyArr, sheetIdx) {
|
|
|
const rst = [];
|
|
|
const xPos = [];
|
|
|
const yPos = [];
|
|
|
const yMultiPos = [];
|
|
|
+ // console.log(`sheetIdx: ${sheetIdx}`);
|
|
|
|
|
|
const private_setSheetDrawingCellData = function(signCell, theYPos, startPicIdx, offsetRow) {
|
|
|
let cellControl;
|
|
@@ -1203,9 +1206,10 @@ function writeDrawing(pageData, sheetData, subSignKeyArr) {
|
|
|
// console.log(subSignKeyArr);
|
|
|
if (sheetData) {
|
|
|
// console.log('sheetData');
|
|
|
- let startPicIdx = 2;
|
|
|
+ let startPicIdx = 2 + sheetIdx * 1000;
|
|
|
for (const sCell of sheetData[JV.PROP_SIGNATURE_CELLS]) {
|
|
|
if (subSignKeyArr.indexOf(sCell.signature_name) >= 0) {
|
|
|
+ // console.log(`sCell.signature_name: ${sCell.signature_name} at index: ${startPicIdx}`);
|
|
|
private_setSheetDrawingCellData(sCell, yPos, startPicIdx, 0);
|
|
|
startPicIdx++;
|
|
|
}
|
|
@@ -1246,6 +1250,7 @@ function writeDrawing(pageData, sheetData, subSignKeyArr) {
|
|
|
}
|
|
|
}
|
|
|
rst.push('</xdr:wsDr>');
|
|
|
+ // console.log(rst);
|
|
|
return rst;
|
|
|
}
|
|
|
function writeDrawingsRels(amt, startIdx) {
|
|
@@ -1422,7 +1427,13 @@ function _checkAndSetSignatureCache(pageData, signKeyArr, signPathArr, roleRel,
|
|
|
// }
|
|
|
// }
|
|
|
// 这里把图片的路径作为key值判断
|
|
|
+ // if (true || signKeyArr.indexOf(signature.signature_name) < 0) {
|
|
|
+ // console.log(`signature: ${signature.signature_name}`);
|
|
|
if (signKeyArr.indexOf(signature.signature_name) < 0) {
|
|
|
+ // console.log(`signature: ${signature.signature_name}`);
|
|
|
+ if (signature.signature_name === '支表03 清单支付报表(凉山州)_施工单位制表人') {
|
|
|
+ // console.log(chkRoles);
|
|
|
+ }
|
|
|
if (signature.pic) {
|
|
|
const signPath = { signature_name: signature.signature_name, path: null, pic: null };
|
|
|
signPathArr.push(signPath);
|
|
@@ -1443,8 +1454,10 @@ function _checkAndSetSignatureCache(pageData, signKeyArr, signPathArr, roleRel,
|
|
|
signSheetIdxArr[pageIdx] = true;
|
|
|
} else if (role.sign_path) {
|
|
|
let sPObj = _getDupPicPath(role.sign_path);
|
|
|
- if (sPObj !== null) {
|
|
|
- signature.signature_name = sPObj.signature_name; //重点,如果有相同路径的,修改signature_name!
|
|
|
+ if (sPObj !== null && isSinglePage) { // 只有在isSinglePage为true时,才需要优化签名
|
|
|
+ // if (sPObj !== null) {
|
|
|
+ signature.signature_name = sPObj.signature_name; // 重点,如果有相同路径的,修改signature_name!
|
|
|
+ // signSheetIdxArr[pageIdx] = true;
|
|
|
rst = true;
|
|
|
} else {
|
|
|
const signPath = { signature_name: signature.signature_name, path: null, pic: null };
|
|
@@ -1459,6 +1472,9 @@ function _checkAndSetSignatureCache(pageData, signKeyArr, signPathArr, roleRel,
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+ } else {
|
|
|
+ // console.log(`duplicate signature: ${signature.signature_name}`);
|
|
|
+ // signSheetIdxArr[pageIdx] = true;
|
|
|
}
|
|
|
//*/
|
|
|
}
|
|
@@ -1523,7 +1539,9 @@ module.exports = {
|
|
|
// console.log(thisRoleRel);
|
|
|
|
|
|
// const hasSignature = false; // 暂时不支持电子签名、草图导出excel
|
|
|
+ // fsUtil.writeObjToFile(pageData, 'D:/GitHome/temp/pageRstArrForExcelBeforeSignatureCheck.js');
|
|
|
const hasSignature = _checkAndSetSignatureCache(pageData, signKeyArr, signPathArr, thisRoleRel, signSheetIdxArr, isSinglePage); // 因草图的关系,thisRoleRel是否为null就不是充要的条件
|
|
|
+ // fsUtil.writeObjToFile(pageData, 'D:/GitHome/temp/pageRstArrForExcelAfterSignatureCheck.js');
|
|
|
// console.log('signKeyArr');
|
|
|
// console.log(signKeyArr);
|
|
|
// console.log('signPathArr');
|
|
@@ -1616,6 +1634,8 @@ module.exports = {
|
|
|
// data = writeDrawings(pageData, signKeyArr, signPathArr, false, signSheetIdxArr); // 备注:这里根本不需要考虑是否single page
|
|
|
// console.log('isSinglePage: ' + isSinglePage);
|
|
|
// console.log(data);
|
|
|
+ // console.log('signSheetIdxArr: ');
|
|
|
+ // console.log(signSheetIdxArr);
|
|
|
for (let psIdx = 0; psIdx < data.length; psIdx++) {
|
|
|
file = 'drawing' + (psIdx + 1) + '.xml';
|
|
|
// console.log('drawing1' + (psIdx + 1) + '.xml data');
|
|
@@ -1640,7 +1660,9 @@ module.exports = {
|
|
|
/*/
|
|
|
data = writeDrawingsRels(signKeyArr.length, relsImgAmt); // 一个drawingX.xml.rels文件与一个drawingX.xml对应
|
|
|
relsIdx++;
|
|
|
- relsImgAmt += signKeyArr.length;
|
|
|
+ if (isSinglePage) {
|
|
|
+ relsImgAmt += signKeyArr.length;
|
|
|
+ }
|
|
|
file = 'drawing' + relsIdx + '.xml.rels';
|
|
|
zip_drawings_rels.file(file, data.join(''), { compression: 'DEFLATE' });
|
|
|
// */
|
|
@@ -1853,8 +1875,9 @@ module.exports = {
|
|
|
// 3. everything is ok, then call me
|
|
|
// let roleRel = null; // 未来调用的时候,这个属性要从外面给!!!
|
|
|
// roleRelArr
|
|
|
+ // fsUtil.writeObjToFile(newPageData, 'D:/GitHome/temp/合并前Excel数据.js');
|
|
|
me.exportExcel(newPageData, paperSize, fName, 'false', sheetNames, custMergeBands, baseDir, roleRelArr, callback);
|
|
|
- // fsUtil.writeObjToFile(newPageData, 'D:/GitHome/ConstructionOperation/tmp/combinedHeader.js');
|
|
|
+ // fsUtil.writeObjToFile(newPageData, 'D:/GitHome/temp/合并后Excel数据.js');
|
|
|
} catch (e) {
|
|
|
console.log(e);
|
|
|
}
|