08335 / hivui-platform-template
hivui平台项目模板
Newer
Older
hivui-platform-template / project / hivuiSam / funclib / LoadUtil.js
/**
 * 原生 动态加载后台资源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 += `&token=${token}`
    }
    if(vId){
      url += `&viewItemId=${vId}`
    }
    if(!url.startsWith(window.HIVUI_SETTING.url)){
      url = window.HIVUI_SETTING.url + url
    }
    return url;
  }
};