@magicbe/antd-crud 0.0.54 → 0.0.56
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +302 -96
- package/dist/components/Table.js +3 -1
- package/dist/interface.d.ts +10 -8
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -7,7 +7,10 @@
|
|
|
7
7
|
- 快速构建完整的 CRUD 表格界面
|
|
8
8
|
- 支持多种表单字段类型
|
|
9
9
|
- 内置筛选、新增、编辑、删除功能
|
|
10
|
-
-
|
|
10
|
+
- 支持主操作按钮和行操作按钮
|
|
11
|
+
- 支持操作钩子函数(before/handle/after)
|
|
12
|
+
- 支持字段动态显示/隐藏
|
|
13
|
+
- 支持错误弹窗配置
|
|
11
14
|
- 基于 Ant Design,样式统一
|
|
12
15
|
|
|
13
16
|
## 安装
|
|
@@ -50,7 +53,6 @@ const columns: ColumnType<User>['columns'] = [
|
|
|
50
53
|
field: {
|
|
51
54
|
type: 'Input',
|
|
52
55
|
rules: [{ required: true }],
|
|
53
|
-
...({})
|
|
54
56
|
},
|
|
55
57
|
add: true,
|
|
56
58
|
edit: true,
|
|
@@ -76,14 +78,8 @@ const columns: ColumnType<User>['columns'] = [
|
|
|
76
78
|
type: "Select",
|
|
77
79
|
option: {
|
|
78
80
|
options: [
|
|
79
|
-
{
|
|
80
|
-
|
|
81
|
-
value: "1",
|
|
82
|
-
},
|
|
83
|
-
{
|
|
84
|
-
label: "区域2",
|
|
85
|
-
value: "2",
|
|
86
|
-
},
|
|
81
|
+
{ label: "区域1", value: "1" },
|
|
82
|
+
{ label: "区域2", value: "2" },
|
|
87
83
|
]
|
|
88
84
|
},
|
|
89
85
|
rules: [{ required: true }]
|
|
@@ -99,8 +95,6 @@ const App: React.FC = () => {
|
|
|
99
95
|
pageSize: size = 10,
|
|
100
96
|
} = params;
|
|
101
97
|
|
|
102
|
-
// 模拟API请求
|
|
103
|
-
|
|
104
98
|
return {
|
|
105
99
|
sources: [
|
|
106
100
|
{ id: 1, name: '张三', age: 28, address: '北京市海淀区' },
|
|
@@ -113,19 +107,16 @@ const App: React.FC = () => {
|
|
|
113
107
|
};
|
|
114
108
|
|
|
115
109
|
const add: addHandle = async (value) => {
|
|
116
|
-
// 模拟新增操作
|
|
117
110
|
console.log('add:', value);
|
|
118
111
|
return Promise.resolve();
|
|
119
112
|
};
|
|
120
113
|
|
|
121
114
|
const edit: editHandle = async (value) => {
|
|
122
|
-
// 模拟编辑操作
|
|
123
115
|
console.log('edit:', value);
|
|
124
116
|
return Promise.resolve();
|
|
125
117
|
};
|
|
126
118
|
|
|
127
119
|
const del: delHandle = async (value) => {
|
|
128
|
-
// 模拟删除操作
|
|
129
120
|
console.log('delete:', value);
|
|
130
121
|
return Promise.resolve();
|
|
131
122
|
};
|
|
@@ -137,7 +128,7 @@ const App: React.FC = () => {
|
|
|
137
128
|
add={add}
|
|
138
129
|
edit={edit}
|
|
139
130
|
del={del}
|
|
140
|
-
rowKey=
|
|
131
|
+
rowKey="id"
|
|
141
132
|
/>
|
|
142
133
|
);
|
|
143
134
|
};
|
|
@@ -156,16 +147,17 @@ export default App;
|
|
|
156
147
|
| 属性名 | 类型 | 说明 |
|
|
157
148
|
|--------|------|------|
|
|
158
149
|
| columns | ColumnType[] | 表格列配置 |
|
|
159
|
-
| getSources | (params?: GetSourceFunctionParams) => Promise
|
|
160
|
-
| add |
|
|
161
|
-
| edit |
|
|
162
|
-
| del | delHandle \| Partial
|
|
150
|
+
| getSources | (params?: GetSourceFunctionParams) => Promise\<Source\> | 获取数据的方法 |
|
|
151
|
+
| add | add \| addHandleMap | 新增操作方法 |
|
|
152
|
+
| edit | edit \| editHandleMap | 编辑操作方法 |
|
|
153
|
+
| del | delHandle \| Partial\<HandleMap\<delHandle\>\> | 删除操作方法 |
|
|
163
154
|
| action | Action | 自定义操作按钮 |
|
|
164
|
-
| rowSelection | RowSelectionType |
|
|
155
|
+
| rowSelection | RowSelectionType \| AntdTableProps['rowSelection'] | 行选择配置 |
|
|
165
156
|
| pagination | false | 是否显示分页(暂仅支持false) |
|
|
166
157
|
| drawer | number \| DrawerProps | 抽屉配置 |
|
|
167
158
|
| pageSizeOptions | PaginationProps['pageSizeOptions'] | 每页条数选项 |
|
|
168
|
-
| actionColumn | ColumnType
|
|
159
|
+
| actionColumn | ColumnType\<any\> | 操作列配置 |
|
|
160
|
+
| rowKey | string \| ((record: any) => string) | 行数据的唯一标识 |
|
|
169
161
|
|
|
170
162
|
### ColumnType
|
|
171
163
|
|
|
@@ -181,112 +173,325 @@ export default App;
|
|
|
181
173
|
### ColumnField 类型
|
|
182
174
|
|
|
183
175
|
支持的表单字段类型:
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
176
|
+
|
|
177
|
+
| 类型 | 说明 |
|
|
178
|
+
|------|------|
|
|
179
|
+
| Hidden | 隐藏字段 |
|
|
180
|
+
| Input | 输入框 |
|
|
181
|
+
| Input.Password | 密码输入框 |
|
|
182
|
+
| TextArea | 长文本输入框 |
|
|
183
|
+
| InputNumber | 数字输入框 |
|
|
184
|
+
| Select | 选择器 |
|
|
185
|
+
| Cascader | 级联选择 |
|
|
186
|
+
| TreeSelect | 树选择 |
|
|
187
|
+
| Checkbox | 多选框 |
|
|
188
|
+
| Checkbox.Group | 多选框组 |
|
|
189
|
+
| DatePicker | 日期选择框 |
|
|
190
|
+
| DatePicker.YearPicker | 年选择框 |
|
|
191
|
+
| DatePicker.MonthPicker | 月选择框 |
|
|
192
|
+
| DatePicker.WeekPicker | 周选择框 |
|
|
193
|
+
| DatePicker.TimePicker | 时间选择框 |
|
|
194
|
+
| DatePicker.RangePicker | 时间范围选择框 |
|
|
195
|
+
| DatePicker.QuarterPicker | 季度选择框 |
|
|
196
|
+
| TimePicker | 时间选择框 |
|
|
197
|
+
| TimePicker.RangePicker | 时间范围选择框 |
|
|
198
|
+
| Radio | 单选框 |
|
|
199
|
+
| Radio.Group | 单选框组 |
|
|
200
|
+
| Switch | 开关 |
|
|
201
|
+
|
|
202
|
+
### ColumnField 配置
|
|
203
|
+
|
|
204
|
+
```tsx
|
|
205
|
+
interface BaseColumnField<T extends string, O = any> {
|
|
206
|
+
type: T;
|
|
207
|
+
option?: O;
|
|
208
|
+
rules?: Rule[];
|
|
209
|
+
order?: number;
|
|
210
|
+
filter?: (values: AnyObject, form: FormInstance) => boolean;
|
|
211
|
+
}
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
| 属性名 | 类型 | 说明 |
|
|
215
|
+
|--------|------|------|
|
|
216
|
+
| type | string | 字段类型 |
|
|
217
|
+
| option | object | 传递给组件的属性 |
|
|
218
|
+
| rules | Rule[] | 表单验证规则 |
|
|
219
|
+
| order | number | 字段排序 |
|
|
220
|
+
| filter | (values, form) => boolean | 动态显示/隐藏字段 |
|
|
221
|
+
|
|
222
|
+
### Source 类型
|
|
223
|
+
|
|
224
|
+
```tsx
|
|
225
|
+
type Source<RecordType = AnyObject> = {
|
|
226
|
+
sources: RecordType[];
|
|
227
|
+
total?: number;
|
|
228
|
+
page?: number;
|
|
229
|
+
size?: number;
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
### 操作方法
|
|
234
|
+
|
|
235
|
+
#### add / edit 方法
|
|
236
|
+
|
|
237
|
+
支持两种形式:
|
|
238
|
+
|
|
239
|
+
```tsx
|
|
240
|
+
type addHandle = (value: any, selection: Selection) => Promise<any>;
|
|
241
|
+
|
|
242
|
+
type addHandleMap = Partial<HandleMap<addHandle>> & {
|
|
243
|
+
init?: addHandleInit
|
|
244
|
+
};
|
|
245
|
+
|
|
246
|
+
type add = addHandle | addHandleMap;
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
**简单形式:**
|
|
250
|
+
|
|
251
|
+
```tsx
|
|
252
|
+
const add: addHandle = async (value, selection) => {
|
|
253
|
+
console.log(value, selection);
|
|
254
|
+
};
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
**钩子形式:**
|
|
258
|
+
|
|
259
|
+
```tsx
|
|
260
|
+
const add: addHandleMap = {
|
|
261
|
+
init: async (selection) => {
|
|
262
|
+
return { name: '默认值' };
|
|
263
|
+
},
|
|
264
|
+
before: async (value, selection) => {},
|
|
265
|
+
handle: async (value, selection) => {},
|
|
266
|
+
after: async (value, selection) => {},
|
|
267
|
+
};
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
#### del 方法
|
|
271
|
+
|
|
272
|
+
```tsx
|
|
273
|
+
type delHandle = (selection: Selection) => Promise<any>;
|
|
274
|
+
|
|
275
|
+
type del = delHandle | Partial<HandleMap<delHandle>>;
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### Selection 类型
|
|
279
|
+
|
|
280
|
+
```tsx
|
|
281
|
+
interface Selection<RecordType = AnyObject> {
|
|
282
|
+
keys?: React.Key[];
|
|
283
|
+
rows?: RecordType[];
|
|
284
|
+
}
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
### Action 配置
|
|
288
|
+
|
|
289
|
+
操作按钮支持多种配置方式:
|
|
290
|
+
|
|
291
|
+
```tsx
|
|
292
|
+
type Action = boolean | React.FC | React.FC[] | CustomAction;
|
|
293
|
+
|
|
294
|
+
interface CustomAction {
|
|
295
|
+
master?: boolean | React.FC | React.FC[] | MasterCustomActionGroup;
|
|
296
|
+
record?: boolean | React.FC | React.FC[] | RecordCustomActionGroup;
|
|
297
|
+
}
|
|
298
|
+
|
|
299
|
+
interface MasterCustomActionGroup {
|
|
300
|
+
add?: boolean | React.FC;
|
|
301
|
+
del?: boolean | React.FC;
|
|
302
|
+
edit?: boolean | React.FC;
|
|
303
|
+
}
|
|
304
|
+
|
|
305
|
+
interface RecordCustomActionGroup {
|
|
306
|
+
add?: boolean | React.FC;
|
|
307
|
+
del?: boolean | React.FC;
|
|
308
|
+
edit?: boolean | React.FC;
|
|
309
|
+
}
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### 导出组件
|
|
313
|
+
|
|
314
|
+
#### TableContextProvider 和 useTableContext
|
|
207
315
|
|
|
208
316
|
提供表格上下文,可用于自定义组件中获取表格状态和方法。
|
|
209
317
|
|
|
210
|
-
|
|
318
|
+
```tsx
|
|
319
|
+
import { TableContextProvider, useTableContext } from '@magicbe/antd-crud';
|
|
320
|
+
|
|
321
|
+
const CustomComponent: React.FC = () => {
|
|
322
|
+
const { table_ref, filter_ref, form_ref, add, edit, del } = useTableContext();
|
|
323
|
+
|
|
324
|
+
const handleRefresh = () => {
|
|
325
|
+
table_ref?.current?.loadRecords();
|
|
326
|
+
};
|
|
327
|
+
|
|
328
|
+
return <button onClick={handleRefresh}>刷新数据</button>;
|
|
329
|
+
};
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
#### Filter
|
|
211
333
|
|
|
212
334
|
筛选组件,可单独使用。
|
|
213
335
|
|
|
214
|
-
|
|
336
|
+
#### Action
|
|
337
|
+
|
|
338
|
+
主操作按钮组件,提供了新增、编辑、删除等默认操作。
|
|
215
339
|
|
|
216
|
-
|
|
340
|
+
导出的子组件:
|
|
341
|
+
- `AppendAction` (别名: `MastAppend`) - 新增按钮
|
|
342
|
+
- `DeleteAction` (别名: `MastDelete`) - 删除按钮
|
|
343
|
+
- `EditAction` (别名: `MastEdit`) - 编辑按钮
|
|
217
344
|
|
|
218
|
-
|
|
345
|
+
#### Table
|
|
219
346
|
|
|
220
347
|
表格组件,继承自 Ant Design 的 Table。
|
|
221
348
|
|
|
222
|
-
|
|
349
|
+
导出的子组件:
|
|
350
|
+
- `AppendAction` (别名: `RowAppend`) - 行新增按钮
|
|
351
|
+
- `DeleteAction` (别名: `RowDelete`) - 行删除按钮
|
|
352
|
+
- `EditAction` (别名: `RowEdit`) - 行编辑按钮
|
|
353
|
+
|
|
354
|
+
#### DrawerContentContextProvider 和 useDrawerContentContext
|
|
355
|
+
|
|
356
|
+
抽屉内容上下文,用于控制抽屉的渲染位置。
|
|
357
|
+
|
|
358
|
+
```tsx
|
|
359
|
+
import { DrawerContentContextProvider, useDrawerContentContext } from '@magicbe/antd-crud';
|
|
360
|
+
```
|
|
361
|
+
|
|
362
|
+
#### CrudConfigProvider
|
|
223
363
|
|
|
224
364
|
配置提供者,继承自 Ant Design 的 ConfigProvider。
|
|
225
365
|
|
|
366
|
+
```tsx
|
|
367
|
+
import { CrudConfigProvider, CrudConfigContextProvider, useCrudConfigContext } from '@magicbe/antd-crud';
|
|
368
|
+
|
|
369
|
+
interface CustomConfigProviderProps {
|
|
370
|
+
showErrorModal?: boolean;
|
|
371
|
+
}
|
|
372
|
+
|
|
373
|
+
const App: React.FC = () => {
|
|
374
|
+
return (
|
|
375
|
+
<CrudConfigProvider
|
|
376
|
+
theme={{ token: { colorPrimary: '#1890ff' } }}
|
|
377
|
+
showErrorModal={false}
|
|
378
|
+
>
|
|
379
|
+
<CrudTable {...props} />
|
|
380
|
+
</CrudConfigProvider>
|
|
381
|
+
);
|
|
382
|
+
};
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
### ContentRef
|
|
386
|
+
|
|
387
|
+
通过 ref 暴露的方法:
|
|
388
|
+
|
|
389
|
+
```tsx
|
|
390
|
+
interface ContentRef<RecordType = AnyObject> {
|
|
391
|
+
filter_ref: React.RefObject<FilterRef>;
|
|
392
|
+
action_ref: React.RefObject<ActionRef>;
|
|
393
|
+
table_ref: React.RefObject<TableRef<RecordType>>;
|
|
394
|
+
form_ref: React.RefObject<FormRef>;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
interface TableRef<RecordType = AnyObject> {
|
|
398
|
+
getPageData: () => { current?: number; pageSize?: number };
|
|
399
|
+
getRecords: () => RecordType[];
|
|
400
|
+
loadRecords: (params?: any) => void;
|
|
401
|
+
selected_keys: React.Key[];
|
|
402
|
+
selected_rows: RecordType[];
|
|
403
|
+
setSelected_keys: React.Dispatch<React.SetStateAction<React.Key[]>>;
|
|
404
|
+
setSelected_rows: React.Dispatch<React.SetStateAction<RecordType[]>>;
|
|
405
|
+
}
|
|
406
|
+
```
|
|
407
|
+
|
|
226
408
|
## 高级用法
|
|
227
409
|
|
|
228
410
|
### 自定义操作按钮
|
|
229
411
|
|
|
230
412
|
```tsx
|
|
231
413
|
<CrudTable
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
},
|
|
245
|
-
}}
|
|
414
|
+
columns={columns}
|
|
415
|
+
getSources={getSources}
|
|
416
|
+
action={{
|
|
417
|
+
master: {
|
|
418
|
+
add: true,
|
|
419
|
+
del: true,
|
|
420
|
+
},
|
|
421
|
+
record: {
|
|
422
|
+
edit: true,
|
|
423
|
+
del: true,
|
|
424
|
+
},
|
|
425
|
+
}}
|
|
246
426
|
/>
|
|
247
427
|
```
|
|
248
428
|
|
|
249
|
-
###
|
|
429
|
+
### 使用自定义组件
|
|
250
430
|
|
|
251
431
|
```tsx
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
const CustomComponent: React.FC = () => {
|
|
255
|
-
const { table_ref } = useTableContext();
|
|
256
|
-
|
|
257
|
-
const handleRefresh = () => {
|
|
258
|
-
table_ref.current?.loadRecords();
|
|
259
|
-
};
|
|
260
|
-
|
|
261
|
-
return (
|
|
262
|
-
<button onClick={handleRefresh}>刷新数据</button>
|
|
263
|
-
);
|
|
432
|
+
const CustomAddButton: React.FC = () => {
|
|
433
|
+
return <Button type="primary">自定义新增</Button>;
|
|
264
434
|
};
|
|
265
435
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
436
|
+
<CrudTable
|
|
437
|
+
action={{
|
|
438
|
+
master: {
|
|
439
|
+
add: CustomAddButton,
|
|
440
|
+
},
|
|
441
|
+
}}
|
|
442
|
+
/>
|
|
273
443
|
```
|
|
274
444
|
|
|
275
|
-
###
|
|
445
|
+
### 字段动态显示
|
|
276
446
|
|
|
277
447
|
```tsx
|
|
278
|
-
|
|
448
|
+
const columns: ColumnType[] = [
|
|
449
|
+
{
|
|
450
|
+
title: '类型',
|
|
451
|
+
dataIndex: 'type',
|
|
452
|
+
field: {
|
|
453
|
+
type: 'Select',
|
|
454
|
+
option: {
|
|
455
|
+
options: [
|
|
456
|
+
{ label: '类型A', value: 'A' },
|
|
457
|
+
{ label: '类型B', value: 'B' },
|
|
458
|
+
]
|
|
459
|
+
}
|
|
460
|
+
},
|
|
461
|
+
},
|
|
462
|
+
{
|
|
463
|
+
title: '类型A专属字段',
|
|
464
|
+
dataIndex: 'fieldA',
|
|
465
|
+
field: {
|
|
466
|
+
type: 'Input',
|
|
467
|
+
filter: (values, form) => values.type === 'A',
|
|
468
|
+
},
|
|
469
|
+
},
|
|
470
|
+
];
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
### 使用 ref 控制表格
|
|
474
|
+
|
|
475
|
+
```tsx
|
|
476
|
+
import { CrudTable, type ContentRef } from '@magicbe/antd-crud';
|
|
279
477
|
|
|
280
478
|
const App: React.FC = () => {
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
479
|
+
const crudRef = React.useRef<ContentRef>(null);
|
|
480
|
+
|
|
481
|
+
const handleRefresh = () => {
|
|
482
|
+
crudRef.current?.table_ref.current?.loadRecords();
|
|
483
|
+
};
|
|
484
|
+
|
|
485
|
+
const getSelectedRows = () => {
|
|
486
|
+
return crudRef.current?.table_ref.current?.selected_rows;
|
|
487
|
+
};
|
|
488
|
+
|
|
489
|
+
return (
|
|
490
|
+
<>
|
|
491
|
+
<Button onClick={handleRefresh}>刷新</Button>
|
|
492
|
+
<CrudTable ref={crudRef} {...props} />
|
|
493
|
+
</>
|
|
494
|
+
);
|
|
290
495
|
};
|
|
291
496
|
```
|
|
292
497
|
|
|
@@ -295,7 +500,8 @@ const App: React.FC = () => {
|
|
|
295
500
|
1. 组件依赖 antd 5.22.5 及以上版本,请确保项目中 antd 版本符合要求。
|
|
296
501
|
2. 目前 pagination 仅支持设置为 false,分页功能内置实现。
|
|
297
502
|
3. 自定义组件时,请使用 TableContextProvider 包裹以确保能正确获取上下文。
|
|
503
|
+
4. 使用 `showErrorModal` 配置可以控制是否在操作失败时显示错误弹窗。
|
|
298
504
|
|
|
299
505
|
## License
|
|
300
506
|
|
|
301
|
-
MIT
|
|
507
|
+
MIT
|
package/dist/components/Table.js
CHANGED
|
@@ -155,7 +155,7 @@ var Table = React.forwardRef(function (_a, ref) {
|
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
157
|
return nexts;
|
|
158
|
-
}, [props.columns]);
|
|
158
|
+
}, [props.columns, action]);
|
|
159
159
|
var pagination = useMemo(function () {
|
|
160
160
|
if (_pagination_ === false)
|
|
161
161
|
return false;
|
|
@@ -206,8 +206,10 @@ var Table = React.forwardRef(function (_a, ref) {
|
|
|
206
206
|
}).finally(function () { return setLoading(false); });
|
|
207
207
|
};
|
|
208
208
|
var getPageData = function () { return ({ current: page, pageSize: size }); };
|
|
209
|
+
var getRecords = function () { return sources; };
|
|
209
210
|
useImperativeHandle(ref, function () { return ({
|
|
210
211
|
getPageData: getPageData,
|
|
212
|
+
getRecords: getRecords,
|
|
211
213
|
loadRecords: loadRecords,
|
|
212
214
|
selected_keys: selected_keys,
|
|
213
215
|
selected_rows: selected_rows,
|
package/dist/interface.d.ts
CHANGED
|
@@ -101,11 +101,11 @@ export interface ColumnType<RecordType = AnyObject> extends Omit<AntdColumnType<
|
|
|
101
101
|
export type Source<RecordType = AnyObject> = {
|
|
102
102
|
sources: RecordType[];
|
|
103
103
|
/**数据总数 */
|
|
104
|
-
total
|
|
104
|
+
total?: number;
|
|
105
105
|
/**当前页 */
|
|
106
|
-
page
|
|
106
|
+
page?: number;
|
|
107
107
|
/**每页几条 */
|
|
108
|
-
size
|
|
108
|
+
size?: number;
|
|
109
109
|
};
|
|
110
110
|
export interface GetSourceFunctionParams extends Record<string, any> {
|
|
111
111
|
current?: number;
|
|
@@ -179,10 +179,10 @@ export interface ContentProps<RecordType = AnyObject> extends Omit<AntdTableProp
|
|
|
179
179
|
actionColumn?: ColumnType<any>;
|
|
180
180
|
}
|
|
181
181
|
/**主体暴露 */
|
|
182
|
-
export interface ContentRef {
|
|
182
|
+
export interface ContentRef<RecordType = AnyObject> {
|
|
183
183
|
filter_ref: React.RefObject<FilterRef>;
|
|
184
184
|
action_ref: React.RefObject<ActionRef>;
|
|
185
|
-
table_ref: React.RefObject<TableRef
|
|
185
|
+
table_ref: React.RefObject<TableRef<RecordType>>;
|
|
186
186
|
form_ref: React.RefObject<FormRef>;
|
|
187
187
|
}
|
|
188
188
|
/**表单REF */
|
|
@@ -209,12 +209,14 @@ export type getPageData = () => ({
|
|
|
209
209
|
pageSize?: number;
|
|
210
210
|
});
|
|
211
211
|
export type loadRecords = (params?: any) => void;
|
|
212
|
-
export
|
|
212
|
+
export type getRecords<T = AnyObject> = () => T[];
|
|
213
|
+
export interface TableRef<RecordType = AnyObject> {
|
|
213
214
|
getPageData: getPageData;
|
|
215
|
+
getRecords: getRecords<RecordType>;
|
|
214
216
|
loadRecords: loadRecords;
|
|
215
217
|
selected_keys: React.Key[];
|
|
216
|
-
selected_rows:
|
|
218
|
+
selected_rows: RecordType[];
|
|
217
219
|
setSelected_keys: React.Dispatch<React.SetStateAction<React.Key[]>>;
|
|
218
|
-
setSelected_rows: React.Dispatch<React.SetStateAction<
|
|
220
|
+
setSelected_rows: React.Dispatch<React.SetStateAction<RecordType[]>>;
|
|
219
221
|
}
|
|
220
222
|
export {};
|