diff --git a/io.sc.platform.core.frontend/src/platform/components/grid/GridAppendContent.vue b/io.sc.platform.core.frontend/src/platform/components/grid/GridAppendContent.vue new file mode 100644 index 00000000..88f73bd8 --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/grid/GridAppendContent.vue @@ -0,0 +1,23 @@ + + + diff --git a/io.sc.platform.core.frontend/src/platform/components/grid/GridAppendRow.vue b/io.sc.platform.core.frontend/src/platform/components/grid/GridAppendRow.vue new file mode 100644 index 00000000..6141564f --- /dev/null +++ b/io.sc.platform.core.frontend/src/platform/components/grid/GridAppendRow.vue @@ -0,0 +1,27 @@ + + + diff --git a/io.sc.platform.core.frontend/src/platform/components/grid/GridBody.vue b/io.sc.platform.core.frontend/src/platform/components/grid/GridBody.vue index 3f9238b4..fdc31f8a 100644 --- a/io.sc.platform.core.frontend/src/platform/components/grid/GridBody.vue +++ b/io.sc.platform.core.frontend/src/platform/components/grid/GridBody.vue @@ -33,7 +33,7 @@ @drop="draggableComputed ? onDrop($event, scope) : () => {}" @dragstart="draggableComputed ? onDragStart($event, scope) : () => {}" > - + + { } }; +const checkLastRow = (row) => { + if (props.grid.props.tree && row['expand'] && !Tools.isEmpty(row.children) && row.children.length > 0) { + const childrenLastRow = row.children[row.children.length - 1]; + if (childrenLastRow['expand'] && !Tools.isEmpty(childrenLastRow.children) && childrenLastRow.children.length > 0) { + return checkLastRow(childrenLastRow); + } else { + return childrenLastRow[props.rowKeyName] === props.scope.row[props.rowKeyName]; + } + } else { + return row[props.rowKeyName] === props.scope.row[props.rowKeyName]; + } +}; + +const showAppendRowsComputed = computed(() => { + if (Array.isArray(props.grid.props.appendRows) && props.grid.props.appendRows.length > 0) { + const lastRow = table.rows[table.rows.length - 1]; + return checkLastRow(lastRow); + } + return false; +}); + const draggableComputed = computed(() => { if ( props.grid.props.draggable && @@ -333,7 +356,7 @@ const onDrop = (e, scope) => { updateData.push(toRaw(item)); } }); - if (props.grid.props.draggable === draggableMode.remote && updateData.length > 0) { + if (props.grid.props.draggable === draggableMode.server && updateData.length > 0) { // 访问后端更新排序 updates(updateData, () => {}); } diff --git a/io.sc.platform.core.frontend/src/platform/components/grid/GridConfig.vue b/io.sc.platform.core.frontend/src/platform/components/grid/GridConfig.vue index 42297a47..37dcf1cc 100644 --- a/io.sc.platform.core.frontend/src/platform/components/grid/GridConfig.vue +++ b/io.sc.platform.core.frontend/src/platform/components/grid/GridConfig.vue @@ -56,7 +56,7 @@ @click=" () => { table.checkboxSelection = true; - grid.stickyHeaderColumn(100); + grid.refreshStyle(100); } " /> @@ -69,7 +69,7 @@ @click=" () => { table.checkboxSelection = false; - grid.stickyHeaderColumn(100); + grid.refreshStyle(100); } " /> @@ -95,7 +95,7 @@ () => { table.columns[0].hidden = false; table.sortNo = true; - grid.stickyHeaderColumn(100); + grid.refreshStyle(100); } " /> @@ -109,7 +109,7 @@ () => { table.columns[0].hidden = true; table.sortNo = false; - grid.stickyHeaderColumn(100); + grid.refreshStyle(100); } " /> @@ -183,7 +183,7 @@ :options="stickyOptions" @update:model-value=" () => { - grid.stickyHeaderColumn(500); + grid.refreshStyle(500); } " > @@ -204,7 +204,7 @@ dense @update:model-value=" () => { - grid.stickyHeaderColumn(100); + grid.refreshStyle(100); } " /> diff --git a/io.sc.platform.core.frontend/src/platform/components/grid/GridHeader.vue b/io.sc.platform.core.frontend/src/platform/components/grid/GridHeader.vue index dd507d12..47518879 100644 --- a/io.sc.platform.core.frontend/src/platform/components/grid/GridHeader.vue +++ b/io.sc.platform.core.frontend/src/platform/components/grid/GridHeader.vue @@ -2,14 +2,20 @@