08335 / hivui-platform-template
hivui平台项目模板
Newer
Older
hivui-platform-template / project / hivuiBirt / templates / pages / TreeTabTableQuery.js
/**
 * 左边树,右边网格明细查询
 * @param {*} saveDataset 保存数据集,命名规范 ds_[数组下标]_[对话框id]
 * @param {*} conf 组件定义配置项
 * @returns 
 */
 import { StringUtil } from "@birt/funclib/StringUtil.js";
import { treeEditFilter } from "../compose/org-tree-edit.jsx";
import { FormStyleFactory } from "../compose/FormStyleFactory.js";
import { TableStyleFactory } from "../compose/TableStyleFactory.js";

export function TreeTabTableQuery(conf) {
  const dlgId = StringUtil.randomString(6);
  // 设置数据集id
  var treeDataset = conf.treeDataset;
  var mainDataset = conf.mainDataset;
  var subDatasets = conf.subDatasets;

  // 编辑过滤树
  let treeEdit = treeEditFilter(dlgId, treeDataset.controlId, conf.treeEditFilter);
  // 操作工具条
  var hcFormToolbar = {
    controlName: "HcFormToolbar",
    controlId: "HcFormToolbar",
    dataset: mainDataset.controlId,
    layout: ["remove", "cancel", "save"],
    saveSucced:function(saveData){
      // 获取树数据集
      var dsTree = this.getWorkBook().dataset.dsTree
      //  清楚树数据
      dsTree.clear()
      //  重新加载树数据集
      dsTree.query()
      var node = this.getWorkBook().param.node
      var elTree = this.getRefCompt('HcTree_org')
      elTree.defaultExpandedKeys.push(node.data.FORGGUID)
      let parent = node.parent;
      while (parent) {
        elTree.defaultExpandedKeys.push(parent.data.FORGGUID)
        parent = parent.parent
      }
    },
    size: "small",
    style: "padding:5px;"
  }
  // 人员form数据集不一样,另开一个工具条
  var hcFormToolbarPsm = {
    controlName: "HcFormToolbar",
    controlId: "HcFormToolbarPsm",
    dataset: 'dsSubPsm',
    vshow: false,
    layout: ["remove", "cancel", "save"],
    saveSucced:function(saveData){
      // 获取树数据集
      var dsTree = this.getWorkBook().dataset.dsTree
      //  清楚树数据
      dsTree.clear()
      //  重新加载树数据集
      dsTree.query()
      var node = this.getWorkBook().param.node
      var elTree = this.getRefCompt('HcTree_org')
      elTree.defaultExpandedKeys.push(node.data.FORGGUID)
      let parent = node.parent;
      while (parent) {
        elTree.defaultExpandedKeys.push(parent.data.FORGGUID)
        parent = parent.parent
      }
    },
    size: "small",
    style: "padding:5px;"
  }
  // 应用表单个性化配置
  Object.assign(hcFormToolbar, conf.hcFormToolbar || {});
  Object.assign(hcFormToolbarPsm, conf.hcFormToolbar || {});

  // 编辑表单列表
  let hcForms = false;
  if (conf.hcForms) {
    hcForms = [];
    conf.hcForms.forEach((frm, i) => {
      let hcForm = {
        controlName: "HcForm",
        controlId: "HcForm_" + i,
        dataset: i == 2 ? subDatasets[2].controlId : mainDataset.controlId,
        labelWidth: "80px",
        vshow: function () {
          return i == 0
        },
        rules: {
        },
        children: [],
      };
      // 应用表单个性化配置
      Object.assign(hcForm, FormStyleFactory.buildForm(frm) || {});
      hcForms.push(hcForm);
    })
  }

  // 子节点网格
  let hcTables = false;
  if (conf.hcTables) {
    hcTables = [];
    conf.hcTables.forEach((tbl, i) => {
      if (!(tbl.isEdit === false)) {
        tbl.isEdit = true;
      }
      var hcTable = TableStyleFactory.buildTable(i, subDatasets[i].controlId, { hcTable: Object.assign(tbl,{style: 'width: 100%'})  });
      hcTables.push(hcTable);
    })
  }

  //  子节点选项卡
  var tabsChildren = []
  hcTables.forEach((tbl,i)=>{
    tabsChildren.push({
        controlName: "HcTabPane",
        controlId: "HcTabPane_list_" + i,
        label: tbl.title || ("列表" + i),
        name: "list_" + i,
        disabled: i != 0,
        children: [].concat(hcTables[i])
    })
  })
  var hcTabs = {
    controlName: "HcTabs",
    controlId: "HcTabs_org",
    tabPosition: "top",
    activeTabName: "list_0",
    style:'width: 90%;margin: auto;',
    events: {
      // click: function () {
       
      // }
    },
    mounted(){
      debugger
    },
    children: [
    ].concat(tabsChildren),
  }

  // 系统表单自动填充字段
  var hcSysForm = false;
  if (conf.hcSysForm) {
    var hcSysForm = {
      controlName: "HcForm",
      controlId: "HcForm_sys_" + dlgId,
      dataset: mainDataset.controlId,
      labelWidth: "80px",
      rules: {
      },
      children: [],
    };
    // 应用系统字段表单个性化配置
    Object.assign(hcSysForm, FormStyleFactory.buildForm(conf.hcSysForm) || {});
  }

  // 应用报表模型
  var birtWorkBook = Object.assign({
    controlName: "BirtWorkBook",
    controlId: "BirtWorkBook_" + dlgId,
    showToolBar: false,
    totalPage: 1,
    renderType: "pages",
    height: function (parentHeight) {
      return parentHeight - 10;
    }
  }, conf.birtWorkBook || {})
  // 添加布局结构
  birtWorkBook.children = [{
    controlName: "BirtSheet",
    controlId: "BirtSheet_" + dlgId,
    name: "sheet_" + dlgId,
    pageIndex: 0,
    dataSets: [treeDataset, mainDataset].concat(subDatasets),
    children: [{
      controlName: "BirtFormSheet",
      controlId: "BirtFormSheet_" + dlgId,
      children: [{
        controlName: "HcRow",
        gutter: 10,
        children: [
          {
            controlName: "HcCol",
            span: 6,
            children: treeEdit,
          },
          {
            controlName: "HcCol",
            controlId: "HcCol_01_right",
            span: 18,
            children: []
              .concat(hcFormToolbar)
              .concat(hcFormToolbarPsm)
              .concat(hcForms)
              .concat(hcTabs)
              .concat(hcSysForm)
          }
        ]
      }]
    }]
  }]
  return birtWorkBook
}