@cfmm/umi-plugins-ui-v2 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/components/CrudTable.tpl +6 -8
- package/dist/cjs/components/EditMultiLangForm.tpl +37 -117
- package/dist/cjs/services/index.tpl +6 -60
- package/dist/cjs/types/CrudTableTypes.d.ts +1 -1
- package/dist/cjs/types/CrudTableTypes.js +1 -1
- package/dist/cjs/types/EditMultiLangFormTypes.d.ts +1 -1
- package/dist/cjs/types/EditMultiLangFormTypes.js +1 -1
- package/dist/esm/components/CrudTable.tpl +6 -8
- package/dist/esm/components/EditMultiLangForm.tpl +37 -117
- package/dist/esm/services/index.tpl +6 -60
- package/dist/esm/types/CrudTableTypes.d.ts +1 -1
- package/dist/esm/types/CrudTableTypes.js +1 -1
- package/dist/esm/types/EditMultiLangFormTypes.d.ts +1 -1
- package/dist/esm/types/EditMultiLangFormTypes.js +1 -1
- package/package.json +1 -1
|
@@ -15,7 +15,7 @@ import EditMultiLangForm from './EditMultiLangForm';
|
|
|
15
15
|
import MyFooterToolbar from './MyFooterToolbar';
|
|
16
16
|
import ViewTableItemDrawer from './ViewTableItemDrawer';
|
|
17
17
|
import { genExcelAdvanced } from '../utils/excelHelper';
|
|
18
|
-
import { importMultiLangList,
|
|
18
|
+
import { importMultiLangList, queryLangInfoExprotList } from '../services';
|
|
19
19
|
import { handleImportList } from '../utils/importHelper';
|
|
20
20
|
|
|
21
21
|
const { confirm } = Modal;
|
|
@@ -46,7 +46,6 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
46
46
|
ref: ForwardedRef<CrudTableRefType<T>>,
|
|
47
47
|
) {
|
|
48
48
|
const {
|
|
49
|
-
version = 'v2',
|
|
50
49
|
baseLocalCode,
|
|
51
50
|
baseLocalName,
|
|
52
51
|
rowKey,
|
|
@@ -107,7 +106,7 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
107
106
|
const langInfo: LangInfoItem = {
|
|
108
107
|
tableName: fieldConfig.tableName,
|
|
109
108
|
columnName: fieldConfig.columnName,
|
|
110
|
-
|
|
109
|
+
dataId: record[rowKey] as string,
|
|
111
110
|
};
|
|
112
111
|
setCurrentLangInfo(langInfo);
|
|
113
112
|
}
|
|
@@ -126,7 +125,7 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
126
125
|
}
|
|
127
126
|
|
|
128
127
|
const result = await doAction('GET', { tableName, columnName }, {
|
|
129
|
-
actionFn:
|
|
128
|
+
actionFn: queryLangInfoExprotList,
|
|
130
129
|
});
|
|
131
130
|
|
|
132
131
|
if (result.success && result.data) {
|
|
@@ -147,14 +146,14 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
147
146
|
defaultMessage: '数据列表',
|
|
148
147
|
});
|
|
149
148
|
|
|
150
|
-
const codeList = ['
|
|
149
|
+
const codeList = ['dataId', 'columnValue', 'zh_CN', 'zh_TW', 'en_US', 'th_TH'];
|
|
151
150
|
|
|
152
151
|
const { tableName, columnName } = multiLang.fields[0];
|
|
153
152
|
const data = await queryMultiLangData(tableName, columnName);
|
|
154
153
|
|
|
155
154
|
if(!data.length) return;
|
|
156
155
|
|
|
157
|
-
const handleData = data.map(item => [item.
|
|
156
|
+
const handleData = data.map(item => [item.dataId, item.columnValue, item.zh_CN, item.zh_TW, item.en_US, item.th_TH]);
|
|
158
157
|
|
|
159
158
|
genExcelAdvanced(
|
|
160
159
|
`${title}.xlsx`,
|
|
@@ -196,7 +195,7 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
196
195
|
const result = await doAction('IMPORT', {
|
|
197
196
|
tableName: tableName,
|
|
198
197
|
columnName: columnName,
|
|
199
|
-
|
|
198
|
+
i18nDataList: newList.filter(item => item.en_US || item.zh_CN || item.zh_TW || item.th_TH),
|
|
200
199
|
}, {
|
|
201
200
|
actionFn: importMultiLangList,
|
|
202
201
|
showMsg: false,
|
|
@@ -624,7 +623,6 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
624
623
|
|
|
625
624
|
{/* 多语言编辑 */}
|
|
626
625
|
<EditMultiLangForm
|
|
627
|
-
version={version}
|
|
628
626
|
modalFormVisible={editLangModalOpen}
|
|
629
627
|
setModalFormVisible={setEditLangModalOpen}
|
|
630
628
|
values={currentLangInfo!}
|
|
@@ -3,40 +3,25 @@ import { EditableProTable, ProColumns } from '@ant-design/pro-table';
|
|
|
3
3
|
import { useIntl } from '@umijs/max';
|
|
4
4
|
import { Form, Spin } from 'antd';
|
|
5
5
|
import React, { useEffect, useState } from 'react';
|
|
6
|
-
import { batchSave,
|
|
7
|
-
import { EditMultiLangFormProps
|
|
6
|
+
import { batchSave, queryLangInfoList } from '../services';
|
|
7
|
+
import { EditMultiLangFormProps } from '../types';
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
export const MULTI_LANG_CODES = ['en_US', 'th_TH', 'zh_CN', 'zh_TW'] as const;
|
|
10
|
+
|
|
11
|
+
type EditMultiLangListType = {
|
|
12
|
+
dataId: React.Key;
|
|
13
|
+
lang: (typeof MULTI_LANG_CODES)[number];
|
|
12
14
|
value?: string;
|
|
13
15
|
};
|
|
14
16
|
|
|
15
17
|
/**
|
|
16
18
|
* 设置多语言
|
|
17
19
|
*/
|
|
18
|
-
const defaultData:
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
langInfoId: -2,
|
|
26
|
-
lang: 'th_TH',
|
|
27
|
-
value: '',
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
langInfoId: -3,
|
|
31
|
-
lang: 'zh_CN',
|
|
32
|
-
value: '',
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
langInfoId: -4,
|
|
36
|
-
lang: 'zh_TW',
|
|
37
|
-
value: '',
|
|
38
|
-
},
|
|
39
|
-
];
|
|
20
|
+
const defaultData: EditMultiLangListType[] = MULTI_LANG_CODES.map((item, idx) => ({
|
|
21
|
+
dataId: -idx - 1,
|
|
22
|
+
lang: item,
|
|
23
|
+
value: '',
|
|
24
|
+
}));
|
|
40
25
|
|
|
41
26
|
/**
|
|
42
27
|
* 多语言处理组件
|
|
@@ -44,16 +29,15 @@ const defaultData: DataSourceType[] = [
|
|
|
44
29
|
* @returns
|
|
45
30
|
*/
|
|
46
31
|
const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
47
|
-
const { version = 'v1' } = props;
|
|
48
32
|
const { formatMessage } = useIntl();
|
|
49
33
|
const [form] = Form.useForm();
|
|
50
34
|
|
|
51
|
-
const [editableKeys, setEditableRowKeys] = useState<React.Key[]>(() => defaultData.map((item) => item.
|
|
35
|
+
const [editableKeys, setEditableRowKeys] = useState<React.Key[]>(() => defaultData.map((item) => item.dataId));
|
|
52
36
|
|
|
53
37
|
/**
|
|
54
38
|
* 数据源
|
|
55
39
|
*/
|
|
56
|
-
const [dataSource, setDataSource] = useState<
|
|
40
|
+
const [dataSource, setDataSource] = useState<EditMultiLangListType[]>(() => [...defaultData]);
|
|
57
41
|
|
|
58
42
|
/**
|
|
59
43
|
* 加载中标识
|
|
@@ -67,23 +51,18 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
67
51
|
form.resetFields();
|
|
68
52
|
// 清理数据状态,避免缓存问题
|
|
69
53
|
setDataSource(() => [...defaultData]);
|
|
70
|
-
setEditableRowKeys(() => defaultData.map((item) => item.
|
|
54
|
+
setEditableRowKeys(() => defaultData.map((item) => item.dataId));
|
|
71
55
|
setTableKey((prev) => prev + 1);
|
|
72
56
|
}
|
|
73
57
|
}, [props.modalFormVisible]);
|
|
74
58
|
|
|
75
59
|
/**
|
|
76
|
-
|
|
77
|
-
|
|
60
|
+
* 请求数据
|
|
61
|
+
*/
|
|
78
62
|
async function fetchData() {
|
|
79
63
|
if (!props.values) return;
|
|
80
64
|
|
|
81
|
-
|
|
82
|
-
const list: DataSourceType[] = defaultData.map((item) => ({
|
|
83
|
-
langInfoId: item.langInfoId,
|
|
84
|
-
lang: item.lang,
|
|
85
|
-
value: item.value,
|
|
86
|
-
}));
|
|
65
|
+
const { tableName, columnName, dataId } = props.values;
|
|
87
66
|
|
|
88
67
|
/**
|
|
89
68
|
* 加载中
|
|
@@ -94,61 +73,24 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
94
73
|
* 请求后台API设置的多语言
|
|
95
74
|
*/
|
|
96
75
|
const queryList = props.queryLangInfoList ?? queryLangInfoList;
|
|
97
|
-
const result = await queryList({
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
if (result.rows[i].lang === list[j].lang) {
|
|
103
|
-
list[j].langInfoId = result.rows[i].langInfoId;
|
|
104
|
-
list[j].value = result.rows[i].value;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
setDataSource(list);
|
|
110
|
-
setEditableRowKeys(list.map((item) => item.langInfoId));
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* 加载中
|
|
115
|
-
*/
|
|
116
|
-
setLoading(false);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* 请求数据
|
|
121
|
-
*/
|
|
122
|
-
async function fetchDataV2() {
|
|
123
|
-
if (!props.values) return;
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* 加载中
|
|
127
|
-
*/
|
|
128
|
-
setLoading(true);
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* 请求后台API设置的多语言
|
|
132
|
-
*/
|
|
133
|
-
const queryList = props.queryLangInfoList ?? queryI18nData;
|
|
134
|
-
const result = await queryList({
|
|
135
|
-
tableName: props.values.tableName,
|
|
136
|
-
columnName: props.values.columnName,
|
|
137
|
-
dataId: props.values.recordId,
|
|
138
|
-
});
|
|
76
|
+
const result = await queryList({
|
|
77
|
+
tableName,
|
|
78
|
+
columnName,
|
|
79
|
+
dataId,
|
|
80
|
+
});
|
|
139
81
|
const i18nJson = result?.data?.i18nJson;
|
|
140
82
|
|
|
141
83
|
if (result?.code === 200 && i18nJson) {
|
|
142
84
|
const newList = dataSource.map((item, idx) => {
|
|
143
85
|
return {
|
|
144
86
|
...item,
|
|
145
|
-
value: i18nJson[item.lang]?.
|
|
146
|
-
|
|
87
|
+
value: i18nJson[item.lang]?.[columnName],
|
|
88
|
+
dataId: new Date().getTime() + idx,
|
|
147
89
|
};
|
|
148
90
|
});
|
|
149
91
|
|
|
150
92
|
setDataSource([...newList]);
|
|
151
|
-
setEditableRowKeys(newList.map((item) => item.
|
|
93
|
+
setEditableRowKeys(newList.map((item) => item.dataId));
|
|
152
94
|
}
|
|
153
95
|
|
|
154
96
|
/**
|
|
@@ -163,15 +105,11 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
163
105
|
...props.values,
|
|
164
106
|
});
|
|
165
107
|
|
|
166
|
-
|
|
167
|
-
fetchData();
|
|
168
|
-
} else {
|
|
169
|
-
fetchDataV2();
|
|
170
|
-
}
|
|
108
|
+
fetchData();
|
|
171
109
|
}
|
|
172
110
|
}, [props.values]);
|
|
173
111
|
|
|
174
|
-
const columns: ProColumns<
|
|
112
|
+
const columns: ProColumns<EditMultiLangListType>[] = [
|
|
175
113
|
{
|
|
176
114
|
title: formatMessage({
|
|
177
115
|
id: 'cfmmUI.multilang.column.lang',
|
|
@@ -230,33 +168,15 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
230
168
|
*/
|
|
231
169
|
setLoading(true);
|
|
232
170
|
|
|
233
|
-
let data: LangInfoItem[] = [];
|
|
234
|
-
|
|
235
171
|
let onSave = props.batchSave ? props.batchSave : batchSave;
|
|
236
172
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
recordId: props.values.recordId,
|
|
245
|
-
langInfoId: Number(dataSource[i].langInfoId) > 0 ? Number(dataSource[i].langInfoId) : 0,
|
|
246
|
-
lang: dataSource[i].lang,
|
|
247
|
-
value: dataSource[i].value,
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
} else {
|
|
251
|
-
data = dataSource.map(item => ({
|
|
252
|
-
lang: item.lang,
|
|
253
|
-
value: item.value,
|
|
254
|
-
dataId: props.values!.recordId,
|
|
255
|
-
tableName: props.values!.tableName,
|
|
256
|
-
columnName: props.values!.columnName,
|
|
257
|
-
}))
|
|
258
|
-
onSave = batchSaveI18n;
|
|
259
|
-
}
|
|
173
|
+
const data = dataSource.map(item => ({
|
|
174
|
+
lang: item.lang,
|
|
175
|
+
value: item.value,
|
|
176
|
+
dataId: props.values!.dataId,
|
|
177
|
+
tableName: props.values!.tableName,
|
|
178
|
+
columnName: props.values!.columnName,
|
|
179
|
+
}))
|
|
260
180
|
|
|
261
181
|
const result = await onSave(data);
|
|
262
182
|
|
|
@@ -339,10 +259,10 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
339
259
|
|
|
340
260
|
<Spin spinning={loading}>
|
|
341
261
|
{/* 多语言编辑表格 */}
|
|
342
|
-
<EditableProTable<
|
|
262
|
+
<EditableProTable<EditMultiLangListType>
|
|
343
263
|
key={tableKey}
|
|
344
264
|
columns={columns}
|
|
345
|
-
rowKey="
|
|
265
|
+
rowKey="dataId"
|
|
346
266
|
value={dataSource}
|
|
347
267
|
onChange={setDataSource as any}
|
|
348
268
|
recordCreatorProps={false}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { request } from '@umijs/max';
|
|
2
2
|
import { BASE_API } from '../constants';
|
|
3
|
-
import { API, DicDataItem,
|
|
3
|
+
import { API, DicDataItem, ExprotMultiLangListItem, EditMultiLangDataType, LangInfoItem, EditMultiLangSubmitData } from '../types';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* 删除minio文件
|
|
@@ -49,42 +49,12 @@ export async function queryDictionary(params: ParamsType) {
|
|
|
49
49
|
* @returns 多语言信息列表
|
|
50
50
|
*/
|
|
51
51
|
export async function queryLangInfoExprotList(params: {tableName: string, columnName: string}) {
|
|
52
|
-
return request<API.Result_Base<ExprotMultiLangListItem[]>>(`${BASE_API}/
|
|
52
|
+
return request<API.Result_Base<ExprotMultiLangListItem[]>>(`${BASE_API}/i18n/export`, {
|
|
53
53
|
method: 'GET',
|
|
54
54
|
params,
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
/**
|
|
59
|
-
* 根据表名称、列名称、记录ID查询多语言信息
|
|
60
|
-
* @param params 查询参数
|
|
61
|
-
* @param params.tableName - 表名称
|
|
62
|
-
* @param params.columnName - 列名称
|
|
63
|
-
* @param params.recordId - 记录ID
|
|
64
|
-
* @returns 多语言信息列表
|
|
65
|
-
*/
|
|
66
|
-
export async function queryI18nExprotList(params: {tableName: string, columnName: string}) {
|
|
67
|
-
return request<API.Result_Base<(ExprotMultiLangListItem & { columnValue: string })[]>>(`${BASE_API}/i18n/export`, {
|
|
68
|
-
method: 'GET',
|
|
69
|
-
params,
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* 导入多语言数据
|
|
75
|
-
* @param 请求体
|
|
76
|
-
* @param.tableName 表名
|
|
77
|
-
* @param.columnName 列名
|
|
78
|
-
* @param.langInfos 数据
|
|
79
|
-
* @returns 多语言信息列表
|
|
80
|
-
*/
|
|
81
|
-
export async function importMultiLangList(params: {tableName: string, columnName: string, langInfos: ExprotI18nListItem[]}) {
|
|
82
|
-
return request<API.Result_Base<number>>(`${BASE_API}/system/LangInfo/importData`, {
|
|
83
|
-
method: 'POST',
|
|
84
|
-
data: params,
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
|
|
88
58
|
/**
|
|
89
59
|
* 导入多语言数据
|
|
90
60
|
* @param 请求体
|
|
@@ -93,7 +63,7 @@ export async function importMultiLangList(params: {tableName: string, columnName
|
|
|
93
63
|
* @param.langInfos 数据
|
|
94
64
|
* @returns 多语言信息列表
|
|
95
65
|
*/
|
|
96
|
-
export async function
|
|
66
|
+
export async function importMultiLangList(params: {tableName: string, columnName: string, i18nDataList: ExprotMultiLangListItem[]}) {
|
|
97
67
|
return request<API.Result_Base<number>>(`${BASE_API}/i18n/importData`, {
|
|
98
68
|
method: 'POST',
|
|
99
69
|
data: params,
|
|
@@ -105,32 +75,8 @@ export async function importI18nList(params: {tableName: string, columnName: str
|
|
|
105
75
|
* @param params 参数
|
|
106
76
|
* @returns
|
|
107
77
|
*/
|
|
108
|
-
export async function queryLangInfoList(params?:
|
|
109
|
-
return request(`${BASE_API}/
|
|
110
|
-
method: "GET",
|
|
111
|
-
params,
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* 批量保存多语言信息
|
|
117
|
-
* @param data 数据
|
|
118
|
-
* @returns
|
|
119
|
-
*/
|
|
120
|
-
export async function batchSave(data: any) {
|
|
121
|
-
return request(`${BASE_API}/system/LangInfo/batchSave`, {
|
|
122
|
-
method: "POST",
|
|
123
|
-
data,
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* 查询多语言信息列表
|
|
129
|
-
* @param params 参数
|
|
130
|
-
* @returns
|
|
131
|
-
*/
|
|
132
|
-
export async function queryI18nData(params?: any) {
|
|
133
|
-
return request(`${BASE_API}/i18n/getI18nData`, {
|
|
78
|
+
export async function queryLangInfoList(params?: LangInfoItem) {
|
|
79
|
+
return request<API.Result_Base<EditMultiLangDataType>>(`${BASE_API}/i18n/getI18nData`, {
|
|
134
80
|
method: "GET",
|
|
135
81
|
params,
|
|
136
82
|
});
|
|
@@ -141,7 +87,7 @@ export async function queryI18nData(params?: any) {
|
|
|
141
87
|
* @param data 数据
|
|
142
88
|
* @returns
|
|
143
89
|
*/
|
|
144
|
-
export async function
|
|
90
|
+
export async function batchSave(data: EditMultiLangSubmitData[]) {
|
|
145
91
|
return request(`${BASE_API}/i18n/batchSave`, {
|
|
146
92
|
method: "POST",
|
|
147
93
|
data,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const CrudTableTypes = "\nexport interface CrudTableConfig<T = any, U = {}, C = {}> {\n
|
|
1
|
+
export declare const CrudTableTypes = "\nexport interface CrudTableConfig<T = any, U = {}, C = {}> {\n // \u57FA\u7840\u914D\u7F6E\n baseLocalCode?: string;\n baseLocalName?: string;\n rowKey: keyof T;\n\n /** \u591A\u8BED\u8A00\u7F16\u8F91\u914D\u7F6E */\n multiLang?: {\n /** \u591A\u8BED\u8A00\u8868\u6570\u636E */\n multiLangList?: ExprotMultiLangListItem[];\n /** \u591A\u8BED\u8A00\u5B57\u6BB5\u914D\u7F6E */\n fields: {\n /** \u5B57\u6BB5\u540D */\n fieldName: keyof T;\n /** \u8868\u540D */\n tableName: string;\n /** \u5217\u540D */\n columnName: string;\n /** \u70B9\u51FB\u56DE\u8C03\uFF0C\u7528\u4E8E\u8BBE\u7F6ElangInfoItem */\n onClick?: (record: T) => LangInfoItem;\n }[];\n /** \u81EA\u5B9A\u4E49\u5BFC\u51FA\u591A\u8BED\u8A00\u51FD\u6570 */\n exportMultiLangData?: () => Promise<boolean | void>;\n /** \u81EA\u5B9A\u4E49\u67E5\u8BE2\u5BFC\u51FA\u591A\u8BED\u8A00\u51FD\u6570 */\n queryExprotMultiLangData?: (tableName: string, columnName: string) => Promise<ExprotMultiLangListItem[]>;\n /** \u81EA\u5B9A\u4E49\u5BFC\u5165\u591A\u8BED\u8A00\u51FD\u6570 */\n importMultiLangData?: (list: ExprotMultiLangListItem[], tableName: string, columnName: string) => Promise<{ success: boolean; failMsg?: string; data?: any } | void> | void;\n };\n \n /** \u6309\u94AE\u6743\u9650\u7F16\u7801\uFF0C\u9ED8\u8BA4\u4F1A\u6839\u636EbaseLocalCode\u751F\u6210 */\n authCodes?: {\n view?: string | boolean | ((record: T) => boolean | undefined);\n add?: string | boolean;\n edit?: string | boolean | ((record: T) => boolean | undefined);\n /** remove\u6743\u9650\u662F\u51FD\u6570\u65F6\uFF0C\u5982\u679C\u9700\u8981\u6279\u91CF\u5220\u9664\u8BF7\u8BBE\u7F6EbatchRemoveAuth\u4E3Atrue, \u5426\u5219\u4E0D\u4F1A\u663E\u793A\u6279\u91CF\u5220\u9664\u6309\u94AE */\n remove?: string | boolean | ((record: T) => boolean | undefined);\n /** \u6279\u91CF\u5220\u9664\u6743\u9650 */\n batchRemoveAuth?: string | boolean;\n record?: string | boolean | ((record: T) => boolean | undefined);\n };\n\n /** API\u65B9\u6CD5 */\n apis: {\n /** \u67E5\u8BE2\u65B9\u6CD5 */\n query: (params: any) => Promise<any>;\n /** \u64CD\u4F5C\u65B9\u6CD5 */\n handle: (method: API.MethodTypes, data: any) => Promise<any>;\n /** \u6839\u636Eid\u67E5\u8BE2\u8BE6\u60C5\u65B9\u6CD5\uFF0C\u6CA1\u4F20\u5219\u4F7F\u7528\u884C\u6570\u636E\u8FDB\u884C\u7F16\u8F91 */\n queryById?: (id: any) => Promise<any>;\n };\n\n /** API\u62E6\u622A\u5668 */\n interceptors?: {\n /** \u67E5\u8BE2\u62E6\u622A\u5668 */\n query?: {\n /** \u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u67E5\u8BE2\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (params: any) => any;\n /** \u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u67E5\u8BE2\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (result: any) => any;\n };\n /** \u64CD\u4F5C\u62E6\u622A\u5668 */\n handle?: {\n /** \u64CD\u4F5C\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u64CD\u4F5C\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (method: API.MethodTypes, data: any) => { method?: API.MethodTypes; data: any };\n /** \u64CD\u4F5C\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u64CD\u4F5C\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (method: API.MethodTypes, result: any) => any;\n };\n /** \u8BE6\u60C5\u67E5\u8BE2\u62E6\u622A\u5668 */\n queryById?: {\n /** \u8BE6\u60C5\u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u8BE6\u60C5\u67E5\u8BE2\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (id: any) => any;\n /** \u8BE6\u60C5\u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u8BE6\u60C5\u67E5\u8BE2\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (result: any) => any;\n };\n };\n\n /** \u8868\u683C\u5217\u914D\u7F6E */\n columns: ProColumns<T>[];\n /** \u8868\u683C\u5176\u4ED6\u914D\u7F6E */\n tableProps?: Partial<ProTableProps<T, any>>;\n\n /** \u64CD\u4F5C\u5217\u914D\u7F6E\uFF08\u8868\u683C\u64CD\u4F5C\u5217\u914D\u7F6E\u3001\u64CD\u4F5C\u5217\u4E0B\u62C9\u6309\u94AE\u914D\u7F6E\uFF09 */\n actionColumnConfig?: {\n /** \u8868\u683C\u64CD\u4F5C\u5217\u914D\u7F6E */\n columnConfig?: ProColumns<T>;\n /** \u4E0B\u62C9\u5217\u8868\u5C5E\u6027 */\n getDropdownButtonProps?: (record: T) => Partial<DropdownButtonProps>;\n };\n\n /** \u65B0\u589E\u8868\u5355\u914D\u7F6E */\n createConfig?: {\n /** \u81EA\u5B9A\u4E49\u521B\u5EFA\u8868\u5355\u7EC4\u4EF6 */\n Component?: React.ComponentType<\n {\n open?: boolean;\n onOpenChange?: (visible: boolean) => void;\n onSubmit?: (values: any) => Promise<boolean | void>;\n loading?: boolean;\n } & C\n >;\n /** \u4F20\u9012\u7ED9CreateFormComponent\u7684\u989D\u5916props */\n props?: C;\n };\n\n /** \u7F16\u8F91\u8868\u5355\u914D\u7F6E */\n updateConfig?: {\n /** \u81EA\u5B9A\u4E49\u7F16\u8F91\u8868\u5355\u7EC4\u4EF6 */\n Component?: React.ComponentType<\n {\n updateDrawerRef: React.MutableRefObject<RefDrawerFormRefType | undefined>;\n values: Partial<T> | null;\n onSubmit: (values: any) => Promise<boolean | void>;\n } & U\n >;\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u989D\u5916props */\n props?: U;\n };\n\n /** \u81EA\u5B9A\u4E49\u65B0\u589E\u51FD\u6570 */\n onAdd?: () => void;\n\n /** \u67E5\u8BE2\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterSearch?: (result: API.Result_TableListType<T[]>) => Promise<any> | void;\n /** \u7F16\u8F91\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DET\uFF0C\u5219\u4E0D\u8FDB\u884C\u7F16\u8F91 */\n onBeforeEdit?: (record: T) => Promise<T | null>;\n /** \u5220\u9664\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DEtrue\uFF0C\u5219\u4E0D\u8FDB\u884C\u64CD\u4F5C */\n onBeforeDelete?: (keys: React.Key[]) => Promise<boolean> | boolean | void;\n /** \u5220\u9664\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterDelete?: (keys: React.Key[], result: boolean) => Promise<boolean> | boolean | void;\n /** \u64CD\u4F5C\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DEtrue\uFF0C\u5219\u4E0D\u8FDB\u884C\u64CD\u4F5C */\n onBeforeAction?: (method: API.MethodTypes, fields: any) => Promise<boolean> | boolean | void;\n /** \u64CD\u4F5C\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterAction?: (method: API.MethodTypes, success: boolean) => void;\n}\n\nexport interface CrudTableRefType<T = any> {\n actionRef: React.MutableRefObject<ActionType | undefined>;\n updateDrawerRef: React.MutableRefObject<RefDrawerFormRefType | undefined>;\n tableList: T[];\n setTableList: (row: T[]) => void;\n viewRow: T | undefined;\n setViewRow: (row: T | undefined) => void;\n actionLogRow: T | undefined;\n setActionLogRow: (row: T | undefined) => void;\n editRow: Partial<T> | null;\n setEditRow: (row: Partial<T> | null) => void;\n selectedRows: T[];\n setSelectedRows: (rows: T[]) => void;\n selectedRowKeys: React.Key[];\n setSelectedRowKeys: (keys: React.Key[]) => void;\n createModalOpen: boolean;\n setCreateModalOpen: (open: boolean) => void;\n editLangModalOpen: boolean;\n setEditLangModalOpen: (open: boolean) => void;\n currentLangInfo?: LangInfoItem;\n setCurrentLangInfo: (open: LangInfoItem) => void;\n onDelete: (keys: React.Key[]) => void;\n updateModalOpen: () => void;\n updateModalClose: () => void;\n}\n";
|
|
@@ -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
|
|
7
|
+
var CrudTableTypes = exports.CrudTableTypes = "\nexport interface CrudTableConfig<T = any, U = {}, C = {}> {\n // \u57FA\u7840\u914D\u7F6E\n baseLocalCode?: string;\n baseLocalName?: string;\n rowKey: keyof T;\n\n /** \u591A\u8BED\u8A00\u7F16\u8F91\u914D\u7F6E */\n multiLang?: {\n /** \u591A\u8BED\u8A00\u8868\u6570\u636E */\n multiLangList?: ExprotMultiLangListItem[];\n /** \u591A\u8BED\u8A00\u5B57\u6BB5\u914D\u7F6E */\n fields: {\n /** \u5B57\u6BB5\u540D */\n fieldName: keyof T;\n /** \u8868\u540D */\n tableName: string;\n /** \u5217\u540D */\n columnName: string;\n /** \u70B9\u51FB\u56DE\u8C03\uFF0C\u7528\u4E8E\u8BBE\u7F6ElangInfoItem */\n onClick?: (record: T) => LangInfoItem;\n }[];\n /** \u81EA\u5B9A\u4E49\u5BFC\u51FA\u591A\u8BED\u8A00\u51FD\u6570 */\n exportMultiLangData?: () => Promise<boolean | void>;\n /** \u81EA\u5B9A\u4E49\u67E5\u8BE2\u5BFC\u51FA\u591A\u8BED\u8A00\u51FD\u6570 */\n queryExprotMultiLangData?: (tableName: string, columnName: string) => Promise<ExprotMultiLangListItem[]>;\n /** \u81EA\u5B9A\u4E49\u5BFC\u5165\u591A\u8BED\u8A00\u51FD\u6570 */\n importMultiLangData?: (list: ExprotMultiLangListItem[], tableName: string, columnName: string) => Promise<{ success: boolean; failMsg?: string; data?: any } | void> | void;\n };\n \n /** \u6309\u94AE\u6743\u9650\u7F16\u7801\uFF0C\u9ED8\u8BA4\u4F1A\u6839\u636EbaseLocalCode\u751F\u6210 */\n authCodes?: {\n view?: string | boolean | ((record: T) => boolean | undefined);\n add?: string | boolean;\n edit?: string | boolean | ((record: T) => boolean | undefined);\n /** remove\u6743\u9650\u662F\u51FD\u6570\u65F6\uFF0C\u5982\u679C\u9700\u8981\u6279\u91CF\u5220\u9664\u8BF7\u8BBE\u7F6EbatchRemoveAuth\u4E3Atrue, \u5426\u5219\u4E0D\u4F1A\u663E\u793A\u6279\u91CF\u5220\u9664\u6309\u94AE */\n remove?: string | boolean | ((record: T) => boolean | undefined);\n /** \u6279\u91CF\u5220\u9664\u6743\u9650 */\n batchRemoveAuth?: string | boolean;\n record?: string | boolean | ((record: T) => boolean | undefined);\n };\n\n /** API\u65B9\u6CD5 */\n apis: {\n /** \u67E5\u8BE2\u65B9\u6CD5 */\n query: (params: any) => Promise<any>;\n /** \u64CD\u4F5C\u65B9\u6CD5 */\n handle: (method: API.MethodTypes, data: any) => Promise<any>;\n /** \u6839\u636Eid\u67E5\u8BE2\u8BE6\u60C5\u65B9\u6CD5\uFF0C\u6CA1\u4F20\u5219\u4F7F\u7528\u884C\u6570\u636E\u8FDB\u884C\u7F16\u8F91 */\n queryById?: (id: any) => Promise<any>;\n };\n\n /** API\u62E6\u622A\u5668 */\n interceptors?: {\n /** \u67E5\u8BE2\u62E6\u622A\u5668 */\n query?: {\n /** \u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u67E5\u8BE2\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (params: any) => any;\n /** \u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u67E5\u8BE2\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (result: any) => any;\n };\n /** \u64CD\u4F5C\u62E6\u622A\u5668 */\n handle?: {\n /** \u64CD\u4F5C\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u64CD\u4F5C\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (method: API.MethodTypes, data: any) => { method?: API.MethodTypes; data: any };\n /** \u64CD\u4F5C\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u64CD\u4F5C\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (method: API.MethodTypes, result: any) => any;\n };\n /** \u8BE6\u60C5\u67E5\u8BE2\u62E6\u622A\u5668 */\n queryById?: {\n /** \u8BE6\u60C5\u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u8BE6\u60C5\u67E5\u8BE2\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (id: any) => any;\n /** \u8BE6\u60C5\u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u8BE6\u60C5\u67E5\u8BE2\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (result: any) => any;\n };\n };\n\n /** \u8868\u683C\u5217\u914D\u7F6E */\n columns: ProColumns<T>[];\n /** \u8868\u683C\u5176\u4ED6\u914D\u7F6E */\n tableProps?: Partial<ProTableProps<T, any>>;\n\n /** \u64CD\u4F5C\u5217\u914D\u7F6E\uFF08\u8868\u683C\u64CD\u4F5C\u5217\u914D\u7F6E\u3001\u64CD\u4F5C\u5217\u4E0B\u62C9\u6309\u94AE\u914D\u7F6E\uFF09 */\n actionColumnConfig?: {\n /** \u8868\u683C\u64CD\u4F5C\u5217\u914D\u7F6E */\n columnConfig?: ProColumns<T>;\n /** \u4E0B\u62C9\u5217\u8868\u5C5E\u6027 */\n getDropdownButtonProps?: (record: T) => Partial<DropdownButtonProps>;\n };\n\n /** \u65B0\u589E\u8868\u5355\u914D\u7F6E */\n createConfig?: {\n /** \u81EA\u5B9A\u4E49\u521B\u5EFA\u8868\u5355\u7EC4\u4EF6 */\n Component?: React.ComponentType<\n {\n open?: boolean;\n onOpenChange?: (visible: boolean) => void;\n onSubmit?: (values: any) => Promise<boolean | void>;\n loading?: boolean;\n } & C\n >;\n /** \u4F20\u9012\u7ED9CreateFormComponent\u7684\u989D\u5916props */\n props?: C;\n };\n\n /** \u7F16\u8F91\u8868\u5355\u914D\u7F6E */\n updateConfig?: {\n /** \u81EA\u5B9A\u4E49\u7F16\u8F91\u8868\u5355\u7EC4\u4EF6 */\n Component?: React.ComponentType<\n {\n updateDrawerRef: React.MutableRefObject<RefDrawerFormRefType | undefined>;\n values: Partial<T> | null;\n onSubmit: (values: any) => Promise<boolean | void>;\n } & U\n >;\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u989D\u5916props */\n props?: U;\n };\n\n /** \u81EA\u5B9A\u4E49\u65B0\u589E\u51FD\u6570 */\n onAdd?: () => void;\n\n /** \u67E5\u8BE2\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterSearch?: (result: API.Result_TableListType<T[]>) => Promise<any> | void;\n /** \u7F16\u8F91\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DET\uFF0C\u5219\u4E0D\u8FDB\u884C\u7F16\u8F91 */\n onBeforeEdit?: (record: T) => Promise<T | null>;\n /** \u5220\u9664\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DEtrue\uFF0C\u5219\u4E0D\u8FDB\u884C\u64CD\u4F5C */\n onBeforeDelete?: (keys: React.Key[]) => Promise<boolean> | boolean | void;\n /** \u5220\u9664\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterDelete?: (keys: React.Key[], result: boolean) => Promise<boolean> | boolean | void;\n /** \u64CD\u4F5C\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DEtrue\uFF0C\u5219\u4E0D\u8FDB\u884C\u64CD\u4F5C */\n onBeforeAction?: (method: API.MethodTypes, fields: any) => Promise<boolean> | boolean | void;\n /** \u64CD\u4F5C\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterAction?: (method: API.MethodTypes, success: boolean) => void;\n}\n\nexport interface CrudTableRefType<T = any> {\n actionRef: React.MutableRefObject<ActionType | undefined>;\n updateDrawerRef: React.MutableRefObject<RefDrawerFormRefType | undefined>;\n tableList: T[];\n setTableList: (row: T[]) => void;\n viewRow: T | undefined;\n setViewRow: (row: T | undefined) => void;\n actionLogRow: T | undefined;\n setActionLogRow: (row: T | undefined) => void;\n editRow: Partial<T> | null;\n setEditRow: (row: Partial<T> | null) => void;\n selectedRows: T[];\n setSelectedRows: (rows: T[]) => void;\n selectedRowKeys: React.Key[];\n setSelectedRowKeys: (keys: React.Key[]) => void;\n createModalOpen: boolean;\n setCreateModalOpen: (open: boolean) => void;\n editLangModalOpen: boolean;\n setEditLangModalOpen: (open: boolean) => void;\n currentLangInfo?: LangInfoItem;\n setCurrentLangInfo: (open: LangInfoItem) => void;\n onDelete: (keys: React.Key[]) => void;\n updateModalOpen: () => void;\n updateModalClose: () => void;\n}\n";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const EditMultiLangFormTypes = "\n /** \u5BFC\u51FA\u591A\u8BED\u8A00\u6570\u636E\u5217\u8868\u9879 */\n export interface ExprotMultiLangListItem {\n /** \u8BB0\u5F55ID */\n
|
|
1
|
+
export declare const EditMultiLangFormTypes = "\n /** \u5BFC\u51FA\u591A\u8BED\u8A00\u6570\u636E\u5217\u8868\u9879 */\n export interface ExprotMultiLangListItem {\n /** \u8BB0\u5F55ID */\n dataId: string;\n /** \u539F\u59CB\u503C */\n columnValue: string;\n zh_CN?: string;\n zh_TW?: string;\n en_US?: string;\n th_TH?: string;\n }\n\n type LangType = 'en_US' | 'th_TH' | 'zh_CN' | 'zh_TW';\n\n /** \u67E5\u8BE2\u5355\u4E2A\u591A\u8BED\u8A00\u6570\u636E */\n export type EditMultiLangDataType = {\n dataId: React.Key;\n i18nJson?: Record<LangType, {\n string: string;\n }>;\n };\n\n /** \u591A\u8BED\u8A00\u67E5\u8BE2\u53C2\u6570 */\n export interface LangInfoItem {\n /**\n * \u8868\u540D\u79F0\n */\n tableName: string;\n /**\n * \u5217\u540D\u79F0\n */\n columnName: string;\n /**\n * \u8BB0\u5F55ID\n */\n dataId: string;\n }\n\n /** \u591A\u8BED\u8A00\u63D0\u4EA4\u6570\u636E */\n export interface EditMultiLangSubmitData extends LangInfoItem {\n lang: LangType;\n value?: string;\n }\n\n /** \u591A\u8BED\u8A00\u4FE1\u606F\u7EC4\u4EF6\u7C7B\u578B */\n export interface EditMultiLangFormProps {\n /**\n * \u662F\u5426\u663E\u793A\u5F39\u7A97\n */\n modalFormVisible: boolean;\n /**\n * \u8BBE\u7F6E\u5F39\u7A97\u662F\u5426\u663E\u793A\n */\n setModalFormVisible: (visible: boolean) => void;\n /**\n * \u63D0\u4EA4\u540E\u56DE\u8C03\n */\n onAfterSubmit?: () => void;\n /**\n * \u591A\u8BED\u8A00\u4FE1\u606F\n */\n values?: LangInfoItem;\n /**\n * \u67E5\u8BE2\u5217\u8868\u63A5\u53E3\n */\n queryLangInfoList?: (params?: LangInfoItem) => Promise<API.Result_Base<EditMultiLangDataType>>;\n /**\n * \u4FDD\u5B58\u63A5\u53E3\n */\n batchSave?: (data?: LangInfoItem[]) => Promise<any>;\n }\n";
|
|
@@ -4,4 +4,4 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.EditMultiLangFormTypes = void 0;
|
|
7
|
-
var EditMultiLangFormTypes = exports.EditMultiLangFormTypes = "\n /** \u5BFC\u51FA\u591A\u8BED\u8A00\u6570\u636E\u5217\u8868\u9879 */\n export interface ExprotMultiLangListItem {\n /** \u8BB0\u5F55ID */\n
|
|
7
|
+
var EditMultiLangFormTypes = exports.EditMultiLangFormTypes = "\n /** \u5BFC\u51FA\u591A\u8BED\u8A00\u6570\u636E\u5217\u8868\u9879 */\n export interface ExprotMultiLangListItem {\n /** \u8BB0\u5F55ID */\n dataId: string;\n /** \u539F\u59CB\u503C */\n columnValue: string;\n zh_CN?: string;\n zh_TW?: string;\n en_US?: string;\n th_TH?: string;\n }\n\n type LangType = 'en_US' | 'th_TH' | 'zh_CN' | 'zh_TW';\n\n /** \u67E5\u8BE2\u5355\u4E2A\u591A\u8BED\u8A00\u6570\u636E */\n export type EditMultiLangDataType = {\n dataId: React.Key;\n i18nJson?: Record<LangType, {\n string: string;\n }>;\n };\n\n /** \u591A\u8BED\u8A00\u67E5\u8BE2\u53C2\u6570 */\n export interface LangInfoItem {\n /**\n * \u8868\u540D\u79F0\n */\n tableName: string;\n /**\n * \u5217\u540D\u79F0\n */\n columnName: string;\n /**\n * \u8BB0\u5F55ID\n */\n dataId: string;\n }\n\n /** \u591A\u8BED\u8A00\u63D0\u4EA4\u6570\u636E */\n export interface EditMultiLangSubmitData extends LangInfoItem {\n lang: LangType;\n value?: string;\n }\n\n /** \u591A\u8BED\u8A00\u4FE1\u606F\u7EC4\u4EF6\u7C7B\u578B */\n export interface EditMultiLangFormProps {\n /**\n * \u662F\u5426\u663E\u793A\u5F39\u7A97\n */\n modalFormVisible: boolean;\n /**\n * \u8BBE\u7F6E\u5F39\u7A97\u662F\u5426\u663E\u793A\n */\n setModalFormVisible: (visible: boolean) => void;\n /**\n * \u63D0\u4EA4\u540E\u56DE\u8C03\n */\n onAfterSubmit?: () => void;\n /**\n * \u591A\u8BED\u8A00\u4FE1\u606F\n */\n values?: LangInfoItem;\n /**\n * \u67E5\u8BE2\u5217\u8868\u63A5\u53E3\n */\n queryLangInfoList?: (params?: LangInfoItem) => Promise<API.Result_Base<EditMultiLangDataType>>;\n /**\n * \u4FDD\u5B58\u63A5\u53E3\n */\n batchSave?: (data?: LangInfoItem[]) => Promise<any>;\n }\n";
|
|
@@ -15,7 +15,7 @@ import EditMultiLangForm from './EditMultiLangForm';
|
|
|
15
15
|
import MyFooterToolbar from './MyFooterToolbar';
|
|
16
16
|
import ViewTableItemDrawer from './ViewTableItemDrawer';
|
|
17
17
|
import { genExcelAdvanced } from '../utils/excelHelper';
|
|
18
|
-
import { importMultiLangList,
|
|
18
|
+
import { importMultiLangList, queryLangInfoExprotList } from '../services';
|
|
19
19
|
import { handleImportList } from '../utils/importHelper';
|
|
20
20
|
|
|
21
21
|
const { confirm } = Modal;
|
|
@@ -46,7 +46,6 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
46
46
|
ref: ForwardedRef<CrudTableRefType<T>>,
|
|
47
47
|
) {
|
|
48
48
|
const {
|
|
49
|
-
version = 'v2',
|
|
50
49
|
baseLocalCode,
|
|
51
50
|
baseLocalName,
|
|
52
51
|
rowKey,
|
|
@@ -107,7 +106,7 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
107
106
|
const langInfo: LangInfoItem = {
|
|
108
107
|
tableName: fieldConfig.tableName,
|
|
109
108
|
columnName: fieldConfig.columnName,
|
|
110
|
-
|
|
109
|
+
dataId: record[rowKey] as string,
|
|
111
110
|
};
|
|
112
111
|
setCurrentLangInfo(langInfo);
|
|
113
112
|
}
|
|
@@ -126,7 +125,7 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
126
125
|
}
|
|
127
126
|
|
|
128
127
|
const result = await doAction('GET', { tableName, columnName }, {
|
|
129
|
-
actionFn:
|
|
128
|
+
actionFn: queryLangInfoExprotList,
|
|
130
129
|
});
|
|
131
130
|
|
|
132
131
|
if (result.success && result.data) {
|
|
@@ -147,14 +146,14 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
147
146
|
defaultMessage: '数据列表',
|
|
148
147
|
});
|
|
149
148
|
|
|
150
|
-
const codeList = ['
|
|
149
|
+
const codeList = ['dataId', 'columnValue', 'zh_CN', 'zh_TW', 'en_US', 'th_TH'];
|
|
151
150
|
|
|
152
151
|
const { tableName, columnName } = multiLang.fields[0];
|
|
153
152
|
const data = await queryMultiLangData(tableName, columnName);
|
|
154
153
|
|
|
155
154
|
if(!data.length) return;
|
|
156
155
|
|
|
157
|
-
const handleData = data.map(item => [item.
|
|
156
|
+
const handleData = data.map(item => [item.dataId, item.columnValue, item.zh_CN, item.zh_TW, item.en_US, item.th_TH]);
|
|
158
157
|
|
|
159
158
|
genExcelAdvanced(
|
|
160
159
|
`${title}.xlsx`,
|
|
@@ -196,7 +195,7 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
196
195
|
const result = await doAction('IMPORT', {
|
|
197
196
|
tableName: tableName,
|
|
198
197
|
columnName: columnName,
|
|
199
|
-
|
|
198
|
+
i18nDataList: newList.filter(item => item.en_US || item.zh_CN || item.zh_TW || item.th_TH),
|
|
200
199
|
}, {
|
|
201
200
|
actionFn: importMultiLangList,
|
|
202
201
|
showMsg: false,
|
|
@@ -624,7 +623,6 @@ function CrudTable<T extends Record<string, any>, U = {}, C = {}>(
|
|
|
624
623
|
|
|
625
624
|
{/* 多语言编辑 */}
|
|
626
625
|
<EditMultiLangForm
|
|
627
|
-
version={version}
|
|
628
626
|
modalFormVisible={editLangModalOpen}
|
|
629
627
|
setModalFormVisible={setEditLangModalOpen}
|
|
630
628
|
values={currentLangInfo!}
|
|
@@ -3,40 +3,25 @@ import { EditableProTable, ProColumns } from '@ant-design/pro-table';
|
|
|
3
3
|
import { useIntl } from '@umijs/max';
|
|
4
4
|
import { Form, Spin } from 'antd';
|
|
5
5
|
import React, { useEffect, useState } from 'react';
|
|
6
|
-
import { batchSave,
|
|
7
|
-
import { EditMultiLangFormProps
|
|
6
|
+
import { batchSave, queryLangInfoList } from '../services';
|
|
7
|
+
import { EditMultiLangFormProps } from '../types';
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
export const MULTI_LANG_CODES = ['en_US', 'th_TH', 'zh_CN', 'zh_TW'] as const;
|
|
10
|
+
|
|
11
|
+
type EditMultiLangListType = {
|
|
12
|
+
dataId: React.Key;
|
|
13
|
+
lang: (typeof MULTI_LANG_CODES)[number];
|
|
12
14
|
value?: string;
|
|
13
15
|
};
|
|
14
16
|
|
|
15
17
|
/**
|
|
16
18
|
* 设置多语言
|
|
17
19
|
*/
|
|
18
|
-
const defaultData:
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
},
|
|
24
|
-
{
|
|
25
|
-
langInfoId: -2,
|
|
26
|
-
lang: 'th_TH',
|
|
27
|
-
value: '',
|
|
28
|
-
},
|
|
29
|
-
{
|
|
30
|
-
langInfoId: -3,
|
|
31
|
-
lang: 'zh_CN',
|
|
32
|
-
value: '',
|
|
33
|
-
},
|
|
34
|
-
{
|
|
35
|
-
langInfoId: -4,
|
|
36
|
-
lang: 'zh_TW',
|
|
37
|
-
value: '',
|
|
38
|
-
},
|
|
39
|
-
];
|
|
20
|
+
const defaultData: EditMultiLangListType[] = MULTI_LANG_CODES.map((item, idx) => ({
|
|
21
|
+
dataId: -idx - 1,
|
|
22
|
+
lang: item,
|
|
23
|
+
value: '',
|
|
24
|
+
}));
|
|
40
25
|
|
|
41
26
|
/**
|
|
42
27
|
* 多语言处理组件
|
|
@@ -44,16 +29,15 @@ const defaultData: DataSourceType[] = [
|
|
|
44
29
|
* @returns
|
|
45
30
|
*/
|
|
46
31
|
const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
47
|
-
const { version = 'v1' } = props;
|
|
48
32
|
const { formatMessage } = useIntl();
|
|
49
33
|
const [form] = Form.useForm();
|
|
50
34
|
|
|
51
|
-
const [editableKeys, setEditableRowKeys] = useState<React.Key[]>(() => defaultData.map((item) => item.
|
|
35
|
+
const [editableKeys, setEditableRowKeys] = useState<React.Key[]>(() => defaultData.map((item) => item.dataId));
|
|
52
36
|
|
|
53
37
|
/**
|
|
54
38
|
* 数据源
|
|
55
39
|
*/
|
|
56
|
-
const [dataSource, setDataSource] = useState<
|
|
40
|
+
const [dataSource, setDataSource] = useState<EditMultiLangListType[]>(() => [...defaultData]);
|
|
57
41
|
|
|
58
42
|
/**
|
|
59
43
|
* 加载中标识
|
|
@@ -67,23 +51,18 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
67
51
|
form.resetFields();
|
|
68
52
|
// 清理数据状态,避免缓存问题
|
|
69
53
|
setDataSource(() => [...defaultData]);
|
|
70
|
-
setEditableRowKeys(() => defaultData.map((item) => item.
|
|
54
|
+
setEditableRowKeys(() => defaultData.map((item) => item.dataId));
|
|
71
55
|
setTableKey((prev) => prev + 1);
|
|
72
56
|
}
|
|
73
57
|
}, [props.modalFormVisible]);
|
|
74
58
|
|
|
75
59
|
/**
|
|
76
|
-
|
|
77
|
-
|
|
60
|
+
* 请求数据
|
|
61
|
+
*/
|
|
78
62
|
async function fetchData() {
|
|
79
63
|
if (!props.values) return;
|
|
80
64
|
|
|
81
|
-
|
|
82
|
-
const list: DataSourceType[] = defaultData.map((item) => ({
|
|
83
|
-
langInfoId: item.langInfoId,
|
|
84
|
-
lang: item.lang,
|
|
85
|
-
value: item.value,
|
|
86
|
-
}));
|
|
65
|
+
const { tableName, columnName, dataId } = props.values;
|
|
87
66
|
|
|
88
67
|
/**
|
|
89
68
|
* 加载中
|
|
@@ -94,61 +73,24 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
94
73
|
* 请求后台API设置的多语言
|
|
95
74
|
*/
|
|
96
75
|
const queryList = props.queryLangInfoList ?? queryLangInfoList;
|
|
97
|
-
const result = await queryList({
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
if (result.rows[i].lang === list[j].lang) {
|
|
103
|
-
list[j].langInfoId = result.rows[i].langInfoId;
|
|
104
|
-
list[j].value = result.rows[i].value;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
setDataSource(list);
|
|
110
|
-
setEditableRowKeys(list.map((item) => item.langInfoId));
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
/**
|
|
114
|
-
* 加载中
|
|
115
|
-
*/
|
|
116
|
-
setLoading(false);
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* 请求数据
|
|
121
|
-
*/
|
|
122
|
-
async function fetchDataV2() {
|
|
123
|
-
if (!props.values) return;
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* 加载中
|
|
127
|
-
*/
|
|
128
|
-
setLoading(true);
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* 请求后台API设置的多语言
|
|
132
|
-
*/
|
|
133
|
-
const queryList = props.queryLangInfoList ?? queryI18nData;
|
|
134
|
-
const result = await queryList({
|
|
135
|
-
tableName: props.values.tableName,
|
|
136
|
-
columnName: props.values.columnName,
|
|
137
|
-
dataId: props.values.recordId,
|
|
138
|
-
});
|
|
76
|
+
const result = await queryList({
|
|
77
|
+
tableName,
|
|
78
|
+
columnName,
|
|
79
|
+
dataId,
|
|
80
|
+
});
|
|
139
81
|
const i18nJson = result?.data?.i18nJson;
|
|
140
82
|
|
|
141
83
|
if (result?.code === 200 && i18nJson) {
|
|
142
84
|
const newList = dataSource.map((item, idx) => {
|
|
143
85
|
return {
|
|
144
86
|
...item,
|
|
145
|
-
value: i18nJson[item.lang]?.
|
|
146
|
-
|
|
87
|
+
value: i18nJson[item.lang]?.[columnName],
|
|
88
|
+
dataId: new Date().getTime() + idx,
|
|
147
89
|
};
|
|
148
90
|
});
|
|
149
91
|
|
|
150
92
|
setDataSource([...newList]);
|
|
151
|
-
setEditableRowKeys(newList.map((item) => item.
|
|
93
|
+
setEditableRowKeys(newList.map((item) => item.dataId));
|
|
152
94
|
}
|
|
153
95
|
|
|
154
96
|
/**
|
|
@@ -163,15 +105,11 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
163
105
|
...props.values,
|
|
164
106
|
});
|
|
165
107
|
|
|
166
|
-
|
|
167
|
-
fetchData();
|
|
168
|
-
} else {
|
|
169
|
-
fetchDataV2();
|
|
170
|
-
}
|
|
108
|
+
fetchData();
|
|
171
109
|
}
|
|
172
110
|
}, [props.values]);
|
|
173
111
|
|
|
174
|
-
const columns: ProColumns<
|
|
112
|
+
const columns: ProColumns<EditMultiLangListType>[] = [
|
|
175
113
|
{
|
|
176
114
|
title: formatMessage({
|
|
177
115
|
id: 'cfmmUI.multilang.column.lang',
|
|
@@ -230,33 +168,15 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
230
168
|
*/
|
|
231
169
|
setLoading(true);
|
|
232
170
|
|
|
233
|
-
let data: LangInfoItem[] = [];
|
|
234
|
-
|
|
235
171
|
let onSave = props.batchSave ? props.batchSave : batchSave;
|
|
236
172
|
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
recordId: props.values.recordId,
|
|
245
|
-
langInfoId: Number(dataSource[i].langInfoId) > 0 ? Number(dataSource[i].langInfoId) : 0,
|
|
246
|
-
lang: dataSource[i].lang,
|
|
247
|
-
value: dataSource[i].value,
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
} else {
|
|
251
|
-
data = dataSource.map(item => ({
|
|
252
|
-
lang: item.lang,
|
|
253
|
-
value: item.value,
|
|
254
|
-
dataId: props.values!.recordId,
|
|
255
|
-
tableName: props.values!.tableName,
|
|
256
|
-
columnName: props.values!.columnName,
|
|
257
|
-
}))
|
|
258
|
-
onSave = batchSaveI18n;
|
|
259
|
-
}
|
|
173
|
+
const data = dataSource.map(item => ({
|
|
174
|
+
lang: item.lang,
|
|
175
|
+
value: item.value,
|
|
176
|
+
dataId: props.values!.dataId,
|
|
177
|
+
tableName: props.values!.tableName,
|
|
178
|
+
columnName: props.values!.columnName,
|
|
179
|
+
}))
|
|
260
180
|
|
|
261
181
|
const result = await onSave(data);
|
|
262
182
|
|
|
@@ -339,10 +259,10 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
339
259
|
|
|
340
260
|
<Spin spinning={loading}>
|
|
341
261
|
{/* 多语言编辑表格 */}
|
|
342
|
-
<EditableProTable<
|
|
262
|
+
<EditableProTable<EditMultiLangListType>
|
|
343
263
|
key={tableKey}
|
|
344
264
|
columns={columns}
|
|
345
|
-
rowKey="
|
|
265
|
+
rowKey="dataId"
|
|
346
266
|
value={dataSource}
|
|
347
267
|
onChange={setDataSource as any}
|
|
348
268
|
recordCreatorProps={false}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { request } from '@umijs/max';
|
|
2
2
|
import { BASE_API } from '../constants';
|
|
3
|
-
import { API, DicDataItem,
|
|
3
|
+
import { API, DicDataItem, ExprotMultiLangListItem, EditMultiLangDataType, LangInfoItem, EditMultiLangSubmitData } from '../types';
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* 删除minio文件
|
|
@@ -49,42 +49,12 @@ export async function queryDictionary(params: ParamsType) {
|
|
|
49
49
|
* @returns 多语言信息列表
|
|
50
50
|
*/
|
|
51
51
|
export async function queryLangInfoExprotList(params: {tableName: string, columnName: string}) {
|
|
52
|
-
return request<API.Result_Base<ExprotMultiLangListItem[]>>(`${BASE_API}/
|
|
52
|
+
return request<API.Result_Base<ExprotMultiLangListItem[]>>(`${BASE_API}/i18n/export`, {
|
|
53
53
|
method: 'GET',
|
|
54
54
|
params,
|
|
55
55
|
});
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
/**
|
|
59
|
-
* 根据表名称、列名称、记录ID查询多语言信息
|
|
60
|
-
* @param params 查询参数
|
|
61
|
-
* @param params.tableName - 表名称
|
|
62
|
-
* @param params.columnName - 列名称
|
|
63
|
-
* @param params.recordId - 记录ID
|
|
64
|
-
* @returns 多语言信息列表
|
|
65
|
-
*/
|
|
66
|
-
export async function queryI18nExprotList(params: {tableName: string, columnName: string}) {
|
|
67
|
-
return request<API.Result_Base<(ExprotMultiLangListItem & { columnValue: string })[]>>(`${BASE_API}/i18n/export`, {
|
|
68
|
-
method: 'GET',
|
|
69
|
-
params,
|
|
70
|
-
});
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* 导入多语言数据
|
|
75
|
-
* @param 请求体
|
|
76
|
-
* @param.tableName 表名
|
|
77
|
-
* @param.columnName 列名
|
|
78
|
-
* @param.langInfos 数据
|
|
79
|
-
* @returns 多语言信息列表
|
|
80
|
-
*/
|
|
81
|
-
export async function importMultiLangList(params: {tableName: string, columnName: string, langInfos: ExprotI18nListItem[]}) {
|
|
82
|
-
return request<API.Result_Base<number>>(`${BASE_API}/system/LangInfo/importData`, {
|
|
83
|
-
method: 'POST',
|
|
84
|
-
data: params,
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
|
|
88
58
|
/**
|
|
89
59
|
* 导入多语言数据
|
|
90
60
|
* @param 请求体
|
|
@@ -93,7 +63,7 @@ export async function importMultiLangList(params: {tableName: string, columnName
|
|
|
93
63
|
* @param.langInfos 数据
|
|
94
64
|
* @returns 多语言信息列表
|
|
95
65
|
*/
|
|
96
|
-
export async function
|
|
66
|
+
export async function importMultiLangList(params: {tableName: string, columnName: string, i18nDataList: ExprotMultiLangListItem[]}) {
|
|
97
67
|
return request<API.Result_Base<number>>(`${BASE_API}/i18n/importData`, {
|
|
98
68
|
method: 'POST',
|
|
99
69
|
data: params,
|
|
@@ -105,32 +75,8 @@ export async function importI18nList(params: {tableName: string, columnName: str
|
|
|
105
75
|
* @param params 参数
|
|
106
76
|
* @returns
|
|
107
77
|
*/
|
|
108
|
-
export async function queryLangInfoList(params?:
|
|
109
|
-
return request(`${BASE_API}/
|
|
110
|
-
method: "GET",
|
|
111
|
-
params,
|
|
112
|
-
});
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* 批量保存多语言信息
|
|
117
|
-
* @param data 数据
|
|
118
|
-
* @returns
|
|
119
|
-
*/
|
|
120
|
-
export async function batchSave(data: any) {
|
|
121
|
-
return request(`${BASE_API}/system/LangInfo/batchSave`, {
|
|
122
|
-
method: "POST",
|
|
123
|
-
data,
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* 查询多语言信息列表
|
|
129
|
-
* @param params 参数
|
|
130
|
-
* @returns
|
|
131
|
-
*/
|
|
132
|
-
export async function queryI18nData(params?: any) {
|
|
133
|
-
return request(`${BASE_API}/i18n/getI18nData`, {
|
|
78
|
+
export async function queryLangInfoList(params?: LangInfoItem) {
|
|
79
|
+
return request<API.Result_Base<EditMultiLangDataType>>(`${BASE_API}/i18n/getI18nData`, {
|
|
134
80
|
method: "GET",
|
|
135
81
|
params,
|
|
136
82
|
});
|
|
@@ -141,7 +87,7 @@ export async function queryI18nData(params?: any) {
|
|
|
141
87
|
* @param data 数据
|
|
142
88
|
* @returns
|
|
143
89
|
*/
|
|
144
|
-
export async function
|
|
90
|
+
export async function batchSave(data: EditMultiLangSubmitData[]) {
|
|
145
91
|
return request(`${BASE_API}/i18n/batchSave`, {
|
|
146
92
|
method: "POST",
|
|
147
93
|
data,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const CrudTableTypes = "\nexport interface CrudTableConfig<T = any, U = {}, C = {}> {\n
|
|
1
|
+
export declare const CrudTableTypes = "\nexport interface CrudTableConfig<T = any, U = {}, C = {}> {\n // \u57FA\u7840\u914D\u7F6E\n baseLocalCode?: string;\n baseLocalName?: string;\n rowKey: keyof T;\n\n /** \u591A\u8BED\u8A00\u7F16\u8F91\u914D\u7F6E */\n multiLang?: {\n /** \u591A\u8BED\u8A00\u8868\u6570\u636E */\n multiLangList?: ExprotMultiLangListItem[];\n /** \u591A\u8BED\u8A00\u5B57\u6BB5\u914D\u7F6E */\n fields: {\n /** \u5B57\u6BB5\u540D */\n fieldName: keyof T;\n /** \u8868\u540D */\n tableName: string;\n /** \u5217\u540D */\n columnName: string;\n /** \u70B9\u51FB\u56DE\u8C03\uFF0C\u7528\u4E8E\u8BBE\u7F6ElangInfoItem */\n onClick?: (record: T) => LangInfoItem;\n }[];\n /** \u81EA\u5B9A\u4E49\u5BFC\u51FA\u591A\u8BED\u8A00\u51FD\u6570 */\n exportMultiLangData?: () => Promise<boolean | void>;\n /** \u81EA\u5B9A\u4E49\u67E5\u8BE2\u5BFC\u51FA\u591A\u8BED\u8A00\u51FD\u6570 */\n queryExprotMultiLangData?: (tableName: string, columnName: string) => Promise<ExprotMultiLangListItem[]>;\n /** \u81EA\u5B9A\u4E49\u5BFC\u5165\u591A\u8BED\u8A00\u51FD\u6570 */\n importMultiLangData?: (list: ExprotMultiLangListItem[], tableName: string, columnName: string) => Promise<{ success: boolean; failMsg?: string; data?: any } | void> | void;\n };\n \n /** \u6309\u94AE\u6743\u9650\u7F16\u7801\uFF0C\u9ED8\u8BA4\u4F1A\u6839\u636EbaseLocalCode\u751F\u6210 */\n authCodes?: {\n view?: string | boolean | ((record: T) => boolean | undefined);\n add?: string | boolean;\n edit?: string | boolean | ((record: T) => boolean | undefined);\n /** remove\u6743\u9650\u662F\u51FD\u6570\u65F6\uFF0C\u5982\u679C\u9700\u8981\u6279\u91CF\u5220\u9664\u8BF7\u8BBE\u7F6EbatchRemoveAuth\u4E3Atrue, \u5426\u5219\u4E0D\u4F1A\u663E\u793A\u6279\u91CF\u5220\u9664\u6309\u94AE */\n remove?: string | boolean | ((record: T) => boolean | undefined);\n /** \u6279\u91CF\u5220\u9664\u6743\u9650 */\n batchRemoveAuth?: string | boolean;\n record?: string | boolean | ((record: T) => boolean | undefined);\n };\n\n /** API\u65B9\u6CD5 */\n apis: {\n /** \u67E5\u8BE2\u65B9\u6CD5 */\n query: (params: any) => Promise<any>;\n /** \u64CD\u4F5C\u65B9\u6CD5 */\n handle: (method: API.MethodTypes, data: any) => Promise<any>;\n /** \u6839\u636Eid\u67E5\u8BE2\u8BE6\u60C5\u65B9\u6CD5\uFF0C\u6CA1\u4F20\u5219\u4F7F\u7528\u884C\u6570\u636E\u8FDB\u884C\u7F16\u8F91 */\n queryById?: (id: any) => Promise<any>;\n };\n\n /** API\u62E6\u622A\u5668 */\n interceptors?: {\n /** \u67E5\u8BE2\u62E6\u622A\u5668 */\n query?: {\n /** \u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u67E5\u8BE2\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (params: any) => any;\n /** \u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u67E5\u8BE2\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (result: any) => any;\n };\n /** \u64CD\u4F5C\u62E6\u622A\u5668 */\n handle?: {\n /** \u64CD\u4F5C\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u64CD\u4F5C\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (method: API.MethodTypes, data: any) => { method?: API.MethodTypes; data: any };\n /** \u64CD\u4F5C\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u64CD\u4F5C\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (method: API.MethodTypes, result: any) => any;\n };\n /** \u8BE6\u60C5\u67E5\u8BE2\u62E6\u622A\u5668 */\n queryById?: {\n /** \u8BE6\u60C5\u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u8BE6\u60C5\u67E5\u8BE2\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (id: any) => any;\n /** \u8BE6\u60C5\u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u8BE6\u60C5\u67E5\u8BE2\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (result: any) => any;\n };\n };\n\n /** \u8868\u683C\u5217\u914D\u7F6E */\n columns: ProColumns<T>[];\n /** \u8868\u683C\u5176\u4ED6\u914D\u7F6E */\n tableProps?: Partial<ProTableProps<T, any>>;\n\n /** \u64CD\u4F5C\u5217\u914D\u7F6E\uFF08\u8868\u683C\u64CD\u4F5C\u5217\u914D\u7F6E\u3001\u64CD\u4F5C\u5217\u4E0B\u62C9\u6309\u94AE\u914D\u7F6E\uFF09 */\n actionColumnConfig?: {\n /** \u8868\u683C\u64CD\u4F5C\u5217\u914D\u7F6E */\n columnConfig?: ProColumns<T>;\n /** \u4E0B\u62C9\u5217\u8868\u5C5E\u6027 */\n getDropdownButtonProps?: (record: T) => Partial<DropdownButtonProps>;\n };\n\n /** \u65B0\u589E\u8868\u5355\u914D\u7F6E */\n createConfig?: {\n /** \u81EA\u5B9A\u4E49\u521B\u5EFA\u8868\u5355\u7EC4\u4EF6 */\n Component?: React.ComponentType<\n {\n open?: boolean;\n onOpenChange?: (visible: boolean) => void;\n onSubmit?: (values: any) => Promise<boolean | void>;\n loading?: boolean;\n } & C\n >;\n /** \u4F20\u9012\u7ED9CreateFormComponent\u7684\u989D\u5916props */\n props?: C;\n };\n\n /** \u7F16\u8F91\u8868\u5355\u914D\u7F6E */\n updateConfig?: {\n /** \u81EA\u5B9A\u4E49\u7F16\u8F91\u8868\u5355\u7EC4\u4EF6 */\n Component?: React.ComponentType<\n {\n updateDrawerRef: React.MutableRefObject<RefDrawerFormRefType | undefined>;\n values: Partial<T> | null;\n onSubmit: (values: any) => Promise<boolean | void>;\n } & U\n >;\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u989D\u5916props */\n props?: U;\n };\n\n /** \u81EA\u5B9A\u4E49\u65B0\u589E\u51FD\u6570 */\n onAdd?: () => void;\n\n /** \u67E5\u8BE2\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterSearch?: (result: API.Result_TableListType<T[]>) => Promise<any> | void;\n /** \u7F16\u8F91\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DET\uFF0C\u5219\u4E0D\u8FDB\u884C\u7F16\u8F91 */\n onBeforeEdit?: (record: T) => Promise<T | null>;\n /** \u5220\u9664\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DEtrue\uFF0C\u5219\u4E0D\u8FDB\u884C\u64CD\u4F5C */\n onBeforeDelete?: (keys: React.Key[]) => Promise<boolean> | boolean | void;\n /** \u5220\u9664\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterDelete?: (keys: React.Key[], result: boolean) => Promise<boolean> | boolean | void;\n /** \u64CD\u4F5C\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DEtrue\uFF0C\u5219\u4E0D\u8FDB\u884C\u64CD\u4F5C */\n onBeforeAction?: (method: API.MethodTypes, fields: any) => Promise<boolean> | boolean | void;\n /** \u64CD\u4F5C\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterAction?: (method: API.MethodTypes, success: boolean) => void;\n}\n\nexport interface CrudTableRefType<T = any> {\n actionRef: React.MutableRefObject<ActionType | undefined>;\n updateDrawerRef: React.MutableRefObject<RefDrawerFormRefType | undefined>;\n tableList: T[];\n setTableList: (row: T[]) => void;\n viewRow: T | undefined;\n setViewRow: (row: T | undefined) => void;\n actionLogRow: T | undefined;\n setActionLogRow: (row: T | undefined) => void;\n editRow: Partial<T> | null;\n setEditRow: (row: Partial<T> | null) => void;\n selectedRows: T[];\n setSelectedRows: (rows: T[]) => void;\n selectedRowKeys: React.Key[];\n setSelectedRowKeys: (keys: React.Key[]) => void;\n createModalOpen: boolean;\n setCreateModalOpen: (open: boolean) => void;\n editLangModalOpen: boolean;\n setEditLangModalOpen: (open: boolean) => void;\n currentLangInfo?: LangInfoItem;\n setCurrentLangInfo: (open: LangInfoItem) => void;\n onDelete: (keys: React.Key[]) => void;\n updateModalOpen: () => void;\n updateModalClose: () => void;\n}\n";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export var CrudTableTypes = "\nexport interface CrudTableConfig<T = any, U = {}, C = {}> {\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?: ExprotMultiLangListItem[];\n /** \u591A\u8BED\u8A00\u5B57\u6BB5\u914D\u7F6E */\n fields: {\n /** \u5B57\u6BB5\u540D */\n fieldName: keyof T;\n /** \u8868\u540D */\n tableName: string;\n /** \u5217\u540D */\n columnName: string;\n /** \u70B9\u51FB\u56DE\u8C03\uFF0C\u7528\u4E8E\u8BBE\u7F6ElangInfoItem */\n onClick?: (record: T) => LangInfoItem;\n }[];\n /** \u81EA\u5B9A\u4E49\u5BFC\u51FA\u591A\u8BED\u8A00\u51FD\u6570 */\n exportMultiLangData?: () => Promise<boolean | void>;\n /** \u81EA\u5B9A\u4E49\u67E5\u8BE2\u5BFC\u51FA\u591A\u8BED\u8A00\u51FD\u6570 */\n queryExprotMultiLangData?: (tableName: string, columnName: string) => Promise<ExprotMultiLangListItem[]>;\n /** \u81EA\u5B9A\u4E49\u5BFC\u5165\u591A\u8BED\u8A00\u51FD\u6570 */\n importMultiLangData?: (list: ExprotMultiLangListItem[], tableName: string, columnName: string) => Promise<{ success: boolean; failMsg?: string; data?: any } | void> | void;\n };\n \n /** \u6309\u94AE\u6743\u9650\u7F16\u7801\uFF0C\u9ED8\u8BA4\u4F1A\u6839\u636EbaseLocalCode\u751F\u6210 */\n authCodes?: {\n view?: string | boolean | ((record: T) => boolean | undefined);\n add?: string | boolean;\n edit?: string | boolean | ((record: T) => boolean | undefined);\n /** remove\u6743\u9650\u662F\u51FD\u6570\u65F6\uFF0C\u5982\u679C\u9700\u8981\u6279\u91CF\u5220\u9664\u8BF7\u8BBE\u7F6EbatchRemoveAuth\u4E3Atrue, \u5426\u5219\u4E0D\u4F1A\u663E\u793A\u6279\u91CF\u5220\u9664\u6309\u94AE */\n remove?: string | boolean | ((record: T) => boolean | undefined);\n /** \u6279\u91CF\u5220\u9664\u6743\u9650 */\n batchRemoveAuth?: string | boolean;\n record?: string | boolean | ((record: T) => boolean | undefined);\n };\n\n /** API\u65B9\u6CD5 */\n apis: {\n /** \u67E5\u8BE2\u65B9\u6CD5 */\n query: (params: any) => Promise<any>;\n /** \u64CD\u4F5C\u65B9\u6CD5 */\n handle: (method: API.MethodTypes, data: any) => Promise<any>;\n /** \u6839\u636Eid\u67E5\u8BE2\u8BE6\u60C5\u65B9\u6CD5\uFF0C\u6CA1\u4F20\u5219\u4F7F\u7528\u884C\u6570\u636E\u8FDB\u884C\u7F16\u8F91 */\n queryById?: (id: any) => Promise<any>;\n };\n\n /** API\u62E6\u622A\u5668 */\n interceptors?: {\n /** \u67E5\u8BE2\u62E6\u622A\u5668 */\n query?: {\n /** \u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u67E5\u8BE2\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (params: any) => any;\n /** \u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u67E5\u8BE2\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (result: any) => any;\n };\n /** \u64CD\u4F5C\u62E6\u622A\u5668 */\n handle?: {\n /** \u64CD\u4F5C\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u64CD\u4F5C\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (method: API.MethodTypes, data: any) => { method?: API.MethodTypes; data: any };\n /** \u64CD\u4F5C\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u64CD\u4F5C\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (method: API.MethodTypes, result: any) => any;\n };\n /** \u8BE6\u60C5\u67E5\u8BE2\u62E6\u622A\u5668 */\n queryById?: {\n /** \u8BE6\u60C5\u67E5\u8BE2\u8BF7\u6C42\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u8BE6\u60C5\u67E5\u8BE2\u53C2\u6570\u8FDB\u884C\u5904\u7406 */\n request?: (id: any) => any;\n /** \u8BE6\u60C5\u67E5\u8BE2\u54CD\u5E94\u62E6\u622A\u5668\uFF0C\u7528\u4E8E\u5BF9\u8BE6\u60C5\u67E5\u8BE2\u7ED3\u679C\u8FDB\u884C\u5904\u7406 */\n response?: (result: any) => any;\n };\n };\n\n /** \u8868\u683C\u5217\u914D\u7F6E */\n columns: ProColumns<T>[];\n /** \u8868\u683C\u5176\u4ED6\u914D\u7F6E */\n tableProps?: Partial<ProTableProps<T, any>>;\n\n /** \u64CD\u4F5C\u5217\u914D\u7F6E\uFF08\u8868\u683C\u64CD\u4F5C\u5217\u914D\u7F6E\u3001\u64CD\u4F5C\u5217\u4E0B\u62C9\u6309\u94AE\u914D\u7F6E\uFF09 */\n actionColumnConfig?: {\n /** \u8868\u683C\u64CD\u4F5C\u5217\u914D\u7F6E */\n columnConfig?: ProColumns<T>;\n /** \u4E0B\u62C9\u5217\u8868\u5C5E\u6027 */\n getDropdownButtonProps?: (record: T) => Partial<DropdownButtonProps>;\n };\n\n /** \u65B0\u589E\u8868\u5355\u914D\u7F6E */\n createConfig?: {\n /** \u81EA\u5B9A\u4E49\u521B\u5EFA\u8868\u5355\u7EC4\u4EF6 */\n Component?: React.ComponentType<\n {\n open?: boolean;\n onOpenChange?: (visible: boolean) => void;\n onSubmit?: (values: any) => Promise<boolean | void>;\n loading?: boolean;\n } & C\n >;\n /** \u4F20\u9012\u7ED9CreateFormComponent\u7684\u989D\u5916props */\n props?: C;\n };\n\n /** \u7F16\u8F91\u8868\u5355\u914D\u7F6E */\n updateConfig?: {\n /** \u81EA\u5B9A\u4E49\u7F16\u8F91\u8868\u5355\u7EC4\u4EF6 */\n Component?: React.ComponentType<\n {\n updateDrawerRef: React.MutableRefObject<RefDrawerFormRefType | undefined>;\n values: Partial<T> | null;\n onSubmit: (values: any) => Promise<boolean | void>;\n } & U\n >;\n /** \u4F20\u9012\u7ED9UpdateFormComponent\u7684\u989D\u5916props */\n props?: U;\n };\n\n /** \u81EA\u5B9A\u4E49\u65B0\u589E\u51FD\u6570 */\n onAdd?: () => void;\n\n /** \u67E5\u8BE2\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterSearch?: (result: API.Result_TableListType<T[]>) => Promise<any> | void;\n /** \u7F16\u8F91\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DET\uFF0C\u5219\u4E0D\u8FDB\u884C\u7F16\u8F91 */\n onBeforeEdit?: (record: T) => Promise<T | null>;\n /** \u5220\u9664\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DEtrue\uFF0C\u5219\u4E0D\u8FDB\u884C\u64CD\u4F5C */\n onBeforeDelete?: (keys: React.Key[]) => Promise<boolean> | boolean | void;\n /** \u5220\u9664\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterDelete?: (keys: React.Key[], result: boolean) => Promise<boolean> | boolean | void;\n /** \u64CD\u4F5C\u524D\u56DE\u8C03\u51FD\u6570\uFF0C\u5982\u679C\u51FD\u6570\u6CA1\u6709\u8FD4\u56DEtrue\uFF0C\u5219\u4E0D\u8FDB\u884C\u64CD\u4F5C */\n onBeforeAction?: (method: API.MethodTypes, fields: any) => Promise<boolean> | boolean | void;\n /** \u64CD\u4F5C\u540E\u56DE\u8C03\u51FD\u6570 */\n onAfterAction?: (method: API.MethodTypes, success: boolean) => void;\n}\n\nexport interface CrudTableRefType<T = any> {\n actionRef: React.MutableRefObject<ActionType | undefined>;\n updateDrawerRef: React.MutableRefObject<RefDrawerFormRefType | undefined>;\n tableList: T[];\n setTableList: (row: T[]) => void;\n viewRow: T | undefined;\n setViewRow: (row: T | undefined) => void;\n actionLogRow: T | undefined;\n setActionLogRow: (row: T | undefined) => void;\n editRow: Partial<T> | null;\n setEditRow: (row: Partial<T> | null) => void;\n selectedRows: T[];\n setSelectedRows: (rows: T[]) => void;\n selectedRowKeys: React.Key[];\n setSelectedRowKeys: (keys: React.Key[]) => void;\n createModalOpen: boolean;\n setCreateModalOpen: (open: boolean) => void;\n editLangModalOpen: boolean;\n setEditLangModalOpen: (open: boolean) => void;\n currentLangInfo?: LangInfoItem;\n setCurrentLangInfo: (open: LangInfoItem) => void;\n onDelete: (keys: React.Key[]) => void;\n updateModalOpen: () => void;\n updateModalClose: () => void;\n}\n";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const EditMultiLangFormTypes = "\n /** \u5BFC\u51FA\u591A\u8BED\u8A00\u6570\u636E\u5217\u8868\u9879 */\n export interface ExprotMultiLangListItem {\n /** \u8BB0\u5F55ID */\n
|
|
1
|
+
export declare const EditMultiLangFormTypes = "\n /** \u5BFC\u51FA\u591A\u8BED\u8A00\u6570\u636E\u5217\u8868\u9879 */\n export interface ExprotMultiLangListItem {\n /** \u8BB0\u5F55ID */\n dataId: string;\n /** \u539F\u59CB\u503C */\n columnValue: string;\n zh_CN?: string;\n zh_TW?: string;\n en_US?: string;\n th_TH?: string;\n }\n\n type LangType = 'en_US' | 'th_TH' | 'zh_CN' | 'zh_TW';\n\n /** \u67E5\u8BE2\u5355\u4E2A\u591A\u8BED\u8A00\u6570\u636E */\n export type EditMultiLangDataType = {\n dataId: React.Key;\n i18nJson?: Record<LangType, {\n string: string;\n }>;\n };\n\n /** \u591A\u8BED\u8A00\u67E5\u8BE2\u53C2\u6570 */\n export interface LangInfoItem {\n /**\n * \u8868\u540D\u79F0\n */\n tableName: string;\n /**\n * \u5217\u540D\u79F0\n */\n columnName: string;\n /**\n * \u8BB0\u5F55ID\n */\n dataId: string;\n }\n\n /** \u591A\u8BED\u8A00\u63D0\u4EA4\u6570\u636E */\n export interface EditMultiLangSubmitData extends LangInfoItem {\n lang: LangType;\n value?: string;\n }\n\n /** \u591A\u8BED\u8A00\u4FE1\u606F\u7EC4\u4EF6\u7C7B\u578B */\n export interface EditMultiLangFormProps {\n /**\n * \u662F\u5426\u663E\u793A\u5F39\u7A97\n */\n modalFormVisible: boolean;\n /**\n * \u8BBE\u7F6E\u5F39\u7A97\u662F\u5426\u663E\u793A\n */\n setModalFormVisible: (visible: boolean) => void;\n /**\n * \u63D0\u4EA4\u540E\u56DE\u8C03\n */\n onAfterSubmit?: () => void;\n /**\n * \u591A\u8BED\u8A00\u4FE1\u606F\n */\n values?: LangInfoItem;\n /**\n * \u67E5\u8BE2\u5217\u8868\u63A5\u53E3\n */\n queryLangInfoList?: (params?: LangInfoItem) => Promise<API.Result_Base<EditMultiLangDataType>>;\n /**\n * \u4FDD\u5B58\u63A5\u53E3\n */\n batchSave?: (data?: LangInfoItem[]) => Promise<any>;\n }\n";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export var EditMultiLangFormTypes = "\n /** \u5BFC\u51FA\u591A\u8BED\u8A00\u6570\u636E\u5217\u8868\u9879 */\n export interface ExprotMultiLangListItem {\n /** \u8BB0\u5F55ID */\n
|
|
1
|
+
export var EditMultiLangFormTypes = "\n /** \u5BFC\u51FA\u591A\u8BED\u8A00\u6570\u636E\u5217\u8868\u9879 */\n export interface ExprotMultiLangListItem {\n /** \u8BB0\u5F55ID */\n dataId: string;\n /** \u539F\u59CB\u503C */\n columnValue: string;\n zh_CN?: string;\n zh_TW?: string;\n en_US?: string;\n th_TH?: string;\n }\n\n type LangType = 'en_US' | 'th_TH' | 'zh_CN' | 'zh_TW';\n\n /** \u67E5\u8BE2\u5355\u4E2A\u591A\u8BED\u8A00\u6570\u636E */\n export type EditMultiLangDataType = {\n dataId: React.Key;\n i18nJson?: Record<LangType, {\n string: string;\n }>;\n };\n\n /** \u591A\u8BED\u8A00\u67E5\u8BE2\u53C2\u6570 */\n export interface LangInfoItem {\n /**\n * \u8868\u540D\u79F0\n */\n tableName: string;\n /**\n * \u5217\u540D\u79F0\n */\n columnName: string;\n /**\n * \u8BB0\u5F55ID\n */\n dataId: string;\n }\n\n /** \u591A\u8BED\u8A00\u63D0\u4EA4\u6570\u636E */\n export interface EditMultiLangSubmitData extends LangInfoItem {\n lang: LangType;\n value?: string;\n }\n\n /** \u591A\u8BED\u8A00\u4FE1\u606F\u7EC4\u4EF6\u7C7B\u578B */\n export interface EditMultiLangFormProps {\n /**\n * \u662F\u5426\u663E\u793A\u5F39\u7A97\n */\n modalFormVisible: boolean;\n /**\n * \u8BBE\u7F6E\u5F39\u7A97\u662F\u5426\u663E\u793A\n */\n setModalFormVisible: (visible: boolean) => void;\n /**\n * \u63D0\u4EA4\u540E\u56DE\u8C03\n */\n onAfterSubmit?: () => void;\n /**\n * \u591A\u8BED\u8A00\u4FE1\u606F\n */\n values?: LangInfoItem;\n /**\n * \u67E5\u8BE2\u5217\u8868\u63A5\u53E3\n */\n queryLangInfoList?: (params?: LangInfoItem) => Promise<API.Result_Base<EditMultiLangDataType>>;\n /**\n * \u4FDD\u5B58\u63A5\u53E3\n */\n batchSave?: (data?: LangInfoItem[]) => Promise<any>;\n }\n";
|