@dckj-npm/dc-material 0.1.377 → 0.1.379

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/build/docs/colorful-button.html +3 -3
  2. package/build/docs/colorful-input.html +3 -3
  3. package/build/docs/custom-form/requirements.html +48 -0
  4. package/build/docs/custom-form.html +48 -0
  5. package/build/docs/index.html +3 -3
  6. package/build/docs/teletext-list.html +3 -3
  7. package/build/docs/umi.80bcbda5.js +1 -0
  8. package/build/docs/{umi.9770df27.css → umi.b31e14a3.css} +1 -1
  9. package/build/docs/~demos/colorful-button-demo.html +3 -3
  10. package/build/docs/~demos/colorful-input-demo.html +3 -3
  11. package/build/docs/~demos/teletext-list-demo-1.html +3 -3
  12. package/build/docs/~demos/teletext-list-demo.html +3 -3
  13. package/build/lowcode/assets-daily.json +13 -13
  14. package/build/lowcode/assets-dev.json +2 -2
  15. package/build/lowcode/assets-prod.json +13 -13
  16. package/build/lowcode/meta.design.js +1 -1
  17. package/build/lowcode/meta.js +1 -1
  18. package/build/lowcode/render/default/view.css +1 -1
  19. package/build/lowcode/render/default/view.js +1 -1
  20. package/build/lowcode/view.css +1 -1
  21. package/build/lowcode/view.js +1 -1
  22. package/dist/BizComps.css +1 -1
  23. package/dist/BizComps.js +2 -2
  24. package/dist/BizComps.js.map +1 -1
  25. package/es/components/custom-form/CUSTOM_FORM_OPERATION_MANUAL.md +284 -0
  26. package/es/components/custom-form/custom-form.d.ts +188 -2
  27. package/es/components/custom-form/custom-form.js +506 -26
  28. package/es/components/custom-form/index.d.ts +1 -1
  29. package/es/components/custom-form/index.scss +1 -1
  30. package/es/components/custom-form/schema.json +1374 -0
  31. package/lib/components/custom-form/CUSTOM_FORM_OPERATION_MANUAL.md +284 -0
  32. package/lib/components/custom-form/custom-form.d.ts +188 -2
  33. package/lib/components/custom-form/custom-form.js +511 -31
  34. package/lib/components/custom-form/index.d.ts +1 -1
  35. package/lib/components/custom-form/index.scss +1 -1
  36. package/lib/components/custom-form/schema.json +1374 -0
  37. package/lowcode/custom-form/meta.ts +1675 -116
  38. package/lowcode_es/custom-form/meta.js +2116 -141
  39. package/lowcode_es/meta.js +1 -1
  40. package/lowcode_lib/custom-form/meta.js +2116 -141
  41. package/lowcode_lib/meta.js +1 -1
  42. package/package.json +3 -3
  43. package/build/docs/umi.6f6bf535.js +0 -1
