/**
* 左边树,右边网格明细查询
* @param {*} saveDataset 保存数据集,命名规范 ds_[数组下标]_[对话框id]
* @param {*} conf 组件定义配置项
* @returns
*/
import { StringUtil } from "@birt/funclib/StringUtil.js";
import { treeEditFilter } from "../compose/tree-edit-filter"
export function newInstance(queryDataset,saveDataset, conf) {
debugger
const dlgId = StringUtil.randomString(6);
// 设置数据集id
queryDataset.controlId += "_" + dlgId;
saveDataset.controlId += "_" + dlgId;
const hcTabsId = "HcTabs_" + dlgId;
const hcTableId1 = "HcTable1_" + dlgId
const hcTableId2 = "HcTable2_" + dlgId
// 编辑过滤树
let treeEditFilterInsc = treeEditFilter(dlgId, queryDataset.controlId, conf.treeEditFilter);
console.log('treeEditFilterInsc', treeEditFilterInsc)
// 查询面板
let hcQueryPanel1 = false;
let hcQueryPanel2 = false;
if (conf.hcQueryPanel1) {
hcQueryPanel1 = {
controlName: "HcQueryPanel",
controlId: "hcQueryPanel1_" + dlgId,
dataset: saveDataset.controlId,
style: 'margin: 10px 0;',
children: []
}
// 应用查询面板个性化配置
Object.assign(hcQueryPanel1, conf.hcQueryPanel1 || {});
}
if (conf.hcQueryPanel2) {
hcQueryPanel2 = {
controlName: "HcQueryPanel",
controlId: "hcQueryPanel2_" + dlgId,
dataset: saveDataset.controlId,
style: 'margin: 10px 0;',
children: []
}
// 应用查询面板个性化配置
Object.assign(hcQueryPanel2, conf.hcQueryPanel2 || {});
}
// 操作工具条
let hcFormToolbar = false;
if (conf.hcFormToolbar) {
hcFormToolbar = {
controlName: "HcFormToolbar",
controlId: "HcFormToolbar_" + dlgId,
dataset: saveDataset.controlId,
children: []
}
// 应用表单个性化配置
Object.assign(hcFormToolbar, conf.hcFormToolbar || {});
}
// 网格明细
var hcTable1 = {
controlName: "HcTable",
controlId: hcTableId1,
dataset: saveDataset.controlId,
height: function (parentHeight) {
return parentHeight - 10;
},
children: [],
};
var hcTable2 = {
controlName: "HcTable",
controlId: hcTableId2,
dataset: saveDataset.controlId,
height: function (parentHeight) {
return parentHeight - 40;
},
children: [],
};
// 应用网格个性化配置
Object.assign(hcTable1, conf.hcTable1 || {});
Object.assign(hcTable2, conf.hcTable2 || {});
// 分页工具条
var hcPagination = {
controlName: "HcPagination",
controlId: "HcPagination_" + dlgId,
pageSizes: [10, 20, 50, 100],
layout: "total, prev, pager, next, sizes, jumper",
dataset: saveDataset.controlId,
};
var extraBtn = {
controlName: 'HcRow',
controlId: 'ElRow_extra',
style: 'position: absolute;z-index:99;right:30px;height: 40px;line-height: 40px;display:flex',
children: [
{
controlName: "HcButton",
controlId: "HcButton_set",
title: "列设置",
icon: "el-icon-setting",
size: 'small',
disabled: function () {
return false
},
events: {
click: function () {
debugger
var tabs = this.getRefCompt(hcTabsId).activeTabName
if (tabs.indexOf('list1') > -1) {
this.getRefCompt(hcTableId1).$children[0].showMenu('70%', 0)
} else {
this.getRefCompt(hcTableId2).$children[0].showMenu('70%', 0)
}
}
}
},
{
controlName: "HcButton",
controlId: "HcButton_save",
title: "保存",
icon: "el-icon-s-claim",
disabled: true,
size: 'small',
events: {
click: function () {
var data = {}, __body = []
var tabs = this.getRefCompt(hcTabsId).activeTabName
if (tabs.indexOf('list1') > -1) {
data = this.getWorkBook().dataset[queryDataset.controlId]
__body = [{
modelFilePath: data.modelFilePath,
data: data.getDirtyData()
}]
// var addData = data.getData()
// addData.forEach(tem => {
// tem.$state = 'rsInsert';
// })
// __body = [{
// modelFilePath: data.modelFilePath,
// data: addData
// }]
} else {
data = this.getWorkBook().dataset[saveDataset.controlId]
__body = [{
modelFilePath: data.modelFilePath,
data: data.getDirtyData()
}]
}
if (__body && __body.length > 0) {
this.axios.post(data.saveUrl, {
__body: JSON.stringify(__body)
}).then((res) => {
if (res.status == 200) {
this.$message.success('保存成功')
} else {
this.$message.error(res.msg)
}
});
} else {
this.$message.warning('请添加数据')
}
}
},
mounted() {
debugger
let data = this.getWorkBook().dataset[saveDataset.controlId]
let me = this;
data.on("dirtyChange", (isDirty) => {
me.conf.disabled = !isDirty;
});
},
},
{
controlName: "HcButton",
controlId: "HcButton_cancel",
title: "取消",
disabled: true,
icon: 'el-icon-close',
size: 'small',
events: {
click: function () {
let data = this.getWorkBook().dataset[saveDataset.controlId]
data.cancel();
}
},
mounted() {
debugger
let data = this.getWorkBook().dataset[saveDataset.controlId]
let me = this;
data.on("dirtyChange", (isDirty) => {
me.conf.disabled = !isDirty;
});
},
},
{
controlName: "HcButton",
controlId: "HcButton_del",
title: "删除",
icon: 'el-icon-delete',
size: 'small',
events: {
click: function () {
let data,removeData
var tabs = this.getRefCompt(hcTabsId).activeTabName
if (tabs.indexOf('list1') > -1) {
data = this.getWorkBook().dataset[queryDataset.controlId]
removeData = this.getRefCompt(hcTableId1).$children[0].elTable().selection;
}else{
data = this.getWorkBook().dataset[saveDataset.controlId]
removeData = this.getRefCompt(hcTableId2).$children[0].elTable().selection;
}
if (removeData.length == 0) {
this.$message.warning('未勾选要删除的选项')
} else {
this.$confirm('此操作将永久删除该数据, 是否继续?', '提示', {
confirmButtonText: '确定',
cancelButtonText: '取消',
type: 'warning'
}).then(() => {
removeData.forEach(tem => {
tem.$state = 'rsDelete';
})
var __body = [{
modelFilePath: data.modelFilePath,
data: removeData
}]
this.axios.post(data.saveUrl, {
__body: JSON.stringify(__body)
}).then((res) => {
if (res.status == 200) {
this.$message.success('删除成功')
data.remove(removeData)
} else {
this.$message.error(res.msg)
}
});
})
}
},
},
}
]
}
var hcTabs = {
controlName: "HcTabs",
controlId: hcTabsId,
tabPosition: "top",
activeTabName: "list1_" + dlgId,
height: function (parentHeight) {
debugger
return parentHeight - 120;
},
// type: "border-card",
children: [
{
controlName: "HcTabPane",
controlId: "HcTabPane_list1_" + dlgId,
label: "机构列表",
name: "list1_" + dlgId,
children: []
.concat(hcQueryPanel1 ? hcQueryPanel1 : [])
.concat(hcFormToolbar ? hcFormToolbar : [])
.concat(hcTable1)
.concat(hcPagination)
},
{
controlName: "HcTabPane",
controlId: "HcTabPane_list2_" + dlgId,
label: "人员列表",
name: "list2_" + dlgId,
children: []
.concat(hcQueryPanel2 ? hcQueryPanel2 : [])
.concat(hcFormToolbar ? hcFormToolbar : [])
.concat(hcTable2)
.concat(hcPagination)
}
],
slot: [].concat(extraBtn)
}
// 应用报表模型
var birtWorkBook = Object.assign({
controlName: "BirtWorkBook",
controlId: "BirtWorkBook_" + dlgId,
showToolBar: false,
totalPage: 1,
renderType: "pages",
height: function (parentHeight) {
debugger
return parentHeight - 10;
},
}, conf.birtWorkBook || {})
// 添加布局结构
birtWorkBook.children = [
{
controlName: "BirtSheet",
controlId: "BirtSheet_" + dlgId,
name: "sheet_" + dlgId,
pageIndex: 0,
dataSets: [queryDataset,saveDataset],
children: [
{
controlName: "BirtFormSheet",
controlId: "BirtFormSheet_" + dlgId,
children: [
{
controlName: "HcRow",
gutter: 10,
children: [
treeEditFilterInsc,
{
controlName: "HcCol",
controlId: "HcCol_01_right",
span: 18,
children: []
.concat(hcTabs)
}
]
}
]
}
]
}
]
return birtWorkBook
}