/**
* 查询方案、查询面板、工具条、网格,标准查询页面
* @param {*} queryDataset 保存数据集,命名规范 ds_[数组下标]_[对话框id]
* @param {*} conf 组件定义配置项
* @returns
*/
import { StringUtil } from "@birt/funclib/StringUtil.js";
import { $CONST } from "@birt/funclib/ConstUtil";
import { QueryStyleFactory } from "../query-panel/QueryStyleFactory";
export function TabTableDetail(conf) {
const dlgId = StringUtil.randomString(6);
const hcTableId = "HcTable_" + dlgId;
const hcTabsId = "HcTabs_" + dlgId;
const hcTabListId = "list_" + dlgId;
const hcTabDetailId = "detail_" + dlgId;
const hcQueryPanelId = "HcQueryPanel_" + dlgId;
const hcFormToolbarId = "HcFormToolbar_" + dlgId;
// 设置数据集id,分页
const queryDataset = conf.mainDataset;
queryDataset.controlId += "_" + dlgId;
queryDataset._infcPagging = {
_isPagging: true,
returnCount: true
}
// 查询面板
let hcQueryPanel = false;
if (conf.hcQueryPanel) {
hcQueryPanel = {
controlName: "HcQueryPanel",
controlId: hcQueryPanelId,
dataset: queryDataset.controlId,
children: []
}
// 应用查询面板个性化配置
Object.assign(hcQueryPanel, QueryStyleFactory.buildForm(conf.hcQueryPanel) || {});
}
// 操作工具条
let hcFormToolbar = false;
if (conf.hcFormToolbar) {
hcFormToolbar = {
controlName: "HcFormToolbar",
controlId: "HcFormToolbar_" + dlgId,
dataset: queryDataset.controlId,
style: 'margin-right: 10px;margin-bottom: 5px;',
tableId: hcTableId,
children: []
}
// 应用表单个性化配置
Object.assign(hcFormToolbar, conf.hcFormToolbar || {});
}
// 网格明细
var hcTable = {
controlName: "HcTable",
controlId: hcTableId,
dataset: queryDataset.controlId,
border: true,
showAddBtn: false,
// showSummary: true,
height: function (parentHeight) {
return parentHeight - 120;
},
events: {
// 双击跳转至详情页
rowDblclick: function (row, column, event) {
var hcFormToolbar = this.getRefCompt(hcFormToolbarId)
if(hcFormToolbar)
hcFormToolbar.hide()
let curtTabs = this.getRefCompt(hcTabsId);
let pushParam = Object.assign({}, row);
let eleNumber = this.store && this.store._getEleNumber();
if (eleNumber) {
pushParam[$CONST.FLOWNUMBER] = row[eleNumber.field];
}
// 下推功能路径
// pushParam[$CONST.FUNCPATH] = this.getWorkBook().getModelPath();
curtTabs.setActiveTabName(hcTabDetailId, pushParam);
},
},
children: [],
};
// 应用网格个性化配置
Object.assign(hcTable, conf.hcTable || {});
// 详情表单
var hcDetailForm = false;
if (conf.hcDetailForm) {
hcDetailForm = Object.assign(
conf.hcDetailForm, {
height: function (parentHeight) {
return parentHeight - 170;
},
})
}
// 分页工具条
var hcPagination = {
controlName: "HcPagination",
controlId: "HcPagination_" + dlgId,
pageSizes: [10, 20, 50, 100],
layout: "total, prev, pager, next, sizes, jumper",
dataset: queryDataset.controlId,
};
var isEdit = queryDataset.controlName == 'HcEditDataset'
if(!isEdit){
var extraBtn = {
controlName: 'HcRow',
controlId: 'ElRow_extra',
style: 'position: absolute;z-index:99;right:-20px;top:120px;height: 40px;line-height: 40px;display:flex',
title: '导出',
children: []
.concat(hcFormToolbar ? hcFormToolbar : [])
}
}else{
Object.assign(hcFormToolbar, {style: 'margin: -7px -4% 3px;border: none;'})
}
// 返回按钮
var returnBtn = {
controlName: 'HcRow',
controlId: 'HcRow_' + dlgId,
style: 'position: absolute;top:5px;left:5%;z-index:2001;line-height: 30px;display:flex;',
children:[
{
controlName: 'HcButton',
controlId: 'HcButton_' + dlgId,
title: '返回',
icon: 'el-icon-back',
style:'padding: 5px 0;',
type: 'text',
size: 'large',
// style: 'position: absolute;top:15px;left:5%;z-index:2001',
events: {
click: function () {
let curtTabs = this.getRefCompt(hcTabsId);
let qPanel = this.getRefCompt(hcQueryPanelId);
curtTabs.setActiveTabName(hcTabListId);
var hcFormToolbar = this.getRefCompt(hcFormToolbarId)
if(hcFormToolbar)
hcFormToolbar.show()
if (qPanel) {
qPanel.$refs[hcQueryPanelId].doQuery()
}
}
}
},
{
controlName: "HcTextLabel",
controlId: "TextLabel2_1",
style:"margin-left: 10px;",
className: 'text_title',
style:'height:20px;line-height: 20px;margin-left: 10px;border-left: 1px solid #cdd3d8;padding: 0 20px;margin-top: 5px;',
title: "详情",
},
]
}
var hcTabs = {
controlName: "HcTabs",
controlId: hcTabsId,
tabPosition: "top",
activeTabName: hcTabListId,
tabPosition: 'right',
events: {
click: function () {
var tabs = this.getRefCompt(hcTabsId).activeTabName
var hcFormToolbar = this.getRefCompt(hcFormToolbarId)
if(hcFormToolbar){
if (tabs.indexOf('detail') > -1) {
hcFormToolbar.hide()
} else {
hcFormToolbar.show()
}
}
}
},
// type: "border-card",
children: [{
controlName: "HcTabPane",
controlId: "HcTabPane_list_" + dlgId,
label: "列表",
name: hcTabListId,
children: []
.concat(hcQueryPanel ? hcQueryPanel : [])
.concat(hcFormToolbar && isEdit ? hcFormToolbar : [])
.concat(hcTable)
.concat(hcPagination)
},
{
controlName: "HcTabPane",
controlId: "HcTabPane_detail_" + dlgId,
label: "详情",
name: hcTabDetailId,
children: []
.concat(returnBtn)
.concat(hcDetailForm ? hcDetailForm : [])
}
],slot: [].concat(!isEdit ? extraBtn : [])
}
// 应用报表模型
var birtWorkBook = Object.assign({
controlName: "BirtWorkBook",
controlId: "BirtWorkBook_" + dlgId,
showToolBar: false,
totalPage: 1,
renderType: "pages",
height: function (parentHeight) {
return parentHeight - 1;
},
}, conf.birtWorkBook || {})
// 添加布局结构
birtWorkBook.children = [{
controlName: "BirtSheet",
controlId: "BirtSheet_" + dlgId,
name: "sheet_" + dlgId,
pageIndex: 0,
dataSets: [queryDataset],
children: [{
controlName: "BirtFormSheet",
controlId: "BirtFormSheet_" + dlgId,
children: []
// .concat(hcQueryPanel ? hcQueryPanel : [])
.concat(hcTabs)
}]
}]
return birtWorkBook
}