const reportFormatSetupObj = {
treeObj: null,
templateObj: {},
canvas: null,
fieldParamOptions: null,
maxFieldID: -1,
currentRptId: -1,
currentTopNode: '定制报表',
onCheck: (event, treeId, treeNode) => {
//
},
switchButtonEnables: (isSetupEnabled = true, isPermissionEnabled = false) => {
$('#btn_confirm_format_setup').attr("disabled", !isSetupEnabled);
$('#rpt_title_input').attr("disabled", !isSetupEnabled);
$("#add_user_dropdownMenuButton").attr('disabled', !isPermissionEnabled);
$("#apply_users_toOtherMenuButton")[0].style.display = !isPermissionEnabled ? 'none' : '';
},
onClick: (event,treeId,treeNode) => {
const me = reportFormatSetupObj;
if (treeNode.nodeType !== RT.NodeType.TEMPLATE) {
me.currentRptId = -1;
me.clearTplProperties();
const jDom = $("#report-permission-div");
jDom.empty();
me.switchButtonEnables(false, false);
return;
}
let pNode = treeNode;
while (pNode.level > 0) {
pNode = pNode.getParentNode();
}
me.currentTopNode = pNode.name;
me.currentRptId = treeNode.refId;
me.initialize(treeNode);
if (me.currentTopNode === '定制报表') {
me.switchButtonEnables(true, true);
} else {
me.switchButtonEnables(false, true);
me.clearTplProperties();
}
},
onDeleteInfo: (dom) => {
// 删除表眉、表脚项
// console.log(dom.parentElement.parentElement);
$(dom.parentElement.parentElement).remove();
},
onAddInfo: (dom, lv) => {
// 增加表眉、表脚细项
const me = reportFormatSetupObj;
const domStrs = [];
domStrs.push('
');
domStrs.push(' | ');
domStrs.push(`${me._createTypeSelection(0)} | `);
domStrs.push(` | `);
domStrs.push(` | `);
domStrs.push(` | `);
domStrs.push(` | `);
domStrs.push(` | `);
domStrs.push('删除 | ');
domStrs.push('
');
$(dom.parentElement.parentElement).after(domStrs.join(''));
},
onAddLvInfo: (dom) => {
// 增加表眉、表脚层次项
console.log(dom);
let maxCnt = 0;
// for (const td of dom.parentElement.parentElement.nextElementSibling.children[0].children[1].children) {
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]
const lvDtl = [];
lvDtl.push('');
lvDtl.push(`| ${maxCnt + 1} | `);
lvDtl.push(' | ');
lvDtl.push(' | ');
lvDtl.push(' | ');
lvDtl.push(' | ');
lvDtl.push(' | ');
lvDtl.push(' | ');
lvDtl.push('新增 | ');
lvDtl.push('
');
$(dom.parentElement.parentElement.parentElement.nextElementSibling.children[0].children[1]).append(lvDtl.join(''));
},
onTypeChange: (dom) => {
const me = reportFormatSetupObj;
console.log(dom);
// 根据新选项清理、初始化
if (dom.selectedIndex === 0) {
// 文本
$(dom.parentElement.nextSibling).html('');
dom.parentElement.nextSibling.nextSibling.nextSibling.nextSibling.children[0].value = '';
dom.parentElement.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling.children[0].value = '';
} else {
// 指标
const curNodes = me.treeObj.getSelectedNodes();
if (curNodes.length > 0) {
const rptTemplate = me.templateObj[`${curNodes[0].ID}`];
if (rptTemplate) {
$(dom.parentElement.nextSibling).html(`${me._createSelectionFields(-1, 5010)}`);
dom.parentElement.nextSibling.nextSibling.nextSibling.nextSibling.children[0].value = '';
dom.parentElement.nextSibling.nextSibling.nextSibling.nextSibling.nextSibling.children[0].value = '';
}
}
}
},
onAddSignature: (dom) => {
const me = reportFormatSetupObj;
if (me.currentRptId === -1) return;
me.maxFieldID++;
const newSignature = [];
newSignature.push('');
newSignature.push(``);
newSignature.push('');
newSignature.push('');
$(dom.parentElement).before(newSignature.join(''));
me.fieldParamOptions.fields_collection.push({ FID: me.maxFieldID, name: '' });
},
onSignNameChange: (dom) => {
const me = reportFormatSetupObj;
const fid = +dom.attributes[1].value;
for (const opt of me.fieldParamOptions.fields_collection) {
if (opt.FID === fid) {
opt.name = dom.value;
break;
}
}
},
onRemoveSignature: (dom) => {
$(dom.parentElement.parentElement).remove();
},
refreshFieldOptions: () => {
// 重新更新已存在页面的指标选择下拉项
},
initialize: (rptNode) => {
const me = reportFormatSetupObj;
me.canvas = document.getElementById("rptSetupPreviewCanvas");
// 1. 先清理
me.clearTplProperties();
// 2. 再加表标题、表眉、表脚、电子签名内容
const params = { rpt_tpl_id: rptNode.refId, tender_id: TENDER_ID };
const url = '/report_api/getReportTemplate';
$.bootstrapLoading.start();
CommonAjax.postXsrfEx(url, params, 300000, true, getCookie('csrfToken_j'),
async function(result){
console.log(result);
me.templateObj[`${rptNode.refId}`] = result.data;
if (result.data['主信息']['打印页面_信息']['方向'] === 'PORTRAIT') {
me.canvas.height = 1150;
me.canvas.width = 820;
} else {
me.canvas.height = 820;
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.maxFieldID = me._getTheMaxFieldID(result.data);
me.initialTitle(result.data);
me.initialHeader(result.data);
me.initialFooter(result.data);
me.initialSignature(result.data);
reportPermissionObj.permissions = result.permissions;
reportPermissionObj.iniReportPermission();
reportPermissionObj.updateSelectedMarks();
$.bootstrapLoading.end();
}, function(err){
console.log(err);
$.bootstrapLoading.end();
}, function(ex){
console.log(ex);
$.bootstrapLoading.end();
}
);
},
clearTplProperties: () => {
// 表眉
$("#rpt_header_div").empty();
// const str1 = '表眉
';
const str1Arr = [];
str1Arr.push('表眉');
str1Arr.push('
');
str1Arr.push('');
str1Arr.push('
默认行高: ');
str1Arr.push('
');
str1Arr.push('
新增行');
str1Arr.push('
');
str1Arr.push('
');
const str1 = str1Arr.join('');
$("#rpt_header_div").append(str1);
$("#rpt_header_table_div").empty();
// 表脚
$("#rpt_footer_div").empty();
// const str2 = '表脚
';
const str2Arr = [];
str2Arr.push('表脚');
str2Arr.push('
');
str2Arr.push('');
str2Arr.push('
默认行高: ');
str2Arr.push('
');
str2Arr.push('
新增行');
str2Arr.push('
');
str2Arr.push('
');
const str2 = str2Arr.join('');
$("#rpt_footer_div").append(str2);
$("#rpt_footer_table_div").empty();
// 表标题
$("#rpt_title_input")[0].value = '';
// 电子签名
// signature_ul_list
$("#signature_ul_list").empty();
$("#signature_ul_list").append(' 添加新签字人');
},
initialHeader: (rptTpl) => {
const me = reportFormatSetupObj;
const bandInfo = me._getRightBandInfoObj(me._getRightInfoObj(rptTpl), 'HeaderBand');
if (bandInfo) {
const posArr = me._checkLevelInfo(bandInfo);
const html = me._buildHeaderFooterHTML(rptTpl, bandInfo, posArr);
const actBand = rptTpl['布局框_集合'].find(band => band.Name === 'HeaderBand');
const dftRowHeight = +(actBand.Height || 0.6) / (posArr.length || 1);
$("#header_band_height_input")[0].value = dftRowHeight;
// console.log(html);
// $("#rpt_header_parent_div").empty();
$("#rpt_header_table_div").append(html.join(''));
// rpt_header_div
}
},
initialFooter: (rptTpl) => {
const me = reportFormatSetupObj;
const bandInfo = me._getRightBandInfoObj(me._getRightInfoObj(rptTpl), 'FooterBand');
if (bandInfo) {
const posArr = me._checkLevelInfo(bandInfo);
const html = me._buildHeaderFooterHTML(rptTpl, bandInfo, posArr);
const actBand = rptTpl['布局框_集合'].find(band => band.Name === 'FooterBand');
const dftRowHeight = +(actBand.Height || 0.6) / (posArr.length || 1);
$("#footer_band_height_input")[0].value = dftRowHeight;
// console.log(html);
// $("#rpt_header_parent_div").empty();
$("#rpt_footer_table_div").append(html.join(''));
// rpt_header_div
}
//
},
initialTitle: (rptTpl) => {
const me = reportFormatSetupObj;
$("#rpt_title_input")[0].value = me._getTitle(rptTpl);
const curNodes = me.treeObj.getSelectedNodes();
if (curNodes.length > 0) {
$("#rename_rpt_confirm")[0].innerText=`确认更新报表模板「${curNodes[0].name}」?`;
}
},
initialSignature: (rptTpl) => {
const jDom = $("#signature_li_list");
if (rptTpl['电子签名离散指标_集合'] && rptTpl['电子签名离散指标_集合'].length > 0) {
for (const disF of rptTpl['电子签名离散指标_集合']) {
const newSignature = [];
newSignature.push('');
newSignature.push(``);
newSignature.push('');
newSignature.push('');
jDom.before(newSignature.join(''));
}
}
},
_getTitle: (rptTpl) => {
const me = reportFormatSetupObj;
let rst = '';
const bandInfo = me._getRightBandInfoObj(me._getRightInfoObj(rptTpl), 'TitleBand');
if (bandInfo && bandInfo.text_s) {
const titleTxt = bandInfo.text_s.find(item => item.font === 'ReportTitle_Main');
if (titleTxt) {
rst = titleTxt.Label;
} else {
rst = bandInfo.text_s[0].Label;
}
}
return rst;
},
_setTitle: (rptTpl, newTitle) => {
const me = reportFormatSetupObj;
const bandInfo = me._getRightBandInfoObj(me._getRightInfoObj(rptTpl), 'TitleBand');
if (bandInfo && bandInfo.text_s) {
const titleTxt = bandInfo.text_s.find(item => item.font === 'ReportTitle_Main');
if (titleTxt) {
titleTxt.Label = newTitle;
} else {
bandInfo.text_s[0].Label = newTitle;
}
}
},
_getRightInfoObj: (rptTpl) => {
let rst = null;
if (rptTpl) {
if (rptTpl['流水式表_信息']) {
rst = rptTpl['流水式表_信息'];
} else if (rptTpl['账单式表_信息']) {
rst = rptTpl['账单式表_信息'];
} else if (rptTpl['交叉表_信息']) {
rst = rptTpl['交叉表_信息'];
}
}
return rst;
},
_getRightBandInfoObj: (infoObj, bandName) => {
let rst = null;
if (infoObj) {
for (let info of infoObj['离散信息']) {
if (info['BandName'] === bandName) {
rst = info;
break;
}
}
}
return rst;
},
_checkLevelInfo: (bandInfo) => {
let rst = [];
if (bandInfo) {
if (bandInfo.discrete_field_s) {
for (const field of bandInfo.discrete_field_s) {
const bt = +field.area.Bottom;
if (!rst.includes(bt)) rst.push(bt);
}
}
if (bandInfo.text_s) {
for (const txt of bandInfo.text_s) {
const bt = +txt.area.Bottom;
if (!rst.includes(bt)) rst.push(bt);
}
}
}
rst.sort((i1, i2) => {return i1 - i2});
return rst;
},
_createTypeSelection: (dftSelection = 0) => {
const rst = [];
rst.push('');
return rst.join('');
},
initialSelectionFields: (rptTpl) => {
// 这里统一收集可选指标范围(有默认范围 + 报表本身特别的指标)
const me = reportFormatSetupObj;
const rst = { fields_collection: [], params_collection: [] };
for (const param of rptTpl['离散参数_集合']) {
rst.params_collection.push({ PID: + param.ID, name: param.Name, dftValue: param.Default_Value || '' });
}
for (const fd of rptTpl['指标_数据_映射']['离散指标_集合']) {
rst.fields_collection.push({ FID: + fd.ID, name: fd.Name });
}
for (const fd of rptTpl['电子签名离散指标_集合']) {
rst.fields_collection.push({ FID: + fd.ID, name: fd.Name });
}
for (const param of rptTpl['动态日期离散参数_集合']) {
rst.params_collection.push({ PID: + param.ID, name: param.Name });
}
for (const param of rptTpl['电子签名审核意见指标_集合']) {
rst.params_collection.push({ PID: + param.ID, name: param.Name });
}
const collectAdhocFields = (hfBandInfo) => {
if (hfBandInfo && hfBandInfo.discrete_field_s) {
for (const field of hfBandInfo.discrete_field_s) {
if (!field.ParamID) {
const selField = rst.fields_collection.find(item => item.FID === +field.FieldID);
if (!selField) {
const ahocSelField = me._scanField(rptTpl, field.FieldID);
rst.fields_collection.push({ FID: +ahocSelField.ID, name: ahocSelField.Name });
}
}
}
}
};
const headerBandInfo = me._getRightBandInfoObj(me._getRightInfoObj(rptTpl), 'HeaderBand');
collectAdhocFields(headerBandInfo);
const footerBandInfo = me._getRightBandInfoObj(me._getRightInfoObj(rptTpl), 'FooterBand');
collectAdhocFields(footerBandInfo);
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) => {
const me = reportFormatSetupObj;
const rst = [];
let hasSelected = false;
rst.push('');
return rst.join('');
},
_createSelectionFields: (currentFieldID, ParamID) => {
const me = reportFormatSetupObj;
const rst = [];
let hasSelected = false;
rst.push('');
return rst.join('');
},
_scanField: (rptTpl, curFieldId) => {
let rst = null;
rst = rptTpl['无映射离散指标_集合'].find(item => item.ID === curFieldId);
if (!rst) rst = rptTpl['电子签名离散指标_集合'].find(item => `${item.ID}` === `${curFieldId}`);
if (!rst) rst = rptTpl['动态日期离散参数_集合'].find(item => `${item.ID}` === `${curFieldId}`);
if (!rst) rst = rptTpl['电子签名审核意见指标_集合'].find(item => `${item.ID}` === `${curFieldId}`);
if (!rst) rst = rptTpl['指标_数据_映射']['从数据指标_集合'].find(item => `${item.ID}` === `${curFieldId}`);
if (!rst) rst = rptTpl['指标_数据_映射']['主数据指标_集合'].find(item => `${item.ID}` === `${curFieldId}`);
return rst;
},
_buildHeaderFooterHTML: (rptTpl, hfBandInfo, posArr) => {
const me = reportFormatSetupObj;
const rst = [];
if (hfBandInfo && posArr.length > 0) {
// 1. 增加一些必要html
rst.push(' ')
}
return rst;
},
updateReportTemplate: () => {
const me = reportFormatSetupObj;
const rptTemplate = me._prepareReportTemplate();
const curNodes = me.treeObj.getSelectedNodes();
if (rptTemplate && curNodes.length > 0) {
const params = { tplId: curNodes[0].ID, tplName: curNodes[0].name, tplObj: JSON.stringify(rptTemplate) };
const url = '/report_api/updateReportTemplate';
$.bootstrapLoading.start();
CommonAjax.postXsrfEx(url, params, 300000, true, getCookie('csrfToken_j'),
async function(result){
console.log(result);
$.bootstrapLoading.end();
}, function(err){
console.log(err);
$.bootstrapLoading.end();
}, function(ex){
console.log(ex);
$.bootstrapLoading.end();
}
);
}
},
preview: () => {
// alert('hi');
const me = reportFormatSetupObj;
const rptTemplate = me._prepareReportTemplate();
if (rptTemplate) {
const params = { tplObj: JSON.stringify(rptTemplate) };
const url = '/report_api/getPreviewReport';
$.bootstrapLoading.start();
CommonAjax.postXsrfEx(url, params, 300000, true, getCookie('csrfToken_j'),
async function(result){
// console.log(result);
JpcCanvasOutput.cleanCanvas(me.canvas);
JpcCanvasOutput.drawPageBorder(result.pageRst, me.canvas, getScreenDPI());
JpcCanvasOutput.highlightConflictArea(result.pageRst, 1);
JpcCanvasOutput.drawToCanvas(result.pageRst, me.canvas, 1);
$.bootstrapLoading.end();
}, function(err){
console.log(err);
$.bootstrapLoading.end();
}, function(ex){
console.log(ex);
$.bootstrapLoading.end();
}
);
}
},
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('');
}
$("#dummy_sign_preview").append(signs.join(''));
},
_prepareReportTemplate: () => {
let rst = null;
const me = reportFormatSetupObj;
const curNodes = me.treeObj.getSelectedNodes();
if (curNodes.length > 0) {
const headers = me._createCommonCollctInfo('#rpt_header_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}`];
if (rptTemplate) {
me._setupTemplate(rptTemplate, headers, footers, signatures);
rst = rptTemplate;
}
}
return rst;
},
_createCommonCollctInfo: (containerId) => {
let lvCnt = 0;
const rst = { texts: [], fields: [], levels: 0 };
const createAreaFromDom = (firstDom, lv) => {
const rst = { Top: lv, Left: 0, Right: 0, Bottom: lv + 1, H_CalculationType: "percentage", V_CalculationType: "percentage" };
rst.Left = firstDom.cells[3].childNodes[0].value || 0;
rst.Right = firstDom.cells[4].childNodes[0].value || 0;
return rst;
};
const ParamDftValMap = { '5010': '第 X 页', '5011': '共 X 页' };
const domObj = $(containerId);
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 {
let pid = +fIdOpt.attributes[fIdOpt.attributes.length - 1].nodeValue;
if ([5001, 5010, 5011].includes(pid)) {
pid = `${pid}`;
}
fieldObj.ParamID = pid;
fieldObj.Default_Value = ParamDftValMap[fieldObj.ParamID] || '';
}
break;
}
}
rst.fields.push(fieldObj);
}
} else {
break;
}
}
if (dtlCnt > 0) lvCnt++; // 有子项的才会被统计进来
// lvCnt++; // 不能无条件的统计增加层次
}
}
}
if (lvCnt > 0) {
// 所有rst的text、field的纵坐标都要重新整理一遍
rst.levels = lvCnt;
const lvH = +(100 / lvCnt).toFixed(3);
for (const txt of rst.texts) {
txt.area.Top = lvH * txt.area.Top;
txt.area.Bottom = lvH * txt.area.Bottom;
}
for (const fld of rst.fields) {
fld.area.Top = lvH * fld.area.Top;
fld.area.Bottom = lvH * fld.area.Bottom;
}
}
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) => {
const me = reportFormatSetupObj;
me._setTitle(rptTpl, $("#rpt_title_input")[0].value);
const headerBandInfo = me._getRightBandInfoObj(me._getRightInfoObj(rptTpl), 'HeaderBand');
if (headerBandInfo) {
const headerBand = rptTpl['布局框_集合'].find(item => item.Name === 'HeaderBand');
// 1. 高度
if (headerBand) {
let dftHeight = $("#header_band_height_input")[0].value || 0.6;
if (dftHeight === '') dftHeight = 0.6;
headerBand.Height = dftHeight * headersInfo.levels;
}
// 2.
headerBandInfo.text_s = headersInfo.texts;
headerBandInfo.discrete_field_s = headersInfo.fields;
}
const footerBandInfo = me._getRightBandInfoObj(me._getRightInfoObj(rptTpl), 'FooterBand');
if (footerBandInfo) {
const footerBand = rptTpl['布局框_集合'].find(item => item.Name === 'FooterBand');
// 1. 高度
if (footerBand) {
let dftHeight = $("#footer_band_height_input")[0].value || 1;
if (dftHeight === '') dftHeight = 1; // 计量的表脚默认高度给1(签名缘故)
footerBand.Height = dftHeight * footersInfo.levels;
}
// 2.
footerBandInfo.text_s = footersInfo.texts;
footerBandInfo.discrete_field_s = footersInfo.fields;
}
if (signatureInfo && signatureInfo.length === 3) {
rptTpl['电子签名离散指标_集合'] = signatureInfo[0];
rptTpl['动态日期离散参数_集合'] = signatureInfo[1];
rptTpl['电子签名审核意见指标_集合'] = signatureInfo[2];
}
},
};
const reportPermissionObj = {
permissions: [],
selectedIdsArray: [],
treeObj: null,
iniReportPermission: () => {
const me = reportPermissionObj;
const jDom = $("#report-permission-div");
jDom.empty();
const permissionsHtml = [];
permissionsHtml.push('');
permissionsHtml.push('');
permissionsHtml.push('');
permissionsHtml.push('| 用户 | ');
permissionsHtml.push('职位/角色 | ');
permissionsHtml.push('添加时间 | ');
permissionsHtml.push('操作 | ');
permissionsHtml.push('
');
permissionsHtml.push('');
permissionsHtml.push('');
// ...内容
me.selectedIdsArray.splice(0, me.selectedIdsArray.length);
me.permissions.forEach((permission) => {
const id = parseInt(permission.user_id);
if (reportFormatSetupObj.currentRptId === permission.rpt_id && !me.selectedIdsArray.includes(id)) me.selectedIdsArray.push(id);
});
const permissionStrs = [];
me.permissions.forEach(permission => {
if (permission.rpt_id === reportFormatSetupObj.currentRptId) {
permissionStrs.push(me.createPermissionTbStr(permission));
}
});
if (permissionStrs.length > 0) permissionsHtml.push(permissionStrs.join(''));
permissionsHtml.push('');
permissionsHtml.push('
');
jDom.append(permissionsHtml.join(''));
},
beforeRemove: (dom, user_id) => {
$('#remove_user_id').val(user_id);
},
removeUser: (dom) => {
const me = reportPermissionObj;
const curNodes = reportFormatSetupObj.treeObj.getSelectedNodes();
if (curNodes.length > 0) {
const id = parseInt($('#remove_user_id').val());
const params = { user_id: id, rpt_id: curNodes[0].ID, tid: TENDER_ID };
const url = '/report_api/removeReportPermission';
$.bootstrapLoading.start();
CommonAjax.postXsrfEx(url, params, 300000, true, getCookie('csrfToken_j'),
async function(result){
console.log(result);
$.bootstrapLoading.end();
// after remove
const uId = me.selectedIdsArray.indexOf(id);
if (uId >= 0) {
me.selectedIdsArray.splice(uId, 1);
}
for (let idx = me.permissions.length - 1; idx >= 0; idx--) {
if (parseInt(me.permissions[idx].user_id) === id) {
me.permissions.splice(idx, 1);
break;
}
}
me.iniReportPermission();
}, function(err){
console.log(err);
$.bootstrapLoading.end();
}, function(ex){
console.log(ex);
$.bootstrapLoading.end();
}
);
}
},
createPermissionTbStr: (permission) => {
const rstArr = [];
rstArr.push('');
rstArr.push(`| ${permission.user_name || permission.name} | `);
rstArr.push(`${permission.user_role || permission.role} | `);
rstArr.push(`${(new Date(permission.create_time)).Format('yyyy-MM-dd hh:mm:ss')} | `);
rstArr.push(`移除 | `);
rstArr.push('
');
return rstArr.join('');
},
addUser: (userId) => {
const me = reportPermissionObj;
let b = false;
for (let grp of ACCOUNT_LIST) {
for (let user of grp.groupList) {
if (user.id === userId) {
b = true;
const newPermission = { tid: TENDER_ID, user_id: userId, rpt_id: reportFormatSetupObj.currentRptId, name: user.name, role: user.role, create_time: new Date() };
me.permissions.push(newPermission);
// me.createPermissionTbStr(user);
me.iniReportPermission();
break;
}
}
if (b) break;
}
},
updateSelectedMarks: (userId = null) => {
// 此方法是更新下拉菜单的勾选符号(根据permissions列表)
const me = reportPermissionObj;
// const selectedIdsArray = [];
// if (userId) selectedIdsArray.push(userId);
if ($('#format-setup-add-user .book-list').length > 0) {
$('.user-item').each(function() {
const userIdStr = $(this).data('id');
const userId = parseInt(userIdStr, 10);
const $mark = $(this).find('.selected-mark');
if (!isNaN(userId) && me.selectedIdsArray.includes(userId)) {
$mark.show();
$(this).addClass('bg-light');
} else {
$mark.hide();
$(this).removeClass('bg-light');
}
});
}
//
},
iniPermissionRpts: () => {
const me = reportPermissionObj;
if (!me.treeObj) {
zTreeHelper.createTreeDirectly(INDI_TOP_TREE_NODES, rpt_permission_setting, "rptFormatSetupTplTree2", reportPermissionObj);
refreshNodes(reportPermissionObj);
}
},
batchApplyPermissions: () => {
const me = reportPermissionObj;
// 1. 收集用户列表
const userIds = [];
me.permissions.forEach(permission => {
if (permission.rpt_id === reportFormatSetupObj.currentRptId) {
userIds.push(permission.user_id);
}
});
// 2. 收集报表模板列表
const rptIds = [];
const curNodes = me.treeObj.getCheckedNodes(true);
// if (treeNode.nodeType === RT.NodeType.TEMPLATE) {
curNodes.forEach(node => {
if (node.nodeType === RT.NodeType.TEMPLATE && reportFormatSetupObj.currentRptId !== node.ID) rptIds.push(node.ID);
});
if (userIds.length > 0 && rptIds.length > 0) {
const params = { tid: TENDER_ID, userIds, rptIds };
const url = '/report_api/batchApplyReportPermission';
$.bootstrapLoading.start();
CommonAjax.postXsrfEx(url, params, 300000, true, getCookie('csrfToken_j'),
async function(result){
console.log(result);
$.bootstrapLoading.end();
}, function(err){
console.log(err);
$.bootstrapLoading.end();
}, function(ex){
console.log(ex);
$.bootstrapLoading.end();
}
);
}
},
};
const rpt_format_setting = {
view: {
selectedMulti: false
},
check: {
enable: true
},
data: {
keep: {
parent:true,
leaf:true
},
key: {
children: "items",
title: "title",
isHidden: "hidden"
},
simpleData: {
enable: true,
rootPId: -1
}
},
callback: {
onCheck: reportFormatSetupObj.onCheck,
onClick: reportFormatSetupObj.onClick
}
};
const rpt_permission_setting = {
view: {
selectedMulti: false
},
check: {
enable: true
},
data: {
keep: {
parent:true,
leaf:true
},
key: {
children: "items",
title: "title",
isHidden: "hidden"
},
simpleData: {
enable: true,
rootPId: -1
}
},
callback: {
// onCheck: reportFormatSetupObj.onCheck,
// onClick: reportFormatSetupObj.onClick
}
};