From d1bbee4eb2c0cf300a9f1cfc15824ab72a308128 Mon Sep 17 00:00:00 2001 From: likunming Date: Tue, 3 Dec 2024 17:48:20 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=83=A8=E5=88=86=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/platform/components/grid/Header.vue | 31 +- .../src/platform/components/grid/WGrid.vue | 22 +- .../platform/components/grid/css/sticky.css | 4 + .../platform/components/grid/ts/GridTools.ts | 2 + .../grid/ts/computed/ComputedManager.ts | 4 +- .../grid/ts/event/src/UpdateTickeds.ts | 2 +- .../components/grid/ts/function/RowData.ts | 53 +- .../grid/ts/types/table/StoreType.ts | 8 + .../platform/components/toolbar/Buttons.vue | 148 ++++++ .../components/toolbar/ChildrenBtn.vue | 105 +--- .../components/toolbar/ComputedManager.ts | 78 +++ .../platform/components/toolbar/Toolbar.ts | 223 ++++++++ .../platform/components/toolbar/WToolbar.vue | 492 +++--------------- 13 files changed, 643 insertions(+), 529 deletions(-) create mode 100644 io.sc.platform.core.frontend/src/platform/components/toolbar/Buttons.vue create mode 100644 io.sc.platform.core.frontend/src/platform/components/toolbar/ComputedManager.ts create mode 100644 io.sc.platform.core.frontend/src/platform/components/toolbar/Toolbar.ts diff --git a/io.sc.platform.core.frontend/src/platform/components/grid/Header.vue b/io.sc.platform.core.frontend/src/platform/components/grid/Header.vue index 332b38f7..6ef2ddda 100644 --- a/io.sc.platform.core.frontend/src/platform/components/grid/Header.vue +++ b/io.sc.platform.core.frontend/src/platform/components/grid/Header.vue @@ -29,7 +29,7 @@ :rowspan="c.rowspan" :colspan="c.colspan" :style="thStyleHandler(c, props.scope)" - :class="c.classes ? c.classes + ' ' + isFirstColumn(c, cIndex) : ' ' + isFirstColumn(c, cIndex)" + :class="c.classes ? c.classes + ' ' + isFirstColumn(c, cIndex) + ' ' + scrollClass(c.name) : ' ' + isFirstColumn(c, cIndex) + ' ' + scrollClass(c.name)" :props="titleScopeHandler(c, props.scope)" style="font-weight: bold" :title="c.title" @@ -60,7 +60,7 @@ @@ -114,6 +114,20 @@ type MoreColumnTitleType = { let moreColumnTitleMap = new Map(); let allColumnMap = new Map(); +const scrollClass = (columnName: string) => { + if (tools.table.store.scrollLeft > 0) { + const lastColumn = tools.table.originalColumns[tools.props.stickyNum - 1]; + const multiHeaderLastColumn = extractLastColumn(lastColumn); + if (multiHeaderLastColumn.length > 0 && multiHeaderLastColumn.includes(columnName)) { + // 存在多表头 + return 'scroll-border-right'; + } else if (lastColumn['name'] === columnName) { + return 'scroll-border-right'; + } + } + return ''; +}; + const moreColumnTitleTableSelectionStyle = computed(() => { if (tools.table.configStore.stickyNum > 0) { if (tools.props.tree) { @@ -242,6 +256,19 @@ const thStickyLastNameComputed = computed(() => { return result; }); +// 提取多表头每一层级的最后一列 +const extractLastColumn = (column: any) => { + const columns = []; + if (column.columns) { + columns.push(column.columns[column.columns.length - 1]['name']); + const childrenResult = extractLastColumn(column.columns); + if (childrenResult.length > 0) { + columns.concat(childrenResult); + } + } + return columns; +}; + const thStyleHandler = (c: any, scope: any) => { let style = ''; if (!Tools.isEmpty(c.style)) { diff --git a/io.sc.platform.core.frontend/src/platform/components/grid/WGrid.vue b/io.sc.platform.core.frontend/src/platform/components/grid/WGrid.vue index de1cc6f5..4a1d89d8 100644 --- a/io.sc.platform.core.frontend/src/platform/components/grid/WGrid.vue +++ b/io.sc.platform.core.frontend/src/platform/components/grid/WGrid.vue @@ -1,6 +1,6 @@