@cfmm/umi-plugins-ui-v2 0.0.2 → 0.0.4
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/dist/cjs/components/CrudTable.tpl +224 -18
- package/dist/cjs/components/EditMultiLangForm.tpl +6 -4
- package/dist/cjs/locales/en-US.d.ts +3 -0
- package/dist/cjs/locales/enUS/common.d.ts +3 -0
- package/dist/cjs/locales/enUS/common.js +3 -0
- package/dist/cjs/locales/enUS/index.d.ts +3 -0
- package/dist/cjs/locales/th-TH.d.ts +3 -0
- package/dist/cjs/locales/zh-CN.d.ts +3 -0
- package/dist/cjs/locales/zh-TW.d.ts +3 -0
- package/dist/cjs/locales/zhCN/common.d.ts +3 -0
- package/dist/cjs/locales/zhCN/common.js +3 -0
- package/dist/cjs/locales/zhCN/index.d.ts +3 -0
- package/dist/cjs/locales/zhTW/common.d.ts +3 -0
- package/dist/cjs/locales/zhTW/common.js +3 -0
- package/dist/cjs/locales/zhTW/index.d.ts +3 -0
- package/dist/cjs/types/CrudTableTypes.d.ts +1 -1
- package/dist/cjs/types/CrudTableTypes.js +1 -1
- package/dist/cjs/types/EditMultiLangFormTypes.d.ts +1 -1
- package/dist/cjs/types/EditMultiLangFormTypes.js +1 -1
- package/dist/cjs/utils/excelHelper.tpl +44 -36
- package/dist/esm/components/CrudTable.tpl +224 -18
- package/dist/esm/components/EditMultiLangForm.tpl +6 -4
- package/dist/esm/locales/en-US.d.ts +3 -0
- package/dist/esm/locales/enUS/common.d.ts +3 -0
- package/dist/esm/locales/enUS/common.js +3 -0
- package/dist/esm/locales/enUS/index.d.ts +3 -0
- package/dist/esm/locales/th-TH.d.ts +3 -0
- package/dist/esm/locales/zh-CN.d.ts +3 -0
- package/dist/esm/locales/zh-TW.d.ts +3 -0
- package/dist/esm/locales/zhCN/common.d.ts +3 -0
- package/dist/esm/locales/zhCN/common.js +3 -0
- package/dist/esm/locales/zhCN/index.d.ts +3 -0
- package/dist/esm/locales/zhTW/common.d.ts +3 -0
- package/dist/esm/locales/zhTW/common.js +3 -0
- package/dist/esm/locales/zhTW/index.d.ts +3 -0
- package/dist/esm/types/CrudTableTypes.d.ts +1 -1
- package/dist/esm/types/CrudTableTypes.js +1 -1
- package/dist/esm/types/EditMultiLangFormTypes.d.ts +1 -1
- package/dist/esm/types/EditMultiLangFormTypes.js +1 -1
- package/dist/esm/utils/excelHelper.tpl +44 -36
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { CloudDownloadOutlined, PlusOutlined, UploadOutlined } from '@ant-design/icons';
|
|
2
|
-
import { ActionType, ProColumns, ProTable } from '@ant-design/pro-components';
|
|
3
|
-
import { cfmmUtils, ImportExecl, useIntl } from '@umijs/max';
|
|
4
|
-
import { Button, Dropdown, MenuProps, Modal } from 'antd';
|
|
1
|
+
import { CloudDownloadOutlined, DownloadOutlined, PlusOutlined, UploadOutlined } from '@ant-design/icons';
|
|
2
|
+
import { ActionType, ColumnsState, ProColumns, ProTable } from '@ant-design/pro-components';
|
|
3
|
+
import { cfmmUtils, ImportExecl, useFormatLocale, useIntl, useModel } from '@umijs/max';
|
|
4
|
+
import { Button, Dropdown, MenuProps, message, Modal, Progress } from 'antd';
|
|
5
5
|
import React, { ForwardedRef, forwardRef, useImperativeHandle, useMemo, useRef, useState } from 'react';
|
|
6
6
|
import useAction from '../hooks/useAction';
|
|
7
7
|
import useAuthority from '../hooks/useAuthority';
|
|
@@ -14,9 +14,9 @@ import DropdownButton from './DropdownButton';
|
|
|
14
14
|
import EditMultiLangForm from './EditMultiLangForm';
|
|
15
15
|
import MyFooterToolbar from './MyFooterToolbar';
|
|
16
16
|
import ViewTableItemDrawer from './ViewTableItemDrawer';
|
|
17
|
-
import { genExcelAdvanced } from '../utils/excelHelper';
|
|
17
|
+
import { genExcel, genExcelAdvanced, getExportColumns, getExportValueForColumns } from '../utils/excelHelper';
|
|
18
18
|
import { importMultiLangList, queryLangInfoExprotList } from '../services';
|
|
19
|
-
import { handleImportList } from '../utils/importHelper';
|
|
19
|
+
import { handleImportList, showCheckErrorTips } from '../utils/importHelper';
|
|
20
20
|
|
|
21
21
|
const { confirm } = Modal;
|
|
22
22
|
export const TABLE_SCROLL = { x: 'max-content' };
|
|
@@ -38,6 +38,9 @@ const generateDefaultAuthCodes = (localCode: string | undefined) => {
|
|
|
38
38
|
remove: `${baseCode}_remove`,
|
|
39
39
|
record: `${baseCode}_record`,
|
|
40
40
|
lang: `${baseCode}_lang`,
|
|
41
|
+
templateDownload: `${baseCode}_templateDownload`,
|
|
42
|
+
import: `${baseCode}_import`,
|
|
43
|
+
exprot: `${baseCode}_exprot`,
|
|
41
44
|
};
|
|
42
45
|
};
|
|
43
46
|
|
|
@@ -58,6 +61,7 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
58
61
|
createConfig = {},
|
|
59
62
|
updateConfig = {},
|
|
60
63
|
actionColumnConfig = {} as CrudTableConfig['actionColumnConfig'],
|
|
64
|
+
downloadTemplate = {},
|
|
61
65
|
onAdd,
|
|
62
66
|
onAfterSearch,
|
|
63
67
|
onBeforeEdit,
|
|
@@ -65,6 +69,7 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
65
69
|
onAfterDelete,
|
|
66
70
|
onBeforeAction,
|
|
67
71
|
onAfterAction,
|
|
72
|
+
onAfterImport,
|
|
68
73
|
} = props;
|
|
69
74
|
|
|
70
75
|
const defaultAuthCodes = {
|
|
@@ -74,8 +79,13 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
74
79
|
|
|
75
80
|
const { formatMessage } = useIntl();
|
|
76
81
|
const { getAuthorityFn } = useAuthority();
|
|
82
|
+
const {
|
|
83
|
+
templateDownloadModalOpenChange,
|
|
84
|
+
handleTemplateDownloadModalSearchParamsChange,
|
|
85
|
+
} = window.__POWERED_BY_QIANKUN__ ? useModel('@@qiankunStateFromMaster') : useModel('global');
|
|
77
86
|
const actionRef = useRef<ActionType>();
|
|
78
87
|
const updateDrawerRef = useRef<RefDrawerFormRefType>();
|
|
88
|
+
const timer = useRef<NodeJS.Timeout>();
|
|
79
89
|
|
|
80
90
|
// 状态管理
|
|
81
91
|
const [tableList, setTableList] = useState<T[]>([]);
|
|
@@ -90,9 +100,18 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
90
100
|
const [editLangModalOpen, setEditLangModalOpen] = useState<boolean>(false);
|
|
91
101
|
const [currentLangInfo, setCurrentLangInfo] = useState<LangInfoItem | undefined>();
|
|
92
102
|
|
|
103
|
+
// 导出execl
|
|
104
|
+
const [loading, setLoading] = useState<boolean>(false);
|
|
105
|
+
const [percent, setPercent] = useState<number>(0);
|
|
106
|
+
const [downloadButtonLoading, setDownloadButtonLoading] = useState<boolean>(false);
|
|
107
|
+
const [columnsStateMap, setColumnsStateMap] = useState<Record<string, ColumnsState>>({});
|
|
108
|
+
// 用于导出查询,不能使用formRef,会造成与表格数据不一致
|
|
109
|
+
const [tableSearchParams, setTableSearchParams] = useState<any>({});
|
|
110
|
+
|
|
93
111
|
// Hooks
|
|
94
112
|
const { queryList } = useQueryTableList(baseLocalCode ? { baseLocalCode, baseLocalName } : undefined);
|
|
95
113
|
const { doAction, loading: actionLoading } = useAction(baseLocalCode ? { baseLocalCode, baseLocalName } : undefined);
|
|
114
|
+
const { getLocalDate } = useFormatLocale();
|
|
96
115
|
|
|
97
116
|
/**
|
|
98
117
|
* 处理多语言字段点击
|
|
@@ -114,9 +133,9 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
114
133
|
});
|
|
115
134
|
|
|
116
135
|
const queryMultiLangData = useMemoizedFn(async (tableName: string, columnName: string): Promise<ExprotMultiLangListItem[]> => {
|
|
117
|
-
if(!multiLang) return [];
|
|
136
|
+
if (!multiLang) return [];
|
|
118
137
|
|
|
119
|
-
if(multiLang.multiLangList) {
|
|
138
|
+
if (multiLang.multiLangList) {
|
|
120
139
|
return multiLang.multiLangList;
|
|
121
140
|
}
|
|
122
141
|
|
|
@@ -135,7 +154,7 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
135
154
|
});
|
|
136
155
|
|
|
137
156
|
const handleExportMultiLang = useMemoizedFn(async () => {
|
|
138
|
-
if(multiLang?.exportMultiLangData) {
|
|
157
|
+
if (multiLang?.exportMultiLangData) {
|
|
139
158
|
return await multiLang.exportMultiLangData();
|
|
140
159
|
}
|
|
141
160
|
|
|
@@ -150,8 +169,8 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
150
169
|
|
|
151
170
|
const { tableName, columnName } = multiLang.fields[0];
|
|
152
171
|
const data = await queryMultiLangData(tableName, columnName);
|
|
153
|
-
|
|
154
|
-
if(!data.length) return;
|
|
172
|
+
|
|
173
|
+
if (!data.length) return;
|
|
155
174
|
|
|
156
175
|
const handleData = data.map(item => [item.dataId, item.columnValue, item.zh_CN, item.zh_TW, item.en_US, item.th_TH]);
|
|
157
176
|
|
|
@@ -174,14 +193,14 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
174
193
|
|
|
175
194
|
// 导入多语言数据
|
|
176
195
|
const importMultiLang = useMemoizedFn(async (list: any[]) => {
|
|
177
|
-
if(!multiLang?.fields) return;
|
|
196
|
+
if (!multiLang?.fields) return;
|
|
178
197
|
|
|
179
198
|
const { tableName, columnName } = multiLang.fields[0];
|
|
180
199
|
|
|
181
|
-
if(multiLang.importMultiLangData) {
|
|
200
|
+
if (multiLang.importMultiLangData) {
|
|
182
201
|
return await multiLang.importMultiLangData(list, tableName, columnName);
|
|
183
202
|
}
|
|
184
|
-
|
|
203
|
+
|
|
185
204
|
// 处理导入数据,正确赋值字段以及转格式
|
|
186
205
|
const newList = handleImportList<ExprotMultiLangListItem>(list, { needHandleUnderline: false });
|
|
187
206
|
|
|
@@ -192,7 +211,7 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
192
211
|
// return Promise.resolve({ success: false });
|
|
193
212
|
// }
|
|
194
213
|
|
|
195
|
-
const result =
|
|
214
|
+
const result = await doAction('IMPORT', {
|
|
196
215
|
tableName: tableName,
|
|
197
216
|
columnName: columnName,
|
|
198
217
|
i18nDataList: newList.filter(item => item.en_US || item.zh_CN || item.zh_TW || item.th_TH),
|
|
@@ -207,6 +226,42 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
207
226
|
return result;
|
|
208
227
|
});
|
|
209
228
|
|
|
229
|
+
/**
|
|
230
|
+
* 查询导出数据
|
|
231
|
+
* @param params
|
|
232
|
+
* @returns
|
|
233
|
+
*/
|
|
234
|
+
const handleSearchAll = async () => {
|
|
235
|
+
if (loading) return { success: false } as API.Result_TableListType<T>;
|
|
236
|
+
|
|
237
|
+
// 请求前拦截器
|
|
238
|
+
let processedParams = { ...tableSearchParams };
|
|
239
|
+
if (interceptors.query?.request) {
|
|
240
|
+
processedParams = interceptors.query.request(processedParams);
|
|
241
|
+
}
|
|
242
|
+
|
|
243
|
+
setLoading(true);
|
|
244
|
+
const result = await queryList<T[]>(tableSearchParams, {
|
|
245
|
+
queryFn: apis.query,
|
|
246
|
+
});
|
|
247
|
+
setLoading(false);
|
|
248
|
+
|
|
249
|
+
if (!result.success && result.error?.response?.status === 504) {
|
|
250
|
+
message.error(
|
|
251
|
+
formatMessage({ id: 'pages.File.export.timeOut.help', defaultMessage: '数据量过大,请联系工作人员帮助导出' }),
|
|
252
|
+
);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
// 请求后拦截器
|
|
256
|
+
let processedResult = result;
|
|
257
|
+
if (interceptors.query?.response) {
|
|
258
|
+
processedResult = interceptors.query.response(result);
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
setTableList(processedResult.data);
|
|
262
|
+
return processedResult;
|
|
263
|
+
};
|
|
264
|
+
|
|
210
265
|
/**
|
|
211
266
|
* 查询表格数据
|
|
212
267
|
*/
|
|
@@ -338,6 +393,118 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
338
393
|
});
|
|
339
394
|
});
|
|
340
395
|
|
|
396
|
+
// 将导入的列表数据提交给后端
|
|
397
|
+
const submitListData = async (list: T[]) => {
|
|
398
|
+
return await doAction('IMPORT', list, {
|
|
399
|
+
actionFn: apis.importData,
|
|
400
|
+
showMsg: false,
|
|
401
|
+
});
|
|
402
|
+
};
|
|
403
|
+
|
|
404
|
+
// 导入物料
|
|
405
|
+
const importListData = useMemoizedFn(async (list: T[]) => {
|
|
406
|
+
if(!apis.importData && !interceptors.importData?.submitImportListData) return;
|
|
407
|
+
|
|
408
|
+
// 处理导入数据,正确赋值字段以及转格式
|
|
409
|
+
const newList = interceptors.importData?.request?.(list) ?? handleImportList<T>(list);
|
|
410
|
+
|
|
411
|
+
// 导入校验提示
|
|
412
|
+
const errorMessageList = interceptors.importData?.checkImportExecl?.(newList) || [];
|
|
413
|
+
|
|
414
|
+
if (errorMessageList.length) {
|
|
415
|
+
interceptors.importData?.showCheckErrorTips?.(errorMessageList) || showCheckErrorTips(errorMessageList);
|
|
416
|
+
return Promise.resolve({ success: false });
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
const resutl = await interceptors.importData?.submitImportListData?.(newList) || await submitListData(newList);
|
|
420
|
+
|
|
421
|
+
onAfterImport?.(resutl);
|
|
422
|
+
|
|
423
|
+
if (resutl.success) {
|
|
424
|
+
actionRef.current?.reload();
|
|
425
|
+
}
|
|
426
|
+
return resutl;
|
|
427
|
+
});
|
|
428
|
+
|
|
429
|
+
const handlePercentChange = (value: number) => {
|
|
430
|
+
setPercent(value);
|
|
431
|
+
};
|
|
432
|
+
|
|
433
|
+
/**
|
|
434
|
+
* 下载数据为Excel
|
|
435
|
+
*/
|
|
436
|
+
const handleDownloadExcel = async () => {
|
|
437
|
+
const result = await handleSearchAll();
|
|
438
|
+
if (!result.success || result.error || !result.data) {
|
|
439
|
+
return;
|
|
440
|
+
}
|
|
441
|
+
|
|
442
|
+
const MAX_DOWNLOAD = cfmmUtils?.MAX_DOWNLOAD || 65536;
|
|
443
|
+
|
|
444
|
+
setDownloadButtonLoading(true);
|
|
445
|
+
|
|
446
|
+
const exportColums = getExportColumns<T>({ columns, columnsStateMap });
|
|
447
|
+
|
|
448
|
+
//固定列名
|
|
449
|
+
let columnsName: any[] = exportColums.map((item) => item.title).filter(Boolean);
|
|
450
|
+
//文件名根据多语言形成
|
|
451
|
+
const fileName = formatMessage({
|
|
452
|
+
id: `${baseLocalCode}.title`,
|
|
453
|
+
defaultMessage: '数据列表',
|
|
454
|
+
});
|
|
455
|
+
|
|
456
|
+
//创建导出Excel
|
|
457
|
+
genExcel(fileName + '.xlsx', 'sheet1', columnsName, function () {
|
|
458
|
+
//生成数据
|
|
459
|
+
return new Promise((resolve) => {
|
|
460
|
+
//所有数据行
|
|
461
|
+
getExportValueForColumns({
|
|
462
|
+
columns: exportColums,
|
|
463
|
+
data: result.data,
|
|
464
|
+
getLocalDate,
|
|
465
|
+
handlePercentChange,
|
|
466
|
+
})
|
|
467
|
+
.then((allRows) => {
|
|
468
|
+
if (allRows.length > MAX_DOWNLOAD) {
|
|
469
|
+
Modal.warning({
|
|
470
|
+
title: formatMessage({ id: 'common.download.exceed.max.title', defaultMessage: `下载数据过大提醒` }),
|
|
471
|
+
content: formatMessage(
|
|
472
|
+
{
|
|
473
|
+
id: 'common.download.exceed.max.tips',
|
|
474
|
+
defaultMessage: `超出最大下载数据 ${MAX_DOWNLOAD} 条,超出部分请重新下载`,
|
|
475
|
+
},
|
|
476
|
+
{
|
|
477
|
+
count: MAX_DOWNLOAD,
|
|
478
|
+
},
|
|
479
|
+
),
|
|
480
|
+
onOk: () => resolve(allRows.slice(0, MAX_DOWNLOAD)),
|
|
481
|
+
});
|
|
482
|
+
} else {
|
|
483
|
+
resolve(allRows);
|
|
484
|
+
}
|
|
485
|
+
})
|
|
486
|
+
.catch((err) => console.log('err', err))
|
|
487
|
+
.finally(() => {
|
|
488
|
+
timer.current = setTimeout(() => {
|
|
489
|
+
setDownloadButtonLoading(false);
|
|
490
|
+
setPercent(0);
|
|
491
|
+
}, 2000);
|
|
492
|
+
});
|
|
493
|
+
});
|
|
494
|
+
});
|
|
495
|
+
};
|
|
496
|
+
|
|
497
|
+
/**
|
|
498
|
+
* 下载模板
|
|
499
|
+
*/
|
|
500
|
+
const handleDownloadTemplate = () => {
|
|
501
|
+
handleTemplateDownloadModalSearchParamsChange({
|
|
502
|
+
templateTypeCode: downloadTemplate.templateTypeCode,
|
|
503
|
+
moduleCode: downloadTemplate.moduleCode,
|
|
504
|
+
});
|
|
505
|
+
templateDownloadModalOpenChange(true);
|
|
506
|
+
};
|
|
507
|
+
|
|
341
508
|
/**
|
|
342
509
|
* 增强的列配置(添加操作列)
|
|
343
510
|
*/
|
|
@@ -489,16 +656,48 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
489
656
|
</ImportExecl>
|
|
490
657
|
),
|
|
491
658
|
},
|
|
659
|
+
{
|
|
660
|
+
auth: getAuthorityFn(defaultAuthCodes.templateDownload),
|
|
661
|
+
key: 'templateDownload',
|
|
662
|
+
label: (
|
|
663
|
+
<a onClick={handleDownloadTemplate} key="templateDownload">
|
|
664
|
+
<DownloadOutlined style={{ marginRight: 6 }} />
|
|
665
|
+
{formatMessage({ id: 'cfmmUI.common.button.importData', defaultMessage: '下载模板' })}
|
|
666
|
+
</a>
|
|
667
|
+
),
|
|
668
|
+
},
|
|
669
|
+
{
|
|
670
|
+
auth: getAuthorityFn(defaultAuthCodes.import) && (apis.importData || interceptors.importData?.submitImportListData),
|
|
671
|
+
key: 'import',
|
|
672
|
+
label: (
|
|
673
|
+
<ImportExecl key="importMaterial" rangeStart={{ c: 0, r: 2 }} onChange={importListData}>
|
|
674
|
+
<div style={{ color: !actionLoading ? 'rgba(0, 0, 0, 0.88)' : 'rgba(0, 0, 0, 0.25)' }}>
|
|
675
|
+
<UploadOutlined style={{ marginRight: 8 }} />
|
|
676
|
+
{formatMessage({ id: 'cfmmUI.common.button.importData', defaultMessage: '导入数据' })}
|
|
677
|
+
</div>
|
|
678
|
+
</ImportExecl>
|
|
679
|
+
),
|
|
680
|
+
},
|
|
681
|
+
{
|
|
682
|
+
auth: getAuthorityFn(defaultAuthCodes.exprot),
|
|
683
|
+
key: 'exprot',
|
|
684
|
+
disabled: !tableList.length || loading,
|
|
685
|
+
label: <a onClick={handleDownloadExcel} key="exprot">
|
|
686
|
+
<CloudDownloadOutlined style={{ marginRight: 6 }} />
|
|
687
|
+
{formatMessage({ id: 'cfmmUI.common.button.exprotData', defaultMessage: '导出数据' })}
|
|
688
|
+
</a>
|
|
689
|
+
},
|
|
492
690
|
];
|
|
493
691
|
|
|
494
692
|
// 过滤有权限的按钮,并移除 auth 属性避免传递到 DOM
|
|
495
693
|
return allButtons
|
|
496
694
|
.filter((button) => button.auth)
|
|
497
695
|
.map(({ auth, ...rest }) => rest);
|
|
498
|
-
}, []);
|
|
696
|
+
}, [tableList, loading, columnsStateMap]);
|
|
499
697
|
|
|
500
698
|
return (
|
|
501
699
|
<>
|
|
700
|
+
{downloadButtonLoading ? <Progress percent={percent} size="small" /> : null}
|
|
502
701
|
<ProTable<T>
|
|
503
702
|
headerTitle={formatMessage({
|
|
504
703
|
id: `${baseLocalCode}.title`,
|
|
@@ -510,9 +709,9 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
510
709
|
search={cfmmUtils?.getTableSearchFormLayout()}
|
|
511
710
|
scroll={cfmmUtils?.TABLE_SCROLL ?? TABLE_SCROLL}
|
|
512
711
|
toolBarRender={useMemoizedFn(() => {
|
|
513
|
-
if(!getBarButtons?.length) return [];
|
|
712
|
+
if (!getBarButtons?.length) return [];
|
|
514
713
|
return [
|
|
515
|
-
<Dropdown.Button type="primary" loading={actionLoading} menu={{ items: getBarButtons.slice(1) }}>
|
|
714
|
+
<Dropdown.Button type="primary" loading={actionLoading || downloadButtonLoading} menu={{ items: getBarButtons.slice(1) }}>
|
|
516
715
|
{getBarButtons[0].icon}
|
|
517
716
|
{getBarButtons[0].label}
|
|
518
717
|
</Dropdown.Button>
|
|
@@ -520,10 +719,17 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
520
719
|
})}
|
|
521
720
|
request={useMemoizedFn(async (params, sorter) => {
|
|
522
721
|
const { current, pageIndex = params.current, pageSize, ...otherParams } = params;
|
|
722
|
+
|
|
723
|
+
setTableSearchParams({ ...otherParams, orderBy: { ...sorter } });
|
|
724
|
+
|
|
523
725
|
const result = await handleSearch({ pageIndex, pageSize, orderBy: { ...sorter }, ...otherParams });
|
|
524
726
|
return result;
|
|
525
727
|
})}
|
|
526
728
|
columns={enhancedColumns}
|
|
729
|
+
columnsState={{
|
|
730
|
+
value: columnsStateMap,
|
|
731
|
+
onChange: setColumnsStateMap,
|
|
732
|
+
}}
|
|
527
733
|
rowSelection={useMemo(
|
|
528
734
|
() => ({
|
|
529
735
|
onChange: (selectedRowKeys, selectedRows) => {
|
|
@@ -62,6 +62,8 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
62
62
|
async function fetchData() {
|
|
63
63
|
if (!props.values) return;
|
|
64
64
|
|
|
65
|
+
const { tableName, columnName, dataId } = props.values;
|
|
66
|
+
|
|
65
67
|
/**
|
|
66
68
|
* 加载中
|
|
67
69
|
*/
|
|
@@ -72,9 +74,9 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
72
74
|
*/
|
|
73
75
|
const queryList = props.queryLangInfoList ?? queryLangInfoList;
|
|
74
76
|
const result = await queryList({
|
|
75
|
-
tableName
|
|
76
|
-
columnName
|
|
77
|
-
dataId
|
|
77
|
+
tableName,
|
|
78
|
+
columnName,
|
|
79
|
+
dataId,
|
|
78
80
|
});
|
|
79
81
|
const i18nJson = result?.data?.i18nJson;
|
|
80
82
|
|
|
@@ -82,7 +84,7 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
82
84
|
const newList = dataSource.map((item, idx) => {
|
|
83
85
|
return {
|
|
84
86
|
...item,
|
|
85
|
-
value: i18nJson[item.lang]?.
|
|
87
|
+
value: i18nJson[item.lang]?.[columnName],
|
|
86
88
|
dataId: new Date().getTime() + idx,
|
|
87
89
|
};
|
|
88
90
|
});
|
|
@@ -111,6 +111,9 @@ declare const _default: {
|
|
|
111
111
|
'cfmmUI.common.button.back': string;
|
|
112
112
|
'cfmmUI.common.button.exportMultiLang': string;
|
|
113
113
|
'cfmmUI.common.button.importMultiLang': string;
|
|
114
|
+
"cfmmUI.common.button.templateDownload": string;
|
|
115
|
+
"cfmmUI.common.button.importData": string;
|
|
116
|
+
"cfmmUI.common.button.exportData": string;
|
|
114
117
|
'cfmmUI.common.button.exportMultiLang.notice': string;
|
|
115
118
|
'cfmmUI.action.create.waitingMessage': string;
|
|
116
119
|
'cfmmUI.action.update.waitingMessage': string;
|
|
@@ -22,6 +22,9 @@ declare const _default: {
|
|
|
22
22
|
'cfmmUI.common.button.back': string;
|
|
23
23
|
'cfmmUI.common.button.exportMultiLang': string;
|
|
24
24
|
'cfmmUI.common.button.importMultiLang': string;
|
|
25
|
+
"cfmmUI.common.button.templateDownload": string;
|
|
26
|
+
"cfmmUI.common.button.importData": string;
|
|
27
|
+
"cfmmUI.common.button.exportData": string;
|
|
25
28
|
'cfmmUI.common.button.exportMultiLang.notice': string;
|
|
26
29
|
'cfmmUI.action.create.waitingMessage': string;
|
|
27
30
|
'cfmmUI.action.update.waitingMessage': string;
|
|
@@ -30,6 +30,9 @@ var _default = exports.default = {
|
|
|
30
30
|
'cfmmUI.common.button.back': 'Back',
|
|
31
31
|
'cfmmUI.common.button.exportMultiLang': 'Export Multi Language',
|
|
32
32
|
'cfmmUI.common.button.importMultiLang': 'Import Multi Language',
|
|
33
|
+
"cfmmUI.common.button.templateDownload": "Template Download",
|
|
34
|
+
"cfmmUI.common.button.importData": "Import Data",
|
|
35
|
+
"cfmmUI.common.button.exportData": "Export Data",
|
|
33
36
|
'cfmmUI.common.button.exportMultiLang.notice': 'Please do not modify the table structure',
|
|
34
37
|
//操作提示
|
|
35
38
|
'cfmmUI.action.create.waitingMessage': 'Being Added',
|
|
@@ -111,6 +111,9 @@ declare const _default: {
|
|
|
111
111
|
'cfmmUI.common.button.back': string;
|
|
112
112
|
'cfmmUI.common.button.exportMultiLang': string;
|
|
113
113
|
'cfmmUI.common.button.importMultiLang': string;
|
|
114
|
+
"cfmmUI.common.button.templateDownload": string;
|
|
115
|
+
"cfmmUI.common.button.importData": string;
|
|
116
|
+
"cfmmUI.common.button.exportData": string;
|
|
114
117
|
'cfmmUI.common.button.exportMultiLang.notice': string;
|
|
115
118
|
'cfmmUI.action.create.waitingMessage': string;
|
|
116
119
|
'cfmmUI.action.update.waitingMessage': string;
|
|
@@ -111,6 +111,9 @@ declare const _default: {
|
|
|
111
111
|
'cfmmUI.common.button.back': string;
|
|
112
112
|
'cfmmUI.common.button.exportMultiLang': string;
|
|
113
113
|
'cfmmUI.common.button.importMultiLang': string;
|
|
114
|
+
"cfmmUI.common.button.templateDownload": string;
|
|
115
|
+
"cfmmUI.common.button.importData": string;
|
|
116
|
+
"cfmmUI.common.button.exportData": string;
|
|
114
117
|
'cfmmUI.common.button.exportMultiLang.notice': string;
|
|
115
118
|
'cfmmUI.action.create.waitingMessage': string;
|
|
116
119
|
'cfmmUI.action.update.waitingMessage': string;
|
|
@@ -111,6 +111,9 @@ declare const _default: {
|
|
|
111
111
|
"cfmmUI.common.button.back": string;
|
|
112
112
|
"cfmmUI.common.button.exportMultiLang": string;
|
|
113
113
|
"cfmmUI.common.button.importMultiLang": string;
|
|
114
|
+
"cfmmUI.common.button.templateDownload": string;
|
|
115
|
+
"cfmmUI.common.button.importData": string;
|
|
116
|
+
"cfmmUI.common.button.exportData": string;
|
|
114
117
|
"cfmmUI.common.button.exportMultiLang.notice": string;
|
|
115
118
|
"cfmmUI.action.create.waitingMessage": string;
|
|
116
119
|
"cfmmUI.action.update.waitingMessage": string;
|
|
@@ -110,6 +110,9 @@ declare const _default: {
|
|
|
110
110
|
"cfmmUI.common.button.back": string;
|
|
111
111
|
"cfmmUI.common.button.exportMultiLang": string;
|
|
112
112
|
"cfmmUI.common.button.importMultiLang": string;
|
|
113
|
+
"cfmmUI.common.button.templateDownload": string;
|
|
114
|
+
"cfmmUI.common.button.importData": string;
|
|
115
|
+
"cfmmUI.common.button.exportData": string;
|
|
113
116
|
"cfmmUI.common.button.exportMultiLang.notice": string;
|
|
114
117
|
"cfmmUI.action.create.waitingMessage": string;
|
|
115
118
|
"cfmmUI.action.update.waitingMessage": string;
|
|
@@ -22,6 +22,9 @@ declare const _default: {
|
|
|
22
22
|
"cfmmUI.common.button.back": string;
|
|
23
23
|
"cfmmUI.common.button.exportMultiLang": string;
|
|
24
24
|
"cfmmUI.common.button.importMultiLang": string;
|
|
25
|
+
"cfmmUI.common.button.templateDownload": string;
|
|
26
|
+
"cfmmUI.common.button.importData": string;
|
|
27
|
+
"cfmmUI.common.button.exportData": string;
|
|
25
28
|
"cfmmUI.common.button.exportMultiLang.notice": string;
|
|
26
29
|
"cfmmUI.action.create.waitingMessage": string;
|
|
27
30
|
"cfmmUI.action.update.waitingMessage": string;
|
|
@@ -30,6 +30,9 @@ var _default = exports.default = {
|
|
|
30
30
|
"cfmmUI.common.button.back": "返回",
|
|
31
31
|
"cfmmUI.common.button.exportMultiLang": "导出多语言",
|
|
32
32
|
"cfmmUI.common.button.importMultiLang": "导入多语言",
|
|
33
|
+
"cfmmUI.common.button.templateDownload": "模板下载",
|
|
34
|
+
"cfmmUI.common.button.importData": "导入数据",
|
|
35
|
+
"cfmmUI.common.button.exportData": "导出数据",
|
|
33
36
|
"cfmmUI.common.button.exportMultiLang.notice": "请勿修改表格结构",
|
|
34
37
|
//操作提示
|
|
35
38
|
"cfmmUI.action.create.waitingMessage": "正在新增",
|
|
@@ -111,6 +111,9 @@ declare const _default: {
|
|
|
111
111
|
"cfmmUI.common.button.back": string;
|
|
112
112
|
"cfmmUI.common.button.exportMultiLang": string;
|
|
113
113
|
"cfmmUI.common.button.importMultiLang": string;
|
|
114
|
+
"cfmmUI.common.button.templateDownload": string;
|
|
115
|
+
"cfmmUI.common.button.importData": string;
|
|
116
|
+
"cfmmUI.common.button.exportData": string;
|
|
114
117
|
"cfmmUI.common.button.exportMultiLang.notice": string;
|
|
115
118
|
"cfmmUI.action.create.waitingMessage": string;
|
|
116
119
|
"cfmmUI.action.update.waitingMessage": string;
|
|
@@ -22,6 +22,9 @@ declare const _default: {
|
|
|
22
22
|
"cfmmUI.common.button.back": string;
|
|
23
23
|
"cfmmUI.common.button.exportMultiLang": string;
|
|
24
24
|
"cfmmUI.common.button.importMultiLang": string;
|
|
25
|
+
"cfmmUI.common.button.templateDownload": string;
|
|
26
|
+
"cfmmUI.common.button.importData": string;
|
|
27
|
+
"cfmmUI.common.button.exportData": string;
|
|
25
28
|
"cfmmUI.common.button.exportMultiLang.notice": string;
|
|
26
29
|
"cfmmUI.action.create.waitingMessage": string;
|
|
27
30
|
"cfmmUI.action.update.waitingMessage": string;
|
|
@@ -30,6 +30,9 @@ var _default = exports.default = {
|
|
|
30
30
|
"cfmmUI.common.button.back": "返回",
|
|
31
31
|
"cfmmUI.common.button.exportMultiLang": "導出多語言",
|
|
32
32
|
"cfmmUI.common.button.importMultiLang": "導入多語言",
|
|
33
|
+
"cfmmUI.common.button.templateDownload": "模板下載",
|
|
34
|
+
"cfmmUI.common.button.importData": "導入數據",
|
|
35
|
+
"cfmmUI.common.button.exportData": "導出數據",
|
|
33
36
|
"cfmmUI.common.button.exportMultiLang.notice": "請勿修改表格結構",
|
|
34
37
|
//操作提示
|
|
35
38
|
"cfmmUI.action.create.waitingMessage": "正在新增",
|
|
@@ -110,6 +110,9 @@ declare const _default: {
|
|
|
110
110
|
"cfmmUI.common.button.back": string;
|
|
111
111
|
"cfmmUI.common.button.exportMultiLang": string;
|
|
112
112
|
"cfmmUI.common.button.importMultiLang": string;
|
|
113
|
+
"cfmmUI.common.button.templateDownload": string;
|
|
114
|
+
"cfmmUI.common.button.importData": string;
|
|
115
|
+
"cfmmUI.common.button.exportData": string;
|
|
113
116
|
"cfmmUI.common.button.exportMultiLang.notice": string;
|
|
114
117
|
"cfmmUI.action.create.waitingMessage": string;
|
|
115
118
|
"cfmmUI.action.update.waitingMessage": string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const CrudTableTypes = "\nexport interface CrudTableConfig<T = any, U = {}, C = {}> {\n // \u57FA\u7840\u914D\u7F6E\n baseLocalCode?: string;\n baseLocalName?: string;\n rowKey: keyof T;\n\n /** \u591A\u8BED\u8A00\u7F16\u8F91\u914D\u7F6E */\n multiLang?: {\n /** \u591A\u8BED\u8A00\u8868\u6570\u636E */\n multiLangList?: ExprotMultiLangListItem[];\n /** \u591A\u8BED\u8A00\u5B57\u6BB5\u914D\u7F6E */\n fields: {\n /** \u5B57\u6BB5\u540D */\n fieldName: keyof T;\n /** \u8868\u540D */\n tableName: string;\n /** \u5217\u540D */\n columnName: string;\n /** \u70B9\u51FB\u56DE\u8C03\uFF0C\u7528\u4E8E\u8BBE\u7F6ElangInfoItem */\n onClick?: (record: T) => LangInfoItem;\n }[];\n /** \u81EA\u5B9A\u4E49\u5BFC\u51FA\u591A\u8BED\u8A00\u51FD\u6570 */\n exportMultiLangData?: () => Promise<boolean | void>;\n /** \u81EA\u5B9A\u4E49\u67E5\u8BE2\u5BFC\u51FA\u591A\u8BED\u8A00\u51FD\u6570 */\n queryExprotMultiLangData?: (tableName: string, columnName: string) => Promise<ExprotMultiLangListItem[]>;\n /** \u81EA\u5B9A\u4E49\u5BFC\u5165\u591A\u8BED\u8A00\u51FD\u6570 */\n importMultiLangData?: (list: ExprotMultiLangListItem[], tableName: string, columnName: string) => Promise<{ success: boolean; failMsg?: string; data?: any } | void> | void;\n };\n \n /** \u6309\u94AE\u6743\u9650\u7F16\u7801\uFF0C\u9ED8\u8BA4\u4F1A\u6839\u636EbaseLocalCode\u751F\u6210 */\n authCodes?: {\n view?: string | boolean | ((record: T) => boolean | undefined);\n add?: string | boolean;\n edit?: string | boolean | ((record: T) => boolean | undefined);\n /** remove\u6743\u9650\u662F\u51FD\u6570\u65F6\uFF0C\u5982\u679C\u9700\u8981\u6279\u91CF\u5220\u9664\u8BF7\u8BBE\u7F6EbatchRemoveAuth\u4E3Atrue, \u5426\u5219\u4E0D\u4F1A\u663E\u793A\u6279\u91CF\u5220\u9664\u6309\u94AE */\n remove?: string | boolean | ((record: T) => boolean | undefined);\n /** \u6279\u91CF\u5220\u9664\u6743\u9650 */\n batchRemoveAuth?: string | boolean;\n record?: string | boolean | ((record: T) => boolean | undefined);\n };\n\n /** API\u65B9\u6CD5 */\n apis: {\n /** \u67E5\u8BE2\u65B9\u6CD5 */\n query: (params: any) => Promise<any>;\n /** \u64CD\u4F5C\u65B9\u6CD5 */\n handle: (method: API.MethodTypes, data: any) => Promise<any>;\n /** \u6839\u636Eid\u67E5\u8BE2\u8BE6\u60C5\u65B9\u6CD5\uFF0C\u6CA1\u4F20\u5219\u4F7F\u7528\u884C\u6570\u636E\u8FDB\u884C\u7F16\u8F91 */\n queryById?: (id: any) => Promise<any>;\n };\n\n /** API\u62E6\u622A\u5668 */\n interceptors?: {\n /** \u67E5\u8BE2\u62E6\u622A\u5668 */\n query?: {\n /** \u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u67E5\u8BE2\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (params: any) => any;\n /** \u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u67E5\u8BE2\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (result: any) => any;\n };\n /** \u64CD\u4F5C\u62E6\u622A\u5668 */\n handle?: {\n /** \u64CD\u4F5C\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u64CD\u4F5C\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (method: API.MethodTypes, data: any) => { method?: API.MethodTypes; data: any };\n /** \u64CD\u4F5C\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u64CD\u4F5C\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (method: API.MethodTypes, result: any) => any;\n };\n /** \u8BE6\u60C5\u67E5\u8BE2\u62E6\u622A\u5668 */\n queryById?: {\n /** \u8BE6\u60C5\u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u8BE6\u60C5\u67E5\u8BE2\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (id: any) => any;\n /** \u8BE6\u60C5\u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u8BE6\u60C5\u67E5\u8BE2\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (result: any) => any;\n };\n };\n\n /** \u8868\u683C\u5217\u914D\u7F6E */\n columns: ProColumns<T>[];\n /** \u8868\u683C\u5176\u4ED6\u914D\u7F6E */\n tableProps?: Partial<ProTableProps<T, any>>;\n\n /** \u64CD\u4F5C\u5217\u914D\u7F6E\uFF08\u8868\u683C\u64CD\u4F5C\u5217\u914D\u7F6E\u3001\u64CD\u4F5C\u5217\u4E0B\u62C9\u6309\u94AE\u914D\u7F6E\uFF09 */\n actionColumnConfig?: {\n /** \u8868\u683C\u64CD\u4F5C\u5217\u914D\u7F6E */\n columnConfig?: ProColumns<T>;\n /** \u4E0B\u62C9\u5217\u8868\u5C5E\u6027 */\n getDropdownButtonProps?: (record: T) => Partial<DropdownButtonProps>;\n };\n\n /** \u65B0\u589E\u8868\u5355\u914D\u7F6E */\n createConfig?: {\n /** \u81EA\u5B9A\u4E49\u521B\u5EFA\u8868\u5355\u7EC4\u4EF6 */\n Component?: React.ComponentType<\n {\n open?: boolean;\n onOpenChange?: (visible: boolean) => void;\n onSubmit?: (values: any) => Promise<boolean | void>;\n loading?: boolean;\n } & C\n >;\n /** \u4F20\u9012\u7ED9CreateFormComponent\u7684\u989D\u5916props */\n props?: C;\n };\n\n /** \u7F16\u8F91\u8868\u5355\u914D\u7F6E */\n updateConfig?: {\n /** \u81EA\u5B9A\u4E49\u7F16\u8F91\u8868\u5355\u7EC4\u4EF6 */\n Component?: React.ComponentType<\n {\n updateDrawerRef: React.MutableRefObject<RefDrawerFormRefType | undefined>;\n values: Partial<T> | null;\n onSubmit: (values: any) => Promise<boolean | void>;\n } & U\n >;\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u989D\u5916props */\n props?: U;\n };\n\n /** \u81EA\u5B9A\u4E49\u65B0\u589E\u51FD\u6570 */\n onAdd?: () => void;\n\n /** \u67E5\u8BE2\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterSearch?: (result: API.Result_TableListType<T[]>) => Promise<any> | void;\n /** \u7F16\u8F91\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DET\uFF0C\u5219\u4E0D\u8FDB\u884C\u7F16\u8F91 */\n onBeforeEdit?: (record: T) => Promise<T | null>;\n /** \u5220\u9664\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DEtrue\uFF0C\u5219\u4E0D\u8FDB\u884C\u64CD\u4F5C */\n onBeforeDelete?: (keys: React.Key[]) => Promise<boolean> | boolean | void;\n /** \u5220\u9664\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterDelete?: (keys: React.Key[], result: boolean) => Promise<boolean> | boolean | void;\n /** \u64CD\u4F5C\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DEtrue\uFF0C\u5219\u4E0D\u8FDB\u884C\u64CD\u4F5C */\n onBeforeAction?: (method: API.MethodTypes, fields: any) => Promise<boolean> | boolean | void;\n /** \u64CD\u4F5C\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterAction?: (method: API.MethodTypes, success: boolean) => void;\n}\n\nexport interface CrudTableRefType<T = any> {\n actionRef: React.MutableRefObject<ActionType | undefined>;\n updateDrawerRef: React.MutableRefObject<RefDrawerFormRefType | undefined>;\n tableList: T[];\n setTableList: (row: T[]) => void;\n viewRow: T | undefined;\n setViewRow: (row: T | undefined) => void;\n actionLogRow: T | undefined;\n setActionLogRow: (row: T | undefined) => void;\n editRow: Partial<T> | null;\n setEditRow: (row: Partial<T> | null) => void;\n selectedRows: T[];\n setSelectedRows: (rows: T[]) => void;\n selectedRowKeys: React.Key[];\n setSelectedRowKeys: (keys: React.Key[]) => void;\n createModalOpen: boolean;\n setCreateModalOpen: (open: boolean) => void;\n editLangModalOpen: boolean;\n setEditLangModalOpen: (open: boolean) => void;\n currentLangInfo?: LangInfoItem;\n setCurrentLangInfo: (open: LangInfoItem) => void;\n onDelete: (keys: React.Key[]) => void;\n updateModalOpen: () => void;\n updateModalClose: () => void;\n}\n";
|
|
1
|
+
export declare const CrudTableTypes = "\nexport interface CrudTableConfig<T = any, U = {}, C = {}> {\n // \u57FA\u7840\u914D\u7F6E\n baseLocalCode?: string;\n baseLocalName?: string;\n rowKey: keyof T;\n\n /** \u591A\u8BED\u8A00\u7F16\u8F91\u914D\u7F6E */\n multiLang?: {\n /** \u591A\u8BED\u8A00\u8868\u6570\u636E */\n multiLangList?: ExprotMultiLangListItem[];\n /** \u591A\u8BED\u8A00\u5B57\u6BB5\u914D\u7F6E */\n fields: {\n /** \u5B57\u6BB5\u540D */\n fieldName: keyof T;\n /** \u8868\u540D */\n tableName: string;\n /** \u5217\u540D */\n columnName: string;\n /** \u70B9\u51FB\u56DE\u8C03\uFF0C\u7528\u4E8E\u8BBE\u7F6ElangInfoItem */\n onClick?: (record: T) => LangInfoItem;\n }[];\n /** \u81EA\u5B9A\u4E49\u5BFC\u51FA\u591A\u8BED\u8A00\u51FD\u6570 */\n exportMultiLangData?: () => Promise<boolean | void>;\n /** \u81EA\u5B9A\u4E49\u67E5\u8BE2\u5BFC\u51FA\u591A\u8BED\u8A00\u51FD\u6570 */\n queryExprotMultiLangData?: (tableName: string, columnName: string) => Promise<ExprotMultiLangListItem[]>;\n /** \u81EA\u5B9A\u4E49\u5BFC\u5165\u591A\u8BED\u8A00\u51FD\u6570 */\n importMultiLangData?: (list: ExprotMultiLangListItem[], tableName: string, columnName: string) => Promise<{ success: boolean; failMsg?: string; data?: any } | void> | void;\n };\n \n /** \u6309\u94AE\u6743\u9650\u7F16\u7801\uFF0C\u9ED8\u8BA4\u4F1A\u6839\u636EbaseLocalCode\u751F\u6210 */\n authCodes?: {\n view?: string | boolean | ((record: T) => boolean | undefined);\n add?: string | boolean;\n edit?: string | boolean | ((record: T) => boolean | undefined);\n /** remove\u6743\u9650\u662F\u51FD\u6570\u65F6\uFF0C\u5982\u679C\u9700\u8981\u6279\u91CF\u5220\u9664\u8BF7\u8BBE\u7F6EbatchRemoveAuth\u4E3Atrue, \u5426\u5219\u4E0D\u4F1A\u663E\u793A\u6279\u91CF\u5220\u9664\u6309\u94AE */\n remove?: string | boolean | ((record: T) => boolean | undefined);\n /** \u6279\u91CF\u5220\u9664\u6743\u9650 */\n batchRemoveAuth?: string | boolean;\n record?: string | boolean | ((record: T) => boolean | undefined);\n };\n\n /** API\u65B9\u6CD5 */\n apis: {\n /** \u67E5\u8BE2\u65B9\u6CD5 */\n query: (params: any) => Promise<any>;\n /** \u64CD\u4F5C\u65B9\u6CD5 */\n handle: (method: API.MethodTypes, data: any) => Promise<any>;\n /** \u6839\u636Eid\u67E5\u8BE2\u8BE6\u60C5\u65B9\u6CD5\uFF0C\u6CA1\u4F20\u5219\u4F7F\u7528\u884C\u6570\u636E\u8FDB\u884C\u7F16\u8F91 */\n queryById?: (id: any) => Promise<any>;\n /** \u5BFC\u5165\u65B9\u6CD5 */\n importData?: (list: T[]) => Promise<any>;\n };\n\n /** API\u62E6\u622A\u5668 */\n interceptors?: {\n /** \u67E5\u8BE2\u62E6\u622A\u5668 */\n query?: {\n /** \u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u67E5\u8BE2\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (params: any) => any;\n /** \u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u67E5\u8BE2\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (result: any) => any;\n };\n /** \u64CD\u4F5C\u62E6\u622A\u5668 */\n handle?: {\n /** \u64CD\u4F5C\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u64CD\u4F5C\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (method: API.MethodTypes, data: any) => { method?: API.MethodTypes; data: any };\n /** \u64CD\u4F5C\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u64CD\u4F5C\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (method: API.MethodTypes, result: any) => any;\n };\n /** \u8BE6\u60C5\u67E5\u8BE2\u62E6\u622A\u5668 */\n queryById?: {\n /** \u8BE6\u60C5\u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u8BE6\u60C5\u67E5\u8BE2\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (id: any) => any;\n /** \u8BE6\u60C5\u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u8BE6\u60C5\u67E5\u8BE2\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (result: any) => any;\n };\n /** \u5BFC\u5165\u62E6\u622A\u5668 */\n importData?: {\n /** \u5BFC\u5165\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u5BFC\u5165\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (list: T[]) => any;\n /** \u5BFC\u5165\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u5BFC\u5165\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (result: any) => any;\n /** \u5BFC\u5165\u6821\u9A8C\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u5BFC\u5165\u6570\u636E\u8FDB\u884C\u6821\u9A8C */\n checkImportExecl?: (list: T[]) => ImportErrorType[];\n /** \u5BFC\u5165\u6821\u9A8C\u63D0\u793A\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u5BFC\u5165\u6821\u9A8C\u63D0\u793A\u8FDB\u884C\u5904\u7406 */\n showCheckErrorTips?: (errorMessageList: ImportErrorType[]) => void;\n /** \u5BFC\u5165\u63D0\u4EA4\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u5BFC\u5165\u6570\u636E\u8FDB\u884C\u63D0\u4EA4 */\n submitImportListData?: (list: T[]) => Promise<{ success: boolean; data?: K | null; error?: AxiosError | null }>;\n };\n };\n\n /** \u8868\u683C\u5217\u914D\u7F6E */\n columns: ProColumns<T>[];\n /** \u8868\u683C\u5176\u4ED6\u914D\u7F6E */\n tableProps?: Partial<ProTableProps<T, any>>;\n\n /** \u64CD\u4F5C\u5217\u914D\u7F6E\uFF08\u8868\u683C\u64CD\u4F5C\u5217\u914D\u7F6E\u3001\u64CD\u4F5C\u5217\u4E0B\u62C9\u6309\u94AE\u914D\u7F6E\uFF09 */\n actionColumnConfig?: {\n /** \u8868\u683C\u64CD\u4F5C\u5217\u914D\u7F6E */\n columnConfig?: ProColumns<T>;\n /** \u4E0B\u62C9\u5217\u8868\u5C5E\u6027 */\n getDropdownButtonProps?: (record: T) => Partial<DropdownButtonProps>;\n };\n\n /** \u65B0\u589E\u8868\u5355\u914D\u7F6E */\n createConfig?: {\n /** \u81EA\u5B9A\u4E49\u521B\u5EFA\u8868\u5355\u7EC4\u4EF6 */\n Component?: React.ComponentType<\n {\n open?: boolean;\n onOpenChange?: (visible: boolean) => void;\n onSubmit?: (values: any) => Promise<boolean | void>;\n loading?: boolean;\n } & C\n >;\n /** \u4F20\u9012\u7ED9CreateFormComponent\u7684\u989D\u5916props */\n props?: C;\n };\n\n /** \u7F16\u8F91\u8868\u5355\u914D\u7F6E */\n updateConfig?: {\n /** \u81EA\u5B9A\u4E49\u7F16\u8F91\u8868\u5355\u7EC4\u4EF6 */\n Component?: React.ComponentType<\n {\n updateDrawerRef: React.MutableRefObject<RefDrawerFormRefType | undefined>;\n values: Partial<T> | null;\n onSubmit: (values: any) => Promise<boolean | void>;\n } & U\n >;\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u989D\u5916props */\n props?: U;\n };\n \n /** \u4E0B\u8F7D\u6A21\u677F\u53C2\u6570 */\n downloadTemplate?: {\n /** \u6A21\u677F\u7C7B\u578B\u7F16\u53F7\uFF0C\u5B57\u5178\u4E2D\u7684 TemplateCenterTemplateType */\n templateTypeCode?: string;\n /** \u6A21\u5757\u7F16\u53F7\uFF0C\u83DC\u5355\u4E2D\u7684\u76EE\u5F55\u7F16\u53F7 */\n moduleCode?: string;\n };\n\n /** \u81EA\u5B9A\u4E49\u65B0\u589E\u51FD\u6570 */\n onAdd?: () => void;\n\n /** \u67E5\u8BE2\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterSearch?: (result: API.Result_TableListType<T[]>) => Promise<any> | void;\n /** \u7F16\u8F91\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DET\uFF0C\u5219\u4E0D\u8FDB\u884C\u7F16\u8F91 */\n onBeforeEdit?: (record: T) => Promise<T | null>;\n /** \u5220\u9664\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DEtrue\uFF0C\u5219\u4E0D\u8FDB\u884C\u64CD\u4F5C */\n onBeforeDelete?: (keys: React.Key[]) => Promise<boolean> | boolean | void;\n /** \u5220\u9664\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterDelete?: (keys: React.Key[], result: boolean) => Promise<boolean> | boolean | void;\n /** \u64CD\u4F5C\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DEtrue\uFF0C\u5219\u4E0D\u8FDB\u884C\u64CD\u4F5C */\n onBeforeAction?: (method: API.MethodTypes, fields: any) => Promise<boolean> | boolean | void;\n /** \u64CD\u4F5C\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterAction?: (method: API.MethodTypes, success: boolean) => void;\n /** \u5BFC\u5165\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterImport?: (result: { success: boolean; data?: K | null; error?: AxiosError | null }) => Promise<any> | void;\n}\n\nexport interface CrudTableRefType<T = any> {\n actionRef: React.MutableRefObject<ActionType | undefined>;\n updateDrawerRef: React.MutableRefObject<RefDrawerFormRefType | undefined>;\n tableList: T[];\n setTableList: (row: T[]) => void;\n viewRow: T | undefined;\n setViewRow: (row: T | undefined) => void;\n actionLogRow: T | undefined;\n setActionLogRow: (row: T | undefined) => void;\n editRow: Partial<T> | null;\n setEditRow: (row: Partial<T> | null) => void;\n selectedRows: T[];\n setSelectedRows: (rows: T[]) => void;\n selectedRowKeys: React.Key[];\n setSelectedRowKeys: (keys: React.Key[]) => void;\n createModalOpen: boolean;\n setCreateModalOpen: (open: boolean) => void;\n editLangModalOpen: boolean;\n setEditLangModalOpen: (open: boolean) => void;\n currentLangInfo?: LangInfoItem;\n setCurrentLangInfo: (open: LangInfoItem) => void;\n onDelete: (keys: React.Key[]) => void;\n updateModalOpen: () => void;\n updateModalClose: () => void;\n}\n";
|
|
@@ -4,4 +4,4 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.CrudTableTypes = void 0;
|
|
7
|
-
var CrudTableTypes = exports.CrudTableTypes = "\nexport interface CrudTableConfig<T = any, U = {}, C = {}> {\n // \u57FA\u7840\u914D\u7F6E\n baseLocalCode?: string;\n baseLocalName?: string;\n rowKey: keyof T;\n\n /** \u591A\u8BED\u8A00\u7F16\u8F91\u914D\u7F6E */\n multiLang?: {\n /** \u591A\u8BED\u8A00\u8868\u6570\u636E */\n multiLangList?: ExprotMultiLangListItem[];\n /** \u591A\u8BED\u8A00\u5B57\u6BB5\u914D\u7F6E */\n fields: {\n /** \u5B57\u6BB5\u540D */\n fieldName: keyof T;\n /** \u8868\u540D */\n tableName: string;\n /** \u5217\u540D */\n columnName: string;\n /** \u70B9\u51FB\u56DE\u8C03\uFF0C\u7528\u4E8E\u8BBE\u7F6ElangInfoItem */\n onClick?: (record: T) => LangInfoItem;\n }[];\n /** \u81EA\u5B9A\u4E49\u5BFC\u51FA\u591A\u8BED\u8A00\u51FD\u6570 */\n exportMultiLangData?: () => Promise<boolean | void>;\n /** \u81EA\u5B9A\u4E49\u67E5\u8BE2\u5BFC\u51FA\u591A\u8BED\u8A00\u51FD\u6570 */\n queryExprotMultiLangData?: (tableName: string, columnName: string) => Promise<ExprotMultiLangListItem[]>;\n /** \u81EA\u5B9A\u4E49\u5BFC\u5165\u591A\u8BED\u8A00\u51FD\u6570 */\n importMultiLangData?: (list: ExprotMultiLangListItem[], tableName: string, columnName: string) => Promise<{ success: boolean; failMsg?: string; data?: any } | void> | void;\n };\n \n /** \u6309\u94AE\u6743\u9650\u7F16\u7801\uFF0C\u9ED8\u8BA4\u4F1A\u6839\u636EbaseLocalCode\u751F\u6210 */\n authCodes?: {\n view?: string | boolean | ((record: T) => boolean | undefined);\n add?: string | boolean;\n edit?: string | boolean | ((record: T) => boolean | undefined);\n /** remove\u6743\u9650\u662F\u51FD\u6570\u65F6\uFF0C\u5982\u679C\u9700\u8981\u6279\u91CF\u5220\u9664\u8BF7\u8BBE\u7F6EbatchRemoveAuth\u4E3Atrue, \u5426\u5219\u4E0D\u4F1A\u663E\u793A\u6279\u91CF\u5220\u9664\u6309\u94AE */\n remove?: string | boolean | ((record: T) => boolean | undefined);\n /** \u6279\u91CF\u5220\u9664\u6743\u9650 */\n batchRemoveAuth?: string | boolean;\n record?: string | boolean | ((record: T) => boolean | undefined);\n };\n\n /** API\u65B9\u6CD5 */\n apis: {\n /** \u67E5\u8BE2\u65B9\u6CD5 */\n query: (params: any) => Promise<any>;\n /** \u64CD\u4F5C\u65B9\u6CD5 */\n handle: (method: API.MethodTypes, data: any) => Promise<any>;\n /** \u6839\u636Eid\u67E5\u8BE2\u8BE6\u60C5\u65B9\u6CD5\uFF0C\u6CA1\u4F20\u5219\u4F7F\u7528\u884C\u6570\u636E\u8FDB\u884C\u7F16\u8F91 */\n queryById?: (id: any) => Promise<any>;\n };\n\n /** API\u62E6\u622A\u5668 */\n interceptors?: {\n /** \u67E5\u8BE2\u62E6\u622A\u5668 */\n query?: {\n /** \u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u67E5\u8BE2\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (params: any) => any;\n /** \u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u67E5\u8BE2\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (result: any) => any;\n };\n /** \u64CD\u4F5C\u62E6\u622A\u5668 */\n handle?: {\n /** \u64CD\u4F5C\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u64CD\u4F5C\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (method: API.MethodTypes, data: any) => { method?: API.MethodTypes; data: any };\n /** \u64CD\u4F5C\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u64CD\u4F5C\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (method: API.MethodTypes, result: any) => any;\n };\n /** \u8BE6\u60C5\u67E5\u8BE2\u62E6\u622A\u5668 */\n queryById?: {\n /** \u8BE6\u60C5\u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u8BE6\u60C5\u67E5\u8BE2\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (id: any) => any;\n /** \u8BE6\u60C5\u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u8BE6\u60C5\u67E5\u8BE2\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (result: any) => any;\n };\n };\n\n /** \u8868\u683C\u5217\u914D\u7F6E */\n columns: ProColumns<T>[];\n /** \u8868\u683C\u5176\u4ED6\u914D\u7F6E */\n tableProps?: Partial<ProTableProps<T, any>>;\n\n /** \u64CD\u4F5C\u5217\u914D\u7F6E\uFF08\u8868\u683C\u64CD\u4F5C\u5217\u914D\u7F6E\u3001\u64CD\u4F5C\u5217\u4E0B\u62C9\u6309\u94AE\u914D\u7F6E\uFF09 */\n actionColumnConfig?: {\n /** \u8868\u683C\u64CD\u4F5C\u5217\u914D\u7F6E */\n columnConfig?: ProColumns<T>;\n /** \u4E0B\u62C9\u5217\u8868\u5C5E\u6027 */\n getDropdownButtonProps?: (record: T) => Partial<DropdownButtonProps>;\n };\n\n /** \u65B0\u589E\u8868\u5355\u914D\u7F6E */\n createConfig?: {\n /** \u81EA\u5B9A\u4E49\u521B\u5EFA\u8868\u5355\u7EC4\u4EF6 */\n Component?: React.ComponentType<\n {\n open?: boolean;\n onOpenChange?: (visible: boolean) => void;\n onSubmit?: (values: any) => Promise<boolean | void>;\n loading?: boolean;\n } & C\n >;\n /** \u4F20\u9012\u7ED9CreateFormComponent\u7684\u989D\u5916props */\n props?: C;\n };\n\n /** \u7F16\u8F91\u8868\u5355\u914D\u7F6E */\n updateConfig?: {\n /** \u81EA\u5B9A\u4E49\u7F16\u8F91\u8868\u5355\u7EC4\u4EF6 */\n Component?: React.ComponentType<\n {\n updateDrawerRef: React.MutableRefObject<RefDrawerFormRefType | undefined>;\n values: Partial<T> | null;\n onSubmit: (values: any) => Promise<boolean | void>;\n } & U\n >;\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u989D\u5916props */\n props?: U;\n };\n\n /** \u81EA\u5B9A\u4E49\u65B0\u589E\u51FD\u6570 */\n onAdd?: () => void;\n\n /** \u67E5\u8BE2\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterSearch?: (result: API.Result_TableListType<T[]>) => Promise<any> | void;\n /** \u7F16\u8F91\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DET\uFF0C\u5219\u4E0D\u8FDB\u884C\u7F16\u8F91 */\n onBeforeEdit?: (record: T) => Promise<T | null>;\n /** \u5220\u9664\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DEtrue\uFF0C\u5219\u4E0D\u8FDB\u884C\u64CD\u4F5C */\n onBeforeDelete?: (keys: React.Key[]) => Promise<boolean> | boolean | void;\n /** \u5220\u9664\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterDelete?: (keys: React.Key[], result: boolean) => Promise<boolean> | boolean | void;\n /** \u64CD\u4F5C\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DEtrue\uFF0C\u5219\u4E0D\u8FDB\u884C\u64CD\u4F5C */\n onBeforeAction?: (method: API.MethodTypes, fields: any) => Promise<boolean> | boolean | void;\n /** \u64CD\u4F5C\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterAction?: (method: API.MethodTypes, success: boolean) => void;\n}\n\nexport interface CrudTableRefType<T = any> {\n actionRef: React.MutableRefObject<ActionType | undefined>;\n updateDrawerRef: React.MutableRefObject<RefDrawerFormRefType | undefined>;\n tableList: T[];\n setTableList: (row: T[]) => void;\n viewRow: T | undefined;\n setViewRow: (row: T | undefined) => void;\n actionLogRow: T | undefined;\n setActionLogRow: (row: T | undefined) => void;\n editRow: Partial<T> | null;\n setEditRow: (row: Partial<T> | null) => void;\n selectedRows: T[];\n setSelectedRows: (rows: T[]) => void;\n selectedRowKeys: React.Key[];\n setSelectedRowKeys: (keys: React.Key[]) => void;\n createModalOpen: boolean;\n setCreateModalOpen: (open: boolean) => void;\n editLangModalOpen: boolean;\n setEditLangModalOpen: (open: boolean) => void;\n currentLangInfo?: LangInfoItem;\n setCurrentLangInfo: (open: LangInfoItem) => void;\n onDelete: (keys: React.Key[]) => void;\n updateModalOpen: () => void;\n updateModalClose: () => void;\n}\n";
|
|
7
|
+
var CrudTableTypes = exports.CrudTableTypes = "\nexport interface CrudTableConfig<T = any, U = {}, C = {}> {\n // \u57FA\u7840\u914D\u7F6E\n baseLocalCode?: string;\n baseLocalName?: string;\n rowKey: keyof T;\n\n /** \u591A\u8BED\u8A00\u7F16\u8F91\u914D\u7F6E */\n multiLang?: {\n /** \u591A\u8BED\u8A00\u8868\u6570\u636E */\n multiLangList?: ExprotMultiLangListItem[];\n /** \u591A\u8BED\u8A00\u5B57\u6BB5\u914D\u7F6E */\n fields: {\n /** \u5B57\u6BB5\u540D */\n fieldName: keyof T;\n /** \u8868\u540D */\n tableName: string;\n /** \u5217\u540D */\n columnName: string;\n /** \u70B9\u51FB\u56DE\u8C03\uFF0C\u7528\u4E8E\u8BBE\u7F6ElangInfoItem */\n onClick?: (record: T) => LangInfoItem;\n }[];\n /** \u81EA\u5B9A\u4E49\u5BFC\u51FA\u591A\u8BED\u8A00\u51FD\u6570 */\n exportMultiLangData?: () => Promise<boolean | void>;\n /** \u81EA\u5B9A\u4E49\u67E5\u8BE2\u5BFC\u51FA\u591A\u8BED\u8A00\u51FD\u6570 */\n queryExprotMultiLangData?: (tableName: string, columnName: string) => Promise<ExprotMultiLangListItem[]>;\n /** \u81EA\u5B9A\u4E49\u5BFC\u5165\u591A\u8BED\u8A00\u51FD\u6570 */\n importMultiLangData?: (list: ExprotMultiLangListItem[], tableName: string, columnName: string) => Promise<{ success: boolean; failMsg?: string; data?: any } | void> | void;\n };\n \n /** \u6309\u94AE\u6743\u9650\u7F16\u7801\uFF0C\u9ED8\u8BA4\u4F1A\u6839\u636EbaseLocalCode\u751F\u6210 */\n authCodes?: {\n view?: string | boolean | ((record: T) => boolean | undefined);\n add?: string | boolean;\n edit?: string | boolean | ((record: T) => boolean | undefined);\n /** remove\u6743\u9650\u662F\u51FD\u6570\u65F6\uFF0C\u5982\u679C\u9700\u8981\u6279\u91CF\u5220\u9664\u8BF7\u8BBE\u7F6EbatchRemoveAuth\u4E3Atrue, \u5426\u5219\u4E0D\u4F1A\u663E\u793A\u6279\u91CF\u5220\u9664\u6309\u94AE */\n remove?: string | boolean | ((record: T) => boolean | undefined);\n /** \u6279\u91CF\u5220\u9664\u6743\u9650 */\n batchRemoveAuth?: string | boolean;\n record?: string | boolean | ((record: T) => boolean | undefined);\n };\n\n /** API\u65B9\u6CD5 */\n apis: {\n /** \u67E5\u8BE2\u65B9\u6CD5 */\n query: (params: any) => Promise<any>;\n /** \u64CD\u4F5C\u65B9\u6CD5 */\n handle: (method: API.MethodTypes, data: any) => Promise<any>;\n /** \u6839\u636Eid\u67E5\u8BE2\u8BE6\u60C5\u65B9\u6CD5\uFF0C\u6CA1\u4F20\u5219\u4F7F\u7528\u884C\u6570\u636E\u8FDB\u884C\u7F16\u8F91 */\n queryById?: (id: any) => Promise<any>;\n /** \u5BFC\u5165\u65B9\u6CD5 */\n importData?: (list: T[]) => Promise<any>;\n };\n\n /** API\u62E6\u622A\u5668 */\n interceptors?: {\n /** \u67E5\u8BE2\u62E6\u622A\u5668 */\n query?: {\n /** \u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u67E5\u8BE2\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (params: any) => any;\n /** \u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u67E5\u8BE2\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (result: any) => any;\n };\n /** \u64CD\u4F5C\u62E6\u622A\u5668 */\n handle?: {\n /** \u64CD\u4F5C\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u64CD\u4F5C\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (method: API.MethodTypes, data: any) => { method?: API.MethodTypes; data: any };\n /** \u64CD\u4F5C\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u64CD\u4F5C\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (method: API.MethodTypes, result: any) => any;\n };\n /** \u8BE6\u60C5\u67E5\u8BE2\u62E6\u622A\u5668 */\n queryById?: {\n /** \u8BE6\u60C5\u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u8BE6\u60C5\u67E5\u8BE2\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (id: any) => any;\n /** \u8BE6\u60C5\u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u8BE6\u60C5\u67E5\u8BE2\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (result: any) => any;\n };\n /** \u5BFC\u5165\u62E6\u622A\u5668 */\n importData?: {\n /** \u5BFC\u5165\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u5BFC\u5165\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (list: T[]) => any;\n /** \u5BFC\u5165\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u5BFC\u5165\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (result: any) => any;\n /** \u5BFC\u5165\u6821\u9A8C\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u5BFC\u5165\u6570\u636E\u8FDB\u884C\u6821\u9A8C */\n checkImportExecl?: (list: T[]) => ImportErrorType[];\n /** \u5BFC\u5165\u6821\u9A8C\u63D0\u793A\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u5BFC\u5165\u6821\u9A8C\u63D0\u793A\u8FDB\u884C\u5904\u7406 */\n showCheckErrorTips?: (errorMessageList: ImportErrorType[]) => void;\n /** \u5BFC\u5165\u63D0\u4EA4\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u5BFC\u5165\u6570\u636E\u8FDB\u884C\u63D0\u4EA4 */\n submitImportListData?: (list: T[]) => Promise<{ success: boolean; data?: K | null; error?: AxiosError | null }>;\n };\n };\n\n /** \u8868\u683C\u5217\u914D\u7F6E */\n columns: ProColumns<T>[];\n /** \u8868\u683C\u5176\u4ED6\u914D\u7F6E */\n tableProps?: Partial<ProTableProps<T, any>>;\n\n /** \u64CD\u4F5C\u5217\u914D\u7F6E\uFF08\u8868\u683C\u64CD\u4F5C\u5217\u914D\u7F6E\u3001\u64CD\u4F5C\u5217\u4E0B\u62C9\u6309\u94AE\u914D\u7F6E\uFF09 */\n actionColumnConfig?: {\n /** \u8868\u683C\u64CD\u4F5C\u5217\u914D\u7F6E */\n columnConfig?: ProColumns<T>;\n /** \u4E0B\u62C9\u5217\u8868\u5C5E\u6027 */\n getDropdownButtonProps?: (record: T) => Partial<DropdownButtonProps>;\n };\n\n /** \u65B0\u589E\u8868\u5355\u914D\u7F6E */\n createConfig?: {\n /** \u81EA\u5B9A\u4E49\u521B\u5EFA\u8868\u5355\u7EC4\u4EF6 */\n Component?: React.ComponentType<\n {\n open?: boolean;\n onOpenChange?: (visible: boolean) => void;\n onSubmit?: (values: any) => Promise<boolean | void>;\n loading?: boolean;\n } & C\n >;\n /** \u4F20\u9012\u7ED9CreateFormComponent\u7684\u989D\u5916props */\n props?: C;\n };\n\n /** \u7F16\u8F91\u8868\u5355\u914D\u7F6E */\n updateConfig?: {\n /** \u81EA\u5B9A\u4E49\u7F16\u8F91\u8868\u5355\u7EC4\u4EF6 */\n Component?: React.ComponentType<\n {\n updateDrawerRef: React.MutableRefObject<RefDrawerFormRefType | undefined>;\n values: Partial<T> | null;\n onSubmit: (values: any) => Promise<boolean | void>;\n } & U\n >;\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u989D\u5916props */\n props?: U;\n };\n \n /** \u4E0B\u8F7D\u6A21\u677F\u53C2\u6570 */\n downloadTemplate?: {\n /** \u6A21\u677F\u7C7B\u578B\u7F16\u53F7\uFF0C\u5B57\u5178\u4E2D\u7684 TemplateCenterTemplateType */\n templateTypeCode?: string;\n /** \u6A21\u5757\u7F16\u53F7\uFF0C\u83DC\u5355\u4E2D\u7684\u76EE\u5F55\u7F16\u53F7 */\n moduleCode?: string;\n };\n\n /** \u81EA\u5B9A\u4E49\u65B0\u589E\u51FD\u6570 */\n onAdd?: () => void;\n\n /** \u67E5\u8BE2\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterSearch?: (result: API.Result_TableListType<T[]>) => Promise<any> | void;\n /** \u7F16\u8F91\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DET\uFF0C\u5219\u4E0D\u8FDB\u884C\u7F16\u8F91 */\n onBeforeEdit?: (record: T) => Promise<T | null>;\n /** \u5220\u9664\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DEtrue\uFF0C\u5219\u4E0D\u8FDB\u884C\u64CD\u4F5C */\n onBeforeDelete?: (keys: React.Key[]) => Promise<boolean> | boolean | void;\n /** \u5220\u9664\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterDelete?: (keys: React.Key[], result: boolean) => Promise<boolean> | boolean | void;\n /** \u64CD\u4F5C\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DEtrue\uFF0C\u5219\u4E0D\u8FDB\u884C\u64CD\u4F5C */\n onBeforeAction?: (method: API.MethodTypes, fields: any) => Promise<boolean> | boolean | void;\n /** \u64CD\u4F5C\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterAction?: (method: API.MethodTypes, success: boolean) => void;\n /** \u5BFC\u5165\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterImport?: (result: { success: boolean; data?: K | null; error?: AxiosError | null }) => Promise<any> | void;\n}\n\nexport interface CrudTableRefType<T = any> {\n actionRef: React.MutableRefObject<ActionType | undefined>;\n updateDrawerRef: React.MutableRefObject<RefDrawerFormRefType | undefined>;\n tableList: T[];\n setTableList: (row: T[]) => void;\n viewRow: T | undefined;\n setViewRow: (row: T | undefined) => void;\n actionLogRow: T | undefined;\n setActionLogRow: (row: T | undefined) => void;\n editRow: Partial<T> | null;\n setEditRow: (row: Partial<T> | null) => void;\n selectedRows: T[];\n setSelectedRows: (rows: T[]) => void;\n selectedRowKeys: React.Key[];\n setSelectedRowKeys: (keys: React.Key[]) => void;\n createModalOpen: boolean;\n setCreateModalOpen: (open: boolean) => void;\n editLangModalOpen: boolean;\n setEditLangModalOpen: (open: boolean) => void;\n currentLangInfo?: LangInfoItem;\n setCurrentLangInfo: (open: LangInfoItem) => void;\n onDelete: (keys: React.Key[]) => void;\n updateModalOpen: () => void;\n updateModalClose: () => void;\n}\n";
|