08335 / hivui-platform-template
hivui平台项目模板
Newer
Older
hivui-platform-template / project / hivuiBirt / App.vue
<script>
import HcPage from "./components/Birt/Page";
import { BirtModelFactory } from "./templates/BirtModelFactory";
import { LoadUtil } from "./funclib/LoadUtil";
import { getToken } from "./utils/auth";
import { Tool } from "./funclib/Tool";
import user from "./mixins/user.js";
import resource from "./mixins/resource.js";
import upgrade from "./mixins/upgrade.js";
import permission_assign from "./mixins/permission_assign.js";
import permission_modify from "./mixins/permission_modify.js";
import permission_check from "./mixins/permission_check.js";
// import { getBirtModel } from "./birtModel"
import { baseURL, projectName, requestUrl } from "@birt/config";

export default {
  extends: HcPage,
  mixins: [
    user,
    resource,
    upgrade,
    permission_assign,
    permission_modify,
    permission_check,
  ],
  data() {
    return {
      birtModel: {},
      VUE_APP_BASE_API: requestUrl,
      pn: projectName || "birt",
    };
  },
  watch: {
    // $route() {
    //   this.loadBirtModel(this.$route.path);
    // },
  },
  methods: {
    // 动态加载报表模型方法
    birtModelMethod(routePath, birtModelMethod, scope) {
      debugger;
      return new Promise((resolve, reject) => {
        debugger;
        let me = this;
        let token = getToken();
        // let token = '3d3fe30c-3d99-41e8-9aea-addd8528aa07'
        let vId = this.getQueryVariable('viewItemId')
        LoadUtil.loadJsBirtModel({
          loadModelUrl: this.$HI.birtModel,
          routePath: routePath,
          token: token,
          pn: this.pn,
          viewItemId: vId
        })
          .then(() => {
            try {
              let birtModel = BirtModelFactory.buildModel(
                getBirtModel(scope || me, 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.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>