<script>
// import HcPage from "./components/Birt/Page";
// import { BirtModelFactory } from "./templates/BirtModelFactory";
import cmps from 'zhc-birt-cmps'
import { LoadUtil } from "./funclib/LoadUtil";
import { getToken } from "./utils/auth";
// import { Tool } from "./funclib/Tool";
import { projectName, requestUrl } from "@birt/config";
// import 'echarts-liquidfill/src/liquidFill.js'
export default {
extends: cmps.BirtPage,
data() {
return {
birtModel: {},
VUE_APP_BASE_API: requestUrl,
pn: projectName || "birt",
};
},
watch: {
// $route() {
// this.loadBirtModel(this.$route.path);
// },
},
methods: {
// 动态加载报表模型方法
birtModelMethod(routePath, birtModelMethod, scope) {
return new Promise((resolve, reject) => {
let me = this;
let token = getToken();
// let token = '3d3fe30c-3d99-41e8-9aea-addd8528aa07'
// let vId = this.getQueryVariable('viewItemId')
let vId = window.scpRequestData && window.scpRequestData.__viewItemId
LoadUtil.loadJsBirtModel({
loadModelUrl: this.$HI.birtModel,
routePath: routePath,
token: token,
pn: this.pn,
vId: vId
})
.then(() => {
try {
if(!window.getBirtModel){
me.$message.warning("model1接口未响应,请稍等")
return
}
let birtModel = cmps.BirtModelFactory.buildModel(
getBirtModel(scope || me, cmps.Tool),scope || me
);
if(birtModel.css){
let css = birtModel.css
if(Array.isArray(css) && css.length > 0){
css.forEach(c =>{
LoadUtil.loadCss(c)
})
}
if(typeof css == 'string'){
LoadUtil.loadCss(css)
}
}
birtModel.token = token;
birtModel.birtModelMethod = birtModelMethod;
resolve(birtModel);
} catch (e) {
console.error(e);
}
})
.catch(() => {
reject();
});
});
},
loadBirtModel(routePath) {
return new Promise((resolve, reject) => {
let me = this;
this.birtModelMethod(routePath, this.birtModelMethod)
.then((birtModel) => {
me.birtModel = birtModel;
/**
*网络环境比较差的情况下,打开查找定义model1接口未响应时,
再次打开查找定义弹框,会应用已加载的getBirtModel,
导致打开的弹框显示的是上个model1加载的页面,故这边删去挂载在window的getBirtModel方法
* */
me.$nextTick(() =>{
if(window.getBirtModel){
window.getBirtModel = undefined
}
})
me.applyRouteParam();
me.setWorkBookParam();
resolve();
})
.catch(() => {
reject();
});
});
},
// 获取地址栏参数
getQueryVariable(variable) {
var query = window.location.search.substring(1);
var vars = query.split("&");
for (var i = 0; i < vars.length; i++) {
var pair = vars[i].split("=");
if (pair[0] == variable) {
return pair[1];
}
}
return false;
},
_needsDecodeURI(str) {
// 使用正则表达式检查字符串是否包含%字符
return /%[0-9A-F]{2}/i.test(str);
},
},
mounted() {
var path = window.location.pathname;
// 编译后多e5
if (window.HIVUI_SETTING) {
var serverName = window.HIVUI_SETTING.serverName;
if (serverName && path.startsWith(serverName)) {
path = path.substring(serverName.length);
}
}
var __push = window && window.scpRequestData && window.scpRequestData.__push
if(__push){
if (this._needsDecodeURI(__push)) {
__push = decodeURI(__push);
}
this.param["__push"] = JSON.parse(__push);
}
// var _push = window.scpRequestData
// var path = '/platf/user-info/func/query.func'
this.loadBirtModel(path).then(() => {
// if (path == "/platf/permission/func/assign.func") this.getOrgData(-1);
// else if (path == "/platf/permission/func/modify.func")
// this.getOrgDataM(-1);
});
},
};
</script>
<style>
html,body{
height: 100%;
}
</style>