import {BirtDesignRender} from "zhc-birt-core";
// import BirtDesignRender from "@birt/components/Birt/DesignRender/BirtDesignRender";
export default {
data() {
return {
designRender: []
};
},
computed: {
renderType() {
return (this.conf && this.conf.renderType) || "pages";
},
// sheets() {
// let sheets = [];
// this.conf.children.forEach((child) => {
// if (child.controlName.indexOf("Sheet") != -1) {
// sheets.push(child);
// }
// });
// return sheets;
// },
curtSheet() {
let sheets = this.getSheets();
if (sheets.length > 0) {
let pageCount = 0;
for (var i = 0, l = sheets.length; i < l; i++) {
let curtSht = sheets[i];
pageCount += this.getSheetPageCount(curtSht);
if (this.curtPageIndex < pageCount) {
this._initDataSets(curtSht.dataSets);
if (this.isRenderSheet(curtSht)) {
return curtSht;
} else {
return this.loadDesignSheet(curtSht, i, pageCount - 1);
}
}
}
}
return {};
},
},
methods: {
// 批量加载所有sheet页
loadAllSheet() {
let sheets = this.getSheets();
if (sheets.length > 0) {
let pageCount = 0;
for (var i = 0, l = sheets.length; i < l; i++) {
let curtSht = sheets[i];
pageCount += this.getSheetPageCount(curtSht);
this._initDataSets(curtSht.dataSets);
if (!this.isRenderSheet(curtSht)) {
this.loadDesignSheet(curtSht, i, pageCount - 1);
}
}
}
},
// 加载设计时sheet
loadDesignSheet(designSheet, i, pageIndex) {
let option = { axios: this.conf.axios, pageIndex: pageIndex };
let designRender = new BirtDesignRender(
designSheet,
this.dataset,
option
);
designRender.__index = i;
this.addDesignRender(designRender);
return this.reSetRenderSheet(designRender);
},
// 添加设计时渲染对象
addDesignRender(renderSheet) {
this.designRender.push(renderSheet);
},
// 下推参数变化,重新渲染设计时报表
reRenderDesignSheet() {
this.designRender.forEach(dRender => {
this.reSetRenderSheet(dRender);
})
},
// 替换原有的设计时sheet或过期renderSheet,插入最新应用参数条件的renderSheet
reSetRenderSheet(designRender) {
let i = designRender.__index;
let renderSheet = designRender.getBirtSheet();
let delteSheet = this.conf.children.splice(i, 1, renderSheet);
let oldSheetCount = delteSheet[0].children && delteSheet[0].children.length || 1;
this.updatePagging(i + 1, renderSheet.children.length, oldSheetCount);
return renderSheet;
},
// 获取一个sheet的分页数
getSheetPageCount(sheet) {
return this.isRenderSheet(sheet) ? sheet.children.length : 1;
},
// 判断是否运行时sheet
isRenderSheet(sheet) {
return sheet.controlName == "BirtSheet";
},
// 获取所有Sheet页,替换计算字段this.sheets
getSheets() {
let sheets = [];
this.conf.children.forEach((child) => {
if (child.controlName.indexOf("Sheet") != -1) {
sheets.push(child);
}
});
return sheets;
},
// 根据当前页,获取当前sheet所对应layout页
getCurtSheetConf() {
if (this.curtSheet.children) {
if (this.curtSheet.pageIndex === undefined) {
console.error("报表模型数据格式错误,sheet.pageIndex起始页未定义");
}
let i = this.curtPageIndex - this.curtSheet.pageIndex;
return this.curtSheet.children[i];
}
},
// 获取当前报表样式拼装
getCurtSheetStyle() {
return (
(this.curtSheet.style || "") +
`height:${this.autoHeight()}px;overflow:auto;`
);
},
// 获取报表孩子节点集合
getBirtCellChildren() {
let curtSheetConf = this.getCurtSheetConf();
return curtSheetConf ? [curtSheetConf] : [];
},
// 根据下标获取当前sheet对象
getSheetByIndex(i) {
let sheets = this.getSheets();
if (sheets) {
return sheets[i];
}
},
}
}