08335 / hivui-platform-template
hivui平台项目模板
Newer
Older
hivui-platform-template / 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();
      }
    })
  },
  // 动态加载报表模型(js)
  loadJsBirtModel({ loadModelUrl, routePath, token,pn }) {
    return new Promise((resolve, reject) => {
      let url = this._getBirtModelUrl(loadModelUrl, routePath, token,pn);
      this.loadJs(url).then((response) => {
        resolve();
      }).catch(() => {
        reject();
      })
    })
  },
  // 获取加载报表模型地址
  _getBirtModelUrl(loadModelUrl, routePath, token,pn) {
    let pi = routePath.lastIndexOf(".");
    if (pi != -1) {
      routePath = routePath.substring(0, pi);
    }
    let url = `${loadModelUrl}?bizpath=/deploy${routePath}.js&access_token=${token}&pn=${pn}`;
    return url;
  }
};