@@ -0,0 +1,284 @@
1
+ # CustomForm 操作使用手册(宴请预订)
2
+
3
+ 适用范围:
4
+ - 组件目录:lowcode-react-material/src/components/custom-form
5
+ - 对照页面配置:lowcode-react-material/src/components/custom-form/schema.json
6
+
7
+ 目标:
8
+ - 按照现有 schema.json 的业务口径,使用 CustomForm 还原“宴请预订表单”
9
+ - 你可以按本文逐项配置并逐项测试
10
+
11
+ ---
12
+
13
+ ## 1. 对照关系(schema.json -> CustomForm)
14
+
15
+ ### 1.1 旧 schema 的关键业务点
16
+
17
+ 1. 字段状态(state)
18
+ - banquet_date
19
+ - banquet_time
20
+ - guest_count
21
+ - package_name
22
+ - package_name_text
23
+ - package_price
24
+ - user_name
25
+ - user_mobile
26
+ - memo
27
+ - order_desc
28
+ - order_status(默认值:待处理)
29
+
30
+ 2. 数据源
31
+ - 套餐列表查询:node_ocmk24smc2g
32
+ - POST /source/api/dynamicFormTableRecord/page/1203689394066821120
33
+ - 提交预订:node_ocmk24smc3g
34
+ - POST /source/api/dynamicFormTableRecord/1203690686210248704/
35
+
36
+ 3. 旧逻辑方法
37
+ - onPackageNameChange:根据套餐 id 回填 package_price、package_name_text
38
+ - onSubmitClick:拼接 order_desc,组装 itemList,调用提交数据源
39
+
40
+ ### 1.2 在 CustomForm 中的对应能力
41
+
42
+ 1. 字段状态维护
43
+ - 由 CustomForm 内部统一管理,不再手写多个 onXxxChange
44
+
45
+ 2. 套餐联动
46
+ - 用 fieldLinkage 替代 onPackageNameChange
47
+ - 通过 dataSource + fillFields 一次回填多个字段
48
+
49
+ 3. 订单描述拼接
50
+ - 用 computedFields 替代手动拼接 order_desc
51
+
52
+ 4. 提交参数组装
53
+ - 用 submitMapping 替代 onSubmitClick 中手动 itemList
54
+
55
+ 5. 提交动作
56
+ - 提交按钮绑定数据源(对应 node_ocmk24smc3g)
57
+
58
+ ---
59
+
60
+ ## 2. 宴请预订表单配置清单(按顺序)
61
+
62
+ 以下步骤在低代码设计器中,对 CustomForm 组件进行配置。
63
+
64
+ ### 步骤 1:放置 CustomForm
65
+
66
+ 1. 拖入 CustomForm 到页面
67
+ 2. 推荐布局:
68
+ - columns:2
69
+ - labelAlign:left
70
+ - fullWidth:true
71
+
72
+ ### 步骤 2:配置表单项 formItems
73
+
74
+ 按下面字段建立表单项:
75
+
76
+ 1. 宴请日期
77
+ - field:banquet_date
78
+ - label:宴请日期
79
+ - required:true
80
+ - componentType:DatePicker 或 Input(若要与旧 schema 完全一致可选 Input)
81
+
82
+ 2. 宴请时间
83
+ - field:banquet_time
84
+ - label:宴请时间
85
+ - required:true
86
+ - componentType:Input
87
+
88
+ 3. 宴请人数
89
+ - field:guest_count
90
+ - label:宴请人数
91
+ - required:true
92
+ - componentType:NumberPicker(或 Input)
93
+
94
+ 4. 套餐名称
95
+ - field:package_name
96
+ - label:套餐名称
97
+ - required:true
98
+ - componentType:Select
99
+ - optionsBind:绑定套餐列表数据,value=套餐id,label=套餐名
100
+
101
+ 5. 套餐名称文本(可不展示)
102
+ - field:package_name_text
103
+ - label:套餐名称文本
104
+ - componentType:Input
105
+ - formItemProps.invisible:true(若你希望隐藏)
106
+
107
+ 6. 套餐价格
108
+ - field:package_price
109
+ - label:套餐价格
110
+ - componentType:Input
111
+ - componentProps.readOnly:true
112
+
113
+ 7. 预订人名称
114
+ - field:user_name
115
+ - label:预订人名称
116
+ - required:true
117
+ - componentType:Input
118
+
119
+ 8. 预订人联系方式
120
+ - field:user_mobile
121
+ - label:预订人联系方式
122
+ - required:true
123
+ - componentType:Input
124
+
125
+ 9. 备注
126
+ - field:memo
127
+ - label:备注
128
+ - componentType:TextArea
129
+ - columnSpan:2
130
+
131
+ ### 步骤 3:配置字段初始化 initialValues
132
+
133
+ 建议添加:
134
+ - field:order_status
135
+ - valueType:fixed
136
+ - value:待处理
137
+
138
+ ### 步骤 4:配置计算字段 computedFields
139
+
140
+ 添加一条:
141
+ - targetField:order_desc
142
+ - template:{package_name_text},{package_price},预订日期时间:{banquet_date} {banquet_time},宴请人数:{guest_count}人
143
+
144
+ ### 步骤 5:配置字段联动 fieldLinkage
145
+
146
+ 使用数据源模式,添加一条规则:
147
+ - watchField:package_name
148
+ - linkageMode:dataSource
149
+ - dataSource:绑定套餐列表数据源(与 optionsBind 同源)
150
+ - matchKey:id
151
+ - fillFields:
152
+ - package_price -> package_price
153
+ - package_name_text -> package_name
154
+
155
+ 说明:
156
+ - 旧 schema 中 package_name 存的是套餐 id,因此 matchKey 要和数据源主键一致(常见为 id)
157
+
158
+ ### 步骤 6:配置提交映射 submitMapping
159
+
160
+ 1. targetField:itemList
161
+ 2. items 按下列顺序添加:
162
+ - columnName=banquet_time,template={banquet_date} {banquet_time}
163
+ - columnName=guest_count,field=guest_count
164
+ - columnName=package_name,field=package_name
165
+ - columnName=package_name_text,field=package_name_text
166
+ - columnName=package_price,field=package_price
167
+ - columnName=user_name,field=user_name
168
+ - columnName=user_mobile,field=user_mobile
169
+ - columnName=memo,field=memo
170
+ - columnName=order_desc,field=order_desc
171
+ - columnName=order_status,field=order_status
172
+
173
+ ### 步骤 7:配置操作按钮 operations
174
+
175
+ 建议保留两按钮:
176
+
177
+ 1. 提交按钮
178
+ - text:提交预订
179
+ - action:submit
180
+ - type:primary
181
+ - submitValidate:true
182
+ - dataSource:绑定提交接口(原 schema 的 node_ocmk24smc3g)
183
+
184
+ 2. 重置按钮
185
+ - text:重置
186
+ - action:reset
187
+ - type:normal
188
+
189
+ ---
190
+
191
+ ## 3. 测试流程(可直接照测)
192
+
193
+ ### 用例 1:套餐数据加载
194
+
195
+ 步骤:
196
+ 1. 进入页面
197
+ 2. 打开“套餐名称”下拉
198
+
199
+ 期望:
200
+ - 能看到套餐选项
201
+ - 每个选项展示套餐名,提交值为套餐 id
202
+
203
+ ### 用例 2:套餐联动回填
204
+
205
+ 步骤:
206
+ 1. 选择任意套餐
207
+
208
+ 期望:
209
+ - package_price 自动回填
210
+ - package_name_text 自动回填
211
+
212
+ ### 用例 3:计算字段生成
213
+
214
+ 步骤:
215
+ 1. 填写 banquet_date、banquet_time、guest_count
216
+ 2. 选择套餐并完成联动
217
+
218
+ 期望:
219
+ - order_desc 自动生成
220
+ - 格式为:套餐名称文本,套餐价格,预订日期时间:日期 时间,宴请人数:X人
221
+
222
+ ### 用例 4:必填校验
223
+
224
+ 步骤:
225
+ 1. 不填必填项直接点“提交预订”
226
+
227
+ 期望:
228
+ - 不触发提交接口
229
+ - 展示对应字段错误提示
230
+
231
+ ### 用例 5:提交参数结构
232
+
233
+ 步骤:
234
+ 1. 完整填写表单后点击“提交预订”
235
+ 2. 在网络面板或接口日志查看请求体
236
+
237
+ 期望:
238
+ - 请求中包含 itemList 数组
239
+ - itemList 中 columnName/columnValue 与 submitMapping 配置一致
240
+ - 包含 order_desc 和 order_status
241
+
242
+ ### 用例 6:重置按钮
243
+
244
+ 步骤:
245
+ 1. 先填写多个字段
246
+ 2. 点击“重置”
247
+
248
+ 期望:
249
+ - 可编辑字段被清空
250
+ - 若配置了 order_status 的初始值,可按设计预期保留或恢复
251
+
252
+ ---
253
+
254
+ ## 4. 快速排错
255
+
256
+ 1. 选套餐后价格不回填
257
+ - 检查 fieldLinkage.matchKey 是否和数据源主键一致
258
+ - 检查 optionsBind 的 value 是否就是该主键
259
+
260
+ 2. 提交后没有 itemList
261
+ - 检查 submitMapping.targetField 是否为 itemList
262
+ - 检查 items 是否至少有一条有效映射
263
+
264
+ 3. order_desc 为空
265
+ - 检查 computedFields 的模板字段名是否与 formItems.field 完全一致
266
+
267
+ 4. 提交按钮没调接口
268
+ - 检查 operations 中 submit 按钮是否绑定了 dataSource
269
+ - 检查 submitValidate 打开时是否存在校验失败
270
+
271
+ ---
272
+
273
+ ## 5. 推荐对照检查表
274
+
275
+ 每次提测前可按下列核对:
276
+
277
+ 1. 表单项字段名与 submitMapping 字段名完全一致
278
+ 2. 套餐下拉 optionsBind 和 fieldLinkage.dataSource 同源
279
+ 3. matchKey 与 optionsBind 的 value 字段一致
280
+ 4. order_status 有初始值 待处理
281
+ 5. 提交按钮绑定正确数据源(提交接口)
282
+ 6. 必填项都设置了 required
283
+
284
+ 完成以上 6 项,基本可覆盖 schema.json 中宴请预订主流程。
@@ -1,26 +1,188 @@
1
+ /**
2
+ * CustomForm v0.5
3
+ * 阶段一新增能力:
4
+ * - onChange(field, value, allValues) 统一字段变化事件,消灭所有 onXxxChange 样板函数
5
+ * - initialValues 属性面板直接配置字段初始值,无需在页面 state 手写
6
+ * - computedFields 声明式模板字符串计算衍生字段,提交时自动合并
7
+ * 阶段二新增能力:
8
+ * - DateTimePicker 日期时间组件,格式化为 YYYY-MM-DD HH:mm
9
+ * - optionsBind 下拉/单选/复选选项支持变量绑定(动态数据源)
10
+ * - fieldLinkage 字段联动:选 A → 自动填 B/C(从数据源查找匹配项)
11
+ * - submitMapping 提交映射:自动组装 itemList 格式,消灭手写 onSubmitClick
12
+ * 阶段三新增能力:
13
+ * - labelAlign 全局标签位置(top/left/inset),对齐 Fusion Form 标准
14
+ * - fullWidth(全局) 全局控制所有表单项组件是否 100% 宽,可被单项覆盖
15
+ * - isPreview 全局预览/只读态(依赖 Fusion Form isPreview 广播)
16
+ * - labelCol / wrapperCol via otherProps 透传,labelAlign=left 时配合使用
17
+ * - onReset 点击重置按钮后触发的回调事件
18
+ */
1
19
  import React from 'react';
