From 7de2c2a2c646073ae4a2e388a6b3fa8be56400d6 Mon Sep 17 00:00:00 2001 From: wxz Date: Thu, 14 Dec 2023 15:20:10 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=A1=A8=E5=8D=95=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=EF=BC=9A=E8=A1=A8=E5=8D=95=E9=A1=B9=E5=90=88=E5=B9=B6?= =?UTF-8?q?=E5=8D=95=E5=85=83=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/modules/dyform/itemList.vue | 126 +++++++++++++++++- 1 file changed, 121 insertions(+), 5 deletions(-) diff --git a/epmet-oper-web/src/views/modules/dyform/itemList.vue b/epmet-oper-web/src/views/modules/dyform/itemList.vue index de90dfb..46b3940 100644 --- a/epmet-oper-web/src/views/modules/dyform/itemList.vue +++ b/epmet-oper-web/src/views/modules/dyform/itemList.vue @@ -33,6 +33,7 @@ { + let url = `/oper/customize/icform/config/listItems?customerId=${this.formQueryParams.customerId}&formId=${this.formQueryParams.formId}` + this.$http.get(url).then(({ + status: httpStatus, + data: httpData + }) => { + if (httpData.code !== 0) { this.$message({ type: 'error', @@ -157,18 +161,130 @@ export default { return; } + this.mergeCellMap = {} + + for (let i = httpData.data.length - 1; i >= 0; i--) { + let item = httpData.data[i]; + // 合并单元格数 + this.setMergeRowQty(httpData.data[i], httpData.data[i + 1], i === 0); + + // 设置hasChildren属性 + item.hasChildren = (item.children.length > 0); + } + this.formItemList = httpData.data; }) }) }, + /** + * 合并单元格数 + * @param rowData 当前数据行 + * @param lastRowData 上一条数据 + * @returns {{groupNameMergeRows, formCodeMergeRows}} + */ + setMergeRowQty(rowData, lastRowData, isTheFirstRow) { + let formCode = rowData.formCode; + let itemGroupName = rowData.itemGroupName; + + let {groupChanged: formCodeGroupChanged, mergeRowsQty4LastRow: formCodeMergeRowsQty4LastRow} = this.setAndGetMergeRows('formCode', formCode); + let {groupChanged: groupGroupChanged, mergeRowsQty4LastRow: groupMergeRowsQty4LastRow} = this.setAndGetMergeRows('groupName', itemGroupName); + + // 若合并的分组变了,那么给上一条数据设置上值 + if (formCodeGroupChanged) { + lastRowData.formCodeMergeRows = formCodeMergeRowsQty4LastRow; + } + + if (groupGroupChanged) { + lastRowData.groupNameMergeRows = groupMergeRowsQty4LastRow; + } + + if (isTheFirstRow) { + // 如果是最后一条 + rowData.formCodeMergeRows = this.mergeCellMap['formCode']['mergeRowsQty']; + rowData.groupNameMergeRows = this.mergeCellMap['groupName']['mergeRowsQty']; + } else { + rowData.formCodeMergeRows = 0; + rowData.groupNameMergeRows = 0; + } + }, + + setAndGetMergeRows(columnKey, cellValue) { + let dict4ThisColumn = this.mergeCellMap[columnKey]; + if (!dict4ThisColumn) { + dict4ThisColumn = {}; + dict4ThisColumn.cellValue = cellValue; + dict4ThisColumn.mergeRowsQty = 0; + this.mergeCellMap[columnKey] = dict4ThisColumn; + } + + let groupChanged = false; // 分组是否变化 + let mergeRowsQty4LastRow = dict4ThisColumn.mergeRowsQty; // 上个分组最后一条的数值 + + if (cellValue !== dict4ThisColumn.cellValue) { + // 分组变了 + groupChanged = true; + + dict4ThisColumn.cellValue = cellValue; + dict4ThisColumn.mergeRowsQty = 0; + } else { + // 分组没变 + groupChanged = false; + } + + dict4ThisColumn.mergeRowsQty++; + + return { + groupChanged: groupChanged, + mergeRowsQty4LastRow: mergeRowsQty4LastRow, + }; + }, + + /** + * 客户下拉框改变 + * @param currCustomerId + */ onCustomerSelChanged(currCustomerId) { this.formQueryParams.customerId = currCustomerId; this.loadFormList(); }, + /** + * 点击搜索按钮 + */ onSearchClicked() { this.loadItemList(); + }, + + /** + * 合并单元格回调 + * @param row + * @param column + * @param rowIndex + * @param columnIndex + * @returns {(default.methods.mergeCellMap.formCode.mergeRowsQty|number|*|number)[]|number[]} + */ + mergeCells({row, column, rowIndex, columnIndex}) { + + let columnKey = column.property; + + if (columnKey !== 'formCode' && columnKey !== 'itemGroupName') { + // if (columnKey !== 'formCode') { + return [1, 1]; + } + + let rst; + + if (columnKey === 'formCode') { + rst = [row.formCodeMergeRows, 1]; + } + + if (columnKey === 'itemGroupName') { + rst = [row.groupNameMergeRows, 1]; + console.log(columnKey, ":", rst) + } + + return rst; } } }