GitBucket
4.6.0
Toggle navigation
Sign in
Files
Branches
1
Tags
Issues
Pull Requests
Labels
Milestones
Wiki
08335
/
hivui-platform-template
hivui平台项目模板
Browse code
birt动态引入css文件
master
1 parent
94c1a8f
commit
3b019932f518ffa25dcfcc99393c4b83ea8af0d2
hhb
authored
on 8 Aug 2022
Showing
2 changed files
project/hivuiBirt/App.vue
project/hivuiBirt/funclib/LoadUtil.js
Ignore Space
Show notes
View
project/hivuiBirt/App.vue
<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 { let birtModel = cmps.BirtModelFactory.buildModel( getBirtModel(scope || me, cmps.Tool) ); 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(c) } } 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) => { debugger; me.birtModel = birtModel; console.log("birtModel", birtModel); 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; }, }, 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 console.log('__push',__push) if(__push){ this.param['__push'] = JSON.parse(__push) console.log('param',this.param) } // 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>
<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 { let birtModel = cmps.BirtModelFactory.buildModel( getBirtModel(scope || me, cmps.Tool) ); 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) => { debugger; me.birtModel = birtModel; console.log("birtModel", birtModel); 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; }, }, 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 console.log('__push',__push) if(__push){ this.param['__push'] = JSON.parse(__push) console.log('param',this.param) } // 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>
Ignore Space
Show notes
View
project/hivuiBirt/funclib/LoadUtil.js
/** * 原生 动态加载后台资源js,json工具类 * @author cls * @date 2021-01-30 * import { LoadUtil } from "@birt/funclib/LoadUtil"; */ export const LoadUtil = { loadJs(url) { return new Promise((resolve, reject) => { let srcArr = document.getElementsByTagName("script"); let hasLoaded = false; for (let i = 0; i < srcArr.length; i++) { //判断当前js是否加载上 hasLoaded = (srcArr[i].src == url) ? true : false; } if (hasLoaded) { resolve(); return; } let script = document.createElement('script') script.type = 'text/javascript'; script.src = url; document.body.appendChild(script); script.onload = () => { resolve(); } script.onerror = () => { reject(); } }) }, loadCss(url) { let linkArr = document.getElementsByTagName("link"); let hasLoaded = false; for (let i = 0; i < linkArr.length; i++) { //判断当前css是否加载上 hasLoaded = (linkArr[i].href == url) ? true : false; } if (hasLoaded) { return; } let link = document.createElement('link') console.log('link==>', link) link.rel = 'stylesheet'; link.href = url; document.body.appendChild(link); }, // 动态加载报表模型(js) loadJsBirtModel({ loadModelUrl, routePath, token,pn,vId }) { return new Promise((resolve, reject) => { let url = this._getBirtModelUrl(loadModelUrl, routePath, token,pn,vId); this.loadJs(url).then((response) => { resolve(); }).catch(() => { reject(); }) }) }, // 获取加载报表模型地址 _getBirtModelUrl(loadModelUrl, routePath, token,pn,vId) { // let pi = routePath.lastIndexOf("."); // if (pi != -1) { // routePath = routePath.substring(0, pi); // } if(routePath && routePath.endsWith('.flow')){ routePath = routePath.replace('.flow', '.js') } if(routePath && routePath.endsWith('.js')){ routePath = `/deploy${routePath}` } let url = `${loadModelUrl}?bizpath=${routePath}&access_token=${token}&pn=${pn}`; if(vId){ url += `&viewItemId=${vId}` } return url; } };
/** * 原生 动态加载后台资源js,json工具类 * @author cls * @date 2021-01-30 * import { LoadUtil } from "@birt/funclib/LoadUtil"; */ export const LoadUtil = { loadJs(url) { return new Promise((resolve, reject) => { let srcArr = document.getElementsByTagName("script"); let hasLoaded = false; for (let i = 0; i < srcArr.length; i++) { //判断当前js是否加载上 hasLoaded = (srcArr[i].src == url) ? true : false; } if (hasLoaded) { resolve(); return; } let script = document.createElement('script') script.type = 'text/javascript'; script.src = url; document.body.appendChild(script); script.onload = () => { resolve(); } script.onerror = () => { reject(); } }) }, // 动态加载报表模型(js) loadJsBirtModel({ loadModelUrl, routePath, token,pn,vId }) { return new Promise((resolve, reject) => { let url = this._getBirtModelUrl(loadModelUrl, routePath, token,pn,vId); this.loadJs(url).then((response) => { resolve(); }).catch(() => { reject(); }) }) }, // 获取加载报表模型地址 _getBirtModelUrl(loadModelUrl, routePath, token,pn,vId) { // let pi = routePath.lastIndexOf("."); // if (pi != -1) { // routePath = routePath.substring(0, pi); // } if(routePath && routePath.endsWith('.flow')){ routePath = routePath.replace('.flow', '.js') } if(routePath && routePath.endsWith('.js')){ routePath = `/deploy${routePath}` } let url = `${loadModelUrl}?bizpath=${routePath}&access_token=${token}&pn=${pn}`; if(vId){ url += `&viewItemId=${vId}` } return url; } };
Show line notes below