2
20
  import './index.scss';
3
21
  import { FormProps } from '@alifd/next/lib/form';
4
- export type CustomFormItemType = 'Input' | 'TextArea' | 'Select' | 'RadioGroup' | 'CheckboxGroup' | 'NumberPicker' | 'DatePicker' | 'Upload';
22
+ export type CustomFormItemType = 'Input' | 'TextArea' | 'Select' | 'RadioGroup' | 'CheckboxGroup' | 'NumberPicker' | 'DatePicker' | 'DateTimePicker' | 'Upload';
5
23
  export interface CustomFormItemSchema {
24
+ /** 字段名,对应提交值的 key,必填 */
6
25
  field: string;
26
+ /** 标签文字 */
7
27
  label?: string;
28
+ /** 是否必填(会显示红色星号,并在提交时校验) */
8
29
  required?: boolean;
30
+ /** 该字段的初始/默认值(优先级高于 CustomFormProps.initialValues) */
31
+ initialValue?: any;
32
+ /** 组件类型,默认 Input */
9
33
  componentType?: CustomFormItemType;
34
+ /** 传给组件的额外属性,如 placeholder、disabled、maxLength 等 */
10
35
  componentProps?: Record<string, any>;
36
+ /** 快捷配置 placeholder(等同于 componentProps.placeholder) */
37
+ placeholder?: string;
38
+ /** Select / RadioGroup / CheckboxGroup 的选项列表(静态配置) */
11
39
  options?: Array<{
12
40
  label: string;
13
41
  value: any;
14
42
  }>;
43
+ /** 动态选项(绑定变量/数据源后优先使用),仅 Select/RadioGroup/CheckboxGroup 生效 */
44
+ optionsBind?: any[];
45
+ /** 该表单项占几列(不超过父级 columns),默认 1 */
15
46
  columnSpan?: number;
47
+ /** 组件尺寸:small / medium / large,默认继承表单全局 size */
48
+ size?: 'small' | 'medium' | 'large';
49
+ /** 宽度是否占满容器(100%),默认 true */
50
+ fullWidth?: boolean;
51
+ /** 自定义错误提示文案(不设置则由 required 自动生成) */
52
+ help?: string;
53
+ /** 额外说明文案,显示在错误信息下方 */
54
+ extra?: string;
55
+ /** 传给 Form.Item 的额外属性,优先级最高,会覆盖上方所有同名配置 */
16
56
  formItemProps?: Record<string, any>;
17
57
  }
