Commit 456a661488ad46cff9d184828bc4ec4b50ee73ba
1 parent
59028867
fix(table): `deleteTableDataRecord` not work
Showing
4 changed files
with
33 additions
and
13 deletions
CHANGELOG.zh_CN.md
@@ -12,12 +12,14 @@ | @@ -12,12 +12,14 @@ | ||
12 | - 修复`useTable`与`BasicTable`实例的`reload`方法`await`表现不一致的问题 | 12 | - 修复`useTable`与`BasicTable`实例的`reload`方法`await`表现不一致的问题 |
13 | - 修复`clickToRowSelect`会无视行选择框 disabled 状态的问题 | 13 | - 修复`clickToRowSelect`会无视行选择框 disabled 状态的问题 |
14 | - 修复`BasicTable`在某些情况下,分页会被重置的问题 | 14 | - 修复`BasicTable`在某些情况下,分页会被重置的问题 |
15 | + - 修改 `deleteTableDataRecord` 方法 | ||
15 | - **BasicModal** | 16 | - **BasicModal** |
16 | - 修复点击遮罩、按下`Esc`键都不能关闭`Modal`的问题 | 17 | - 修复点击遮罩、按下`Esc`键都不能关闭`Modal`的问题 |
17 | - 修复点击关闭按钮、最大化按钮旁边的空白区域也会导致`Modal`关闭的问题 | 18 | - 修复点击关闭按钮、最大化按钮旁边的空白区域也会导致`Modal`关闭的问题 |
18 | - **BasicTree** 修复节点插槽不起作用的问题 | 19 | - **BasicTree** 修复节点插槽不起作用的问题 |
19 | - **CodeEditor** 修复可能会造成的`Build`失败的问题 | 20 | - **CodeEditor** 修复可能会造成的`Build`失败的问题 |
20 | - **BasicForm** 修复自定义 FormItem 组件的内容宽度可能超出范围的问题 | 21 | - **BasicForm** 修复自定义 FormItem 组件的内容宽度可能超出范围的问题 |
22 | +- **ApiTreeSelect** 修复`params`变化未能触发重新请求 api 数据的问题 | ||
21 | - **其它** | 23 | - **其它** |
22 | - 修复多标签在某些情况下关闭页签不会跳转路由的问题 | 24 | - 修复多标签在某些情况下关闭页签不会跳转路由的问题 |
23 | - 修复部分组件可能会造成热更新异常的问题 | 25 | - 修复部分组件可能会造成热更新异常的问题 |
src/components/Table/src/hooks/useDataSource.ts
@@ -160,21 +160,39 @@ export function useDataSource( | @@ -160,21 +160,39 @@ export function useDataSource( | ||
160 | } | 160 | } |
161 | } | 161 | } |
162 | 162 | ||
163 | - function deleteTableDataRecord(record: Recordable | Recordable[]): Recordable | undefined { | 163 | + function deleteTableDataRecord(rowKey: string | number | string[] | number[]) { |
164 | if (!dataSourceRef.value || dataSourceRef.value.length == 0) return; | 164 | if (!dataSourceRef.value || dataSourceRef.value.length == 0) return; |
165 | - const records = !Array.isArray(record) ? [record] : record; | ||
166 | - const recordIndex = records | ||
167 | - .map((item) => dataSourceRef.value.findIndex((s) => s.key === item.key)) // 取序号 | ||
168 | - .filter((item) => item !== undefined) | ||
169 | - .sort((a, b) => b - a); // 从大到小排序 | ||
170 | - for (const index of recordIndex) { | ||
171 | - unref(dataSourceRef).splice(index, 1); | ||
172 | - unref(propsRef).dataSource?.splice(index, 1); | 165 | + const rowKeyName = unref(getRowKey); |
166 | + if (!rowKeyName) return; | ||
167 | + const rowKeys = !Array.isArray(rowKey) ? [rowKey] : rowKey; | ||
168 | + for (const key of rowKeys) { | ||
169 | + let index: number | undefined = dataSourceRef.value.findIndex((row) => { | ||
170 | + let targetKeyName: string; | ||
171 | + if (typeof rowKeyName === 'function') { | ||
172 | + targetKeyName = rowKeyName(row); | ||
173 | + } else { | ||
174 | + targetKeyName = rowKeyName as string; | ||
175 | + } | ||
176 | + return row[targetKeyName] === key; | ||
177 | + }); | ||
178 | + if (index >= 0) { | ||
179 | + dataSourceRef.value.splice(index, 1); | ||
180 | + } | ||
181 | + index = unref(propsRef).dataSource?.findIndex((row) => { | ||
182 | + let targetKeyName: string; | ||
183 | + if (typeof rowKeyName === 'function') { | ||
184 | + targetKeyName = rowKeyName(row); | ||
185 | + } else { | ||
186 | + targetKeyName = rowKeyName as string; | ||
187 | + } | ||
188 | + return row[targetKeyName] === key; | ||
189 | + }); | ||
190 | + if (typeof index !== 'undefined' && index !== -1) | ||
191 | + unref(propsRef).dataSource?.splice(index, 1); | ||
173 | } | 192 | } |
174 | setPagination({ | 193 | setPagination({ |
175 | total: unref(propsRef).dataSource?.length, | 194 | total: unref(propsRef).dataSource?.length, |
176 | }); | 195 | }); |
177 | - return unref(propsRef).dataSource; | ||
178 | } | 196 | } |
179 | 197 | ||
180 | function insertTableDataRecord(record: Recordable, index: number): Recordable | undefined { | 198 | function insertTableDataRecord(record: Recordable, index: number): Recordable | undefined { |
src/components/Table/src/hooks/useTable.ts
@@ -122,8 +122,8 @@ export function useTable(tableProps?: Props): [ | @@ -122,8 +122,8 @@ export function useTable(tableProps?: Props): [ | ||
122 | updateTableData: (index: number, key: string, value: any) => { | 122 | updateTableData: (index: number, key: string, value: any) => { |
123 | return getTableInstance().updateTableData(index, key, value); | 123 | return getTableInstance().updateTableData(index, key, value); |
124 | }, | 124 | }, |
125 | - deleteTableDataRecord: (record: Recordable | Recordable[]) => { | ||
126 | - return getTableInstance().deleteTableDataRecord(record); | 125 | + deleteTableDataRecord: (rowKey: string | number | string[] | number[]) => { |
126 | + return getTableInstance().deleteTableDataRecord(rowKey); | ||
127 | }, | 127 | }, |
128 | insertTableDataRecord: (record: Recordable | Recordable[], index?: number) => { | 128 | insertTableDataRecord: (record: Recordable | Recordable[], index?: number) => { |
129 | return getTableInstance().insertTableDataRecord(record, index); | 129 | return getTableInstance().insertTableDataRecord(record, index); |
src/components/Table/src/types/table.ts
@@ -95,7 +95,7 @@ export interface TableActionType { | @@ -95,7 +95,7 @@ export interface TableActionType { | ||
95 | setPagination: (info: Partial<PaginationProps>) => void; | 95 | setPagination: (info: Partial<PaginationProps>) => void; |
96 | setTableData: <T = Recordable>(values: T[]) => void; | 96 | setTableData: <T = Recordable>(values: T[]) => void; |
97 | updateTableDataRecord: (rowKey: string | number, record: Recordable) => Recordable | void; | 97 | updateTableDataRecord: (rowKey: string | number, record: Recordable) => Recordable | void; |
98 | - deleteTableDataRecord: (record: Recordable | Recordable[]) => Recordable | void; | 98 | + deleteTableDataRecord: (rowKey: string | number | string[] | number[]) => void; |
99 | insertTableDataRecord: (record: Recordable, index?: number) => Recordable | void; | 99 | insertTableDataRecord: (record: Recordable, index?: number) => Recordable | void; |
100 | findTableDataRecord: (rowKey: string | number) => Recordable | void; | 100 | findTableDataRecord: (rowKey: string | number) => Recordable | void; |
101 | getColumns: (opt?: GetColumnsParams) => BasicColumn[]; | 101 | getColumns: (opt?: GetColumnsParams) => BasicColumn[]; |