@cfmm/umi-plugins-ui-v2 0.0.14 → 0.0.15

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.
Files changed (37) hide show
  1. package/dist/cjs/components/CrudTable.tpl +102 -60
  2. package/dist/cjs/locales/en-US.d.ts +1 -0
  3. package/dist/cjs/locales/enUS/common.d.ts +1 -0
  4. package/dist/cjs/locales/enUS/common.js +1 -0
  5. package/dist/cjs/locales/enUS/index.d.ts +1 -0
  6. package/dist/cjs/locales/th-TH.d.ts +1 -0
  7. package/dist/cjs/locales/zh-CN.d.ts +1 -0
  8. package/dist/cjs/locales/zh-TW.d.ts +1 -0
  9. package/dist/cjs/locales/zhCN/common.d.ts +1 -0
  10. package/dist/cjs/locales/zhCN/common.js +1 -0
  11. package/dist/cjs/locales/zhCN/index.d.ts +1 -0
  12. package/dist/cjs/locales/zhTW/common.d.ts +1 -0
  13. package/dist/cjs/locales/zhTW/common.js +1 -0
  14. package/dist/cjs/locales/zhTW/index.d.ts +1 -0
  15. package/dist/cjs/types/CrudTableTypes.d.ts +1 -1
  16. package/dist/cjs/types/CrudTableTypes.js +1 -1
  17. package/dist/cjs/utils/excelHelper.tpl +17 -5
  18. package/dist/cjs/writeTmpFile/writeTypes.js +1 -1
  19. package/dist/esm/components/CrudTable.tpl +102 -60
  20. package/dist/esm/locales/en-US.d.ts +1 -0
  21. package/dist/esm/locales/enUS/common.d.ts +1 -0
  22. package/dist/esm/locales/enUS/common.js +1 -0
  23. package/dist/esm/locales/enUS/index.d.ts +1 -0
  24. package/dist/esm/locales/th-TH.d.ts +1 -0
  25. package/dist/esm/locales/zh-CN.d.ts +1 -0
  26. package/dist/esm/locales/zh-TW.d.ts +1 -0
  27. package/dist/esm/locales/zhCN/common.d.ts +1 -0
  28. package/dist/esm/locales/zhCN/common.js +1 -0
  29. package/dist/esm/locales/zhCN/index.d.ts +1 -0
  30. package/dist/esm/locales/zhTW/common.d.ts +1 -0
  31. package/dist/esm/locales/zhTW/common.js +1 -0
  32. package/dist/esm/locales/zhTW/index.d.ts +1 -0
  33. package/dist/esm/types/CrudTableTypes.d.ts +1 -1
  34. package/dist/esm/types/CrudTableTypes.js +1 -1
  35. package/dist/esm/utils/excelHelper.tpl +17 -5
  36. package/dist/esm/writeTmpFile/writeTypes.js +1 -1
  37. package/package.json +1 -1
@@ -16,7 +16,7 @@ import {
16
16
  LangInfoItem,
17
17
  RefDrawerFormRefType,
18
18
  } from '../types';
19
- import { genExcel, genExcelAdvanced, getExportColumns, getExportValueForColumns } from '../utils/excelHelper';
19
+ import { genExcelAdvanced, getExportColumns, getExportValueForColumns } from '../utils/excelHelper';
20
20
  import { handleImportList, showCheckErrorTips } from '../utils/importHelper';
21
21
  import ActionLogDrawer from './ActionLogDrawer';
22
22
  import CreateForm from './AddDrawerForm';
@@ -69,6 +69,8 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
69
69
  updateConfig = {},
70
70
  actionColumnConfig = {} as CrudTableConfig['actionColumnConfig'],
71
71
  downloadTemplate = {},
72
+ exportExcel = {},
73
+ importData = {},
72
74
 
73
75
  onAdd,
74
76
  onView,
@@ -177,6 +179,7 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
177
179
  },
178
180
  );
179
181
 