18
58
  type GridSpacing = [number] | [number, number] | [number, number, number] | [number, number, number, number];
19
- export interface CustomFormProps extends Omit<FormProps, 'onSubmit'> {
59
+ /**
60
+ * computedFields:计算字段映射表
61
+ * key = 要写入 values 的字段名
62
+ * value = 模板字符串,用 {fieldName} 引用其他字段值
63
+ * 示例:{ "order_desc": "{package_name},{package_price},日期:{banquet_date}" }
64
+ */
65
+ export type ComputedFields = Record<string, string>;
66
+ /**
67
+ * 字段联动规则(阶段二 + 阶段四 UX 简化)
68
+ *
69
+ * 【简单格式(推荐)】— 属性面板 ArraySetter 可视化编辑,每条规则对应一行:
70
+ * { watchField, matchValue?, fillField, fillValue }
71
+ * watchField = 监听哪个字段变化
72
+ * matchValue = 匹配值(留空 = 任何变化都触发)
73
+ * fillField = 要回填的目标字段名
74
+ * fillValue = 回填的具体值
75
+ *
76
+ * 【高级格式(兼容旧配置)】— 支持动态数据源查找 + staticRules 嵌套格式:
77
+ * { watchField, dataSource?, matchKey?, fillFields?, staticRules? }
78
+ */
79
+ export interface FieldLinkageRule {
80
+ /** 监听的字段名(所有模式必填) */
81
+ watchField: string;
82
+ /** 触发回填的条件值(留空 = watchField 任何变化都触发) */
83
+ matchValue?: string | number;
84
+ /** 要回填的目标表单字段名 */
85
+ fillField?: string;
86
+ /** 回填的目标值 */
87
+ fillValue?: any;
88
+ /** 数据源数组(支持变量绑定),用于动态查找匹配项回填多个字段 */
89
+ dataSource?: any[];
90
+ /** 在 dataSource 中用于与 watchField 值比较匹配的 key,默认 'value' */
91
+ matchKey?: string;
92
+ /**
93
+ * 找到匹配项后,要回填的字段映射。
94
+ * key = 表单字段名(field),value = 数据源对象中的字段名
95
+ * 示例:{ "package_price": "price", "package_desc": "description" }
96
+ */
97
+ fillFields?: Record<string, string>;
98
+ /**
99
+ * 静态联动规则(不依赖 dataSource)。
100
+ * key = watchField 的匹配值,value = 要同时设置的字段映射 { formField: setValue }
101
+ * 示例:{ "豪华套餐": { "package_price": "9800" } }
102
+ */
103
+ staticRules?: Record<string, Record<string, any>>;
104
+ }
105
+ /** 提交映射 item(阶段二) */
106
+ export interface SubmitMappingItem {
107
+ /** 写入结果数组中的 columnName */
108
+ columnName: string;
109
+ /** 从表单字段名取值(与 template 二选一) */
110
+ field?: string;
111
+ /** 模板字符串(同 computedFields 格式,与 field 二选一),如 "{package_name},{guest_count}人" */
112
+ template?: string;
113
+ }
114
+ /** rename 模式:单条字段重命名规则 */
115
+ export interface FieldRenameItem {
116
+ /** 表单字段名(源) */
117
+ fromField: string;
118
+ /** API 参数名(目标) */
119
+ toField: string;
120
+ }
121
+ /**
122
+ * 操作按钮配置项(阶段四新增)
123
+ * 表单底部可配置多个按钮,每个按钮均可独立设置操作类型与数据源。
124
+ */
125
+ export interface OperationItem {
126
+ /** 按钮显示文字 */
127
+ text: string;
128
+ /** 按钮操作类型:提交 / 重置 / 自定义 */
129
+ action: 'submit' | 'reset' | 'custom';
130
+ /** 按钮样式:primary(主要)/ secondary(次要)/ normal(普通),默认 normal */
131
+ type?: 'primary' | 'secondary' | 'normal';
132
+ /**
133
+ * 仅 action=submit 时生效:提交前是否执行必填校验,默认继承组件级 submitValidate(true)。
134
+ * 设置为 false 可跳过校验直接提交。
135
+ */
136
+ submitValidate?: boolean;
137
+ /**
138
+ * 仅 action=submit 时生效:绑定的提交数据源(在 lowcode-web 数据源面板中配置)。
139
+ * 优先级高于组件级 submitDataSource,未配置时回退到组件级 submitDataSource。
140
+ */
141
+ dataSource?: any;
142
+ /** 仅 action=custom 时生效:自定义点击回调函数 */
143
+ onClick?: (...args: any[]) => void;
144
+ /** 透传给 Button 组件的额外属性 */
145
+ buttonProps?: Record<string, any>;
146
+ }
147
+ /**
148
+ * 提交参数配置(阶段五扩展)
149
+ *
150
+ * 三种工作模式(mode):
151
+ * - 'passthrough':直接将 finalValues 作为请求参数,无需任何配置(字段名与 API 参数名相同时使用)。
152
+ * - 'rename':按 fieldRenameMap 规则重命名指定字段,未列出的字段保持原名透传;
153
+ * 适合字段名与 API 参数名不一致的标准 REST 接口。
154
+ * - 'itemList':将字段转换为动态表单格式 [{columnName, columnValue}],
155
+ * 适合 /source/api/dynamicFormTableRecord/ 等动态表单接口。
156
+ *
157
+ * 向后兼容:未设置 mode 时,若 items 不为空则自动识别为 'itemList' 模式,否则等同于 'passthrough'。
158
+ */
159
+ export interface SubmitMapping {
160
+ /**
161
+ * 参数构建模式,默认 'passthrough'(无 items 时)或 'itemList'(有 items 时,向后兼容)。
162
+ */
163
+ mode?: 'passthrough' | 'rename' | 'itemList';
164
+ /** rename 模式:字段重命名规则列表,未列出的字段按原名透传 */
165
+ fieldRenameMap?: FieldRenameItem[];
166
+ /** itemList 模式:组装结果写入 finalValues 的目标字段名,默认 'itemList' */
167
+ targetField?: string;
168
+ /** itemList 模式:字段映射规则 */
169
+ items?: SubmitMappingItem[];
170
+ }
171
+ export interface CustomFormProps extends Omit<FormProps, 'onSubmit' | 'onChange'> {
20
172
  columns?: number;
21
173
  spacing?: GridSpacing;
22
174
  emptyContent?: React.ReactNode;
23
175
  formItems?: CustomFormItemSchema[];
176
+ /** 字段初始值,key = field,value = 初始值(阶段一新增) */
177
+ initialValues?: Record<string, any>;
178
+ /** 计算字段声明,key = 目标字段名,value = 模板字符串如 "{a},{b}"(阶段一新增) */
179
+ computedFields?: ComputedFields;
180
+ /**
181
+ * 全局组件宽度占满(阶段三新增)
182
+ * 控制所有表单项的输入组件是否默认 100% 宽,可被单项 formItems[].fullWidth 覆盖。
183
+ * 不设置时沿用各项自身配置(默认无 style 约束)。
184
+ */
185
+ fullWidth?: boolean;
24
186
  showSubmit?: boolean;
25
187
  submitText?: string;
26
188
  submitValidate?: boolean;
@@ -29,8 +191,32 @@ export interface CustomFormProps extends Omit<FormProps, 'onSubmit'> {
29
191
  showReset?: boolean;
30
192
  resetText?: string;
31
193
  resetButtonProps?: Record<string, any>;
194
+ /**
195
+ * 操作按钮列表(阶段四新增)。
196
+ * 配置后取代 showSubmit / showReset 的显示逻辑,支持任意数量的提交 / 重置 / 自定义按钮。
197
+ * 未配置时(undefined)回退到旧版 showSubmit / showReset 双按钮模式,保证向后兼容。
198
+ */
199
+ operations?: OperationItem[];
200
+ /**
201
+ * 操作按钮区域的水平对齐方式(阶段四新增)。
202
+ * 'left' | 'center' | 'right',默认 'center'。
203
+ */
204
+ operationAlign?: 'left' | 'center' | 'right';
32
205
  onSubmit?: (values: any, errors: any, field: any) => void;
33
206
  onSubmitFailed?: (values: any, errors: any, field: any) => void;
207
+ /**
208
+ * 统一字段变化事件(阶段一新增)
209
+ * field = 发生变化的字段名
210
+ * value = 该字段最新值
211
+ * allValues = 当前所有字段值(已合并 computedFields)
212
+ */
213
+ onChange?: (field: string, value: any, allValues: Record<string, any>) => void;
214
+ /** 点击重置按钮后触发(阶段三新增) */
215
+ onReset?: () => void;
216
+ /** 字段联动规则数组(阶段二新增) */
217
+ fieldLinkage?: FieldLinkageRule[];
218
+ /** 提交字段映射,自动组装 itemList 格式(阶段二新增) */
219
+ submitMapping?: SubmitMapping;
34
220
  children?: React.ReactNode;
35
221
  }
36
222
  declare const CustomForm: React.FC<CustomFormProps>;