/** * 原生 动态加载后台资源js,json工具类 * @author cls * @date 2021-01-30 * import { LoadUtil } from "@birt/funclib/LoadUtil"; */ import Cookies from 'js-cookie' 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}&pn=${pn}&locale=${Cookies.get("locale") || "zh-CN"}`; if(token){ url += `&access_token=${token}` } if(vId){ url += `&viewItemId=${vId}` } if(!url.startsWith(window.HIVUI_SETTING.url)){ url = window.HIVUI_SETTING.url + url } return url; } };