@cfmm/umi-plugins-ui-v2 0.0.1 → 0.0.2
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 +33 -115
- 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 +33 -115
- 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,59 +51,15 @@ 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
|
-
/**
|
|
76
|
-
* 请求数据
|
|
77
|
-
*/
|
|
78
|
-
async function fetchData() {
|
|
79
|
-
if (!props.values) return;
|
|
80
|
-
|
|
81
|
-
// 深度拷贝defaultData,避免修改原始对象
|
|
82
|
-
const list: DataSourceType[] = defaultData.map((item) => ({
|
|
83
|
-
langInfoId: item.langInfoId,
|
|
84
|
-
lang: item.lang,
|
|
85
|
-
value: item.value,
|
|
86
|
-
}));
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* 加载中
|
|
90
|
-
*/
|
|
91
|
-
setLoading(true);
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* 请求后台API设置的多语言
|
|
95
|
-
*/
|
|
96
|
-
const queryList = props.queryLangInfoList ?? queryLangInfoList;
|
|
97
|
-
const result = await queryList({ ...props.values });
|
|
98
|
-
|
|
99
|
-
if (result && result.code === 200) {
|
|
100
|
-
for (let j = 0; j < list.length; j++) {
|
|
101
|
-
for (let i = 0; i < result.rows.length; i++) {
|
|
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
59
|
/**
|
|
120
60
|
* 请求数据
|
|
121
61
|
*/
|
|
122
|
-
async function
|
|
62
|
+
async function fetchData() {
|
|
123
63
|
if (!props.values) return;
|
|
124
64
|
|
|
125
65
|
/**
|
|
@@ -130,12 +70,12 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
130
70
|
/**
|
|
131
71
|
* 请求后台API设置的多语言
|
|
132
72
|
*/
|
|
133
|
-
const queryList = props.queryLangInfoList ??
|
|
134
|
-
const result = await queryList({
|
|
73
|
+
const queryList = props.queryLangInfoList ?? queryLangInfoList;
|
|
74
|
+
const result = await queryList({
|
|
135
75
|
tableName: props.values.tableName,
|
|
136
76
|
columnName: props.values.columnName,
|
|
137
|
-
dataId: props.values.
|
|
138
|
-
|
|
77
|
+
dataId: props.values.dataId,
|
|
78
|
+
});
|
|
139
79
|
const i18nJson = result?.data?.i18nJson;
|
|
140
80
|
|
|
141
81
|
if (result?.code === 200 && i18nJson) {
|
|
@@ -143,12 +83,12 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
143
83
|
return {
|
|
144
84
|
...item,
|
|
145
85
|
value: i18nJson[item.lang]?.dic_name,
|
|
146
|
-
|
|
86
|
+
dataId: new Date().getTime() + idx,
|
|
147
87
|
};
|
|
148
88
|
});
|
|
149
89
|
|
|
150
90
|
setDataSource([...newList]);
|
|
151
|
-
setEditableRowKeys(newList.map((item) => item.
|
|
91
|
+
setEditableRowKeys(newList.map((item) => item.dataId));
|
|
152
92
|
}
|
|
153
93
|
|
|
154
94
|
/**
|
|
@@ -163,15 +103,11 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
163
103
|
...props.values,
|
|
164
104
|
});
|
|
165
105
|
|
|
166
|
-
|
|
167
|
-
fetchData();
|
|
168
|
-
} else {
|
|
169
|
-
fetchDataV2();
|
|
170
|
-
}
|
|
106
|
+
fetchData();
|
|
171
107
|
}
|
|
172
108
|
}, [props.values]);
|
|
173
109
|
|
|
174
|
-
const columns: ProColumns<
|
|
110
|
+
const columns: ProColumns<EditMultiLangListType>[] = [
|
|
175
111
|
{
|
|
176
112
|
title: formatMessage({
|
|
177
113
|
id: 'cfmmUI.multilang.column.lang',
|
|
@@ -230,33 +166,15 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
230
166
|
*/
|
|
231
167
|
setLoading(true);
|
|
232
168
|
|
|
233
|
-
let data: LangInfoItem[] = [];
|
|
234
|
-
|
|
235
169
|
let onSave = props.batchSave ? props.batchSave : batchSave;
|
|
236
170
|
|
|
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
|
-
}
|
|
171
|
+
const data = dataSource.map(item => ({
|
|
172
|
+
lang: item.lang,
|
|
173
|
+
value: item.value,
|
|
174
|
+
dataId: props.values!.dataId,
|
|
175
|
+
tableName: props.values!.tableName,
|
|
176
|
+
columnName: props.values!.columnName,
|
|
177
|
+
}))
|
|
260
178
|
|
|
261
179
|
const result = await onSave(data);
|
|
262
180
|
|
|
@@ -339,10 +257,10 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
339
257
|
|
|
340
258
|
<Spin spinning={loading}>
|
|
341
259
|
{/* 多语言编辑表格 */}
|
|
342
|
-
<EditableProTable<
|
|
260
|
+
<EditableProTable<EditMultiLangListType>
|
|
343
261
|
key={tableKey}
|
|
344
262
|
columns={columns}
|
|
345
|
-
rowKey="
|
|
263
|
+
rowKey="dataId"
|
|
346
264
|
value={dataSource}
|
|
347
265
|
onChange={setDataSource as any}
|
|
348
266
|
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 dic_name: 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<any>;\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 dic_name: 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<any>;\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,59 +51,15 @@ 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
|
-
/**
|
|
76
|
-
* 请求数据
|
|
77
|
-
*/
|
|
78
|
-
async function fetchData() {
|
|
79
|
-
if (!props.values) return;
|
|
80
|
-
|
|
81
|
-
// 深度拷贝defaultData,避免修改原始对象
|
|
82
|
-
const list: DataSourceType[] = defaultData.map((item) => ({
|
|
83
|
-
langInfoId: item.langInfoId,
|
|
84
|
-
lang: item.lang,
|
|
85
|
-
value: item.value,
|
|
86
|
-
}));
|
|
87
|
-
|
|
88
|
-
/**
|
|
89
|
-
* 加载中
|
|
90
|
-
*/
|
|
91
|
-
setLoading(true);
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* 请求后台API设置的多语言
|
|
95
|
-
*/
|
|
96
|
-
const queryList = props.queryLangInfoList ?? queryLangInfoList;
|
|
97
|
-
const result = await queryList({ ...props.values });
|
|
98
|
-
|
|
99
|
-
if (result && result.code === 200) {
|
|
100
|
-
for (let j = 0; j < list.length; j++) {
|
|
101
|
-
for (let i = 0; i < result.rows.length; i++) {
|
|
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
59
|
/**
|
|
120
60
|
* 请求数据
|
|
121
61
|
*/
|
|
122
|
-
async function
|
|
62
|
+
async function fetchData() {
|
|
123
63
|
if (!props.values) return;
|
|
124
64
|
|
|
125
65
|
/**
|
|
@@ -130,12 +70,12 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
130
70
|
/**
|
|
131
71
|
* 请求后台API设置的多语言
|
|
132
72
|
*/
|
|
133
|
-
const queryList = props.queryLangInfoList ??
|
|
134
|
-
const result = await queryList({
|
|
73
|
+
const queryList = props.queryLangInfoList ?? queryLangInfoList;
|
|
74
|
+
const result = await queryList({
|
|
135
75
|
tableName: props.values.tableName,
|
|
136
76
|
columnName: props.values.columnName,
|
|
137
|
-
dataId: props.values.
|
|
138
|
-
|
|
77
|
+
dataId: props.values.dataId,
|
|
78
|
+
});
|
|
139
79
|
const i18nJson = result?.data?.i18nJson;
|
|
140
80
|
|
|
141
81
|
if (result?.code === 200 && i18nJson) {
|
|
@@ -143,12 +83,12 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
143
83
|
return {
|
|
144
84
|
...item,
|
|
145
85
|
value: i18nJson[item.lang]?.dic_name,
|
|
146
|
-
|
|
86
|
+
dataId: new Date().getTime() + idx,
|
|
147
87
|
};
|
|
148
88
|
});
|
|
149
89
|
|
|
150
90
|
setDataSource([...newList]);
|
|
151
|
-
setEditableRowKeys(newList.map((item) => item.
|
|
91
|
+
setEditableRowKeys(newList.map((item) => item.dataId));
|
|
152
92
|
}
|
|
153
93
|
|
|
154
94
|
/**
|
|
@@ -163,15 +103,11 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
163
103
|
...props.values,
|
|
164
104
|
});
|
|
165
105
|
|
|
166
|
-
|
|
167
|
-
fetchData();
|
|
168
|
-
} else {
|
|
169
|
-
fetchDataV2();
|
|
170
|
-
}
|
|
106
|
+
fetchData();
|
|
171
107
|
}
|
|
172
108
|
}, [props.values]);
|
|
173
109
|
|
|
174
|
-
const columns: ProColumns<
|
|
110
|
+
const columns: ProColumns<EditMultiLangListType>[] = [
|
|
175
111
|
{
|
|
176
112
|
title: formatMessage({
|
|
177
113
|
id: 'cfmmUI.multilang.column.lang',
|
|
@@ -230,33 +166,15 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
230
166
|
*/
|
|
231
167
|
setLoading(true);
|
|
232
168
|
|
|
233
|
-
let data: LangInfoItem[] = [];
|
|
234
|
-
|
|
235
169
|
let onSave = props.batchSave ? props.batchSave : batchSave;
|
|
236
170
|
|
|
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
|
-
}
|
|
171
|
+
const data = dataSource.map(item => ({
|
|
172
|
+
lang: item.lang,
|
|
173
|
+
value: item.value,
|
|
174
|
+
dataId: props.values!.dataId,
|
|
175
|
+
tableName: props.values!.tableName,
|
|
176
|
+
columnName: props.values!.columnName,
|
|
177
|
+
}))
|
|
260
178
|
|
|
261
179
|
const result = await onSave(data);
|
|
262
180
|
|
|
@@ -339,10 +257,10 @@ const EditMultiLangForm: React.FC<EditMultiLangFormProps> = (props) => {
|
|
|
339
257
|
|
|
340
258
|
<Spin spinning={loading}>
|
|
341
259
|
{/* 多语言编辑表格 */}
|
|
342
|
-
<EditableProTable<
|
|
260
|
+
<EditableProTable<EditMultiLangListType>
|
|
343
261
|
key={tableKey}
|
|
344
262
|
columns={columns}
|
|
345
|
-
rowKey="
|
|
263
|
+
rowKey="dataId"
|
|
346
264
|
value={dataSource}
|
|
347
265
|
onChange={setDataSource as any}
|
|
348
266
|
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 dic_name: 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<any>;\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 dic_name: 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<any>;\n /**\n * \u4FDD\u5B58\u63A5\u53E3\n */\n batchSave?: (data?: LangInfoItem[]) => Promise<any>;\n }\n";
|