182
+ // 选择多语言字段
180
183
  const handleSelectMultiLangField = useMemoizedFn(async (multiLang: CrudTableConfig['multiLang']) => {
181
184
  if (!multiLang?.fields) return;
182
185
 
@@ -190,7 +193,10 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
190
193
 
191
194
  await new Promise((resolve) => {
192
195
  Modal.confirm({
193
- title: '导出多语言数据',
196
+ title: formatMessage({
197
+ id: 'cfmmUI.common.button.exportMultiLang.title',
198
+ defaultMessage: '请选择需要导出的字段',
199
+ }),
194
200
  content: (
195
201
  <div>
196
202
  <Radio.Group
@@ -285,29 +291,41 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
285
291
  }
286
292
 
287
293
  // 处理导入数据,正确赋值字段以及转格式
288
- const newList = handleImportList<ExportMultiLangListItem>(list, { needHandleUnderline: false });
294
+ const newList = multiLang.handleImportList
295
+ ? multiLang.handleImportList(list, { needHandleUnderline: false })
296
+ : handleImportList<ExportMultiLangListItem>(list, { needHandleUnderline: false });
289
297
 
290
298
  // 导入校验提示
291
- // const errorMessageList = checkImportExecl(newList);
292
- // if (errorMessageList.length) {
293
- // showCheckErrorTips(errorMessageList);
294
- // return Promise.resolve({ success: false });
295
- // }
296
-
297
- const result = await doAction(
298
- 'IMPORT',
299
- {
299
+ const errorMessageList = multiLang.checkImportExecl?.(newList);
300
+ if (errorMessageList?.length) {
301
+ multiLang.showCheckErrorTips?.(errorMessageList) ?? showCheckErrorTips(errorMessageList);
302
+ return Promise.resolve({ success: false });
303
+ }
304
+
305
+ let result;
306
+
307
+ if (multiLang.submit) {
308
+ result = await multiLang.submit({
300
309
  tableName: tableName,
301
310
  columnName: columnName,
302
- i18nDataList: newList.filter((item) => item.en_US || item.zh_CN || item.zh_TW || item.th_TH),
303
- },
304
- {
305
- actionFn: importMultiLangList,
306
- showMsg: false,
307
- },
308
- );
311
+ list: newList,
312
+ });
313
+ } else {
314
+ result = await doAction(
315
+ 'IMPORT',
316
+ {
317
+ tableName: tableName,
318
+ columnName: columnName,
319
+ i18nDataList: newList.filter((item) => item.en_US || item.zh_CN || item.zh_TW || item.th_TH),
320
+ },
321
+ {
322
+ actionFn: importMultiLangList,
323
+ showMsg: false,
324
+ },
325
+ );
326
+ }
309
327
 
310
- if (result.success) {
328
+ if (result?.success) {
311
329
  actionRef.current?.reload();
312
330
  }
313
331
  return result;
@@ -332,7 +350,7 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
332
350
 
333
351
  setLoading(true);
334
352
  const result = await queryList<T[]>(processedParams, {
335
- queryFn: apis.query,
353
+ queryFn: apis.queryExportData ? apis.queryExportData : apis.query,
336
354
  });
337
355
  setLoading(false);
338
356
 
@@ -539,6 +557,9 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
539
557
  * 下载数据为Excel
540
558
  */
541
559
  const handleDownloadExcel = async () => {
560
+ if (exportExcel?.handleDownloadExcel) {
561
+ return exportExcel.handleDownloadExcel(columns, columnsStateMap);
562
+ }
542
563
  const result = await handleSearchAll();
543
564
  if (!result.success || result.error || !result.data) {
544
565
  return;
@@ -548,7 +569,8 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
548
569
 
549
570
  setDownloadButtonLoading(true);
550
571
 
551
- const exportColums = getExportColumns<T>({ columns, columnsStateMap });
572
+ const getExportColumnsFn = exportExcel.getExportColumns ?? getExportColumns;
573
+ const exportColums = getExportColumnsFn<T>({ columns, columnsStateMap });
552
574
 
553
575
  //固定列名
554
576
  let columnsName: any[] = exportColums.map((item) => item.title).filter(Boolean);
@@ -558,45 +580,60 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
558
580
  defaultMessage: '数据列表',
559
581
  });
560
582
 
583
+ const codeList = exportColums.map((item) => item.dataIndex as string).filter(Boolean);
584
+
561
585
  //创建导出Excel
562
- genExcel(fileName + '.xlsx', 'sheet1', columnsName, function () {
563
- //生成数据
564
- return new Promise((resolve) => {
565
- //所有数据行
566
- getExportValueForColumns({
567
- columns: exportColums,
568
- data: result.data,
569
- getLocalDate,
570
- handlePercentChange,
571
- })
572
- .then((allRows) => {
573
- if (allRows.length > MAX_DOWNLOAD) {
574
- Modal.warning({
575
- title: formatMessage({ id: 'common.download.exceed.max.title', defaultMessage: `下载数据过大提醒` }),
576
- content: formatMessage(
577
- {
578
- id: 'common.download.exceed.max.tips',
579
- defaultMessage: `超出最大下载数据 ${MAX_DOWNLOAD} 条,超出部分请重新下载`,
580
- },
581
- {
582
- count: MAX_DOWNLOAD,
583
- },
584
- ),
585
- onOk: () => resolve(allRows.slice(0, MAX_DOWNLOAD)),
586
- });
587
- } else {
588
- resolve(allRows);
589
- }
586
+ genExcelAdvanced(
587
+ fileName + '.xlsx',
588
+ 'sheet1',
589
+ columnsName,
590
+ function () {
591
+ //生成数据
592
+ return new Promise((resolve) => {
593
+ //所有数据行
594
+ getExportValueForColumns({
595
+ columns: exportColums,
596
+ data: result.data,
597
+ getLocalDate,
598
+ handlePercentChange,
590
599
  })
591
- .catch((err) => console.log('err', err))
592
- .finally(() => {
593
- timer.current = setTimeout(() => {
594
- setDownloadButtonLoading(false);
595
- setPercent(0);
596
- }, 2000);
597
- });
598
- });
599
- });
600
+ .then((allRows) => {
601
+ if (allRows.length > MAX_DOWNLOAD) {
602
+ Modal.warning({
603
+ title: formatMessage({ id: 'common.download.exceed.max.title', defaultMessage: `下载数据过大提醒` }),
604
+ content: formatMessage(
605
+ {
606
+ id: 'common.download.exceed.max.tips',
607
+ defaultMessage: `超出最大下载数据 ${MAX_DOWNLOAD} 条,超出部分请重新下载`,
608
+ },
609
+ {
610
+ count: MAX_DOWNLOAD,
611
+ },
612
+ ),
613
+ onOk: () => resolve(allRows.slice(0, MAX_DOWNLOAD)),
614
+ });
615
+ } else {
616
+ resolve(allRows);
617
+ }
618
+ })
619
+ .catch((err) => console.log('err', err))
620
+ .finally(() => {
621
+ timer.current = setTimeout(() => {
622
+ setDownloadButtonLoading(false);
623
+ setPercent(0);
624
+ }, 2000);
625
+ });
626
+ });
627
+ },
628
+ {
629
+ codeColumns: codeList,
630
+ title: fileName,
631
+ notice: [
632
+ formatMessage({ id: 'cfmmUI.common.button.exportMultiLang.notice', defaultMessage: '请勿修改表格结构' }),
633
+ ],
634
+ ...(exportExcel.genExcelAdvancedOptions ?? {}),
635
+ },
636
+ );
600
637
  };
601
638
 
602
639
  /**
@@ -868,7 +905,12 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
868
905
  getAuthorityFn(defaultAuthCodes.import) && (apis.importData || interceptors.importData?.submitImportListData),
869
906
  key: 'import',
870
907
  label: (
871
- <ImportExecl key="importMaterial" rangeStart={{ c: 0, r: 2 }} onChange={importListData}>
908
+ <ImportExecl
909
+ key="importListData"
910
+ rangeStart={{ c: 0, r: 2 }}
911
+ onChange={importListData}
912
+ {...(importData?.attributes || {})}
913
+ >
872
914
  <div style={{ color: !actionLoading ? 'rgba(0, 0, 0, 0.88)' : 'rgba(0, 0, 0, 0.25)' }}>
873
915
  <UploadOutlined style={{ marginRight: 8 }} />
874
916
  {formatMessage({ id: 'cfmmUI.common.button.importData', defaultMessage: '导入数据' })}
@@ -126,6 +126,7 @@ declare const _default: {
126
126
  "cfmmUI.common.button.importData": string;
127
127
  "cfmmUI.common.button.exportData": string;
128
128
  'cfmmUI.common.button.exportMultiLang.notice': string;
129
+ "cfmmUI.common.button.exportMultiLang.title": string;
129
130
  'cfmmUI.action.create.waitingMessage': string;
130
131
  'cfmmUI.action.update.waitingMessage': string;
131
132
  'cfmmUI.action.delete.waitingMessage': string;
@@ -26,6 +26,7 @@ declare const _default: {
26
26
  "cfmmUI.common.button.importData": string;
27
27
  "cfmmUI.common.button.exportData": string;
28
28
  'cfmmUI.common.button.exportMultiLang.notice': string;
29
+ "cfmmUI.common.button.exportMultiLang.title": string;
29
30
  'cfmmUI.action.create.waitingMessage': string;
30
31
  'cfmmUI.action.update.waitingMessage': string;
31
32
  'cfmmUI.action.delete.waitingMessage': string;
@@ -34,6 +34,7 @@ var _default = exports.default = {
34
34
  "cfmmUI.common.button.importData": "Import Data",
35
35
  "cfmmUI.common.button.exportData": "Export Data",
36
36
  'cfmmUI.common.button.exportMultiLang.notice': 'Please do not modify the table structure',
37
+ "cfmmUI.common.button.exportMultiLang.title": "Please select the fields to export",
37
38
  //操作提示
38
39
  'cfmmUI.action.create.waitingMessage': 'Being Added',
39
40
  'cfmmUI.action.update.waitingMessage': 'Be Modifying',
@@ -126,6 +126,7 @@ declare const _default: {
126
126
  "cfmmUI.common.button.importData": string;
127
127
  "cfmmUI.common.button.exportData": string;
128
128
  'cfmmUI.common.button.exportMultiLang.notice': string;
129
+ "cfmmUI.common.button.exportMultiLang.title": string;
129
130
  'cfmmUI.action.create.waitingMessage': string;
130
131
  'cfmmUI.action.update.waitingMessage': string;
131
132
  'cfmmUI.action.delete.waitingMessage': string;
@@ -126,6 +126,7 @@ declare const _default: {
126
126
  "cfmmUI.common.button.importData": string;
127
127
  "cfmmUI.common.button.exportData": string;
128
128
  'cfmmUI.common.button.exportMultiLang.notice': string;
129
+ "cfmmUI.common.button.exportMultiLang.title": string;
129
130
  'cfmmUI.action.create.waitingMessage': string;
130
131
  'cfmmUI.action.update.waitingMessage': string;
131
132
  'cfmmUI.action.delete.waitingMessage': string;
@@ -126,6 +126,7 @@ declare const _default: {
126
126
  "cfmmUI.common.button.importData": string;
127
127
  "cfmmUI.common.button.exportData": string;
128
128
  "cfmmUI.common.button.exportMultiLang.notice": string;
129
+ "cfmmUI.common.button.exportMultiLang.title": string;
129
130
  "cfmmUI.action.create.waitingMessage": string;
130
131
  "cfmmUI.action.update.waitingMessage": string;
131
132
  "cfmmUI.action.delete.waitingMessage": string;
@@ -125,6 +125,7 @@ declare const _default: {
125
125
  "cfmmUI.common.button.importData": string;
126
126
  "cfmmUI.common.button.exportData": string;
127
127
  "cfmmUI.common.button.exportMultiLang.notice": string;
128
+ "cfmmUI.common.button.exportMultiLang.title": string;
128
129
  "cfmmUI.action.create.waitingMessage": string;
129
130
  "cfmmUI.action.update.waitingMessage": string;
130
131
  "cfmmUI.action.delete.waitingMessage": string;
@@ -26,6 +26,7 @@ declare const _default: {
26
26
  "cfmmUI.common.button.importData": string;
27
27
  "cfmmUI.common.button.exportData": string;
28
28
  "cfmmUI.common.button.exportMultiLang.notice": string;
29
+ "cfmmUI.common.button.exportMultiLang.title": string;
29
30
  "cfmmUI.action.create.waitingMessage": string;
30
31
  "cfmmUI.action.update.waitingMessage": string;
31
32
  "cfmmUI.action.delete.waitingMessage": string;
@@ -34,6 +34,7 @@ var _default = exports.default = {
34
34
  "cfmmUI.common.button.importData": "导入数据",
35
35
  "cfmmUI.common.button.exportData": "导出数据",
36
36
  "cfmmUI.common.button.exportMultiLang.notice": "请勿修改表格结构",
37
+ "cfmmUI.common.button.exportMultiLang.title": "请选择需要导出的字段",
37
38
  //操作提示
38
39
  "cfmmUI.action.create.waitingMessage": "正在新增",
39
40
  "cfmmUI.action.update.waitingMessage": "正在修改",
@@ -126,6 +126,7 @@ declare const _default: {
126
126
  "cfmmUI.common.button.importData": string;
127
127
  "cfmmUI.common.button.exportData": string;
128
128
  "cfmmUI.common.button.exportMultiLang.notice": string;
129
+ "cfmmUI.common.button.exportMultiLang.title": string;
129
130
  "cfmmUI.action.create.waitingMessage": string;
130
131
  "cfmmUI.action.update.waitingMessage": string;
131
132
  "cfmmUI.action.delete.waitingMessage": string;
@@ -26,6 +26,7 @@ declare const _default: {
26
26
  "cfmmUI.common.button.importData": string;
27
27
  "cfmmUI.common.button.exportData": string;
28
28
  "cfmmUI.common.button.exportMultiLang.notice": string;
29
+ "cfmmUI.common.button.exportMultiLang.title": string;
29
30
  "cfmmUI.action.create.waitingMessage": string;
30
31
  "cfmmUI.action.update.waitingMessage": string;
31
32
  "cfmmUI.action.delete.waitingMessage": string;
@@ -34,6 +34,7 @@ var _default = exports.default = {
34
34
  "cfmmUI.common.button.importData": "導入數據",
35
35
  "cfmmUI.common.button.exportData": "導出數據",
36
36
  "cfmmUI.common.button.exportMultiLang.notice": "請勿修改表格結構",
37
+ "cfmmUI.common.button.exportMultiLang.title": "請選擇需要導出的字段",
37
38
  //操作提示
38
39
  "cfmmUI.action.create.waitingMessage": "正在新增",
39
40
  "cfmmUI.action.update.waitingMessage": "正在修改",
@@ -125,6 +125,7 @@ declare const _default: {
125
125
  "cfmmUI.common.button.importData": string;
126
126
  "cfmmUI.common.button.exportData": string;
127
127
  "cfmmUI.common.button.exportMultiLang.notice": string;
128
+ "cfmmUI.common.button.exportMultiLang.title": string;
128
129
  "cfmmUI.action.create.waitingMessage": string;
129
130
  "cfmmUI.action.update.waitingMessage": string;
130
131
  "cfmmUI.action.delete.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?: ExportMultiLangListItem[];\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 queryExportMultiLangData?: (tableName: string, columnName: string) => Promise<ExportMultiLangListItem[]>;\n /** \u81EA\u5B9A\u4E49\u5BFC\u5165\u591A\u8BED\u8A00\u51FD\u6570 */\n importMultiLangData?: (list: ExportMultiLangListItem[], 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 /**\n * \u5BFC\u51FA\u5168\u91CF\u67E5\u8BE2\u62E6\u622A\u5668\uFF0C\u4F18\u5148\u7EA7\u9AD8\u4E8E query\uFF0C\u4E13\u7528\u4E8E\u5BFC\u51FA\u573A\u666F\u3002\n * \u5F53\u5BFC\u51FA\u4E0E\u8868\u683C\u5C55\u793A\u9700\u8981\u4E0D\u540C\u7684\u6570\u636E\u5904\u7406\u903B\u8F91\u65F6\uFF08\u5982\u8868\u683C\u8F6C\u6811\u3001\u5BFC\u51FA\u4FDD\u6301\u6241\u5E73\uFF09\uFF0C\u53EF\u5355\u72EC\u914D\u7F6E\u6B64\u9879\u3002\n * \u672A\u914D\u7F6E\u65F6\u56DE\u9000\u5230 query \u62E6\u622A\u5668\u3002\n */\n queryAll?: {\n /** \u5BFC\u51FA\u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668 */\n request?: (params: any) => any;\n /** \u5BFC\u51FA\u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668 */\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 extraTableButtonList?: {\n /** \u6309\u94AE\u4F4D\u7F6E */\n position: 'start' | 'end' | number;\n /** \u6309\u94AE\u8282\u70B9 */\n label: any;\n icon?: React.ReactNode;\n /** \u6309\u94AE\u6743\u9650 */\n auth?: string | boolean;\n }[];\n /** \u6839\u636Ekey\u66FF\u6362\u8868\u683C\u6309\u94AE */\n replaceTableButtonItems?: {\n /** \u6309\u94AEkey */\n key: string;\n /** \u6309\u94AE\u8282\u70B9 */\n label: any;\n /** \u6309\u94AE\u6743\u9650 */\n auth?: string | boolean;\n }[];\n }\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 /** \u7F16\u8F91\u8868\u5355\u7981\u7528\u8868\u5355\u9879 */\n disabledColumnKeys?: (keyof T)[];\n /** \u7F16\u8F91\u8868\u5355\u9690\u85CF\u9879 */\n hiddenColumnKeys?: (keyof T)[];\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u989D\u5916props */\n props?: Partial<ProTableProps<T, any>> & {\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u62BD\u5C49\u7EC4\u4EF6\u7684\u989D\u5916props */\n drawerProps?: Partial<DrawerProps> & {\n onCloseAfter?: (e?: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>) => void;\n },\n /** \u91CD\u7F6E\u8868\u5355\u540E\u56DE\u8C03\u51FD\u6570 */\n onResetAfter?: () => void;\n /** \u5916\u90E8UpdateFormComponent\u7684\u989D\u5916props */\n [key: string]: any;\n };\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 /** \u81EA\u5B9A\u4E49\u7F16\u8F91\u51FD\u6570 */\n onEdit?: (record: T) => void;\n /** \u81EA\u5B9A\u4E49\u5220\u9664\u51FD\u6570 */\n onDelete?: (keys: React.Key[]) => void;\n /** \u81EA\u5B9A\u4E49\u67E5\u770B\u51FD\u6570 */\n onView?: (record: T) => void;\n /** \u81EA\u5B9A\u4E49\u64CD\u4F5C\u65E5\u5FD7\u51FD\u6570 */\n onActionLog?: (record: T) => void;\n\n /** \u67E5\u8BE2\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterSearch?: (result: API.Result_TableListType<T[]>) => Promise<any> | void;\n /** \u65B0\u589E\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u8FD4\u56DEfalse\u5219\u4E0D\u8FDB\u884C\u65B0\u589E\uFF0C\u65E0\u8FD4\u56DE\u6216\u8005true\u5219\u8FDB\u884C\u65B0\u589E */\n onBeforeAdd?: () => Promise<null | boolean | void> | boolean | void;\n /** \u7F16\u8F91\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u8FD4\u56DEfalse\u5219\u4E0D\u8FDB\u884C\u7F16\u8F91\uFF0C\u65E0\u8FD4\u56DE\u6216\u8005true\u5219\u4F7F\u7528\u9ED8\u8BA4\u6570\u636E\u8FDB\u884C\u7F16\u8F91\uFF0C\u8FD4\u56DE\u5BF9\u8C61\u5219\u4F7F\u7528\u8FD4\u56DE\u7684\u5BF9\u8C61\u8FDB\u884C\u7F16\u8F91 */\n onBeforeEdit?: (record: T) => Promise<T | null | boolean | void> | T | boolean | void;\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 updateFormRef: React.MutableRefObject<ProFormInstance | 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?: ExportMultiLangListItem[];\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\u5165\u591A\u8BED\u8A00\u6570\u636E\u6821\u9A8C */\n checkImportExecl?: (list: ExportMultiLangListItem[]) => ImportErrorType[];\n /** \u81EA\u5B9A\u4E49\u5BFC\u5165\u591A\u8BED\u8A00\u6570\u636E\u6821\u9A8C\u63D0\u793A */\n showCheckErrorTips?: (errorMessageList: ImportErrorType[]) => void;\n /** \u81EA\u5B9A\u4E49\u63D0\u4EA4\u591A\u8BED\u8A00\u6570\u636E */\n submit?: (params: { tableName: string; columnName: string; list: ExportMultiLangListItem[] }) => Promise<{ success: boolean; failMsg?: string; data?: any } | void>;\n /** \u81EA\u5B9A\u4E49\u5904\u7406\u5BFC\u5165\u7684\u591A\u8BED\u8A00\u6570\u636E */\n handleImportList?: (list: ExportMultiLangListItem[], options?: { needHandleUnderline?: boolean }) => ExportMultiLangListItem[];\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 queryExportMultiLangData?: (tableName: string, columnName: string) => Promise<ExportMultiLangListItem[]>;\n /** \u81EA\u5B9A\u4E49\u5BFC\u5165\u591A\u8BED\u8A00\u51FD\u6570 */\n importMultiLangData?: (list: ExportMultiLangListItem[], 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 /** \u5BFC\u51FA\u5168\u91CF\u67E5\u8BE2\u65B9\u6CD5 */\n queryExportData?: (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 & { rowNum: number })[]) => 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 /**\n * \u5BFC\u51FA\u5168\u91CF\u67E5\u8BE2\u62E6\u622A\u5668\uFF0C\u4F18\u5148\u7EA7\u9AD8\u4E8E query\uFF0C\u4E13\u7528\u4E8E\u5BFC\u51FA\u573A\u666F\u3002\n * \u5F53\u5BFC\u51FA\u4E0E\u8868\u683C\u5C55\u793A\u9700\u8981\u4E0D\u540C\u7684\u6570\u636E\u5904\u7406\u903B\u8F91\u65F6\uFF08\u5982\u8868\u683C\u8F6C\u6811\u3001\u5BFC\u51FA\u4FDD\u6301\u6241\u5E73\uFF09\uFF0C\u53EF\u5355\u72EC\u914D\u7F6E\u6B64\u9879\u3002\n * \u672A\u914D\u7F6E\u65F6\u56DE\u9000\u5230 query \u62E6\u622A\u5668\u3002\n */\n queryAll?: {\n /** \u5BFC\u51FA\u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668 */\n request?: (params: any) => any;\n /** \u5BFC\u51FA\u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668 */\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 extraTableButtonList?: {\n /** \u6309\u94AE\u4F4D\u7F6E */\n position: 'start' | 'end' | number;\n /** \u6309\u94AE\u8282\u70B9 */\n label: any;\n icon?: React.ReactNode;\n /** \u6309\u94AE\u6743\u9650 */\n auth?: string | boolean;\n }[];\n /** \u6839\u636Ekey\u66FF\u6362\u8868\u683C\u6309\u94AE */\n replaceTableButtonItems?: {\n /** \u6309\u94AEkey */\n key: string;\n /** \u6309\u94AE\u8282\u70B9 */\n label: any;\n /** \u6309\u94AE\u6743\u9650 */\n auth?: string | boolean;\n }[];\n }\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 /** \u7F16\u8F91\u8868\u5355\u7981\u7528\u8868\u5355\u9879 */\n disabledColumnKeys?: (keyof T)[];\n /** \u7F16\u8F91\u8868\u5355\u9690\u85CF\u9879 */\n hiddenColumnKeys?: (keyof T)[];\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u989D\u5916props */\n props?: Partial<ProTableProps<T, any>> & {\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u62BD\u5C49\u7EC4\u4EF6\u7684\u989D\u5916props */\n drawerProps?: Partial<DrawerProps> & {\n onCloseAfter?: (e?: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>) => void;\n },\n /** \u91CD\u7F6E\u8868\u5355\u540E\u56DE\u8C03\u51FD\u6570 */\n onResetAfter?: () => void;\n /** \u5916\u90E8UpdateFormComponent\u7684\u989D\u5916props */\n [key: string]: any;\n };\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 /** \u5BFC\u5165\u6570\u636E\u914D\u7F6E */\n importData?: {\n /** \u5BFC\u5165\u7EC4\u4EF6\u5C5E\u6027\u914D\u7F6E */\n attributes?: Partial<ImportExeclProps>;\n };\n\n /** \u6570\u636E\u5BFC\u51FA\u4E3AExcel\u914D\u7F6E */\n exportExcel?: {\n /**\n * \u5BFC\u51FAExcel\u9AD8\u7EA7\u914D\u7F6E\n * @see ExcelExportOptions\n * @param title - \u7B2C\u4E00\u884C\uFF1A\u8868\u5934\u6807\u9898\n * @param titleStyle - \u7B2C\u4E00\u884C\u6837\u5F0F\u914D\u7F6E\n * @param notice - \u6CE8\u610F\u4E8B\u9879\uFF08\u652F\u6301\u5B57\u7B26\u4E32\u6216\u6570\u7EC4\uFF0C\u6570\u7EC4\u6BCF\u9879\u4E3A\u4E00\u884C\uFF09\n * @param noticeStyle - \u6CE8\u610F\u4E8B\u9879\u6837\u5F0F\u914D\u7F6E\n * @param codeColumns - \u7F16\u53F7\u884C\uFF08\u7528\u4E8E\u5339\u914D\u5B57\u6BB5\uFF0C\u4F1A\u9690\u85CF\uFF09\n * @param worksheetColumns - \u5217\u914D\u7F6E\n * @param lockedColumns - \u9501\u5B9A\u7684\u5217\u7D22\u5F15\u6570\u7EC4\uFF08\u4ECE0\u5F00\u59CB\uFF09\uFF0C\u8FD9\u4E9B\u5217\u4E0D\u5141\u8BB8\u4FEE\u6539\n * @param sheetPassword - \u5DE5\u4F5C\u8868\u4FDD\u62A4\u5BC6\u7801\uFF08\u53EF\u9009\uFF09\n * @param lockHeaderRows - \u662F\u5426\u9501\u5B9A\u57FA\u7840\u884C\uFF08\u6570\u636E\u884C\u524D\u7684\u884C\uFF09\uFF0C\u9ED8\u8BA4\u4E3A true\n * @param mergeCells - \u81EA\u5B9A\u4E49\u5408\u5E76\u5355\u5143\u683C\u8303\u56F4\u6570\u7EC4\uFF08\u5982 ['A1:B2', 'C1:D1']\uFF09\n * @param dataRowHeight - \u6570\u636E\u884C\u9AD8\u5EA6\uFF0C\u9ED8\u8BA4 22\n * @returns - \u5BFC\u51FAExcel\u9AD8\u7EA7\u914D\u7F6E\n */\n genExcelAdvancedOptions?: ExcelExportOptions;\n /** \u81EA\u5B9A\u4E49\u5BFC\u51FAExcel\u51FD\u6570 */\n handleDownloadExcel?: (columns: ProColumns<T>[], columnsStateMap: Record<string, any>) => ProColumns<T>[];\n /** \u81EA\u5B9A\u4E49\u5BFC\u51FAExcel\u5217\u914D\u7F6E */\n getExportColumns?: ({ columns, columnsStateMap, filters }: { columns: ProColumns<T>[]; columnsStateMap: Record<string, any>; filters?: any[] }) => ProColumns<T>[];\n };\n\n\n /** \u81EA\u5B9A\u4E49\u65B0\u589E\u51FD\u6570 */\n onAdd?: () => void;\n /** \u81EA\u5B9A\u4E49\u7F16\u8F91\u51FD\u6570 */\n onEdit?: (record: T) => void;\n /** \u81EA\u5B9A\u4E49\u5220\u9664\u51FD\u6570 */\n onDelete?: (keys: React.Key[]) => void;\n /** \u81EA\u5B9A\u4E49\u67E5\u770B\u51FD\u6570 */\n onView?: (record: T) => void;\n /** \u81EA\u5B9A\u4E49\u64CD\u4F5C\u65E5\u5FD7\u51FD\u6570 */\n onActionLog?: (record: T) => void;\n\n /** \u67E5\u8BE2\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterSearch?: (result: API.Result_TableListType<T[]>) => Promise<any> | void;\n /** \u65B0\u589E\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u8FD4\u56DEfalse\u5219\u4E0D\u8FDB\u884C\u65B0\u589E\uFF0C\u65E0\u8FD4\u56DE\u6216\u8005true\u5219\u8FDB\u884C\u65B0\u589E */\n onBeforeAdd?: () => Promise<null | boolean | void> | boolean | void;\n /** \u7F16\u8F91\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u8FD4\u56DEfalse\u5219\u4E0D\u8FDB\u884C\u7F16\u8F91\uFF0C\u65E0\u8FD4\u56DE\u6216\u8005true\u5219\u4F7F\u7528\u9ED8\u8BA4\u6570\u636E\u8FDB\u884C\u7F16\u8F91\uFF0C\u8FD4\u56DE\u5BF9\u8C61\u5219\u4F7F\u7528\u8FD4\u56DE\u7684\u5BF9\u8C61\u8FDB\u884C\u7F16\u8F91 */\n onBeforeEdit?: (record: T) => Promise<T | null | boolean | void> | T | boolean | void;\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 updateFormRef: React.MutableRefObject<ProFormInstance | 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?: ExportMultiLangListItem[];\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 queryExportMultiLangData?: (tableName: string, columnName: string) => Promise<ExportMultiLangListItem[]>;\n /** \u81EA\u5B9A\u4E49\u5BFC\u5165\u591A\u8BED\u8A00\u51FD\u6570 */\n importMultiLangData?: (list: ExportMultiLangListItem[], 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 /**\n * \u5BFC\u51FA\u5168\u91CF\u67E5\u8BE2\u62E6\u622A\u5668\uFF0C\u4F18\u5148\u7EA7\u9AD8\u4E8E query\uFF0C\u4E13\u7528\u4E8E\u5BFC\u51FA\u573A\u666F\u3002\n * \u5F53\u5BFC\u51FA\u4E0E\u8868\u683C\u5C55\u793A\u9700\u8981\u4E0D\u540C\u7684\u6570\u636E\u5904\u7406\u903B\u8F91\u65F6\uFF08\u5982\u8868\u683C\u8F6C\u6811\u3001\u5BFC\u51FA\u4FDD\u6301\u6241\u5E73\uFF09\uFF0C\u53EF\u5355\u72EC\u914D\u7F6E\u6B64\u9879\u3002\n * \u672A\u914D\u7F6E\u65F6\u56DE\u9000\u5230 query \u62E6\u622A\u5668\u3002\n */\n queryAll?: {\n /** \u5BFC\u51FA\u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668 */\n request?: (params: any) => any;\n /** \u5BFC\u51FA\u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668 */\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 extraTableButtonList?: {\n /** \u6309\u94AE\u4F4D\u7F6E */\n position: 'start' | 'end' | number;\n /** \u6309\u94AE\u8282\u70B9 */\n label: any;\n icon?: React.ReactNode;\n /** \u6309\u94AE\u6743\u9650 */\n auth?: string | boolean;\n }[];\n /** \u6839\u636Ekey\u66FF\u6362\u8868\u683C\u6309\u94AE */\n replaceTableButtonItems?: {\n /** \u6309\u94AEkey */\n key: string;\n /** \u6309\u94AE\u8282\u70B9 */\n label: any;\n /** \u6309\u94AE\u6743\u9650 */\n auth?: string | boolean;\n }[];\n }\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 /** \u7F16\u8F91\u8868\u5355\u7981\u7528\u8868\u5355\u9879 */\n disabledColumnKeys?: (keyof T)[];\n /** \u7F16\u8F91\u8868\u5355\u9690\u85CF\u9879 */\n hiddenColumnKeys?: (keyof T)[];\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u989D\u5916props */\n props?: Partial<ProTableProps<T, any>> & {\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u62BD\u5C49\u7EC4\u4EF6\u7684\u989D\u5916props */\n drawerProps?: Partial<DrawerProps> & {\n onCloseAfter?: (e?: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>) => void;\n },\n /** \u91CD\u7F6E\u8868\u5355\u540E\u56DE\u8C03\u51FD\u6570 */\n onResetAfter?: () => void;\n /** \u5916\u90E8UpdateFormComponent\u7684\u989D\u5916props */\n [key: string]: any;\n };\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 /** \u81EA\u5B9A\u4E49\u7F16\u8F91\u51FD\u6570 */\n onEdit?: (record: T) => void;\n /** \u81EA\u5B9A\u4E49\u5220\u9664\u51FD\u6570 */\n onDelete?: (keys: React.Key[]) => void;\n /** \u81EA\u5B9A\u4E49\u67E5\u770B\u51FD\u6570 */\n onView?: (record: T) => void;\n /** \u81EA\u5B9A\u4E49\u64CD\u4F5C\u65E5\u5FD7\u51FD\u6570 */\n onActionLog?: (record: T) => void;\n\n /** \u67E5\u8BE2\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterSearch?: (result: API.Result_TableListType<T[]>) => Promise<any> | void;\n /** \u65B0\u589E\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u8FD4\u56DEfalse\u5219\u4E0D\u8FDB\u884C\u65B0\u589E\uFF0C\u65E0\u8FD4\u56DE\u6216\u8005true\u5219\u8FDB\u884C\u65B0\u589E */\n onBeforeAdd?: () => Promise<null | boolean | void> | boolean | void;\n /** \u7F16\u8F91\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u8FD4\u56DEfalse\u5219\u4E0D\u8FDB\u884C\u7F16\u8F91\uFF0C\u65E0\u8FD4\u56DE\u6216\u8005true\u5219\u4F7F\u7528\u9ED8\u8BA4\u6570\u636E\u8FDB\u884C\u7F16\u8F91\uFF0C\u8FD4\u56DE\u5BF9\u8C61\u5219\u4F7F\u7528\u8FD4\u56DE\u7684\u5BF9\u8C61\u8FDB\u884C\u7F16\u8F91 */\n onBeforeEdit?: (record: T) => Promise<T | null | boolean | void> | T | boolean | void;\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 updateFormRef: React.MutableRefObject<ProFormInstance | 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?: ExportMultiLangListItem[];\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\u5165\u591A\u8BED\u8A00\u6570\u636E\u6821\u9A8C */\n checkImportExecl?: (list: ExportMultiLangListItem[]) => ImportErrorType[];\n /** \u81EA\u5B9A\u4E49\u5BFC\u5165\u591A\u8BED\u8A00\u6570\u636E\u6821\u9A8C\u63D0\u793A */\n showCheckErrorTips?: (errorMessageList: ImportErrorType[]) => void;\n /** \u81EA\u5B9A\u4E49\u63D0\u4EA4\u591A\u8BED\u8A00\u6570\u636E */\n submit?: (params: { tableName: string; columnName: string; list: ExportMultiLangListItem[] }) => Promise<{ success: boolean; failMsg?: string; data?: any } | void>;\n /** \u81EA\u5B9A\u4E49\u5904\u7406\u5BFC\u5165\u7684\u591A\u8BED\u8A00\u6570\u636E */\n handleImportList?: (list: ExportMultiLangListItem[], options?: { needHandleUnderline?: boolean }) => ExportMultiLangListItem[];\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 queryExportMultiLangData?: (tableName: string, columnName: string) => Promise<ExportMultiLangListItem[]>;\n /** \u81EA\u5B9A\u4E49\u5BFC\u5165\u591A\u8BED\u8A00\u51FD\u6570 */\n importMultiLangData?: (list: ExportMultiLangListItem[], 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 /** \u5BFC\u51FA\u5168\u91CF\u67E5\u8BE2\u65B9\u6CD5 */\n queryExportData?: (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 & { rowNum: number })[]) => 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 /**\n * \u5BFC\u51FA\u5168\u91CF\u67E5\u8BE2\u62E6\u622A\u5668\uFF0C\u4F18\u5148\u7EA7\u9AD8\u4E8E query\uFF0C\u4E13\u7528\u4E8E\u5BFC\u51FA\u573A\u666F\u3002\n * \u5F53\u5BFC\u51FA\u4E0E\u8868\u683C\u5C55\u793A\u9700\u8981\u4E0D\u540C\u7684\u6570\u636E\u5904\u7406\u903B\u8F91\u65F6\uFF08\u5982\u8868\u683C\u8F6C\u6811\u3001\u5BFC\u51FA\u4FDD\u6301\u6241\u5E73\uFF09\uFF0C\u53EF\u5355\u72EC\u914D\u7F6E\u6B64\u9879\u3002\n * \u672A\u914D\u7F6E\u65F6\u56DE\u9000\u5230 query \u62E6\u622A\u5668\u3002\n */\n queryAll?: {\n /** \u5BFC\u51FA\u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668 */\n request?: (params: any) => any;\n /** \u5BFC\u51FA\u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668 */\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 extraTableButtonList?: {\n /** \u6309\u94AE\u4F4D\u7F6E */\n position: 'start' | 'end' | number;\n /** \u6309\u94AE\u8282\u70B9 */\n label: any;\n icon?: React.ReactNode;\n /** \u6309\u94AE\u6743\u9650 */\n auth?: string | boolean;\n }[];\n /** \u6839\u636Ekey\u66FF\u6362\u8868\u683C\u6309\u94AE */\n replaceTableButtonItems?: {\n /** \u6309\u94AEkey */\n key: string;\n /** \u6309\u94AE\u8282\u70B9 */\n label: any;\n /** \u6309\u94AE\u6743\u9650 */\n auth?: string | boolean;\n }[];\n }\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 /** \u7F16\u8F91\u8868\u5355\u7981\u7528\u8868\u5355\u9879 */\n disabledColumnKeys?: (keyof T)[];\n /** \u7F16\u8F91\u8868\u5355\u9690\u85CF\u9879 */\n hiddenColumnKeys?: (keyof T)[];\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u989D\u5916props */\n props?: Partial<ProTableProps<T, any>> & {\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u62BD\u5C49\u7EC4\u4EF6\u7684\u989D\u5916props */\n drawerProps?: Partial<DrawerProps> & {\n onCloseAfter?: (e?: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>) => void;\n },\n /** \u91CD\u7F6E\u8868\u5355\u540E\u56DE\u8C03\u51FD\u6570 */\n onResetAfter?: () => void;\n /** \u5916\u90E8UpdateFormComponent\u7684\u989D\u5916props */\n [key: string]: any;\n };\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 /** \u5BFC\u5165\u6570\u636E\u914D\u7F6E */\n importData?: {\n /** \u5BFC\u5165\u7EC4\u4EF6\u5C5E\u6027\u914D\u7F6E */\n attributes?: Partial<ImportExeclProps>;\n };\n\n /** \u6570\u636E\u5BFC\u51FA\u4E3AExcel\u914D\u7F6E */\n exportExcel?: {\n /**\n * \u5BFC\u51FAExcel\u9AD8\u7EA7\u914D\u7F6E\n * @see ExcelExportOptions\n * @param title - \u7B2C\u4E00\u884C\uFF1A\u8868\u5934\u6807\u9898\n * @param titleStyle - \u7B2C\u4E00\u884C\u6837\u5F0F\u914D\u7F6E\n * @param notice - \u6CE8\u610F\u4E8B\u9879\uFF08\u652F\u6301\u5B57\u7B26\u4E32\u6216\u6570\u7EC4\uFF0C\u6570\u7EC4\u6BCF\u9879\u4E3A\u4E00\u884C\uFF09\n * @param noticeStyle - \u6CE8\u610F\u4E8B\u9879\u6837\u5F0F\u914D\u7F6E\n * @param codeColumns - \u7F16\u53F7\u884C\uFF08\u7528\u4E8E\u5339\u914D\u5B57\u6BB5\uFF0C\u4F1A\u9690\u85CF\uFF09\n * @param worksheetColumns - \u5217\u914D\u7F6E\n * @param lockedColumns - \u9501\u5B9A\u7684\u5217\u7D22\u5F15\u6570\u7EC4\uFF08\u4ECE0\u5F00\u59CB\uFF09\uFF0C\u8FD9\u4E9B\u5217\u4E0D\u5141\u8BB8\u4FEE\u6539\n * @param sheetPassword - \u5DE5\u4F5C\u8868\u4FDD\u62A4\u5BC6\u7801\uFF08\u53EF\u9009\uFF09\n * @param lockHeaderRows - \u662F\u5426\u9501\u5B9A\u57FA\u7840\u884C\uFF08\u6570\u636E\u884C\u524D\u7684\u884C\uFF09\uFF0C\u9ED8\u8BA4\u4E3A true\n * @param mergeCells - \u81EA\u5B9A\u4E49\u5408\u5E76\u5355\u5143\u683C\u8303\u56F4\u6570\u7EC4\uFF08\u5982 ['A1:B2', 'C1:D1']\uFF09\n * @param dataRowHeight - \u6570\u636E\u884C\u9AD8\u5EA6\uFF0C\u9ED8\u8BA4 22\n * @returns - \u5BFC\u51FAExcel\u9AD8\u7EA7\u914D\u7F6E\n */\n genExcelAdvancedOptions?: ExcelExportOptions;\n /** \u81EA\u5B9A\u4E49\u5BFC\u51FAExcel\u51FD\u6570 */\n handleDownloadExcel?: (columns: ProColumns<T>[], columnsStateMap: Record<string, any>) => ProColumns<T>[];\n /** \u81EA\u5B9A\u4E49\u5BFC\u51FAExcel\u5217\u914D\u7F6E */\n getExportColumns?: ({ columns, columnsStateMap, filters }: { columns: ProColumns<T>[]; columnsStateMap: Record<string, any>; filters?: any[] }) => ProColumns<T>[];\n };\n\n\n /** \u81EA\u5B9A\u4E49\u65B0\u589E\u51FD\u6570 */\n onAdd?: () => void;\n /** \u81EA\u5B9A\u4E49\u7F16\u8F91\u51FD\u6570 */\n onEdit?: (record: T) => void;\n /** \u81EA\u5B9A\u4E49\u5220\u9664\u51FD\u6570 */\n onDelete?: (keys: React.Key[]) => void;\n /** \u81EA\u5B9A\u4E49\u67E5\u770B\u51FD\u6570 */\n onView?: (record: T) => void;\n /** \u81EA\u5B9A\u4E49\u64CD\u4F5C\u65E5\u5FD7\u51FD\u6570 */\n onActionLog?: (record: T) => void;\n\n /** \u67E5\u8BE2\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterSearch?: (result: API.Result_TableListType<T[]>) => Promise<any> | void;\n /** \u65B0\u589E\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u8FD4\u56DEfalse\u5219\u4E0D\u8FDB\u884C\u65B0\u589E\uFF0C\u65E0\u8FD4\u56DE\u6216\u8005true\u5219\u8FDB\u884C\u65B0\u589E */\n onBeforeAdd?: () => Promise<null | boolean | void> | boolean | void;\n /** \u7F16\u8F91\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u8FD4\u56DEfalse\u5219\u4E0D\u8FDB\u884C\u7F16\u8F91\uFF0C\u65E0\u8FD4\u56DE\u6216\u8005true\u5219\u4F7F\u7528\u9ED8\u8BA4\u6570\u636E\u8FDB\u884C\u7F16\u8F91\uFF0C\u8FD4\u56DE\u5BF9\u8C61\u5219\u4F7F\u7528\u8FD4\u56DE\u7684\u5BF9\u8C61\u8FDB\u884C\u7F16\u8F91 */\n onBeforeEdit?: (record: T) => Promise<T | null | boolean | void> | T | boolean | void;\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 updateFormRef: React.MutableRefObject<ProFormInstance | 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";
@@ -18,6 +18,10 @@ export interface ColumnProcessOptions<T> {
18
18
 
19
19
  export type DataRowGenerator = () => Promise<any[]>;
20
20
 
21
+ export type CfProColumns<T = any, ValueType = 'text'> = ProColumns<T, ValueType> & {
22
+ hideInExport?: boolean;
23
+ };
24
+
21
25
  // 延时函数
22
26
  // eslint-disable-next-line no-promise-executor-return
23
27
  export const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
@@ -167,6 +171,7 @@ export const genExcel = (
167
171
  */
168
172
  return workBook.xlsx.writeBuffer();
169
173
  })
174
+ // @ts-ignore
170
175
  .then((blob: Blob) => {
171
176
  /**
172
177
  * 下载文件
@@ -515,19 +520,22 @@ export const convertNumberToCellName = (cellIndex: number): string => {
515
520
  * @param param 列,变更属性,过滤值
516
521
  * @returns
517
522
  */
518
- export const getExportColumns = <T>({
523
+ export const getExportColumns = <T = any>({
519
524
  columns = [],
520
525
  columnsStateMap = {},
521
526
  filters = [],
522
527
  }: {
523
- columns: ProColumns<T>[];
528
+ columns: CfProColumns<T>[];
524
529
  columnsStateMap?: Record<string, ColumnsState>;
525
530
  filters?: any[];
526
531
  }): ProColumns<T>[] => {
532
+ // 只处理显示的子列
527
533
  const filterList = columns.filter((item) => {
534
+ const hideInExport = item.hideInExport ?? item.hideInTable;
535
+
528
536
  return (
529
537
  // 排除隐藏在表格的列
530
- !item.hideInTable &&
538
+ !hideInExport &&
531
539
  // 排除主动过滤的列
532
540
  !filters.includes(item.dataIndex) &&
533
541
  // 排除在于columnsStateMap中且columnsStateMapp[item.dataIndex].show为false的列(排除表格右上角工具隐藏的列)
@@ -596,10 +604,14 @@ export const getExportColumnsWithGroupSupport = <T>(options: ColumnProcessOption
596
604
 
597
605
  /**
598
606
  * 检查列是否应该显示
607
+ * 检查列是否应该出现在导出中
608
+ * hideInExport 未配置时回退到 hideInTable,保持向后兼容
599
609
  */
600
- const shouldShowColumn = (column: ProColumns<T>): boolean => {
610
+ const shouldShowColumn = (column: CfProColumns<T>): boolean => {
611
+ const hideInExport = column.hideInExport ?? column.hideInTable;
612
+
601
613
  return (
602
- !column.hideInTable &&
614
+ !hideInExport &&
603
615
  !filters.includes(column.dataIndex) &&
604
616
  (!columnsStateMap[column.dataIndex as string] || (columnsStateMap[column.dataIndex as string]?.show ?? true))
605
617
  );
@@ -8,5 +8,5 @@ var _types = require("../types");
8
8
  // 修改方法,不再尝试读取外部文件
9
9
  var _default = exports.default = {
10
10
  path: 'types.d.ts',
11
- content: "\n import React from 'react';\n import { ModalProps, DrawerProps, SelectProps, DatePickerProps, UploadProps, UploadFile, TooltipProps, ButtonProps, TabsProps, SwitchProps, FloatButtonProps, StepsProps, FlexProps, TagProps } from 'antd';\n import { PresetColorType, PresetStatusColorType } from \"antd/lib/_util/colors\";\n import { AutoCompleteProps } from 'antd/es/auto-complete';\n import { RangePickerProps } from 'antd/lib/date-picker';\n import { LiteralUnion } from \"antd/lib/_util/type\";\n import { IconComponentProps } from '@ant-design/icons/lib/components/Icon';\n import { ActionType, ProFormItemProps, ProColumns, ProTableProps, DrawerFormProps, ModalFormProps, PageContainerProps, ProFormInstance } from '@ant-design/pro-components';\n import dayjs, { OpUnitType } from 'dayjs';\n import { IEditorConfig, IToolbarConfig } from '@wangeditor/editor';\n import type { DragEndEvent } from '@dnd-kit/core';\n import { fileTypeMap } from './components'; \n\n\n ".concat(_types.servicesTypes, "\n\n ").concat(_types.HighlightStrTypes, "\n\n ").concat(_types.DropdownButtonTypes, "\n\n ").concat(_types.DynamicIconTypes, "\n\n ").concat(_types.MyFooterToolbarTypes, "\n\n ").concat(_types.QrCodeModalTypes, "\n\n ").concat(_types.MenuFooterTypes, "\n\n ").concat(_types.EditMultiLangFormTypes, "\n\n ").concat(_types.MySelectTypes, "\n\n ").concat(_types.MySelectLangTypes, "\n\n ").concat(_types.PermissionSelectTypes, "\n\n ").concat(_types.DataPermissionSelectTypes, "\n\n ").concat(_types.DatePickerTypes, "\n\n ").concat(_types.RandomAvatarTypes, "\n\n ").concat(_types.RefDrawerFormTypes, "\n\n ").concat(_types.ViewTableItemDrawerTypes, "\n\n ").concat(_types.WangEditorTypes, "\n\n ").concat(_types.MyPageContainerTypes, "\n\n ").concat(_types.MyTagListTypes, "\n\n ").concat(_types.VolumeFormItemTypes, "\n\n ").concat(_types.ImportExeclTypes, "\n\n ").concat(_types.MyUploadTypes, "\n\n ").concat(_types.ReportTableTypes, "\n\n ").concat(_types.DicDropDownListTypes, "\n\n ").concat(_types.ActionLogDrawerTypes, "\n\n ").concat(_types.DndTabsTypes, "\n\n ").concat(_types.ImportDataUploadTypes, "\n\n ").concat(_types.AvatarDropdownTypes, "\n\n ").concat(_types.HeaderSearchTypes, "\n\n ").concat(_types.ThemeSwitchTypes, "\n\n ").concat(_types.GlobalHeaderTypes, "\n\n ").concat(_types.KeepAliveTabsTypes, "\n\n ").concat(_types.ExportPageWrapperTypes, "\n\n ").concat(_types.MySetpsTypes, "\n\n ").concat(_types.CrudTableTypes, "\n\n ").concat(_types.DndTagTypes, "\n ")
11
+ content: "\n import React from 'react';\n import { ModalProps, DrawerProps, SelectProps, DatePickerProps, UploadProps, UploadFile, TooltipProps, ButtonProps, TabsProps, SwitchProps, FloatButtonProps, StepsProps, FlexProps, TagProps } from 'antd';\n import { PresetColorType, PresetStatusColorType } from \"antd/lib/_util/colors\";\n import { AutoCompleteProps } from 'antd/es/auto-complete';\n import { RangePickerProps } from 'antd/lib/date-picker';\n import { LiteralUnion } from \"antd/lib/_util/type\";\n import { IconComponentProps } from '@ant-design/icons/lib/components/Icon';\n import { ActionType, ProFormItemProps, ProColumns, ProTableProps, DrawerFormProps, ModalFormProps, PageContainerProps, ProFormInstance } from '@ant-design/pro-components';\n import dayjs, { OpUnitType } from 'dayjs';\n import { IEditorConfig, IToolbarConfig } from '@wangeditor/editor';\n import type { DragEndEvent } from '@dnd-kit/core';\n import { fileTypeMap } from './components'; \n import { ExcelExportOptions } from './utils/excelHelper';\n\n\n ".concat(_types.servicesTypes, "\n\n ").concat(_types.HighlightStrTypes, "\n\n ").concat(_types.DropdownButtonTypes, "\n\n ").concat(_types.DynamicIconTypes, "\n\n ").concat(_types.MyFooterToolbarTypes, "\n\n ").concat(_types.QrCodeModalTypes, "\n\n ").concat(_types.MenuFooterTypes, "\n\n ").concat(_types.EditMultiLangFormTypes, "\n\n ").concat(_types.MySelectTypes, "\n\n ").concat(_types.MySelectLangTypes, "\n\n ").concat(_types.PermissionSelectTypes, "\n\n ").concat(_types.DataPermissionSelectTypes, "\n\n ").concat(_types.DatePickerTypes, "\n\n ").concat(_types.RandomAvatarTypes, "\n\n ").concat(_types.RefDrawerFormTypes, "\n\n ").concat(_types.ViewTableItemDrawerTypes, "\n\n ").concat(_types.WangEditorTypes, "\n\n ").concat(_types.MyPageContainerTypes, "\n\n ").concat(_types.MyTagListTypes, "\n\n ").concat(_types.VolumeFormItemTypes, "\n\n ").concat(_types.ImportExeclTypes, "\n\n ").concat(_types.MyUploadTypes, "\n\n ").concat(_types.ReportTableTypes, "\n\n ").concat(_types.DicDropDownListTypes, "\n\n ").concat(_types.ActionLogDrawerTypes, "\n\n ").concat(_types.DndTabsTypes, "\n\n ").concat(_types.ImportDataUploadTypes, "\n\n ").concat(_types.AvatarDropdownTypes, "\n\n ").concat(_types.HeaderSearchTypes, "\n\n ").concat(_types.ThemeSwitchTypes, "\n\n ").concat(_types.GlobalHeaderTypes, "\n\n ").concat(_types.KeepAliveTabsTypes, "\n\n ").concat(_types.ExportPageWrapperTypes, "\n\n ").concat(_types.MySetpsTypes, "\n\n ").concat(_types.CrudTableTypes, "\n\n ").concat(_types.DndTagTypes, "\n ")
12
12
  };
@@ -16,7 +16,7 @@ import {
16
16
  LangInfoItem,
17
17
  RefDrawerFormRefType,
18
18
  } from '../types';
19
- import { genExcel, genExcelAdvanced, getExportColumns, getExportValueForColumns } from '../utils/excelHelper';
19
+ import { genExcelAdvanced, getExportColumns, getExportValueForColumns } from '../utils/excelHelper';
20
20
  import { handleImportList, showCheckErrorTips } from '../utils/importHelper';
21
21
  import ActionLogDrawer from './ActionLogDrawer';
22
22
  import CreateForm from './AddDrawerForm';
@@ -69,6 +69,8 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
69
69
  updateConfig = {},
70
70
  actionColumnConfig = {} as CrudTableConfig['actionColumnConfig'],
71
71
  downloadTemplate = {},
72
+ exportExcel = {},
73
+ importData = {},
72
74
 
73
75
  onAdd,
74
76
  onView,
@@ -177,6 +179,7 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
177
179
  },
178
180
  );
179
181
 
182
+ // 选择多语言字段
180
183
  const handleSelectMultiLangField = useMemoizedFn(async (multiLang: CrudTableConfig['multiLang']) => {
181
184
  if (!multiLang?.fields) return;
182
185
 
@@ -190,7 +193,10 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
190
193
 
191
194
  await new Promise((resolve) => {
192
195
  Modal.confirm({
193
- title: '导出多语言数据',
196
+ title: formatMessage({
197
+ id: 'cfmmUI.common.button.exportMultiLang.title',
198
+ defaultMessage: '请选择需要导出的字段',
199
+ }),
194
200
  content: (
195
201
  <div>
196
202
  <Radio.Group
@@ -285,29 +291,41 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
285
291
  }
286
292
 
287
293
  // 处理导入数据,正确赋值字段以及转格式
288
- const newList = handleImportList<ExportMultiLangListItem>(list, { needHandleUnderline: false });
294
+ const newList = multiLang.handleImportList
295
+ ? multiLang.handleImportList(list, { needHandleUnderline: false })
296
+ : handleImportList<ExportMultiLangListItem>(list, { needHandleUnderline: false });
289
297
 
290
298
  // 导入校验提示
291
- // const errorMessageList = checkImportExecl(newList);
292
- // if (errorMessageList.length) {
293
- // showCheckErrorTips(errorMessageList);
294
- // return Promise.resolve({ success: false });
295
- // }
296
-
297
- const result = await doAction(
298
- 'IMPORT',
299
- {
299
+ const errorMessageList = multiLang.checkImportExecl?.(newList);
300
+ if (errorMessageList?.length) {
301
+ multiLang.showCheckErrorTips?.(errorMessageList) ?? showCheckErrorTips(errorMessageList);
302
+ return Promise.resolve({ success: false });
303
+ }
304
+
305
+ let result;
306
+
307
+ if (multiLang.submit) {
308
+ result = await multiLang.submit({
300
309
  tableName: tableName,
301
310
  columnName: columnName,
302
- i18nDataList: newList.filter((item) => item.en_US || item.zh_CN || item.zh_TW || item.th_TH),
303
- },
304
- {
305
- actionFn: importMultiLangList,
306
- showMsg: false,
307
- },
308
- );
311
+ list: newList,
312
+ });
313
+ } else {
314
+ result = await doAction(
315
+ 'IMPORT',
316
+ {
317
+ tableName: tableName,
318
+ columnName: columnName,
319
+ i18nDataList: newList.filter((item) => item.en_US || item.zh_CN || item.zh_TW || item.th_TH),
320
+ },
321
+ {
322
+ actionFn: importMultiLangList,
323
+ showMsg: false,
324
+ },
325
+ );
326
+ }
309
327
 
310
- if (result.success) {
328
+ if (result?.success) {
311
329
  actionRef.current?.reload();
312
330
  }
313
331
  return result;
@@ -332,7 +350,7 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
332
350
 
333
351
  setLoading(true);
334
352
  const result = await queryList<T[]>(processedParams, {
335
- queryFn: apis.query,
353
+ queryFn: apis.queryExportData ? apis.queryExportData : apis.query,
336
354
  });
337
355
  setLoading(false);
338
356
 
@@ -539,6 +557,9 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
539
557
  * 下载数据为Excel
540
558
  */
541
559
  const handleDownloadExcel = async () => {
560
+ if (exportExcel?.handleDownloadExcel) {
561
+ return exportExcel.handleDownloadExcel(columns, columnsStateMap);
562
+ }
542
563
  const result = await handleSearchAll();
543
564
  if (!result.success || result.error || !result.data) {
544
565
  return;
@@ -548,7 +569,8 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
548
569
 
549
570
  setDownloadButtonLoading(true);
550
571
 
551
- const exportColums = getExportColumns<T>({ columns, columnsStateMap });
572
+ const getExportColumnsFn = exportExcel.getExportColumns ?? getExportColumns;
573
+ const exportColums = getExportColumnsFn<T>({ columns, columnsStateMap });
552
574
 
553
575
  //固定列名
554
576
  let columnsName: any[] = exportColums.map((item) => item.title).filter(Boolean);
@@ -558,45 +580,60 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
558
580
  defaultMessage: '数据列表',
559
581
  });
560
582
 
583
+ const codeList = exportColums.map((item) => item.dataIndex as string).filter(Boolean);
584
+
561
585
  //创建导出Excel
562
- genExcel(fileName + '.xlsx', 'sheet1', columnsName, function () {
563
- //生成数据
564
- return new Promise((resolve) => {
565
- //所有数据行
566
- getExportValueForColumns({
567
- columns: exportColums,
568
- data: result.data,
569
- getLocalDate,
570
- handlePercentChange,
571
- })
572
- .then((allRows) => {
573
- if (allRows.length > MAX_DOWNLOAD) {
574
- Modal.warning({
575
- title: formatMessage({ id: 'common.download.exceed.max.title', defaultMessage: `下载数据过大提醒` }),
576
- content: formatMessage(
577
- {
578
- id: 'common.download.exceed.max.tips',
579
- defaultMessage: `超出最大下载数据 ${MAX_DOWNLOAD} 条,超出部分请重新下载`,
580
- },
581
- {
582
- count: MAX_DOWNLOAD,
583
- },
584
- ),
585
- onOk: () => resolve(allRows.slice(0, MAX_DOWNLOAD)),
586
- });
587
- } else {
588
- resolve(allRows);
589
- }
586
+ genExcelAdvanced(
587
+ fileName + '.xlsx',
588
+ 'sheet1',
589
+ columnsName,
590
+ function () {
591
+ //生成数据
592
+ return new Promise((resolve) => {
593
+ //所有数据行
594
+ getExportValueForColumns({
595
+ columns: exportColums,
596
+ data: result.data,
597
+ getLocalDate,
598
+ handlePercentChange,
590
599
  })
591
- .catch((err) => console.log('err', err))
592
- .finally(() => {
593
- timer.current = setTimeout(() => {
594
- setDownloadButtonLoading(false);
595
- setPercent(0);
596
- }, 2000);
597
- });
598
- });
599
- });
600
+ .then((allRows) => {
601
+ if (allRows.length > MAX_DOWNLOAD) {
602
+ Modal.warning({
603
+ title: formatMessage({ id: 'common.download.exceed.max.title', defaultMessage: `下载数据过大提醒` }),
604
+ content: formatMessage(
605
+ {
606
+ id: 'common.download.exceed.max.tips',
607
+ defaultMessage: `超出最大下载数据 ${MAX_DOWNLOAD} 条,超出部分请重新下载`,
608
+ },
609
+ {
610
+ count: MAX_DOWNLOAD,
611
+ },
612
+ ),
613
+ onOk: () => resolve(allRows.slice(0, MAX_DOWNLOAD)),
614
+ });
615
+ } else {
616
+ resolve(allRows);
617
+ }
618
+ })
619
+ .catch((err) => console.log('err', err))
620
+ .finally(() => {
621
+ timer.current = setTimeout(() => {
622
+ setDownloadButtonLoading(false);
623
+ setPercent(0);
624
+ }, 2000);
625
+ });
626
+ });
627
+ },
628
+ {
629
+ codeColumns: codeList,
630
+ title: fileName,
631
+ notice: [
632
+ formatMessage({ id: 'cfmmUI.common.button.exportMultiLang.notice', defaultMessage: '请勿修改表格结构' }),
633
+ ],
634
+ ...(exportExcel.genExcelAdvancedOptions ?? {}),
635
+ },
636
+ );
600
637
  };
601
638
 
602
639
  /**
@@ -868,7 +905,12 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
868
905
  getAuthorityFn(defaultAuthCodes.import) && (apis.importData || interceptors.importData?.submitImportListData),
869
906
  key: 'import',
870
907
  label: (
871
- <ImportExecl key="importMaterial" rangeStart={{ c: 0, r: 2 }} onChange={importListData}>
908
+ <ImportExecl
909
+ key="importListData"
910
+ rangeStart={{ c: 0, r: 2 }}
911
+ onChange={importListData}
912
+ {...(importData?.attributes || {})}
913
+ >
872
914
  <div style={{ color: !actionLoading ? 'rgba(0, 0, 0, 0.88)' : 'rgba(0, 0, 0, 0.25)' }}>
873
915
  <UploadOutlined style={{ marginRight: 8 }} />
874
916
  {formatMessage({ id: 'cfmmUI.common.button.importData', defaultMessage: '导入数据' })}
@@ -126,6 +126,7 @@ declare const _default: {
126
126
  "cfmmUI.common.button.importData": string;
127
127
  "cfmmUI.common.button.exportData": string;
128
128
  'cfmmUI.common.button.exportMultiLang.notice': string;
129
+ "cfmmUI.common.button.exportMultiLang.title": string;
129
130
  'cfmmUI.action.create.waitingMessage': string;
130
131
  'cfmmUI.action.update.waitingMessage': string;
131
132
  'cfmmUI.action.delete.waitingMessage': string;
@@ -26,6 +26,7 @@ declare const _default: {
26
26
  "cfmmUI.common.button.importData": string;
27
27
  "cfmmUI.common.button.exportData": string;
28
28
  'cfmmUI.common.button.exportMultiLang.notice': string;
29
+ "cfmmUI.common.button.exportMultiLang.title": string;
29
30
  'cfmmUI.action.create.waitingMessage': string;
30
31
  'cfmmUI.action.update.waitingMessage': string;
31
32
  'cfmmUI.action.delete.waitingMessage': string;
@@ -28,6 +28,7 @@ export default {
28
28
  "cfmmUI.common.button.importData": "Import Data",
29
29
  "cfmmUI.common.button.exportData": "Export Data",
30
30
  'cfmmUI.common.button.exportMultiLang.notice': 'Please do not modify the table structure',
31
+ "cfmmUI.common.button.exportMultiLang.title": "Please select the fields to export",
31
32
  //操作提示
32
33
  'cfmmUI.action.create.waitingMessage': 'Being Added',
33
34
  'cfmmUI.action.update.waitingMessage': 'Be Modifying',
@@ -126,6 +126,7 @@ declare const _default: {
126
126
  "cfmmUI.common.button.importData": string;
127
127
  "cfmmUI.common.button.exportData": string;
128
128
  'cfmmUI.common.button.exportMultiLang.notice': string;
129
+ "cfmmUI.common.button.exportMultiLang.title": string;
129
130
  'cfmmUI.action.create.waitingMessage': string;
130
131
  'cfmmUI.action.update.waitingMessage': string;
131
132
  'cfmmUI.action.delete.waitingMessage': string;
@@ -126,6 +126,7 @@ declare const _default: {
126
126
  "cfmmUI.common.button.importData": string;
127
127
  "cfmmUI.common.button.exportData": string;
128
128
  'cfmmUI.common.button.exportMultiLang.notice': string;
129
+ "cfmmUI.common.button.exportMultiLang.title": string;
129
130
  'cfmmUI.action.create.waitingMessage': string;
130
131
  'cfmmUI.action.update.waitingMessage': string;
131
132
  'cfmmUI.action.delete.waitingMessage': string;
@@ -126,6 +126,7 @@ declare const _default: {
126
126
  "cfmmUI.common.button.importData": string;
127
127
  "cfmmUI.common.button.exportData": string;
128
128
  "cfmmUI.common.button.exportMultiLang.notice": string;
129
+ "cfmmUI.common.button.exportMultiLang.title": string;
129
130
  "cfmmUI.action.create.waitingMessage": string;
130
131
  "cfmmUI.action.update.waitingMessage": string;
131
132
  "cfmmUI.action.delete.waitingMessage": string;
@@ -125,6 +125,7 @@ declare const _default: {
125
125
  "cfmmUI.common.button.importData": string;
126
126
  "cfmmUI.common.button.exportData": string;
127
127
  "cfmmUI.common.button.exportMultiLang.notice": string;
128
+ "cfmmUI.common.button.exportMultiLang.title": string;
128
129
  "cfmmUI.action.create.waitingMessage": string;
129
130
  "cfmmUI.action.update.waitingMessage": string;
130
131
  "cfmmUI.action.delete.waitingMessage": string;
@@ -26,6 +26,7 @@ declare const _default: {
26
26
  "cfmmUI.common.button.importData": string;
27
27
  "cfmmUI.common.button.exportData": string;
28
28
  "cfmmUI.common.button.exportMultiLang.notice": string;
29
+ "cfmmUI.common.button.exportMultiLang.title": string;
29
30
  "cfmmUI.action.create.waitingMessage": string;
30
31
  "cfmmUI.action.update.waitingMessage": string;
31
32
  "cfmmUI.action.delete.waitingMessage": string;
@@ -28,6 +28,7 @@ export default {
28
28
  "cfmmUI.common.button.importData": "导入数据",
29
29
  "cfmmUI.common.button.exportData": "导出数据",
30
30
  "cfmmUI.common.button.exportMultiLang.notice": "请勿修改表格结构",
31
+ "cfmmUI.common.button.exportMultiLang.title": "请选择需要导出的字段",
31
32
  //操作提示
32
33
  "cfmmUI.action.create.waitingMessage": "正在新增",
33
34
  "cfmmUI.action.update.waitingMessage": "正在修改",
@@ -126,6 +126,7 @@ declare const _default: {
126
126
  "cfmmUI.common.button.importData": string;
127
127
  "cfmmUI.common.button.exportData": string;
128
128
  "cfmmUI.common.button.exportMultiLang.notice": string;
129
+ "cfmmUI.common.button.exportMultiLang.title": string;
129
130
  "cfmmUI.action.create.waitingMessage": string;
130
131
  "cfmmUI.action.update.waitingMessage": string;
131
132
  "cfmmUI.action.delete.waitingMessage": string;
@@ -26,6 +26,7 @@ declare const _default: {
26
26
  "cfmmUI.common.button.importData": string;
27
27
  "cfmmUI.common.button.exportData": string;
28
28
  "cfmmUI.common.button.exportMultiLang.notice": string;
29
+ "cfmmUI.common.button.exportMultiLang.title": string;
29
30
  "cfmmUI.action.create.waitingMessage": string;
30
31
  "cfmmUI.action.update.waitingMessage": string;
31
32
  "cfmmUI.action.delete.waitingMessage": string;
@@ -28,6 +28,7 @@ export default {
28
28
  "cfmmUI.common.button.importData": "導入數據",
29
29
  "cfmmUI.common.button.exportData": "導出數據",
30
30
  "cfmmUI.common.button.exportMultiLang.notice": "請勿修改表格結構",
31
+ "cfmmUI.common.button.exportMultiLang.title": "請選擇需要導出的字段",
31
32
  //操作提示
32
33
  "cfmmUI.action.create.waitingMessage": "正在新增",
33
34
  "cfmmUI.action.update.waitingMessage": "正在修改",
@@ -125,6 +125,7 @@ declare const _default: {
125
125
  "cfmmUI.common.button.importData": string;
126
126
  "cfmmUI.common.button.exportData": string;
127
127
  "cfmmUI.common.button.exportMultiLang.notice": string;
128
+ "cfmmUI.common.button.exportMultiLang.title": string;
128
129
  "cfmmUI.action.create.waitingMessage": string;
129
130
  "cfmmUI.action.update.waitingMessage": string;
130
131
  "cfmmUI.action.delete.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?: ExportMultiLangListItem[];\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 queryExportMultiLangData?: (tableName: string, columnName: string) => Promise<ExportMultiLangListItem[]>;\n /** \u81EA\u5B9A\u4E49\u5BFC\u5165\u591A\u8BED\u8A00\u51FD\u6570 */\n importMultiLangData?: (list: ExportMultiLangListItem[], 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 /**\n * \u5BFC\u51FA\u5168\u91CF\u67E5\u8BE2\u62E6\u622A\u5668\uFF0C\u4F18\u5148\u7EA7\u9AD8\u4E8E query\uFF0C\u4E13\u7528\u4E8E\u5BFC\u51FA\u573A\u666F\u3002\n * \u5F53\u5BFC\u51FA\u4E0E\u8868\u683C\u5C55\u793A\u9700\u8981\u4E0D\u540C\u7684\u6570\u636E\u5904\u7406\u903B\u8F91\u65F6\uFF08\u5982\u8868\u683C\u8F6C\u6811\u3001\u5BFC\u51FA\u4FDD\u6301\u6241\u5E73\uFF09\uFF0C\u53EF\u5355\u72EC\u914D\u7F6E\u6B64\u9879\u3002\n * \u672A\u914D\u7F6E\u65F6\u56DE\u9000\u5230 query \u62E6\u622A\u5668\u3002\n */\n queryAll?: {\n /** \u5BFC\u51FA\u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668 */\n request?: (params: any) => any;\n /** \u5BFC\u51FA\u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668 */\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 extraTableButtonList?: {\n /** \u6309\u94AE\u4F4D\u7F6E */\n position: 'start' | 'end' | number;\n /** \u6309\u94AE\u8282\u70B9 */\n label: any;\n icon?: React.ReactNode;\n /** \u6309\u94AE\u6743\u9650 */\n auth?: string | boolean;\n }[];\n /** \u6839\u636Ekey\u66FF\u6362\u8868\u683C\u6309\u94AE */\n replaceTableButtonItems?: {\n /** \u6309\u94AEkey */\n key: string;\n /** \u6309\u94AE\u8282\u70B9 */\n label: any;\n /** \u6309\u94AE\u6743\u9650 */\n auth?: string | boolean;\n }[];\n }\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 /** \u7F16\u8F91\u8868\u5355\u7981\u7528\u8868\u5355\u9879 */\n disabledColumnKeys?: (keyof T)[];\n /** \u7F16\u8F91\u8868\u5355\u9690\u85CF\u9879 */\n hiddenColumnKeys?: (keyof T)[];\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u989D\u5916props */\n props?: Partial<ProTableProps<T, any>> & {\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u62BD\u5C49\u7EC4\u4EF6\u7684\u989D\u5916props */\n drawerProps?: Partial<DrawerProps> & {\n onCloseAfter?: (e?: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>) => void;\n },\n /** \u91CD\u7F6E\u8868\u5355\u540E\u56DE\u8C03\u51FD\u6570 */\n onResetAfter?: () => void;\n /** \u5916\u90E8UpdateFormComponent\u7684\u989D\u5916props */\n [key: string]: any;\n };\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 /** \u81EA\u5B9A\u4E49\u7F16\u8F91\u51FD\u6570 */\n onEdit?: (record: T) => void;\n /** \u81EA\u5B9A\u4E49\u5220\u9664\u51FD\u6570 */\n onDelete?: (keys: React.Key[]) => void;\n /** \u81EA\u5B9A\u4E49\u67E5\u770B\u51FD\u6570 */\n onView?: (record: T) => void;\n /** \u81EA\u5B9A\u4E49\u64CD\u4F5C\u65E5\u5FD7\u51FD\u6570 */\n onActionLog?: (record: T) => void;\n\n /** \u67E5\u8BE2\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterSearch?: (result: API.Result_TableListType<T[]>) => Promise<any> | void;\n /** \u65B0\u589E\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u8FD4\u56DEfalse\u5219\u4E0D\u8FDB\u884C\u65B0\u589E\uFF0C\u65E0\u8FD4\u56DE\u6216\u8005true\u5219\u8FDB\u884C\u65B0\u589E */\n onBeforeAdd?: () => Promise<null | boolean | void> | boolean | void;\n /** \u7F16\u8F91\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u8FD4\u56DEfalse\u5219\u4E0D\u8FDB\u884C\u7F16\u8F91\uFF0C\u65E0\u8FD4\u56DE\u6216\u8005true\u5219\u4F7F\u7528\u9ED8\u8BA4\u6570\u636E\u8FDB\u884C\u7F16\u8F91\uFF0C\u8FD4\u56DE\u5BF9\u8C61\u5219\u4F7F\u7528\u8FD4\u56DE\u7684\u5BF9\u8C61\u8FDB\u884C\u7F16\u8F91 */\n onBeforeEdit?: (record: T) => Promise<T | null | boolean | void> | T | boolean | void;\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 updateFormRef: React.MutableRefObject<ProFormInstance | 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?: ExportMultiLangListItem[];\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\u5165\u591A\u8BED\u8A00\u6570\u636E\u6821\u9A8C */\n checkImportExecl?: (list: ExportMultiLangListItem[]) => ImportErrorType[];\n /** \u81EA\u5B9A\u4E49\u5BFC\u5165\u591A\u8BED\u8A00\u6570\u636E\u6821\u9A8C\u63D0\u793A */\n showCheckErrorTips?: (errorMessageList: ImportErrorType[]) => void;\n /** \u81EA\u5B9A\u4E49\u63D0\u4EA4\u591A\u8BED\u8A00\u6570\u636E */\n submit?: (params: { tableName: string; columnName: string; list: ExportMultiLangListItem[] }) => Promise<{ success: boolean; failMsg?: string; data?: any } | void>;\n /** \u81EA\u5B9A\u4E49\u5904\u7406\u5BFC\u5165\u7684\u591A\u8BED\u8A00\u6570\u636E */\n handleImportList?: (list: ExportMultiLangListItem[], options?: { needHandleUnderline?: boolean }) => ExportMultiLangListItem[];\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 queryExportMultiLangData?: (tableName: string, columnName: string) => Promise<ExportMultiLangListItem[]>;\n /** \u81EA\u5B9A\u4E49\u5BFC\u5165\u591A\u8BED\u8A00\u51FD\u6570 */\n importMultiLangData?: (list: ExportMultiLangListItem[], 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 /** \u5BFC\u51FA\u5168\u91CF\u67E5\u8BE2\u65B9\u6CD5 */\n queryExportData?: (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 & { rowNum: number })[]) => 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 /**\n * \u5BFC\u51FA\u5168\u91CF\u67E5\u8BE2\u62E6\u622A\u5668\uFF0C\u4F18\u5148\u7EA7\u9AD8\u4E8E query\uFF0C\u4E13\u7528\u4E8E\u5BFC\u51FA\u573A\u666F\u3002\n * \u5F53\u5BFC\u51FA\u4E0E\u8868\u683C\u5C55\u793A\u9700\u8981\u4E0D\u540C\u7684\u6570\u636E\u5904\u7406\u903B\u8F91\u65F6\uFF08\u5982\u8868\u683C\u8F6C\u6811\u3001\u5BFC\u51FA\u4FDD\u6301\u6241\u5E73\uFF09\uFF0C\u53EF\u5355\u72EC\u914D\u7F6E\u6B64\u9879\u3002\n * \u672A\u914D\u7F6E\u65F6\u56DE\u9000\u5230 query \u62E6\u622A\u5668\u3002\n */\n queryAll?: {\n /** \u5BFC\u51FA\u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668 */\n request?: (params: any) => any;\n /** \u5BFC\u51FA\u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668 */\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 extraTableButtonList?: {\n /** \u6309\u94AE\u4F4D\u7F6E */\n position: 'start' | 'end' | number;\n /** \u6309\u94AE\u8282\u70B9 */\n label: any;\n icon?: React.ReactNode;\n /** \u6309\u94AE\u6743\u9650 */\n auth?: string | boolean;\n }[];\n /** \u6839\u636Ekey\u66FF\u6362\u8868\u683C\u6309\u94AE */\n replaceTableButtonItems?: {\n /** \u6309\u94AEkey */\n key: string;\n /** \u6309\u94AE\u8282\u70B9 */\n label: any;\n /** \u6309\u94AE\u6743\u9650 */\n auth?: string | boolean;\n }[];\n }\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 /** \u7F16\u8F91\u8868\u5355\u7981\u7528\u8868\u5355\u9879 */\n disabledColumnKeys?: (keyof T)[];\n /** \u7F16\u8F91\u8868\u5355\u9690\u85CF\u9879 */\n hiddenColumnKeys?: (keyof T)[];\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u989D\u5916props */\n props?: Partial<ProTableProps<T, any>> & {\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u62BD\u5C49\u7EC4\u4EF6\u7684\u989D\u5916props */\n drawerProps?: Partial<DrawerProps> & {\n onCloseAfter?: (e?: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>) => void;\n },\n /** \u91CD\u7F6E\u8868\u5355\u540E\u56DE\u8C03\u51FD\u6570 */\n onResetAfter?: () => void;\n /** \u5916\u90E8UpdateFormComponent\u7684\u989D\u5916props */\n [key: string]: any;\n };\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 /** \u5BFC\u5165\u6570\u636E\u914D\u7F6E */\n importData?: {\n /** \u5BFC\u5165\u7EC4\u4EF6\u5C5E\u6027\u914D\u7F6E */\n attributes?: Partial<ImportExeclProps>;\n };\n\n /** \u6570\u636E\u5BFC\u51FA\u4E3AExcel\u914D\u7F6E */\n exportExcel?: {\n /**\n * \u5BFC\u51FAExcel\u9AD8\u7EA7\u914D\u7F6E\n * @see ExcelExportOptions\n * @param title - \u7B2C\u4E00\u884C\uFF1A\u8868\u5934\u6807\u9898\n * @param titleStyle - \u7B2C\u4E00\u884C\u6837\u5F0F\u914D\u7F6E\n * @param notice - \u6CE8\u610F\u4E8B\u9879\uFF08\u652F\u6301\u5B57\u7B26\u4E32\u6216\u6570\u7EC4\uFF0C\u6570\u7EC4\u6BCF\u9879\u4E3A\u4E00\u884C\uFF09\n * @param noticeStyle - \u6CE8\u610F\u4E8B\u9879\u6837\u5F0F\u914D\u7F6E\n * @param codeColumns - \u7F16\u53F7\u884C\uFF08\u7528\u4E8E\u5339\u914D\u5B57\u6BB5\uFF0C\u4F1A\u9690\u85CF\uFF09\n * @param worksheetColumns - \u5217\u914D\u7F6E\n * @param lockedColumns - \u9501\u5B9A\u7684\u5217\u7D22\u5F15\u6570\u7EC4\uFF08\u4ECE0\u5F00\u59CB\uFF09\uFF0C\u8FD9\u4E9B\u5217\u4E0D\u5141\u8BB8\u4FEE\u6539\n * @param sheetPassword - \u5DE5\u4F5C\u8868\u4FDD\u62A4\u5BC6\u7801\uFF08\u53EF\u9009\uFF09\n * @param lockHeaderRows - \u662F\u5426\u9501\u5B9A\u57FA\u7840\u884C\uFF08\u6570\u636E\u884C\u524D\u7684\u884C\uFF09\uFF0C\u9ED8\u8BA4\u4E3A true\n * @param mergeCells - \u81EA\u5B9A\u4E49\u5408\u5E76\u5355\u5143\u683C\u8303\u56F4\u6570\u7EC4\uFF08\u5982 ['A1:B2', 'C1:D1']\uFF09\n * @param dataRowHeight - \u6570\u636E\u884C\u9AD8\u5EA6\uFF0C\u9ED8\u8BA4 22\n * @returns - \u5BFC\u51FAExcel\u9AD8\u7EA7\u914D\u7F6E\n */\n genExcelAdvancedOptions?: ExcelExportOptions;\n /** \u81EA\u5B9A\u4E49\u5BFC\u51FAExcel\u51FD\u6570 */\n handleDownloadExcel?: (columns: ProColumns<T>[], columnsStateMap: Record<string, any>) => ProColumns<T>[];\n /** \u81EA\u5B9A\u4E49\u5BFC\u51FAExcel\u5217\u914D\u7F6E */\n getExportColumns?: ({ columns, columnsStateMap, filters }: { columns: ProColumns<T>[]; columnsStateMap: Record<string, any>; filters?: any[] }) => ProColumns<T>[];\n };\n\n\n /** \u81EA\u5B9A\u4E49\u65B0\u589E\u51FD\u6570 */\n onAdd?: () => void;\n /** \u81EA\u5B9A\u4E49\u7F16\u8F91\u51FD\u6570 */\n onEdit?: (record: T) => void;\n /** \u81EA\u5B9A\u4E49\u5220\u9664\u51FD\u6570 */\n onDelete?: (keys: React.Key[]) => void;\n /** \u81EA\u5B9A\u4E49\u67E5\u770B\u51FD\u6570 */\n onView?: (record: T) => void;\n /** \u81EA\u5B9A\u4E49\u64CD\u4F5C\u65E5\u5FD7\u51FD\u6570 */\n onActionLog?: (record: T) => void;\n\n /** \u67E5\u8BE2\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterSearch?: (result: API.Result_TableListType<T[]>) => Promise<any> | void;\n /** \u65B0\u589E\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u8FD4\u56DEfalse\u5219\u4E0D\u8FDB\u884C\u65B0\u589E\uFF0C\u65E0\u8FD4\u56DE\u6216\u8005true\u5219\u8FDB\u884C\u65B0\u589E */\n onBeforeAdd?: () => Promise<null | boolean | void> | boolean | void;\n /** \u7F16\u8F91\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u8FD4\u56DEfalse\u5219\u4E0D\u8FDB\u884C\u7F16\u8F91\uFF0C\u65E0\u8FD4\u56DE\u6216\u8005true\u5219\u4F7F\u7528\u9ED8\u8BA4\u6570\u636E\u8FDB\u884C\u7F16\u8F91\uFF0C\u8FD4\u56DE\u5BF9\u8C61\u5219\u4F7F\u7528\u8FD4\u56DE\u7684\u5BF9\u8C61\u8FDB\u884C\u7F16\u8F91 */\n onBeforeEdit?: (record: T) => Promise<T | null | boolean | void> | T | boolean | void;\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 updateFormRef: React.MutableRefObject<ProFormInstance | 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 +1 @@
1
- export var 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?: ExportMultiLangListItem[];\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 queryExportMultiLangData?: (tableName: string, columnName: string) => Promise<ExportMultiLangListItem[]>;\n /** \u81EA\u5B9A\u4E49\u5BFC\u5165\u591A\u8BED\u8A00\u51FD\u6570 */\n importMultiLangData?: (list: ExportMultiLangListItem[], 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 /**\n * \u5BFC\u51FA\u5168\u91CF\u67E5\u8BE2\u62E6\u622A\u5668\uFF0C\u4F18\u5148\u7EA7\u9AD8\u4E8E query\uFF0C\u4E13\u7528\u4E8E\u5BFC\u51FA\u573A\u666F\u3002\n * \u5F53\u5BFC\u51FA\u4E0E\u8868\u683C\u5C55\u793A\u9700\u8981\u4E0D\u540C\u7684\u6570\u636E\u5904\u7406\u903B\u8F91\u65F6\uFF08\u5982\u8868\u683C\u8F6C\u6811\u3001\u5BFC\u51FA\u4FDD\u6301\u6241\u5E73\uFF09\uFF0C\u53EF\u5355\u72EC\u914D\u7F6E\u6B64\u9879\u3002\n * \u672A\u914D\u7F6E\u65F6\u56DE\u9000\u5230 query \u62E6\u622A\u5668\u3002\n */\n queryAll?: {\n /** \u5BFC\u51FA\u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668 */\n request?: (params: any) => any;\n /** \u5BFC\u51FA\u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668 */\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 extraTableButtonList?: {\n /** \u6309\u94AE\u4F4D\u7F6E */\n position: 'start' | 'end' | number;\n /** \u6309\u94AE\u8282\u70B9 */\n label: any;\n icon?: React.ReactNode;\n /** \u6309\u94AE\u6743\u9650 */\n auth?: string | boolean;\n }[];\n /** \u6839\u636Ekey\u66FF\u6362\u8868\u683C\u6309\u94AE */\n replaceTableButtonItems?: {\n /** \u6309\u94AEkey */\n key: string;\n /** \u6309\u94AE\u8282\u70B9 */\n label: any;\n /** \u6309\u94AE\u6743\u9650 */\n auth?: string | boolean;\n }[];\n }\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 /** \u7F16\u8F91\u8868\u5355\u7981\u7528\u8868\u5355\u9879 */\n disabledColumnKeys?: (keyof T)[];\n /** \u7F16\u8F91\u8868\u5355\u9690\u85CF\u9879 */\n hiddenColumnKeys?: (keyof T)[];\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u989D\u5916props */\n props?: Partial<ProTableProps<T, any>> & {\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u62BD\u5C49\u7EC4\u4EF6\u7684\u989D\u5916props */\n drawerProps?: Partial<DrawerProps> & {\n onCloseAfter?: (e?: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>) => void;\n },\n /** \u91CD\u7F6E\u8868\u5355\u540E\u56DE\u8C03\u51FD\u6570 */\n onResetAfter?: () => void;\n /** \u5916\u90E8UpdateFormComponent\u7684\u989D\u5916props */\n [key: string]: any;\n };\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 /** \u81EA\u5B9A\u4E49\u7F16\u8F91\u51FD\u6570 */\n onEdit?: (record: T) => void;\n /** \u81EA\u5B9A\u4E49\u5220\u9664\u51FD\u6570 */\n onDelete?: (keys: React.Key[]) => void;\n /** \u81EA\u5B9A\u4E49\u67E5\u770B\u51FD\u6570 */\n onView?: (record: T) => void;\n /** \u81EA\u5B9A\u4E49\u64CD\u4F5C\u65E5\u5FD7\u51FD\u6570 */\n onActionLog?: (record: T) => void;\n\n /** \u67E5\u8BE2\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterSearch?: (result: API.Result_TableListType<T[]>) => Promise<any> | void;\n /** \u65B0\u589E\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u8FD4\u56DEfalse\u5219\u4E0D\u8FDB\u884C\u65B0\u589E\uFF0C\u65E0\u8FD4\u56DE\u6216\u8005true\u5219\u8FDB\u884C\u65B0\u589E */\n onBeforeAdd?: () => Promise<null | boolean | void> | boolean | void;\n /** \u7F16\u8F91\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u8FD4\u56DEfalse\u5219\u4E0D\u8FDB\u884C\u7F16\u8F91\uFF0C\u65E0\u8FD4\u56DE\u6216\u8005true\u5219\u4F7F\u7528\u9ED8\u8BA4\u6570\u636E\u8FDB\u884C\u7F16\u8F91\uFF0C\u8FD4\u56DE\u5BF9\u8C61\u5219\u4F7F\u7528\u8FD4\u56DE\u7684\u5BF9\u8C61\u8FDB\u884C\u7F16\u8F91 */\n onBeforeEdit?: (record: T) => Promise<T | null | boolean | void> | T | boolean | void;\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 updateFormRef: React.MutableRefObject<ProFormInstance | 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 var 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?: ExportMultiLangListItem[];\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\u5165\u591A\u8BED\u8A00\u6570\u636E\u6821\u9A8C */\n checkImportExecl?: (list: ExportMultiLangListItem[]) => ImportErrorType[];\n /** \u81EA\u5B9A\u4E49\u5BFC\u5165\u591A\u8BED\u8A00\u6570\u636E\u6821\u9A8C\u63D0\u793A */\n showCheckErrorTips?: (errorMessageList: ImportErrorType[]) => void;\n /** \u81EA\u5B9A\u4E49\u63D0\u4EA4\u591A\u8BED\u8A00\u6570\u636E */\n submit?: (params: { tableName: string; columnName: string; list: ExportMultiLangListItem[] }) => Promise<{ success: boolean; failMsg?: string; data?: any } | void>;\n /** \u81EA\u5B9A\u4E49\u5904\u7406\u5BFC\u5165\u7684\u591A\u8BED\u8A00\u6570\u636E */\n handleImportList?: (list: ExportMultiLangListItem[], options?: { needHandleUnderline?: boolean }) => ExportMultiLangListItem[];\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 queryExportMultiLangData?: (tableName: string, columnName: string) => Promise<ExportMultiLangListItem[]>;\n /** \u81EA\u5B9A\u4E49\u5BFC\u5165\u591A\u8BED\u8A00\u51FD\u6570 */\n importMultiLangData?: (list: ExportMultiLangListItem[], 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 /** \u5BFC\u51FA\u5168\u91CF\u67E5\u8BE2\u65B9\u6CD5 */\n queryExportData?: (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 & { rowNum: number })[]) => 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 /**\n * \u5BFC\u51FA\u5168\u91CF\u67E5\u8BE2\u62E6\u622A\u5668\uFF0C\u4F18\u5148\u7EA7\u9AD8\u4E8E query\uFF0C\u4E13\u7528\u4E8E\u5BFC\u51FA\u573A\u666F\u3002\n * \u5F53\u5BFC\u51FA\u4E0E\u8868\u683C\u5C55\u793A\u9700\u8981\u4E0D\u540C\u7684\u6570\u636E\u5904\u7406\u903B\u8F91\u65F6\uFF08\u5982\u8868\u683C\u8F6C\u6811\u3001\u5BFC\u51FA\u4FDD\u6301\u6241\u5E73\uFF09\uFF0C\u53EF\u5355\u72EC\u914D\u7F6E\u6B64\u9879\u3002\n * \u672A\u914D\u7F6E\u65F6\u56DE\u9000\u5230 query \u62E6\u622A\u5668\u3002\n */\n queryAll?: {\n /** \u5BFC\u51FA\u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668 */\n request?: (params: any) => any;\n /** \u5BFC\u51FA\u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668 */\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 extraTableButtonList?: {\n /** \u6309\u94AE\u4F4D\u7F6E */\n position: 'start' | 'end' | number;\n /** \u6309\u94AE\u8282\u70B9 */\n label: any;\n icon?: React.ReactNode;\n /** \u6309\u94AE\u6743\u9650 */\n auth?: string | boolean;\n }[];\n /** \u6839\u636Ekey\u66FF\u6362\u8868\u683C\u6309\u94AE */\n replaceTableButtonItems?: {\n /** \u6309\u94AEkey */\n key: string;\n /** \u6309\u94AE\u8282\u70B9 */\n label: any;\n /** \u6309\u94AE\u6743\u9650 */\n auth?: string | boolean;\n }[];\n }\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 /** \u7F16\u8F91\u8868\u5355\u7981\u7528\u8868\u5355\u9879 */\n disabledColumnKeys?: (keyof T)[];\n /** \u7F16\u8F91\u8868\u5355\u9690\u85CF\u9879 */\n hiddenColumnKeys?: (keyof T)[];\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u989D\u5916props */\n props?: Partial<ProTableProps<T, any>> & {\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u62BD\u5C49\u7EC4\u4EF6\u7684\u989D\u5916props */\n drawerProps?: Partial<DrawerProps> & {\n onCloseAfter?: (e?: React.MouseEvent<Element, MouseEvent> | React.KeyboardEvent<Element>) => void;\n },\n /** \u91CD\u7F6E\u8868\u5355\u540E\u56DE\u8C03\u51FD\u6570 */\n onResetAfter?: () => void;\n /** \u5916\u90E8UpdateFormComponent\u7684\u989D\u5916props */\n [key: string]: any;\n };\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 /** \u5BFC\u5165\u6570\u636E\u914D\u7F6E */\n importData?: {\n /** \u5BFC\u5165\u7EC4\u4EF6\u5C5E\u6027\u914D\u7F6E */\n attributes?: Partial<ImportExeclProps>;\n };\n\n /** \u6570\u636E\u5BFC\u51FA\u4E3AExcel\u914D\u7F6E */\n exportExcel?: {\n /**\n * \u5BFC\u51FAExcel\u9AD8\u7EA7\u914D\u7F6E\n * @see ExcelExportOptions\n * @param title - \u7B2C\u4E00\u884C\uFF1A\u8868\u5934\u6807\u9898\n * @param titleStyle - \u7B2C\u4E00\u884C\u6837\u5F0F\u914D\u7F6E\n * @param notice - \u6CE8\u610F\u4E8B\u9879\uFF08\u652F\u6301\u5B57\u7B26\u4E32\u6216\u6570\u7EC4\uFF0C\u6570\u7EC4\u6BCF\u9879\u4E3A\u4E00\u884C\uFF09\n * @param noticeStyle - \u6CE8\u610F\u4E8B\u9879\u6837\u5F0F\u914D\u7F6E\n * @param codeColumns - \u7F16\u53F7\u884C\uFF08\u7528\u4E8E\u5339\u914D\u5B57\u6BB5\uFF0C\u4F1A\u9690\u85CF\uFF09\n * @param worksheetColumns - \u5217\u914D\u7F6E\n * @param lockedColumns - \u9501\u5B9A\u7684\u5217\u7D22\u5F15\u6570\u7EC4\uFF08\u4ECE0\u5F00\u59CB\uFF09\uFF0C\u8FD9\u4E9B\u5217\u4E0D\u5141\u8BB8\u4FEE\u6539\n * @param sheetPassword - \u5DE5\u4F5C\u8868\u4FDD\u62A4\u5BC6\u7801\uFF08\u53EF\u9009\uFF09\n * @param lockHeaderRows - \u662F\u5426\u9501\u5B9A\u57FA\u7840\u884C\uFF08\u6570\u636E\u884C\u524D\u7684\u884C\uFF09\uFF0C\u9ED8\u8BA4\u4E3A true\n * @param mergeCells - \u81EA\u5B9A\u4E49\u5408\u5E76\u5355\u5143\u683C\u8303\u56F4\u6570\u7EC4\uFF08\u5982 ['A1:B2', 'C1:D1']\uFF09\n * @param dataRowHeight - \u6570\u636E\u884C\u9AD8\u5EA6\uFF0C\u9ED8\u8BA4 22\n * @returns - \u5BFC\u51FAExcel\u9AD8\u7EA7\u914D\u7F6E\n */\n genExcelAdvancedOptions?: ExcelExportOptions;\n /** \u81EA\u5B9A\u4E49\u5BFC\u51FAExcel\u51FD\u6570 */\n handleDownloadExcel?: (columns: ProColumns<T>[], columnsStateMap: Record<string, any>) => ProColumns<T>[];\n /** \u81EA\u5B9A\u4E49\u5BFC\u51FAExcel\u5217\u914D\u7F6E */\n getExportColumns?: ({ columns, columnsStateMap, filters }: { columns: ProColumns<T>[]; columnsStateMap: Record<string, any>; filters?: any[] }) => ProColumns<T>[];\n };\n\n\n /** \u81EA\u5B9A\u4E49\u65B0\u589E\u51FD\u6570 */\n onAdd?: () => void;\n /** \u81EA\u5B9A\u4E49\u7F16\u8F91\u51FD\u6570 */\n onEdit?: (record: T) => void;\n /** \u81EA\u5B9A\u4E49\u5220\u9664\u51FD\u6570 */\n onDelete?: (keys: React.Key[]) => void;\n /** \u81EA\u5B9A\u4E49\u67E5\u770B\u51FD\u6570 */\n onView?: (record: T) => void;\n /** \u81EA\u5B9A\u4E49\u64CD\u4F5C\u65E5\u5FD7\u51FD\u6570 */\n onActionLog?: (record: T) => void;\n\n /** \u67E5\u8BE2\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterSearch?: (result: API.Result_TableListType<T[]>) => Promise<any> | void;\n /** \u65B0\u589E\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u8FD4\u56DEfalse\u5219\u4E0D\u8FDB\u884C\u65B0\u589E\uFF0C\u65E0\u8FD4\u56DE\u6216\u8005true\u5219\u8FDB\u884C\u65B0\u589E */\n onBeforeAdd?: () => Promise<null | boolean | void> | boolean | void;\n /** \u7F16\u8F91\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u8FD4\u56DEfalse\u5219\u4E0D\u8FDB\u884C\u7F16\u8F91\uFF0C\u65E0\u8FD4\u56DE\u6216\u8005true\u5219\u4F7F\u7528\u9ED8\u8BA4\u6570\u636E\u8FDB\u884C\u7F16\u8F91\uFF0C\u8FD4\u56DE\u5BF9\u8C61\u5219\u4F7F\u7528\u8FD4\u56DE\u7684\u5BF9\u8C61\u8FDB\u884C\u7F16\u8F91 */\n onBeforeEdit?: (record: T) => Promise<T | null | boolean | void> | T | boolean | void;\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 updateFormRef: React.MutableRefObject<ProFormInstance | 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";
@@ -18,6 +18,10 @@ export interface ColumnProcessOptions<T> {
18
18
 
19
19
  export type DataRowGenerator = () => Promise<any[]>;
20
20
 
21
+ export type CfProColumns<T = any, ValueType = 'text'> = ProColumns<T, ValueType> & {
22
+ hideInExport?: boolean;
23
+ };
24
+
21
25
  // 延时函数
22
26
  // eslint-disable-next-line no-promise-executor-return
23
27
  export const delay = (ms: number) => new Promise((resolve) => setTimeout(resolve, ms));
@@ -167,6 +171,7 @@ export const genExcel = (
167
171
  */
168
172
  return workBook.xlsx.writeBuffer();
169
173
  })
174
+ // @ts-ignore
170
175
  .then((blob: Blob) => {
171
176
  /**
172
177
  * 下载文件
@@ -515,19 +520,22 @@ export const convertNumberToCellName = (cellIndex: number): string => {
515
520
  * @param param 列,变更属性,过滤值
516
521
  * @returns
517
522
  */
518
- export const getExportColumns = <T>({
523
+ export const getExportColumns = <T = any>({
519
524
  columns = [],
520
525
  columnsStateMap = {},
521
526
  filters = [],
522
527
  }: {
523
- columns: ProColumns<T>[];
528
+ columns: CfProColumns<T>[];
524
529
  columnsStateMap?: Record<string, ColumnsState>;
525
530
  filters?: any[];
526
531
  }): ProColumns<T>[] => {
532
+ // 只处理显示的子列
527
533
  const filterList = columns.filter((item) => {
534
+ const hideInExport = item.hideInExport ?? item.hideInTable;
535
+
528
536
  return (
529
537
  // 排除隐藏在表格的列
530
- !item.hideInTable &&
538
+ !hideInExport &&
531
539
  // 排除主动过滤的列
532
540
  !filters.includes(item.dataIndex) &&
533
541
  // 排除在于columnsStateMap中且columnsStateMapp[item.dataIndex].show为false的列(排除表格右上角工具隐藏的列)
@@ -596,10 +604,14 @@ export const getExportColumnsWithGroupSupport = <T>(options: ColumnProcessOption
596
604
 
597
605
  /**
598
606
  * 检查列是否应该显示
607
+ * 检查列是否应该出现在导出中
608
+ * hideInExport 未配置时回退到 hideInTable,保持向后兼容
599
609
  */
600
- const shouldShowColumn = (column: ProColumns<T>): boolean => {
610
+ const shouldShowColumn = (column: CfProColumns<T>): boolean => {
611
+ const hideInExport = column.hideInExport ?? column.hideInTable;
612
+
601
613
  return (
602
- !column.hideInTable &&
614
+ !hideInExport &&
603
615
  !filters.includes(column.dataIndex) &&
604
616
  (!columnsStateMap[column.dataIndex as string] || (columnsStateMap[column.dataIndex as string]?.show ?? true))
605
617
  );
@@ -3,5 +3,5 @@ import { DropdownButtonTypes, DynamicIconTypes, HighlightStrTypes, MyFooterToolb
3
3
  // 修改方法,不再尝试读取外部文件
4
4
  export default {
5
5
  path: 'types.d.ts',
6
- content: "\n import React from 'react';\n import { ModalProps, DrawerProps, SelectProps, DatePickerProps, UploadProps, UploadFile, TooltipProps, ButtonProps, TabsProps, SwitchProps, FloatButtonProps, StepsProps, FlexProps, TagProps } from 'antd';\n import { PresetColorType, PresetStatusColorType } from \"antd/lib/_util/colors\";\n import { AutoCompleteProps } from 'antd/es/auto-complete';\n import { RangePickerProps } from 'antd/lib/date-picker';\n import { LiteralUnion } from \"antd/lib/_util/type\";\n import { IconComponentProps } from '@ant-design/icons/lib/components/Icon';\n import { ActionType, ProFormItemProps, ProColumns, ProTableProps, DrawerFormProps, ModalFormProps, PageContainerProps, ProFormInstance } from '@ant-design/pro-components';\n import dayjs, { OpUnitType } from 'dayjs';\n import { IEditorConfig, IToolbarConfig } from '@wangeditor/editor';\n import type { DragEndEvent } from '@dnd-kit/core';\n import { fileTypeMap } from './components'; \n\n\n ".concat(servicesTypes, "\n\n ").concat(HighlightStrTypes, "\n\n ").concat(DropdownButtonTypes, "\n\n ").concat(DynamicIconTypes, "\n\n ").concat(MyFooterToolbarTypes, "\n\n ").concat(QrCodeModalTypes, "\n\n ").concat(MenuFooterTypes, "\n\n ").concat(EditMultiLangFormTypes, "\n\n ").concat(MySelectTypes, "\n\n ").concat(MySelectLangTypes, "\n\n ").concat(PermissionSelectTypes, "\n\n ").concat(DataPermissionSelectTypes, "\n\n ").concat(DatePickerTypes, "\n\n ").concat(RandomAvatarTypes, "\n\n ").concat(RefDrawerFormTypes, "\n\n ").concat(ViewTableItemDrawerTypes, "\n\n ").concat(WangEditorTypes, "\n\n ").concat(MyPageContainerTypes, "\n\n ").concat(MyTagListTypes, "\n\n ").concat(VolumeFormItemTypes, "\n\n ").concat(ImportExeclTypes, "\n\n ").concat(MyUploadTypes, "\n\n ").concat(ReportTableTypes, "\n\n ").concat(DicDropDownListTypes, "\n\n ").concat(ActionLogDrawerTypes, "\n\n ").concat(DndTabsTypes, "\n\n ").concat(ImportDataUploadTypes, "\n\n ").concat(AvatarDropdownTypes, "\n\n ").concat(HeaderSearchTypes, "\n\n ").concat(ThemeSwitchTypes, "\n\n ").concat(GlobalHeaderTypes, "\n\n ").concat(KeepAliveTabsTypes, "\n\n ").concat(ExportPageWrapperTypes, "\n\n ").concat(MySetpsTypes, "\n\n ").concat(CrudTableTypes, "\n\n ").concat(DndTagTypes, "\n ")
6
+ content: "\n import React from 'react';\n import { ModalProps, DrawerProps, SelectProps, DatePickerProps, UploadProps, UploadFile, TooltipProps, ButtonProps, TabsProps, SwitchProps, FloatButtonProps, StepsProps, FlexProps, TagProps } from 'antd';\n import { PresetColorType, PresetStatusColorType } from \"antd/lib/_util/colors\";\n import { AutoCompleteProps } from 'antd/es/auto-complete';\n import { RangePickerProps } from 'antd/lib/date-picker';\n import { LiteralUnion } from \"antd/lib/_util/type\";\n import { IconComponentProps } from '@ant-design/icons/lib/components/Icon';\n import { ActionType, ProFormItemProps, ProColumns, ProTableProps, DrawerFormProps, ModalFormProps, PageContainerProps, ProFormInstance } from '@ant-design/pro-components';\n import dayjs, { OpUnitType } from 'dayjs';\n import { IEditorConfig, IToolbarConfig } from '@wangeditor/editor';\n import type { DragEndEvent } from '@dnd-kit/core';\n import { fileTypeMap } from './components'; \n import { ExcelExportOptions } from './utils/excelHelper';\n\n\n ".concat(servicesTypes, "\n\n ").concat(HighlightStrTypes, "\n\n ").concat(DropdownButtonTypes, "\n\n ").concat(DynamicIconTypes, "\n\n ").concat(MyFooterToolbarTypes, "\n\n ").concat(QrCodeModalTypes, "\n\n ").concat(MenuFooterTypes, "\n\n ").concat(EditMultiLangFormTypes, "\n\n ").concat(MySelectTypes, "\n\n ").concat(MySelectLangTypes, "\n\n ").concat(PermissionSelectTypes, "\n\n ").concat(DataPermissionSelectTypes, "\n\n ").concat(DatePickerTypes, "\n\n ").concat(RandomAvatarTypes, "\n\n ").concat(RefDrawerFormTypes, "\n\n ").concat(ViewTableItemDrawerTypes, "\n\n ").concat(WangEditorTypes, "\n\n ").concat(MyPageContainerTypes, "\n\n ").concat(MyTagListTypes, "\n\n ").concat(VolumeFormItemTypes, "\n\n ").concat(ImportExeclTypes, "\n\n ").concat(MyUploadTypes, "\n\n ").concat(ReportTableTypes, "\n\n ").concat(DicDropDownListTypes, "\n\n ").concat(ActionLogDrawerTypes, "\n\n ").concat(DndTabsTypes, "\n\n ").concat(ImportDataUploadTypes, "\n\n ").concat(AvatarDropdownTypes, "\n\n ").concat(HeaderSearchTypes, "\n\n ").concat(ThemeSwitchTypes, "\n\n ").concat(GlobalHeaderTypes, "\n\n ").concat(KeepAliveTabsTypes, "\n\n ").concat(ExportPageWrapperTypes, "\n\n ").concat(MySetpsTypes, "\n\n ").concat(CrudTableTypes, "\n\n ").concat(DndTagTypes, "\n ")
7
7
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cfmm/umi-plugins-ui-v2",
3
3
  "author": "ysj <411367308@qq.com>",
4
- "version": "0.0.14",
4
+ "version": "0.0.15",
5
5
  "main": "dist/cjs/index.js",
6
6
  "types": "dist/cjs/index.d.ts",
7
7
  "publishConfig": {