|
@@ -3,6 +3,7 @@ const reportFormatSetupObj = {
|
|
|
templateObj: {},
|
|
templateObj: {},
|
|
|
canvas: null,
|
|
canvas: null,
|
|
|
fieldParamOptions: null,
|
|
fieldParamOptions: null,
|
|
|
|
|
+ maxFieldID: -1,
|
|
|
onCheck: (event, treeId, treeNode) => {
|
|
onCheck: (event, treeId, treeNode) => {
|
|
|
//
|
|
//
|
|
|
},
|
|
},
|
|
@@ -38,10 +39,12 @@ const reportFormatSetupObj = {
|
|
|
console.log(dom);
|
|
console.log(dom);
|
|
|
let maxCnt = 0;
|
|
let maxCnt = 0;
|
|
|
// for (const td of dom.parentElement.parentElement.nextElementSibling.children[0].children[1].children) {
|
|
// for (const td of dom.parentElement.parentElement.nextElementSibling.children[0].children[1].children) {
|
|
|
- for (const td of dom.parentElement.parentElement.parentElement.nextElementSibling.children[0].children[1].children) {
|
|
|
|
|
- if (td.cells[0].innerText !== '') {
|
|
|
|
|
- const lv = parseInt(td.cells[0].innerText) || 0;
|
|
|
|
|
- if (lv > maxCnt) maxCnt = lv;
|
|
|
|
|
|
|
+ if (dom.parentElement.parentElement.parentElement.nextElementSibling.children.length > 0) {
|
|
|
|
|
+ for (const td of dom.parentElement.parentElement.parentElement.nextElementSibling.children[0].children[1].children) {
|
|
|
|
|
+ if (td.cells[0].innerText !== '') {
|
|
|
|
|
+ const lv = parseInt(td.cells[0].innerText) || 0;
|
|
|
|
|
+ if (lv > maxCnt) maxCnt = lv;
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
// dom.parentElement.parentElement.nextElementSibling.children[0].children[1]
|
|
// dom.parentElement.parentElement.nextElementSibling.children[0].children[1]
|
|
@@ -80,6 +83,19 @@ const reportFormatSetupObj = {
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
|
|
+ onAddSignature: (dom) => {
|
|
|
|
|
+ const me = reportFormatSetupObj;
|
|
|
|
|
+ me.maxFieldID++;
|
|
|
|
|
+ const newSignature = [];
|
|
|
|
|
+ newSignature.push('<li class="d-flex justify-content-start align-items-center mb-3">');
|
|
|
|
|
+ newSignature.push(`<span class="col-auto"><input class="form-control form-control-sm" FID="${me.maxFieldID}" value="" type="text"></span>`);
|
|
|
|
|
+ newSignature.push('<span><a href="#" onclick="reportFormatSetupObj.onRemoveSignature(this)" class="btn-sm text-danger px-1" title="移除"><i class="fa fa-remove"></i></a></span>');
|
|
|
|
|
+ newSignature.push('</li>');
|
|
|
|
|
+ $(dom.parentElement).before(newSignature.join(''));
|
|
|
|
|
+ },
|
|
|
|
|
+ onRemoveSignature: (dom) => {
|
|
|
|
|
+ $(dom.parentElement.parentElement).remove();
|
|
|
|
|
+ },
|
|
|
initialize: (rptNode) => {
|
|
initialize: (rptNode) => {
|
|
|
const me = reportFormatSetupObj;
|
|
const me = reportFormatSetupObj;
|
|
|
me.canvas = document.getElementById("rptSetupPreviewCanvas");
|
|
me.canvas = document.getElementById("rptSetupPreviewCanvas");
|
|
@@ -100,7 +116,12 @@ const reportFormatSetupObj = {
|
|
|
me.canvas.height = 820;
|
|
me.canvas.height = 820;
|
|
|
me.canvas.width = 1150;
|
|
me.canvas.width = 1150;
|
|
|
}
|
|
}
|
|
|
|
|
+ if (result.data['主信息']['打印页面_信息']['页规格'] === 'A3') {
|
|
|
|
|
+ me.canvas.height = me.canvas.height * 1.414;
|
|
|
|
|
+ me.canvas.width = me.canvas.width * 1.414;
|
|
|
|
|
+ }
|
|
|
me.fieldParamOptions = me.initialSelectionFields(result.data);
|
|
me.fieldParamOptions = me.initialSelectionFields(result.data);
|
|
|
|
|
+ me.maxFieldID = me._getTheMaxFieldID(result.data);
|
|
|
me.initialTitle(result.data);
|
|
me.initialTitle(result.data);
|
|
|
me.initialHeader(result.data);
|
|
me.initialHeader(result.data);
|
|
|
me.initialFooter(result.data);
|
|
me.initialFooter(result.data);
|
|
@@ -148,6 +169,10 @@ const reportFormatSetupObj = {
|
|
|
$("#rpt_footer_table_div").empty();
|
|
$("#rpt_footer_table_div").empty();
|
|
|
// 表标题
|
|
// 表标题
|
|
|
$("#rpt_title_input")[0].value = '';
|
|
$("#rpt_title_input")[0].value = '';
|
|
|
|
|
+ // 电子签名
|
|
|
|
|
+ // signature_ul_list
|
|
|
|
|
+ $("#signature_ul_list").empty();
|
|
|
|
|
+ $("#signature_ul_list").append('<li class="pl-3" id="signature_li_list"><a href="#" onclick="reportFormatSetupObj.onAddSignature(this)"><i class="fa fa-plus"></i> 添加新签字人</a></li>');
|
|
|
},
|
|
},
|
|
|
initialHeader: (rptTpl) => {
|
|
initialHeader: (rptTpl) => {
|
|
|
const me = reportFormatSetupObj;
|
|
const me = reportFormatSetupObj;
|
|
@@ -189,7 +214,17 @@ const reportFormatSetupObj = {
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
initialSignature: (rptTpl) => {
|
|
initialSignature: (rptTpl) => {
|
|
|
- //
|
|
|
|
|
|
|
+ const jDom = $("#signature_li_list");
|
|
|
|
|
+ if (rptTpl['电子签名离散指标_集合'] && rptTpl['电子签名离散指标_集合'].length > 0) {
|
|
|
|
|
+ for (const disF of rptTpl['电子签名离散指标_集合']) {
|
|
|
|
|
+ const newSignature = [];
|
|
|
|
|
+ newSignature.push('<li class="d-flex justify-content-start align-items-center mb-3">');
|
|
|
|
|
+ newSignature.push(`<span class="col-auto"><input class="form-control form-control-sm" FID="${disF.ID}" value="${disF.Name}" type="text"></span>`);
|
|
|
|
|
+ newSignature.push('<span><a href="#" onclick="reportFormatSetupObj.onRemoveSignature(this)" class="btn-sm text-danger px-1" title="移除"><i class="fa fa-remove"></i></a></span>');
|
|
|
|
|
+ newSignature.push('</li>');
|
|
|
|
|
+ jDom.before(newSignature.join(''));
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
},
|
|
},
|
|
|
_getTitle: (rptTpl) => {
|
|
_getTitle: (rptTpl) => {
|
|
|
const me = reportFormatSetupObj;
|
|
const me = reportFormatSetupObj;
|
|
@@ -297,6 +332,30 @@ const reportFormatSetupObj = {
|
|
|
collectAdhocFields(footerBandInfo);
|
|
collectAdhocFields(footerBandInfo);
|
|
|
return rst;
|
|
return rst;
|
|
|
},
|
|
},
|
|
|
|
|
+ _getTheMaxFieldID: (rptTpl) => {
|
|
|
|
|
+ let rst = -1;
|
|
|
|
|
+ if (rptTpl['无映射离散指标_集合'] && rptTpl['无映射离散指标_集合'].length > 0) {
|
|
|
|
|
+ rptTpl['无映射离散指标_集合'].forEach((disF) => {
|
|
|
|
|
+ if (+(disF.ID || -1) > rst) rst = +disF.ID;
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ if (rptTpl['电子签名离散指标_集合'] && rptTpl['电子签名离散指标_集合'].length > 0) {
|
|
|
|
|
+ rptTpl['电子签名离散指标_集合'].forEach((disF) => {
|
|
|
|
|
+ if (+(disF.ID || -1) > rst) rst = +disF.ID;
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ if (rptTpl['动态日期离散参数_集合'] && rptTpl['动态日期离散参数_集合'].length > 0) {
|
|
|
|
|
+ rptTpl['动态日期离散参数_集合'].forEach((disF) => {
|
|
|
|
|
+ if (+(disF.ID || -1) > rst) rst = +disF.ID;
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ if (rptTpl['电子签名审核意见指标_集合'] && rptTpl['电子签名审核意见指标_集合'].length > 0) {
|
|
|
|
|
+ rptTpl['电子签名审核意见指标_集合'].forEach((disF) => {
|
|
|
|
|
+ if (+(disF.ID || -1) > rst) rst = +disF.ID;
|
|
|
|
|
+ });
|
|
|
|
|
+ }
|
|
|
|
|
+ return rst;
|
|
|
|
|
+ },
|
|
|
_createSelectionFields_BK: (rptTpl, currentFieldID, ParamID) => {
|
|
_createSelectionFields_BK: (rptTpl, currentFieldID, ParamID) => {
|
|
|
const me = reportFormatSetupObj;
|
|
const me = reportFormatSetupObj;
|
|
|
const rst = [];
|
|
const rst = [];
|
|
@@ -486,6 +545,24 @@ const reportFormatSetupObj = {
|
|
|
);
|
|
);
|
|
|
}
|
|
}
|
|
|
},
|
|
},
|
|
|
|
|
+ previewSign: () => {
|
|
|
|
|
+ const me = reportFormatSetupObj;
|
|
|
|
|
+ $("#dummy_sign_preview").empty();
|
|
|
|
|
+ const signs = [];
|
|
|
|
|
+ const domObj = $("#signature_ul_list")[0];
|
|
|
|
|
+ for (let dIdx = 0; dIdx < domObj.children.length - 1; dIdx++) {
|
|
|
|
|
+ const signName = domObj.children[dIdx].children[0].children[0].value; // 电子签名名称
|
|
|
|
|
+ signs.push('<div class="form-group row">');
|
|
|
|
|
+ signs.push(`<label for="staticEmail" class="col-sm-3 col-form-label pr-0">${signName || ''}</label>`);
|
|
|
|
|
+ signs.push('<div class="col-sm-9">');
|
|
|
|
|
+ signs.push('<ul class="list-group">');
|
|
|
|
|
+ signs.push('<li class="list-group-item"><a class="text-muted"><i class="fa fa-plus"></i> 添加签字</a></li>');
|
|
|
|
|
+ signs.push('</ul>');
|
|
|
|
|
+ signs.push('</div>');
|
|
|
|
|
+ signs.push('</div>');
|
|
|
|
|
+ }
|
|
|
|
|
+ $("#dummy_sign_preview").append(signs.join(''));
|
|
|
|
|
+ },
|
|
|
_prepareReportTemplate: () => {
|
|
_prepareReportTemplate: () => {
|
|
|
let rst = null;
|
|
let rst = null;
|
|
|
const me = reportFormatSetupObj;
|
|
const me = reportFormatSetupObj;
|
|
@@ -493,9 +570,10 @@ const reportFormatSetupObj = {
|
|
|
if (curNodes.length > 0) {
|
|
if (curNodes.length > 0) {
|
|
|
const headers = me._createCommonCollctInfo('#rpt_header_table_div');
|
|
const headers = me._createCommonCollctInfo('#rpt_header_table_div');
|
|
|
const footers = me._createCommonCollctInfo('#rpt_footer_table_div');
|
|
const footers = me._createCommonCollctInfo('#rpt_footer_table_div');
|
|
|
|
|
+ const signatures = me._createSignatureInfo(me.templateObj[`${curNodes[0].ID}`]);
|
|
|
const rptTemplate = me.templateObj[`${curNodes[0].ID}`];
|
|
const rptTemplate = me.templateObj[`${curNodes[0].ID}`];
|
|
|
if (rptTemplate) {
|
|
if (rptTemplate) {
|
|
|
- me._setupTemplate(rptTemplate, headers, footers, null);
|
|
|
|
|
|
|
+ me._setupTemplate(rptTemplate, headers, footers, signatures);
|
|
|
rst = rptTemplate;
|
|
rst = rptTemplate;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
@@ -512,46 +590,48 @@ const reportFormatSetupObj = {
|
|
|
};
|
|
};
|
|
|
const ParamDftValMap = { '5010': '第 X 页', '5011': '共 X 页' };
|
|
const ParamDftValMap = { '5010': '第 X 页', '5011': '共 X 页' };
|
|
|
const domObj = $(containerId);
|
|
const domObj = $(containerId);
|
|
|
- for (let idx = 0; idx < domObj[0].childNodes[1].childNodes[3].childNodes.length; idx++) {
|
|
|
|
|
- const hDom = domObj[0].childNodes[1].childNodes[3].childNodes[idx];
|
|
|
|
|
- if (hDom.innerText && hDom.innerText.includes('新增')) {
|
|
|
|
|
- let dtlCnt = 0;
|
|
|
|
|
- for (let idxN = idx + 1; idxN < domObj[0].childNodes[1].childNodes[3].childNodes.length; idxN++) {
|
|
|
|
|
- // 开始创建文本对象或指标对象
|
|
|
|
|
- const hnDom = domObj[0].childNodes[1].childNodes[3].childNodes[idxN];
|
|
|
|
|
- if (hnDom.innerText && !hnDom.innerText.includes('新增')) {
|
|
|
|
|
- dtlCnt++;
|
|
|
|
|
- const areaObj = createAreaFromDom(hnDom, lvCnt);
|
|
|
|
|
- if (hnDom.cells[1].childNodes[0][0].selected) {
|
|
|
|
|
- // 创建文本对象
|
|
|
|
|
- const txtObj = { area: areaObj, font: 'Header', control: 'Header', style: 'Default_None', Label: ''};
|
|
|
|
|
- txtObj.Label = hnDom.cells[2].childNodes[0].value || '';
|
|
|
|
|
- rst.texts.push(txtObj);
|
|
|
|
|
- } else {
|
|
|
|
|
- // 创建指标对象
|
|
|
|
|
- const fieldObj = { area: areaObj, font: 'Header', control: 'Header', style: 'Default_None', Prefix: '', Suffix: ''};
|
|
|
|
|
- fieldObj.Prefix = hnDom.cells[5].childNodes[0].value || '';
|
|
|
|
|
- fieldObj.Suffix = hnDom.cells[6].childNodes[0].value || '';
|
|
|
|
|
- for (const fIdOpt of hnDom.cells[2].childNodes[0]) {
|
|
|
|
|
- if (fIdOpt.selected) {
|
|
|
|
|
- if (fIdOpt.attributes['fid']) {
|
|
|
|
|
- fieldObj.FieldID = +fIdOpt.attributes[fIdOpt.attributes.length - 1].nodeValue;
|
|
|
|
|
- } else {
|
|
|
|
|
- fieldObj.ParamID = fIdOpt.attributes[fIdOpt.attributes.length - 1].nodeValue;
|
|
|
|
|
- fieldObj.Default_Value = ParamDftValMap[fieldObj.ParamID] || '';
|
|
|
|
|
|
|
+ if (domObj[0].childNodes.length > 0) {
|
|
|
|
|
+ for (let idx = 0; idx < domObj[0].childNodes[1].childNodes[3].childNodes.length; idx++) {
|
|
|
|
|
+ const hDom = domObj[0].childNodes[1].childNodes[3].childNodes[idx];
|
|
|
|
|
+ if (hDom.innerText && hDom.innerText.includes('新增')) {
|
|
|
|
|
+ let dtlCnt = 0;
|
|
|
|
|
+ for (let idxN = idx + 1; idxN < domObj[0].childNodes[1].childNodes[3].childNodes.length; idxN++) {
|
|
|
|
|
+ // 开始创建文本对象或指标对象
|
|
|
|
|
+ const hnDom = domObj[0].childNodes[1].childNodes[3].childNodes[idxN];
|
|
|
|
|
+ if (hnDom.innerText && !hnDom.innerText.includes('新增')) {
|
|
|
|
|
+ dtlCnt++;
|
|
|
|
|
+ const areaObj = createAreaFromDom(hnDom, lvCnt);
|
|
|
|
|
+ if (hnDom.cells[1].childNodes[0][0].selected) {
|
|
|
|
|
+ // 创建文本对象
|
|
|
|
|
+ const txtObj = { area: areaObj, font: 'Header', control: 'Header', style: 'Default_None', Label: ''};
|
|
|
|
|
+ txtObj.Label = hnDom.cells[2].childNodes[0].value || '';
|
|
|
|
|
+ rst.texts.push(txtObj);
|
|
|
|
|
+ } else {
|
|
|
|
|
+ // 创建指标对象
|
|
|
|
|
+ const fieldObj = { area: areaObj, font: 'Header', control: 'Header', style: 'Default_None', Prefix: '', Suffix: ''};
|
|
|
|
|
+ fieldObj.Prefix = hnDom.cells[5].childNodes[0].value || '';
|
|
|
|
|
+ fieldObj.Suffix = hnDom.cells[6].childNodes[0].value || '';
|
|
|
|
|
+ for (const fIdOpt of hnDom.cells[2].childNodes[0]) {
|
|
|
|
|
+ if (fIdOpt.selected) {
|
|
|
|
|
+ if (fIdOpt.attributes['fid']) {
|
|
|
|
|
+ fieldObj.FieldID = +fIdOpt.attributes[fIdOpt.attributes.length - 1].nodeValue;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ fieldObj.ParamID = fIdOpt.attributes[fIdOpt.attributes.length - 1].nodeValue;
|
|
|
|
|
+ fieldObj.Default_Value = ParamDftValMap[fieldObj.ParamID] || '';
|
|
|
|
|
+ }
|
|
|
|
|
+ break;
|
|
|
}
|
|
}
|
|
|
- break;
|
|
|
|
|
}
|
|
}
|
|
|
|
|
+ rst.fields.push(fieldObj);
|
|
|
}
|
|
}
|
|
|
- rst.fields.push(fieldObj);
|
|
|
|
|
|
|
+ } else {
|
|
|
|
|
+ break;
|
|
|
}
|
|
}
|
|
|
- } else {
|
|
|
|
|
- break;
|
|
|
|
|
}
|
|
}
|
|
|
|
|
+ if (dtlCnt > 0) lvCnt++; // 有子项的才会被统计进来
|
|
|
|
|
+
|
|
|
|
|
+ // lvCnt++; // 不能无条件的统计增加层次
|
|
|
}
|
|
}
|
|
|
- if (dtlCnt > 0) lvCnt++; // 有子项的才会被统计进来
|
|
|
|
|
-
|
|
|
|
|
- // lvCnt++; // 不能无条件的统计增加层次
|
|
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
if (lvCnt > 0) {
|
|
if (lvCnt > 0) {
|
|
@@ -569,6 +649,39 @@ const reportFormatSetupObj = {
|
|
|
}
|
|
}
|
|
|
return rst;
|
|
return rst;
|
|
|
},
|
|
},
|
|
|
|
|
+ _createSignatureInfo: (rptTpl) => {
|
|
|
|
|
+ const me = reportFormatSetupObj;
|
|
|
|
|
+ const rst = [[], [], []]; // 电子签名、日期、审核意见 三件套
|
|
|
|
|
+ const domObj = $("#signature_ul_list")[0];
|
|
|
|
|
+ const createReplaceField = (fid, name) => {
|
|
|
|
|
+ return { ID: +fid, Name: name, DataType: 'string', Default_Value: '' };
|
|
|
|
|
+ };
|
|
|
|
|
+ for (let dIdx = 0; dIdx < domObj.children.length - 1; dIdx++) {
|
|
|
|
|
+ const signName = domObj.children[dIdx].children[0].children[0].value; // 电子签名名称
|
|
|
|
|
+ const signFId = +domObj.children[dIdx].children[0].children[0].attributes[1].value; // 指标ID
|
|
|
|
|
+ rst[0].push(createReplaceField(signFId, signName));
|
|
|
|
|
+
|
|
|
|
|
+ let dftFieldID = 0;
|
|
|
|
|
+ const assField1 = rptTpl['动态日期离散参数_集合'].find(disF => disF.Name === signName + '_签字日期')
|
|
|
|
|
+ if (!assField1) {
|
|
|
|
|
+ me.maxFieldID++;
|
|
|
|
|
+ dftFieldID = me.maxFieldID;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ dftFieldID = +assField1.ID;
|
|
|
|
|
+ }
|
|
|
|
|
+ rst[1].push(createReplaceField(dftFieldID, signName + '_签字日期'));
|
|
|
|
|
+
|
|
|
|
|
+ const assField2 = rptTpl['电子签名审核意见指标_集合'].find(disF => disF.Name === signName + '_审核意见')
|
|
|
|
|
+ if (!assField2) {
|
|
|
|
|
+ me.maxFieldID++;
|
|
|
|
|
+ dftFieldID = me.maxFieldID;
|
|
|
|
|
+ } else {
|
|
|
|
|
+ dftFieldID = +assField2.ID;
|
|
|
|
|
+ }
|
|
|
|
|
+ rst[2].push(createReplaceField(dftFieldID, signName + '_审核意见'));
|
|
|
|
|
+ }
|
|
|
|
|
+ return rst;
|
|
|
|
|
+ },
|
|
|
_setupTemplate: (rptTpl, headersInfo, footersInfo, signatureInfo = null) => {
|
|
_setupTemplate: (rptTpl, headersInfo, footersInfo, signatureInfo = null) => {
|
|
|
const me = reportFormatSetupObj;
|
|
const me = reportFormatSetupObj;
|
|
|
me._setTitle(rptTpl, $("#rpt_title_input")[0].value);
|
|
me._setTitle(rptTpl, $("#rpt_title_input")[0].value);
|
|
@@ -598,5 +711,10 @@ const reportFormatSetupObj = {
|
|
|
footerBandInfo.text_s = footersInfo.texts;
|
|
footerBandInfo.text_s = footersInfo.texts;
|
|
|
footerBandInfo.discrete_field_s = footersInfo.fields;
|
|
footerBandInfo.discrete_field_s = footersInfo.fields;
|
|
|
}
|
|
}
|
|
|
|
|
+ if (signatureInfo && signatureInfo.length === 3) {
|
|
|
|
|
+ rptTpl['电子签名离散指标_集合'] = signatureInfo[0];
|
|
|
|
|
+ rptTpl['动态日期离散参数_集合'] = signatureInfo[1];
|
|
|
|
|
+ rptTpl['电子签名审核意见指标_集合'] = signatureInfo[2];
|
|
|
|
|
+ }
|
|
|
},
|
|
},
|
|
|
};
|
|
};
|