Commit f2b8bb43a0b9172b9ef9ced8e83bf91143a091d9

Authored by 无木
1 parent d2c36180

fix(table): fix `getSelectRows` for treeTable

修复getSelectRows不支持树形表格子级数据的问题

fixed: #1003
CHANGELOG.zh_CN.md
... ... @@ -13,6 +13,7 @@
13 13 - 修复全屏模式下看不到子组件弹出层(popconfirm 以及 select、treeSelect 等编辑组件)的问题
14 14 - 修复启用`expandRowByClick`时,点击不可展开的行可能会导致样式错误的问题
15 15 - 修复`pagination`属性动态改变不生效的问题
  16 + - 修复`getSelectRows`不支持树形表格子级数据的问题
16 17 - **Dark Theme** 黑暗主题下的配色问题修正
17 18 - 修复`Tree`组件被选中节点的背景颜色
18 19 - 修复`Alert`组件的颜色配置
... ...
src/components/Table/src/hooks/useRowSelection.ts
1 1 import { isFunction } from '/@/utils/is';
2 2 import type { BasicTableProps, TableRowSelection } from '../types/table';
3   -import { computed, ref, unref, ComputedRef, Ref, toRaw, watch, nextTick } from 'vue';
  3 +import { computed, ComputedRef, nextTick, Ref, ref, toRaw, unref, watch } from 'vue';
4 4 import { ROW_KEY } from '../const';
5 5 import { omit } from 'lodash-es';
  6 +import { findNodeAll } from '/@/utils/helper/treeHelper';
6 7  
7 8 export function useRowSelection(
8 9 propsRef: ComputedRef<BasicTableProps>,
... ... @@ -21,11 +22,12 @@ export function useRowSelection(
21 22 return {
22 23 selectedRowKeys: unref(selectedRowKeysRef),
23 24 hideDefaultSelections: false,
24   - onChange: (selectedRowKeys: string[], selectedRows: Recordable[]) => {
25   - selectedRowKeysRef.value = selectedRowKeys;
26   - selectedRowRef.value = selectedRows;
  25 + onChange: (selectedRowKeys: string[]) => {
  26 + setSelectedRowKeys(selectedRowKeys);
  27 + // selectedRowKeysRef.value = selectedRowKeys;
  28 + // selectedRowRef.value = selectedRows;
27 29 },
28   - ...omit(rowSelection === undefined ? {} : rowSelection, ['onChange']),
  30 + ...omit(rowSelection, ['onChange']),
29 31 };
30 32 });
31 33  
... ... @@ -64,11 +66,13 @@ export function useRowSelection(
64 66  
65 67 function setSelectedRowKeys(rowKeys: string[]) {
66 68 selectedRowKeysRef.value = rowKeys;
67   -
68   - const rows = toRaw(unref(tableData)).filter((item) =>
69   - rowKeys.includes(item[unref(getRowKey) as string])
  69 + selectedRowRef.value = findNodeAll(
  70 + toRaw(unref(tableData)),
  71 + (item) => rowKeys.includes(item[unref(getRowKey) as string]),
  72 + {
  73 + children: propsRef.value.childrenColumnName ?? 'children',
  74 + }
70 75 );
71   - selectedRowRef.value = rows;
72 76 }
73 77  
74 78 function setSelectedRows(rows: Recordable[]) {
... ...