/** * 查询方案、查询面板、工具条、网格,标准查询页面 * @param {*} queryDataset 保存数据集,命名规范 ds_[数组下标]_[对话框id] * @param {*} conf 组件定义配置项 * @returns */ import { StringUtil } from "@birt/funclib/StringUtil.js"; import { $CONST } from "@birt/funclib/ConstUtil"; import axios from "@birt/funclib/AxiosUtil"; import {baseURL,projectName,requestUrl} from '@birt/config' var pn = projectName || 'birt' export function TabTableSave(conf) { debugger const dlgId = StringUtil.randomString(6); const hcTabsId = "HcTabs_" + dlgId; const hcTabDetailId = "detail_" + dlgId; // 设置数据集id,分页 var queryDataset = conf.mainDataset; queryDataset.controlId += "_" + dlgId; var addDataset = conf.addDataset; addDataset.controlId += "_" + dlgId; queryDataset._infcPagging = { _isPagging: true, returnCount: true } addDataset._editState = true; // 查询面板 let hcQueryPanel = false; if (conf.hcQueryPanel) { hcQueryPanel = { controlName: "HcQueryPanel", controlId: "HcQueryPanel_" + dlgId, dataset: queryDataset.controlId, children: [] } // 应用查询面板个性化配置 Object.assign(hcQueryPanel, conf.hcQueryPanel || {}); } // 操作工具条 let hcFormToolbar = false; if (conf.hcFormToolbar) { hcFormToolbar = { controlName: "HcFormToolbar", controlId: "HcFormToolbar_" + dlgId, dataset: queryDataset.controlId, children: [] } // 应用表单个性化配置 Object.assign(hcFormToolbar, conf.hcFormToolbar || {}); } const hcTableId = "HcTable_" + dlgId const hcTableAddId = "HcTableAdd_" + dlgId // 网格明细 var hcTable = { controlName: "HcTable", controlId: "HcTable_" + dlgId, dataset: queryDataset.controlId, border: true, showAddBtn: false, // showSummary:true, height: function (parentHeight) { return parentHeight - 170; }, events: { // 双击跳转至详情页 rowDblclick: function (row, column, event) { let curtTabs = this.getRefCompt(hcTabsId); let pushParam = Object.assign({ url: "/data/querys" }, row); let eleNumber = this.store && this.store._getEleNumber(); if (eleNumber) { pushParam[$CONST.FLOWNUMBER] = row[eleNumber.field]; } curtTabs.setActiveTabName(hcTabDetailId, pushParam); }, }, children: [], }; // 网格新增 var hcTableAdd = { isEdit: true, controlName: "HcTable", controlId: hcTableAddId, dataset: addDataset.controlId, highlightCurrentRow: true, height: function (parentHeight) { return parentHeight - 180; }, size: "small", // showSummary:true, children: [], events: { currentChange: function (row) { debugger this.store.setCurtRecord(row); if (this.store.data.length > 0) { this.getRefCompt('HcButton_save').conf.disabled = false } else { this.getRefCompt('HcButton_save').conf.disabled = true } } }, style: "margin:auto;" }; // 应用网格个性化配置 Object.assign(hcTable, conf.hcTable || {}); Object.assign(hcTableAdd, conf.hcTableAdd || {}); // 操作列 let operateColumn = { controlName: "HcTableColumnScope", controlId: "HcTableColumn_operate", label: "操作", width: 100, headerAlign: "center", fixed: "right", slot: "scope", children: [{ controlName: "HcButton", controlId: "HcButton_add", type: "primary", circle: true, icon: "el-icon-plus", disabled: function () { return this.store && this.store.allowAdd && !this.store.allowAdd(); }, events: { click() { let newRecd = this.store.newRecord(); this.store.add(newRecd); }, }, }, { controlName: "HcButton", controlId: "HcButton_del", type: "danger", circle: true, icon: "el-icon-delete", disabled: function () { return this.store && this.store.allowRemove && !this.store.allowRemove(); }, events: { click() { this.store.remove(this.scope.row); }, }, }, ], } hcTableAdd.children.push(operateColumn); // 详情表单 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 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 () { var tabs = this.getRefCompt(hcTabsId).activeTabName if (tabs.indexOf('list') > -1) { this.getRefCompt(hcTableId).$children[0].showMenu('70%', 0) } else { this.getRefCompt(hcTableAddId).$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('add') > -1) { data = this.getWorkBook().dataset[addDataset.controlId] var addData = data.getData() addData.forEach(tem => { tem.$state = 'rsInsert'; }) __body = [{ modelFilePath: data.modelFilePath, data: addData }] } else { data = this.getWorkBook().dataset[queryDataset.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() { let data = this.getWorkBook().dataset[queryDataset.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[queryDataset.controlId] data.cancel(); } }, mounted() { let data = this.getWorkBook().dataset[queryDataset.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 = this.getWorkBook().dataset[queryDataset.controlId] let removeData = this.getRefCompt(hcTableId).$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: "list_" + dlgId, events: { click: function () { var tabs = this.getRefCompt(hcTabsId).activeTabName if (tabs.indexOf('detail') > -1) { this.getRefCompt('HcButton_set').$parent.$parent.$el.style.display = 'none' } else { this.getRefCompt('HcButton_set').$parent.$parent.$el.style.display = 'flex' } } }, children: [{ controlName: "HcTabPane", controlId: "HcTabPane_list_" + dlgId, label: "列表", name: "list_" + dlgId, children: [] .concat(hcFormToolbar ? hcFormToolbar : []) .concat(hcTable) .concat(hcPagination) }, { controlName: "HcTabPane", controlId: "HcTabPane_add" + dlgId, label: "批量新增", name: "add_" + dlgId, children: [] .concat(hcFormToolbar ? hcFormToolbar : []) .concat(hcTableAdd) }, { controlName: "HcTabPane", controlId: "HcTabPane_detail_" + dlgId, label: "详情", name: hcTabDetailId, children: [] .concat(hcDetailForm ? hcDetailForm : []) }, ], slot: [].concat(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, addDataset], saveUrl: "/data/save?pn = " + pn, children: [{ controlName: "BirtFormSheet", controlId: "BirtFormSheet_" + dlgId, children: [] .concat(hcQueryPanel ? hcQueryPanel : []) .concat(hcTabs) // .concat(extraBtn) }] }] return birtWorkBook }