openxiangda 1.0.0

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 (121) hide show
  1. package/README.md +58 -0
  2. package/bin/openxiangda.js +11 -0
  3. package/lib/cli.js +2423 -0
  4. package/lib/config.js +121 -0
  5. package/lib/http.js +47 -0
  6. package/lib/skills.js +371 -0
  7. package/lib/utils.js +87 -0
  8. package/lib/workspace-init.js +139 -0
  9. package/openxiangda-skills/SKILL.md +128 -0
  10. package/openxiangda-skills/references/architecture-patterns.md +242 -0
  11. package/openxiangda-skills/references/automation-v3.md +129 -0
  12. package/openxiangda-skills/references/component-guide.md +198 -0
  13. package/openxiangda-skills/references/forms/component-registry.md +53 -0
  14. package/openxiangda-skills/references/forms/form-schema.md +109 -0
  15. package/openxiangda-skills/references/forms/layout-and-rules.md +24 -0
  16. package/openxiangda-skills/references/openxiangda-api.md +466 -0
  17. package/openxiangda-skills/references/pages/page-sdk.md +13 -0
  18. package/openxiangda-skills/references/pages/publish-flow.md +36 -0
  19. package/openxiangda-skills/references/pages/workspace-structure.md +38 -0
  20. package/openxiangda-skills/references/permissions-settings.md +147 -0
  21. package/openxiangda-skills/references/platform-data-model.md +305 -0
  22. package/openxiangda-skills/references/style-system.md +492 -0
  23. package/openxiangda-skills/references/troubleshooting.md +246 -0
  24. package/openxiangda-skills/references/workflow-v3.md +105 -0
  25. package/openxiangda-skills/references/workspace-state.md +45 -0
  26. package/openxiangda-skills/skills/openxiangda-app/SKILL.md +64 -0
  27. package/openxiangda-skills/skills/openxiangda-core/SKILL.md +143 -0
  28. package/openxiangda-skills/skills/openxiangda-form/SKILL.md +76 -0
  29. package/openxiangda-skills/skills/openxiangda-inspect/SKILL.md +40 -0
  30. package/openxiangda-skills/skills/openxiangda-page/SKILL.md +62 -0
  31. package/openxiangda-skills/skills/openxiangda-permission-settings/SKILL.md +95 -0
  32. package/openxiangda-skills/skills/openxiangda-workflow-automation/SKILL.md +97 -0
  33. package/package.json +126 -0
  34. package/packages/sdk/bin/lowcode-workspace.mjs +4 -0
  35. package/packages/sdk/dist/build/index.cjs +33 -0
  36. package/packages/sdk/dist/build/index.cjs.map +1 -0
  37. package/packages/sdk/dist/build/index.d.mts +40 -0
  38. package/packages/sdk/dist/build/index.d.ts +40 -0
  39. package/packages/sdk/dist/build/index.mjs +8 -0
  40. package/packages/sdk/dist/build/index.mjs.map +1 -0
  41. package/packages/sdk/dist/components/index.cjs +18700 -0
  42. package/packages/sdk/dist/components/index.cjs.map +1 -0
  43. package/packages/sdk/dist/components/index.d.mts +2094 -0
  44. package/packages/sdk/dist/components/index.d.ts +2094 -0
  45. package/packages/sdk/dist/components/index.mjs +18649 -0
  46. package/packages/sdk/dist/components/index.mjs.map +1 -0
  47. package/packages/sdk/dist/runtime/index.cjs +1469 -0
  48. package/packages/sdk/dist/runtime/index.cjs.map +1 -0
  49. package/packages/sdk/dist/runtime/index.d.mts +831 -0
  50. package/packages/sdk/dist/runtime/index.d.ts +831 -0
  51. package/packages/sdk/dist/runtime/index.mjs +1420 -0
  52. package/packages/sdk/dist/runtime/index.mjs.map +1 -0
  53. package/packages/sdk/dist/styles/antd-theme.cjs +60 -0
  54. package/packages/sdk/dist/styles/antd-theme.cjs.map +1 -0
  55. package/packages/sdk/dist/styles/antd-theme.d.mts +5 -0
  56. package/packages/sdk/dist/styles/antd-theme.d.ts +5 -0
  57. package/packages/sdk/dist/styles/antd-theme.mjs +35 -0
  58. package/packages/sdk/dist/styles/antd-theme.mjs.map +1 -0
  59. package/packages/sdk/dist/styles/tailwind-preset.cjs +2641 -0
  60. package/packages/sdk/dist/styles/tailwind-preset.cjs.map +1 -0
  61. package/packages/sdk/dist/styles/tailwind-preset.d.mts +75 -0
  62. package/packages/sdk/dist/styles/tailwind-preset.d.ts +75 -0
  63. package/packages/sdk/dist/styles/tailwind-preset.mjs +2618 -0
  64. package/packages/sdk/dist/styles/tailwind-preset.mjs.map +1 -0
  65. package/packages/sdk/dist/styles/tokens.css +73 -0
  66. package/packages/sdk/src/build-source/README.md +9 -0
  67. package/packages/sdk/src/build-source/bin/lowcode-workspace.mjs +7 -0
  68. package/packages/sdk/src/build-source/package.json +34 -0
  69. package/packages/sdk/src/build-source/scripts/build-forms.mjs +824 -0
  70. package/packages/sdk/src/build-source/scripts/build-forms.runtime-entry.test.ts +18 -0
  71. package/packages/sdk/src/build-source/scripts/build-pages.mjs +793 -0
  72. package/packages/sdk/src/build-source/scripts/build-workspace.mjs +64 -0
  73. package/packages/sdk/src/build-source/scripts/publish-all.mjs +127 -0
  74. package/packages/sdk/src/build-source/scripts/publish-oss.mjs +149 -0
  75. package/packages/sdk/src/build-source/scripts/register-bundle.mjs +1 -0
  76. package/packages/sdk/src/build-source/scripts/register.mjs +329 -0
  77. package/packages/sdk/src/build-source/scripts/sync-schema.mjs +301 -0
  78. package/packages/sdk/src/build-source/scripts/utils/form-api.mjs +639 -0
  79. package/packages/sdk/src/build-source/scripts/utils/form-api.test.ts +244 -0
  80. package/packages/sdk/src/build-source/scripts/utils/form-runtime-assets.mjs +57 -0
  81. package/packages/sdk/src/build-source/scripts/utils/form-runtime-assets.test.ts +135 -0
  82. package/packages/sdk/src/build-source/scripts/utils/incremental.mjs +210 -0
  83. package/packages/sdk/src/build-source/scripts/utils/load-config.mjs +257 -0
  84. package/packages/sdk/src/build-source/scripts/utils/load-config.test.ts +44 -0
  85. package/packages/sdk/src/build-source/scripts/utils/mime-types.mjs +70 -0
  86. package/packages/sdk/src/build-source/scripts/utils/namespace-css.mjs +61 -0
  87. package/packages/sdk/src/build-source/scripts/utils/oss-client.mjs +128 -0
  88. package/packages/sdk/src/build-source/scripts/utils/pages.mjs +80 -0
  89. package/packages/sdk/src/build-source/scripts/utils/progress.mjs +57 -0
  90. package/packages/sdk/src/build-source/scripts/utils/register-payload.mjs +89 -0
  91. package/packages/sdk/src/build-source/scripts/utils/register-payload.test.ts +76 -0
  92. package/packages/sdk/src/build-source/scripts/utils/runtime-css-check.mjs +44 -0
  93. package/packages/sdk/src/build-source/scripts/utils/runtime-css-check.test.ts +54 -0
  94. package/packages/sdk/src/build-source/scripts/utils/schema-transform.mjs +130 -0
  95. package/packages/sdk/src/build-source/scripts/utils/schema-transform.test.ts +141 -0
  96. package/packages/sdk/src/build-source/scripts/utils/tailwind-config.mjs +227 -0
  97. package/packages/sdk/src/build-source/scripts/utils/tailwind-config.test.ts +187 -0
  98. package/packages/sdk/src/build-source/src/cli.mjs +679 -0
  99. package/templates/sy-lowcode-app-workspace/app-workspace.config.ts +34 -0
  100. package/templates/sy-lowcode-app-workspace/examples/forms/customer/page.tsx +1 -0
  101. package/templates/sy-lowcode-app-workspace/examples/forms/customer/schema.ts +35 -0
  102. package/templates/sy-lowcode-app-workspace/index.html +12 -0
  103. package/templates/sy-lowcode-app-workspace/package.json +49 -0
  104. package/templates/sy-lowcode-app-workspace/postcss.config.cjs +6 -0
  105. package/templates/sy-lowcode-app-workspace/scripts/build-js-code.mjs +100 -0
  106. package/templates/sy-lowcode-app-workspace/src/dev/App.tsx +26 -0
  107. package/templates/sy-lowcode-app-workspace/src/forms/.gitkeep +1 -0
  108. package/templates/sy-lowcode-app-workspace/src/forms/README.md +48 -0
  109. package/templates/sy-lowcode-app-workspace/src/index.css +28 -0
  110. package/templates/sy-lowcode-app-workspace/src/js-code-nodes/.gitkeep +1 -0
  111. package/templates/sy-lowcode-app-workspace/src/js-code-nodes/types.d.ts +3 -0
  112. package/templates/sy-lowcode-app-workspace/src/main.tsx +36 -0
  113. package/templates/sy-lowcode-app-workspace/src/pages/.gitkeep +1 -0
  114. package/templates/sy-lowcode-app-workspace/src/shared/form-schema.ts +128 -0
  115. package/templates/sy-lowcode-app-workspace/src/types/app-workspace.types.ts +31 -0
  116. package/templates/sy-lowcode-app-workspace/tailwind.config.cjs +30 -0
  117. package/templates/sy-lowcode-app-workspace/tsconfig.app.json +24 -0
  118. package/templates/sy-lowcode-app-workspace/tsconfig.js-code-nodes.json +15 -0
  119. package/templates/sy-lowcode-app-workspace/tsconfig.json +7 -0
  120. package/templates/sy-lowcode-app-workspace/tsconfig.node.json +10 -0
  121. package/templates/sy-lowcode-app-workspace/vite.config.ts +32 -0
@@ -0,0 +1,2094 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+ import React__default from 'react';
4
+
5
+ type FormSectionVariant = 'plain' | 'card';
6
+ type FormSectionAccent = 'blue' | 'green';
7
+ type FormSectionIconKey = 'user' | 'calendar' | 'file' | 'device';
8
+ interface FormSectionProps {
9
+ title: string;
10
+ description?: string;
11
+ variant?: FormSectionVariant;
12
+ accent?: FormSectionAccent;
13
+ icon?: React__default.ReactNode;
14
+ iconKey?: FormSectionIconKey;
15
+ collapsible?: boolean;
16
+ defaultCollapsed?: boolean;
17
+ className?: string;
18
+ titleClassName?: string;
19
+ contentClassName?: string;
20
+ children: React__default.ReactNode;
21
+ }
22
+ declare function FormSection({ title, description, variant, accent, icon, iconKey, collapsible, defaultCollapsed, className, titleClassName, contentClassName, children, }: FormSectionProps): react_jsx_runtime.JSX.Element;
23
+
24
+ /** 字段行为状态 */
25
+ type FieldBehavior = 'NORMAL' | 'READONLY' | 'DISABLED' | 'HIDDEN';
26
+ type FormEngineMode = 'submit' | 'edit' | 'readonly';
27
+ type StandardFormPageMode = FormEngineMode | 'detail' | 'process';
28
+ /** 校验预设模式 */
29
+ type ValidationPreset = 'phone' | 'idCard' | 'email' | 'url' | 'bankCard';
30
+ /** 校验规则 */
31
+ interface ValidationRule {
32
+ required?: boolean;
33
+ message?: string;
34
+ min?: number;
35
+ max?: number;
36
+ minLength?: number;
37
+ maxLength?: number;
38
+ preset?: ValidationPreset;
39
+ pattern?: RegExp | string;
40
+ validator?: (value: any) => Promise<void> | void;
41
+ }
42
+ /** 字段声明(schema 中的每个字段定义) */
43
+ interface FieldDefinition {
44
+ fieldId: string;
45
+ componentName: string;
46
+ label: string;
47
+ required?: boolean;
48
+ rules?: ValidationRule[];
49
+ behavior?: FieldBehavior;
50
+ placeholder?: string;
51
+ tips?: string;
52
+ defaultValue?: any;
53
+ defaultValueType?: 'static' | 'expression';
54
+ defaultValueExpression?: string;
55
+ [key: string]: any;
56
+ }
57
+ type DateShortcutType = 'today' | 'yesterday' | 'tomorrow' | 'currentWeek' | 'currentMonth' | 'pastDays' | 'futureDays';
58
+ interface DateShortcutConfig {
59
+ type: DateShortcutType;
60
+ amount?: number;
61
+ format?: string;
62
+ includeTime?: boolean;
63
+ }
64
+ type PeopleShortcutType = 'currentUser' | 'currentDepartment' | 'parentDepartment' | 'role' | 'fixed' | 'currentUserManager' | 'currentUserManager2';
65
+ interface PeopleShortcutConfig {
66
+ type: PeopleShortcutType;
67
+ roleId?: string;
68
+ values?: any[];
69
+ }
70
+ type TextShortcutType = 'currentUserName' | 'currentUserJobNumber' | 'currentDeptName' | 'uuid';
71
+ interface TextShortcutConfig {
72
+ type: TextShortcutType;
73
+ }
74
+ interface LayoutVisibleWhen {
75
+ field: string;
76
+ operator: 'eq' | 'ne' | 'in' | 'notIn' | 'contains' | 'empty' | 'notEmpty' | 'between' | 'changed';
77
+ value?: any;
78
+ }
79
+ interface BaseLayoutNode {
80
+ id: string;
81
+ type: 'field' | 'section' | 'grid' | 'tabs' | 'steps';
82
+ hidden?: boolean;
83
+ visibleWhen?: LayoutVisibleWhen | LayoutVisibleWhen[];
84
+ }
85
+ interface FieldLayoutNode extends BaseLayoutNode {
86
+ type: 'field';
87
+ fieldId: string;
88
+ span?: number;
89
+ className?: string;
90
+ }
91
+ interface SectionLayoutNode extends BaseLayoutNode {
92
+ type: 'section';
93
+ title: string;
94
+ description?: string;
95
+ variant?: FormSectionVariant;
96
+ accent?: FormSectionAccent;
97
+ iconKey?: FormSectionIconKey;
98
+ collapsible?: boolean;
99
+ defaultCollapsed?: boolean;
100
+ children: FormLayoutNode[];
101
+ }
102
+ interface GridLayoutCell {
103
+ key?: string;
104
+ children: FormLayoutNode[];
105
+ }
106
+ interface GridLayoutNode extends BaseLayoutNode {
107
+ type: 'grid';
108
+ columns?: 1 | 2 | 3 | 4;
109
+ gap?: number | string;
110
+ columnGap?: number | string;
111
+ rowGap?: number | string;
112
+ columnRatios?: number[];
113
+ layoutPreset?: string;
114
+ cells?: GridLayoutCell[];
115
+ children: FormLayoutNode[];
116
+ }
117
+ interface TabLayoutItem {
118
+ key: string;
119
+ label: string;
120
+ children: FormLayoutNode[];
121
+ }
122
+ interface TabsLayoutNode extends BaseLayoutNode {
123
+ type: 'tabs';
124
+ defaultActiveKey?: string;
125
+ items: TabLayoutItem[];
126
+ }
127
+ interface StepLayoutItem {
128
+ key: string;
129
+ title: string;
130
+ description?: string;
131
+ children: FormLayoutNode[];
132
+ }
133
+ interface StepsLayoutNode extends BaseLayoutNode {
134
+ type: 'steps';
135
+ items: StepLayoutItem[];
136
+ }
137
+ type FormLayoutNode = FieldLayoutNode | SectionLayoutNode | GridLayoutNode | TabsLayoutNode | StepsLayoutNode;
138
+ interface FormTemplateConfig {
139
+ type?: 'standard';
140
+ defaultMode?: StandardFormPageMode;
141
+ formType?: 'form' | 'process';
142
+ submitSuccessMode?: 'redirect' | 'stay' | 'continue';
143
+ enableDraft?: boolean;
144
+ enableProcessPreview?: boolean;
145
+ enableEdit?: boolean;
146
+ enableDelete?: boolean;
147
+ enableChangeRecords?: boolean;
148
+ appearance?: FormAppearanceConfig;
149
+ }
150
+ interface FormAppearanceConfig {
151
+ layout?: 'horizontal' | 'vertical' | 'inline';
152
+ variant?: 'outlined' | 'borderless' | 'filled' | 'underlined';
153
+ size?: 'small' | 'middle' | 'large';
154
+ columns?: 1 | 2 | 3 | 4;
155
+ rendererSize?: 'compact' | 'default' | 'large';
156
+ gap?: number | string;
157
+ maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | 'full' | number | string;
158
+ requiredMark?: boolean | 'optional';
159
+ colon?: boolean;
160
+ labelCol?: Record<string, any>;
161
+ wrapperCol?: Record<string, any>;
162
+ scrollToFirstError?: boolean | Record<string, any>;
163
+ }
164
+ interface FormRuntimeConfig {
165
+ version?: string;
166
+ generatedAt?: string;
167
+ editorVersion?: string;
168
+ currentUser?: UserItem;
169
+ currentDepartment?: DepartmentTreeNode;
170
+ currentUserManagers?: UserItem[];
171
+ appType?: string;
172
+ /**
173
+ * 运行时数据查询函数(带权限控制)
174
+ * 由宿主环境(app-workspace)注入,底层应调用 advancedSearch 接口
175
+ */
176
+ fetchFormData?: (params: RuntimeDataQueryParams) => Promise<RuntimeDataQueryResult>;
177
+ [key: string]: any;
178
+ }
179
+ interface RuntimeDataQueryParams {
180
+ formUuid: string;
181
+ appType: string;
182
+ filters?: Array<{
183
+ fieldId: string;
184
+ operator: string;
185
+ value?: any;
186
+ }>;
187
+ conditionLogic?: 'and' | 'or';
188
+ sort?: {
189
+ field: string;
190
+ order: 'asc' | 'desc';
191
+ };
192
+ fieldId?: string;
193
+ deduplicate?: boolean;
194
+ pageSize?: number;
195
+ currentPage?: number;
196
+ }
197
+ interface RuntimeDataQueryResult {
198
+ data: any[];
199
+ totalCount?: number;
200
+ }
201
+ /** 表单 Schema 定义 */
202
+ interface FormSchema {
203
+ formMeta: {
204
+ formUuid: string;
205
+ appType: string;
206
+ title: string;
207
+ };
208
+ fields: FieldDefinition[];
209
+ layout?: FormLayoutNode[];
210
+ rules?: FormEffect[];
211
+ template?: FormTemplateConfig;
212
+ runtime?: FormRuntimeConfig;
213
+ }
214
+ interface LowcodePageMeta {
215
+ pageId?: string;
216
+ pageCode?: string;
217
+ routeKey?: string;
218
+ appType: string;
219
+ title: string;
220
+ }
221
+ type LowcodePageNodeType = 'PageSection' | 'PageGrid' | 'HeadingBlock' | 'TextBlock' | 'DataManagementList' | 'FormBlock';
222
+ interface LowcodePageNode {
223
+ id: string;
224
+ type: LowcodePageNodeType | string;
225
+ props?: Record<string, any>;
226
+ children?: LowcodePageNode[];
227
+ cells?: Array<{
228
+ key?: string;
229
+ children: LowcodePageNode[];
230
+ }>;
231
+ }
232
+ interface LowcodePageSchema {
233
+ schemaKind: 'page';
234
+ pageMeta: LowcodePageMeta;
235
+ nodes: LowcodePageNode[];
236
+ dataSources?: Array<Record<string, any>>;
237
+ runtime?: Record<string, any>;
238
+ }
239
+ interface RuntimeResponse<T = any> {
240
+ code?: number;
241
+ success?: boolean;
242
+ data?: T;
243
+ result?: T;
244
+ message?: string;
245
+ error?: string;
246
+ }
247
+ interface RuntimeRequestConfig {
248
+ url: string;
249
+ method?: string;
250
+ params?: Record<string, any>;
251
+ data?: any;
252
+ headers?: Record<string, string>;
253
+ responseType?: 'json' | 'blob';
254
+ }
255
+ interface FormRuntimeApi {
256
+ request: <T = any>(config: RuntimeRequestConfig) => Promise<RuntimeResponse<T> | Blob>;
257
+ uploadFile: (file: File, bucketName?: string, onProgress?: (percent: number) => void) => Promise<AttachmentItem>;
258
+ deleteFile: (objectName: string, bucketName?: string) => Promise<{
259
+ success: boolean;
260
+ }>;
261
+ createDownloadTicket: (bucketName: string, objectName: string, fileName?: string) => Promise<any>;
262
+ createFileAccessTicket: (bucketName: string, objectName: string, fileName?: string, purpose?: 'download' | 'preview' | 'onlyoffice') => Promise<any>;
263
+ getUserById: (id: string) => Promise<any>;
264
+ getUserList: (params?: Record<string, any>) => Promise<any[]>;
265
+ getDepartmentRoots: () => Promise<any[]>;
266
+ getDepartmentChildren: (parentId: string) => Promise<any[]>;
267
+ getDepartmentParentDepartments: (id: string) => Promise<any[]>;
268
+ getDepartmentMembers: (id: string) => Promise<any[]>;
269
+ getDepartmentMembersPage: (id: string, params?: {
270
+ page?: number;
271
+ pageSize?: number;
272
+ }) => Promise<{
273
+ items: any[];
274
+ total: number;
275
+ page: number;
276
+ pageSize: number;
277
+ }>;
278
+ getChinaDivisions: (parentAdcode?: string) => Promise<any[]>;
279
+ advancedSearch: (params: Record<string, any>) => Promise<any>;
280
+ getDingTalkSignature: (url: string) => Promise<any>;
281
+ submitFormData: (payload: Record<string, any>) => Promise<any>;
282
+ updateFormData: (payload: Record<string, any>) => Promise<any>;
283
+ }
284
+ type FormRuntimeApiConfig = Partial<FormRuntimeApi> & {
285
+ baseUrl?: string;
286
+ };
287
+ /** 表单引擎配置 */
288
+ interface FormEngineConfig {
289
+ mode: FormEngineMode;
290
+ formUuid: string;
291
+ appType: string;
292
+ formInstanceId?: string;
293
+ permissions?: {
294
+ fieldPermissions: Record<string, FieldBehavior>;
295
+ operations: string[];
296
+ };
297
+ submit?: {
298
+ beforeSubmit?: (values: Record<string, any>) => Promise<boolean | void>;
299
+ afterSubmit?: (response: any) => Promise<void>;
300
+ submitSuccessMode?: 'redirect' | 'stay' | 'callback';
301
+ redirectUrl?: string;
302
+ };
303
+ api?: FormRuntimeApiConfig;
304
+ navigation?: {
305
+ basePath?: string;
306
+ };
307
+ effects?: FormEffect[];
308
+ }
309
+ type FormEffectConditionOperator = 'eq' | 'ne' | 'in' | 'notIn' | 'contains' | 'empty' | 'notEmpty' | 'between' | 'changed';
310
+ type FormEffectCondition = {
311
+ field: string;
312
+ operator: FormEffectConditionOperator;
313
+ value?: any;
314
+ } | {
315
+ all: FormEffectCondition[];
316
+ } | {
317
+ any: FormEffectCondition[];
318
+ } | {
319
+ not: FormEffectCondition;
320
+ };
321
+ type FormEffectAction = {
322
+ field: string;
323
+ action: 'show' | 'hide' | 'enable' | 'disable' | 'setValue' | 'clearValue' | 'setRequired' | 'setOptions';
324
+ value?: any;
325
+ } | {
326
+ target: string;
327
+ targetType?: 'field' | 'layout';
328
+ action: 'show' | 'hide' | 'enable' | 'disable' | 'setValue' | 'clearValue' | 'setRequired' | 'setOptions';
329
+ value?: any;
330
+ };
331
+ /** 字段联动效果 */
332
+ interface FormEffect {
333
+ id?: string;
334
+ name?: string;
335
+ when: FormEffectCondition;
336
+ then: FormEffectAction[];
337
+ }
338
+ /** 基础字段组件 Props */
339
+ interface BaseFieldProps {
340
+ fieldId: string;
341
+ label: string;
342
+ value?: any;
343
+ behavior?: FieldBehavior;
344
+ required?: boolean;
345
+ rules?: ValidationRule[];
346
+ placeholder?: string;
347
+ tips?: string;
348
+ className?: string;
349
+ labelClassName?: string;
350
+ inputClassName?: string;
351
+ tipsClassName?: string;
352
+ readonlyClassName?: string;
353
+ onChange?: (value: any) => void;
354
+ onBlur?: (value: any) => void;
355
+ }
356
+ /** TextField 专用 Props */
357
+ interface TextFieldProps extends BaseFieldProps {
358
+ defaultValue?: string;
359
+ maxLength?: number;
360
+ showCount?: boolean;
361
+ allowClear?: boolean;
362
+ prefix?: string;
363
+ suffix?: string;
364
+ autoComplete?: string;
365
+ variant?: FormAppearanceConfig['variant'];
366
+ size?: FormAppearanceConfig['size'];
367
+ defaultShortcut?: TextShortcutConfig;
368
+ defaultValueLinkage?: DefaultValueLinkageConfig;
369
+ validationPresets?: ValidationPreset[];
370
+ }
371
+ /** NumberField 专用 Props */
372
+ interface NumberFieldProps extends BaseFieldProps {
373
+ defaultValue?: number | null;
374
+ min?: number;
375
+ max?: number;
376
+ step?: number;
377
+ precision?: number;
378
+ unit?: string;
379
+ unitPosition?: 'prefix' | 'suffix';
380
+ thousandSeparator?: boolean;
381
+ controls?: boolean;
382
+ keyboard?: boolean;
383
+ stringMode?: boolean;
384
+ variant?: FormAppearanceConfig['variant'];
385
+ size?: FormAppearanceConfig['size'];
386
+ }
387
+ /** TextAreaField 专用 Props */
388
+ interface TextAreaFieldProps extends BaseFieldProps {
389
+ defaultValue?: string;
390
+ rows?: number;
391
+ minRows?: number;
392
+ maxRows?: number;
393
+ autoSize?: boolean | {
394
+ minRows?: number;
395
+ maxRows?: number;
396
+ };
397
+ maxLength?: number;
398
+ showCount?: boolean;
399
+ allowClear?: boolean;
400
+ autoComplete?: string;
401
+ variant?: FormAppearanceConfig['variant'];
402
+ size?: FormAppearanceConfig['size'];
403
+ defaultShortcut?: TextShortcutConfig;
404
+ defaultValueLinkage?: DefaultValueLinkageConfig;
405
+ }
406
+ /** 选项类型 */
407
+ interface OptionItem {
408
+ value: string;
409
+ label: string;
410
+ color?: string;
411
+ disabled?: boolean;
412
+ }
413
+ type OptionSourceType = 'custom' | 'linkedForm' | 'dataLinkage';
414
+ interface OptionSourceConfig {
415
+ type: OptionSourceType;
416
+ linkedForm?: LinkedFormOptionConfig;
417
+ dataLinkage?: DataLinkageConfig;
418
+ }
419
+ interface LinkedFormOptionConfig {
420
+ formUuid: string;
421
+ formTitle?: string;
422
+ fieldId: string;
423
+ fieldLabel?: string;
424
+ sortField?: string;
425
+ sortOrder?: 'asc' | 'desc';
426
+ filters?: DataFilter[];
427
+ deduplicate?: boolean;
428
+ }
429
+ interface DataLinkageConfig {
430
+ formUuid: string;
431
+ formTitle?: string;
432
+ targetFieldId: string;
433
+ targetFieldLabel?: string;
434
+ conditions: DataLinkageCondition[];
435
+ conditionLogic?: 'and' | 'or';
436
+ deduplicate?: boolean;
437
+ }
438
+ interface DataLinkageCondition {
439
+ localFieldId: string;
440
+ localFieldLabel?: string;
441
+ localComponentName?: string;
442
+ operator: 'eq' | 'ne' | 'contains' | 'gt' | 'lt' | 'gte' | 'lte';
443
+ remoteFieldId: string;
444
+ remoteFieldLabel?: string;
445
+ remoteComponentName?: string;
446
+ }
447
+ interface DataFilter {
448
+ fieldId: string;
449
+ fieldLabel?: string;
450
+ componentName?: string;
451
+ operator: 'eq' | 'ne' | 'contains' | 'gt' | 'lt' | 'gte' | 'lte' | 'in' | 'notIn' | 'empty' | 'notEmpty';
452
+ value?: any;
453
+ }
454
+ interface DefaultValueLinkageConfig {
455
+ formUuid: string;
456
+ formTitle?: string;
457
+ targetFieldId: string;
458
+ targetFieldLabel?: string;
459
+ conditions: DataLinkageCondition[];
460
+ conditionLogic?: 'and' | 'or';
461
+ }
462
+ type DateRangeRestriction = 'none' | 'todayAndAfter' | 'todayAndBefore' | 'custom';
463
+ interface DateRestrictionConfig {
464
+ type: DateRangeRestriction;
465
+ customStart?: string;
466
+ customEnd?: string;
467
+ }
468
+ type UserDisplayFormat = 'name' | 'nameWithJobNumber' | 'nameWithDepartment';
469
+ /** SelectField 专用 Props */
470
+ interface SelectFieldProps extends BaseFieldProps {
471
+ defaultValue?: OptionItem | null;
472
+ options: OptionItem[];
473
+ allowClear?: boolean;
474
+ showSearch?: boolean;
475
+ optionFilterProp?: string;
476
+ optionLabelProp?: string;
477
+ placement?: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight';
478
+ maxTagTextLength?: number;
479
+ variant?: FormAppearanceConfig['variant'];
480
+ size?: FormAppearanceConfig['size'];
481
+ optionEffects?: FormEffect[];
482
+ optionSource?: OptionSourceConfig;
483
+ coloredOptions?: boolean;
484
+ defaultValueLinkage?: DefaultValueLinkageConfig;
485
+ }
486
+ /** MultiSelectField 专用 Props */
487
+ interface MultiSelectFieldProps extends BaseFieldProps {
488
+ defaultValue?: OptionItem[];
489
+ options: OptionItem[];
490
+ allowClear?: boolean;
491
+ showSearch?: boolean;
492
+ maxCount?: number;
493
+ maxTagCount?: number | 'responsive';
494
+ maxTagTextLength?: number;
495
+ optionFilterProp?: string;
496
+ optionLabelProp?: string;
497
+ placement?: 'bottomLeft' | 'bottomRight' | 'topLeft' | 'topRight';
498
+ variant?: FormAppearanceConfig['variant'];
499
+ size?: FormAppearanceConfig['size'];
500
+ optionEffects?: FormEffect[];
501
+ optionSource?: OptionSourceConfig;
502
+ coloredOptions?: boolean;
503
+ }
504
+ /** RadioField 专用 Props */
505
+ interface RadioFieldProps extends BaseFieldProps {
506
+ defaultValue?: OptionItem | null;
507
+ options: OptionItem[];
508
+ direction?: 'horizontal' | 'vertical';
509
+ optionType?: 'default' | 'button';
510
+ buttonStyle?: 'outline' | 'solid';
511
+ size?: FormAppearanceConfig['size'];
512
+ optionEffects?: FormEffect[];
513
+ optionSource?: OptionSourceConfig;
514
+ coloredOptions?: boolean;
515
+ }
516
+ /** CheckboxField 专用 Props */
517
+ interface CheckboxFieldProps extends BaseFieldProps {
518
+ defaultValue?: OptionItem[];
519
+ options: OptionItem[];
520
+ direction?: 'horizontal' | 'vertical';
521
+ maxCount?: number;
522
+ optionEffects?: FormEffect[];
523
+ optionSource?: OptionSourceConfig;
524
+ coloredOptions?: boolean;
525
+ }
526
+ /** DateField 专用 Props */
527
+ interface DateFieldProps extends BaseFieldProps {
528
+ defaultValue?: string;
529
+ defaultShortcut?: DateShortcutConfig;
530
+ dateFormat?: string;
531
+ showTime?: boolean;
532
+ dateRestriction?: DateRestrictionConfig;
533
+ defaultValueLinkage?: DefaultValueLinkageConfig;
534
+ }
535
+ /** CascadeDateField 专用 Props */
536
+ interface CascadeDateFieldProps extends BaseFieldProps {
537
+ defaultValue?: {
538
+ start: string;
539
+ end: string;
540
+ } | null;
541
+ defaultShortcut?: DateShortcutConfig;
542
+ dateFormat?: string;
543
+ showTime?: boolean;
544
+ startLabel?: string;
545
+ endLabel?: string;
546
+ dateRestriction?: DateRestrictionConfig;
547
+ defaultValueLinkage?: DefaultValueLinkageConfig;
548
+ }
549
+ /** 附件项 */
550
+ interface AttachmentItem {
551
+ url: string;
552
+ name: string;
553
+ id: string;
554
+ uid?: string;
555
+ status?: 'uploading' | 'done' | 'error';
556
+ objectName?: string;
557
+ bucketName?: string;
558
+ originalName?: string;
559
+ contentType?: string;
560
+ mimeType?: string;
561
+ extension?: string;
562
+ previewUrl?: string;
563
+ downloadUrl?: string;
564
+ size?: number;
565
+ percent?: number;
566
+ error?: string;
567
+ }
568
+ /** AttachmentField 专用 Props */
569
+ interface AttachmentFieldProps extends BaseFieldProps {
570
+ defaultValue?: AttachmentItem[];
571
+ maxCount?: number;
572
+ accept?: string;
573
+ maxSize?: number;
574
+ uploadAction?: string;
575
+ bucketName?: string;
576
+ multiple?: boolean;
577
+ allowedTypes?: string[];
578
+ showPreview?: boolean;
579
+ showDownload?: boolean;
580
+ showFileSize?: boolean;
581
+ showFileTypeBadge?: boolean;
582
+ previewPagePath?: string;
583
+ mobileDownloadMode?: 'auto' | 'direct' | 'ticketRelay';
584
+ }
585
+ /** ImageField 专用 Props */
586
+ interface ImageFieldProps extends BaseFieldProps {
587
+ defaultValue?: AttachmentItem[];
588
+ maxCount?: number;
589
+ accept?: string;
590
+ uploadAction?: string;
591
+ bucketName?: string;
592
+ multiple?: boolean;
593
+ maxSize?: number;
594
+ listType?: 'text' | 'picture' | 'picture-card';
595
+ showPreviewIcon?: boolean;
596
+ showRemoveIcon?: boolean;
597
+ showDownloadIcon?: boolean;
598
+ }
599
+ /** 子表单列定义 */
600
+ interface SubFormColumn {
601
+ fieldId: string;
602
+ label: string;
603
+ componentName: string;
604
+ [key: string]: any;
605
+ }
606
+ /** SubFormField 专用 Props */
607
+ interface SubFormFieldProps extends BaseFieldProps {
608
+ defaultValue?: Record<string, any>[];
609
+ columns: SubFormColumn[];
610
+ maxRows?: number;
611
+ minRows?: number;
612
+ }
613
+ /** 用户数据源项 */
614
+ interface UserItem {
615
+ id: string;
616
+ name: string;
617
+ value?: string;
618
+ label?: string;
619
+ username?: string;
620
+ jobNumber?: string;
621
+ avatar?: string;
622
+ departments?: Array<{
623
+ id?: string;
624
+ name?: string;
625
+ }>;
626
+ }
627
+ type InitiatorSelectScope = 'all' | 'members' | 'roles';
628
+ type InitiatorSelectedApprovers = Record<string, string[]>;
629
+ interface InitiatorSelectCandidate extends UserItem {
630
+ phone?: string;
631
+ email?: string;
632
+ }
633
+ interface InitiatorSelectRequirement {
634
+ nodeId: string;
635
+ nodeName: string;
636
+ scope: InitiatorSelectScope;
637
+ approvals?: string[];
638
+ approvalNames?: string[];
639
+ multiApprove?: 'all' | 'or' | 'oneByOne';
640
+ candidateUsers?: InitiatorSelectCandidate[];
641
+ totalCandidates?: number;
642
+ }
643
+ /** UserSelectField 专用 Props */
644
+ interface UserSelectFieldProps extends BaseFieldProps {
645
+ defaultValue?: UserItem[];
646
+ defaultShortcut?: PeopleShortcutConfig;
647
+ multiple?: boolean;
648
+ searchable?: boolean;
649
+ dataSource?: UserItem[];
650
+ treeData?: DepartmentTreeNode[];
651
+ allowClear?: boolean;
652
+ maxCount?: number;
653
+ notFoundContent?: string;
654
+ displayFormat?: UserDisplayFormat;
655
+ defaultValueLinkage?: DefaultValueLinkageConfig;
656
+ }
657
+ /** 部门树节点 */
658
+ interface DepartmentTreeNode {
659
+ id: string;
660
+ name: string;
661
+ value?: string;
662
+ label?: string;
663
+ key?: string;
664
+ title?: string;
665
+ hasChildren?: boolean;
666
+ isLeaf?: boolean;
667
+ children?: DepartmentTreeNode[];
668
+ }
669
+ /** DepartmentSelectField 专用 Props */
670
+ interface DepartmentSelectFieldProps extends BaseFieldProps {
671
+ defaultValue?: {
672
+ id: string;
673
+ name: string;
674
+ }[];
675
+ defaultShortcut?: PeopleShortcutConfig;
676
+ multiple?: boolean;
677
+ treeData?: DepartmentTreeNode[];
678
+ allowClear?: boolean;
679
+ maxCount?: number;
680
+ notFoundContent?: string;
681
+ showFullPath?: boolean;
682
+ scopeType?: 'all' | 'specified';
683
+ specifiedDepts?: string[];
684
+ defaultValueLinkage?: DefaultValueLinkageConfig;
685
+ }
686
+ interface CascadeSelectFieldProps extends BaseFieldProps {
687
+ defaultValue?: OptionItem[] | OptionItem[][];
688
+ options?: Array<OptionItem & {
689
+ children?: any[];
690
+ isLeaf?: boolean;
691
+ }>;
692
+ multiple?: boolean;
693
+ allowClear?: boolean;
694
+ changeOnSelect?: boolean;
695
+ showSearch?: boolean;
696
+ fieldNames?: {
697
+ label?: string;
698
+ value?: string;
699
+ children?: string;
700
+ };
701
+ }
702
+ interface AddressValue {
703
+ country?: OptionItem;
704
+ province?: OptionItem;
705
+ city?: OptionItem;
706
+ district?: OptionItem;
707
+ street?: OptionItem;
708
+ detail?: string;
709
+ fullAddress?: string;
710
+ }
711
+ interface AddressFieldProps extends BaseFieldProps {
712
+ defaultValue?: AddressValue;
713
+ mode?: 'province-city' | 'province-city-district' | 'province-city-district-street' | 'province-city-district-street-detail';
714
+ detailPlaceholder?: string;
715
+ allowClear?: boolean;
716
+ }
717
+ interface AssociationFormConfig {
718
+ appType: string;
719
+ formUuid: string;
720
+ mainFieldId: string;
721
+ selectorColumns?: Array<string | {
722
+ title?: string;
723
+ dataIndex: string;
724
+ key?: string;
725
+ width?: number;
726
+ ellipsis?: boolean;
727
+ }>;
728
+ dataFilterRules?: Array<{
729
+ key: string;
730
+ operator?: string;
731
+ componentName?: string;
732
+ value?: string | number;
733
+ valueType?: 'manual' | 'currentField';
734
+ currentFieldKey?: string;
735
+ }>;
736
+ dataFilterConditionType?: 'AND' | 'OR';
737
+ dataFillingEnabled?: boolean;
738
+ dataFillingRules?: {
739
+ mainRules?: Array<{
740
+ source: string;
741
+ target: string;
742
+ sourceType?: string;
743
+ targetType?: string;
744
+ }>;
745
+ };
746
+ }
747
+ interface AssociationValue {
748
+ label: string;
749
+ value: string | number;
750
+ record?: Record<string, any>;
751
+ }
752
+ interface AssociationFormFieldProps extends BaseFieldProps {
753
+ defaultValue?: AssociationValue | AssociationValue[];
754
+ associationForm?: AssociationFormConfig;
755
+ multiple?: boolean;
756
+ allowClear?: boolean;
757
+ showSearch?: boolean;
758
+ }
759
+ type EditorToolbarAction = 'undo' | 'redo' | 'heading' | 'fontFamily' | 'fontSize' | 'bold' | 'italic' | 'underline' | 'strike' | 'superscript' | 'subscript' | 'color' | 'highlight' | 'bulletList' | 'orderedList' | 'taskList' | 'blockquote' | 'codeBlock' | 'alignLeft' | 'alignCenter' | 'alignRight' | 'link' | 'image' | 'imageUrl' | 'table' | 'addColumnBefore' | 'addColumnAfter' | 'deleteColumn' | 'addRowBefore' | 'addRowAfter' | 'deleteRow' | 'toggleHeaderRow' | 'deleteTable' | 'clear';
760
+ interface EditorChoiceOption {
761
+ label: string;
762
+ value: string;
763
+ }
764
+ interface EditorFieldProps extends BaseFieldProps {
765
+ defaultValue?: string;
766
+ rows?: number;
767
+ maxLength?: number;
768
+ height?: number | string;
769
+ toolbarConfig?: 'full' | 'basic' | 'minimal' | EditorToolbarAction[] | string[];
770
+ uploadBucketName?: string;
771
+ maxImageSize?: number;
772
+ allowedImageTypes?: string[];
773
+ fontFamilies?: EditorChoiceOption[];
774
+ fontSizes?: EditorChoiceOption[];
775
+ colorPresets?: string[];
776
+ }
777
+ interface SerialNumberFieldProps extends BaseFieldProps {
778
+ defaultValue?: string;
779
+ serialNumberRule?: Array<Record<string, any>>;
780
+ }
781
+ interface LocationValue {
782
+ latitude: number;
783
+ longitude: number;
784
+ address?: string;
785
+ city?: string;
786
+ district?: string;
787
+ province?: string;
788
+ name?: string;
789
+ accuracy?: number;
790
+ source?: 'browser' | 'dingTalk' | 'manual';
791
+ time?: number;
792
+ }
793
+ interface LocationFieldProps extends BaseFieldProps {
794
+ defaultValue?: LocationValue;
795
+ allowClear?: boolean;
796
+ locateButtonText?: string;
797
+ clearButtonText?: string;
798
+ }
799
+ interface SignaturePoint {
800
+ x: number;
801
+ y: number;
802
+ t: number;
803
+ }
804
+ interface DigitalSignatureValue {
805
+ url?: string;
806
+ bucketName?: string;
807
+ objectName?: string;
808
+ previewUrl?: string;
809
+ points?: SignaturePoint[];
810
+ timestamp?: number;
811
+ hash?: string;
812
+ }
813
+ interface DigitalSignatureFieldProps extends BaseFieldProps {
814
+ defaultValue?: DigitalSignatureValue;
815
+ bucketName?: string;
816
+ allowClear?: boolean;
817
+ }
818
+ interface JSONFieldProps extends BaseFieldProps {
819
+ defaultValue?: any;
820
+ }
821
+ /** 流程状态 */
822
+ type ProcessStatus = 'running' | 'waiting' | 'exception' | 'completed' | 'terminated' | 'withdrawn' | 'pending' | 'cancelled';
823
+ /** 任务状态 */
824
+ type TaskStatus = 'pending' | 'approved' | 'rejected' | 'returned' | 'suspended' | 'cancelled' | 'copied' | 'waiting' | 'simulated';
825
+ /** 流程任务节点类型 */
826
+ type ProcessNodeType = 'start' | 'approval' | 'copy' | 'end' | 'system' | 'originator_return' | 'callback_wait';
827
+ /** 审批操作类型 */
828
+ type ApprovalActionType = 'agree' | 'approved' | 'rejected' | 'reject' | 'transfer' | 'return' | 'save' | 'withdraw' | 'resubmit' | 'callback';
829
+ /** 流程操作动作定义 */
830
+ interface ProcessAction {
831
+ action: ApprovalActionType;
832
+ name: {
833
+ zh_CN: string;
834
+ en_US?: string;
835
+ };
836
+ text?: {
837
+ zh_CN?: string;
838
+ en_US?: string;
839
+ };
840
+ hidden?: boolean;
841
+ remark?: {
842
+ popUp: boolean;
843
+ required?: boolean;
844
+ content?: {
845
+ zh_CN: string;
846
+ en_US?: string;
847
+ };
848
+ };
849
+ }
850
+ /** 流程任务 */
851
+ interface ProcessTask {
852
+ id?: string;
853
+ taskId: string;
854
+ nodeId: string;
855
+ nodeVisitId?: string;
856
+ nodeType: ProcessNodeType;
857
+ nodeName: string;
858
+ title?: string;
859
+ status: TaskStatus;
860
+ canApprove?: boolean;
861
+ assigneeId?: string;
862
+ assignee?: string;
863
+ assigneeName?: string;
864
+ departmentName?: string;
865
+ comments?: string;
866
+ createdAt?: string;
867
+ actionAt?: string;
868
+ actions?: ProcessAction[];
869
+ isSimulated?: boolean;
870
+ multiApproveMode?: 'and' | 'or' | string;
871
+ }
872
+ /** 流程基本信息 */
873
+ interface ProcessBasicInfo {
874
+ instanceId: string;
875
+ processStatus: ProcessStatus;
876
+ formUuid: string;
877
+ appType: string;
878
+ title?: string;
879
+ originatorId: string;
880
+ originatorName: string;
881
+ originatorDepartment?: string;
882
+ createdAt: string;
883
+ currentTask?: ProcessTask;
884
+ isExecuting?: boolean;
885
+ }
886
+ /** 审批权限 */
887
+ interface ApprovalPermission {
888
+ hasPermission: boolean;
889
+ canUndo: boolean;
890
+ isApprover: boolean;
891
+ currentTasks?: ProcessTask[];
892
+ futureTasksCount?: number;
893
+ details?: string;
894
+ }
895
+ /** 可退回节点 */
896
+ interface ReturnableNode {
897
+ nodeId: string;
898
+ nodeName: string;
899
+ id?: string;
900
+ name?: string;
901
+ type?: string;
902
+ }
903
+ interface ReturnPolicy {
904
+ resubmitMode?: string;
905
+ [key: string]: any;
906
+ }
907
+ interface ReturnableNodeResult {
908
+ nodes: ReturnableNode[];
909
+ policy?: ReturnPolicy | null;
910
+ }
911
+ /** 流程预览路由 */
912
+ interface ProcessRoute {
913
+ nodeId: string;
914
+ nodeName: string;
915
+ nodeType: ProcessNodeType;
916
+ assignees: Array<{
917
+ id: string;
918
+ name: string;
919
+ }>;
920
+ }
921
+ /** 流程定义 */
922
+ interface ProcessDefinition {
923
+ processId: string;
924
+ flowConfig?: Record<string, Record<string, FieldBehavior>>;
925
+ startNodeId?: string;
926
+ nodes?: Array<Record<string, any>>;
927
+ definitionJson?: Record<string, any>;
928
+ viewJson?: Record<string, any>;
929
+ }
930
+ /** 视图权限摘要 */
931
+ interface ViewPermissionSummary {
932
+ fieldPermissions: Record<string, 'FORM_FILED_HIDDEN' | 'FORM_FILED_VIEW' | 'FORM_FILED_EDIT'>;
933
+ operations: string[];
934
+ }
935
+ /** 表单实例数据 */
936
+ interface FormInstanceData {
937
+ formInstanceId: string;
938
+ formUuid: string;
939
+ appType: string;
940
+ title?: string;
941
+ instanceTitle?: string;
942
+ data: Record<string, any>;
943
+ creator?: {
944
+ userId: string;
945
+ name: string;
946
+ avatar?: string;
947
+ department?: string;
948
+ };
949
+ createdBy?: string;
950
+ createdByName?: string;
951
+ createdByDepartmentId?: string;
952
+ createdByDepartmentName?: string;
953
+ createdAt: string;
954
+ updatedAt?: string;
955
+ }
956
+ /** 变更记录 */
957
+ interface ChangeRecord {
958
+ id: string;
959
+ fieldId: string;
960
+ fieldLabel: string;
961
+ oldValue: any;
962
+ newValue: any;
963
+ operatorId: string;
964
+ operatorName: string;
965
+ operatedAt: string;
966
+ operatorDepartmentName?: string;
967
+ operationId?: string;
968
+ changeType?: 'create' | 'update' | 'delete' | string;
969
+ changeSource?: string;
970
+ changedCount?: number;
971
+ createdAt?: string;
972
+ changes?: Array<{
973
+ fieldKey?: string;
974
+ fieldLabel?: string;
975
+ beforeValue?: any;
976
+ afterValue?: any;
977
+ }>;
978
+ }
979
+ /** 变更记录列表响应 */
980
+ interface ChangeRecordListResponse {
981
+ records: ChangeRecord[];
982
+ total: number;
983
+ page: number;
984
+ pageSize: number;
985
+ }
986
+ interface ApproveParams {
987
+ instanceId: string;
988
+ action: 'approved' | 'rejected';
989
+ comments?: string;
990
+ appType?: string;
991
+ formUuid?: string;
992
+ updateFormDataJson?: string;
993
+ }
994
+ interface TransferParams {
995
+ taskId: string;
996
+ newAssignee: string;
997
+ reason?: string;
998
+ }
999
+ interface ReturnParams {
1000
+ taskId: string;
1001
+ targetNodeId: string;
1002
+ reason?: string;
1003
+ }
1004
+ interface WithdrawParams {
1005
+ instanceId: string;
1006
+ reason?: string;
1007
+ }
1008
+ interface SaveTaskParams {
1009
+ instanceId: string;
1010
+ formUuid: string;
1011
+ appType: string;
1012
+ updateFormDataJson: string;
1013
+ }
1014
+ interface ResubmitParams {
1015
+ taskId: string;
1016
+ formUuid: string;
1017
+ appType: string;
1018
+ updateFormDataJson: string;
1019
+ comments?: string;
1020
+ selectedApprovers?: InitiatorSelectedApprovers;
1021
+ initiatorSelectedApprovers?: InitiatorSelectedApprovers;
1022
+ }
1023
+ interface PreviewParams {
1024
+ formUuid: string;
1025
+ appType: string;
1026
+ data: Record<string, any>;
1027
+ submissionDepartmentId?: string;
1028
+ selectedApprovers?: InitiatorSelectedApprovers;
1029
+ initiatorSelectedApprovers?: InitiatorSelectedApprovers;
1030
+ }
1031
+ interface FormDataQueryParams {
1032
+ formInstanceId: string;
1033
+ appType: string;
1034
+ formUuid: string;
1035
+ }
1036
+ interface FormDataDeleteParams {
1037
+ formInstanceId: string;
1038
+ appType: string;
1039
+ formUuid: string;
1040
+ }
1041
+ interface ChangeRecordQueryParams {
1042
+ formUuid: string;
1043
+ appType: string;
1044
+ formInstanceId: string;
1045
+ page?: number;
1046
+ pageSize?: number;
1047
+ }
1048
+ interface ViewPermissionQueryParams {
1049
+ formUuid: string;
1050
+ appType: string;
1051
+ formInstanceId?: string;
1052
+ }
1053
+ /** 状态元信息(用于 UI 渲染) */
1054
+ interface StatusMeta {
1055
+ label: string;
1056
+ tone: 'brand' | 'success' | 'danger' | 'neutral' | 'warning';
1057
+ }
1058
+
1059
+ interface FormContextValue {
1060
+ mode: FormEngineConfig['mode'];
1061
+ schema: FormSchema;
1062
+ formData: Record<string, any>;
1063
+ fieldErrors: Record<string, string>;
1064
+ fieldBehaviors: Record<string, FieldBehavior>;
1065
+ fieldOverrides: Record<string, Record<string, any>>;
1066
+ layoutBehaviors: Record<string, FieldBehavior>;
1067
+ dynamicOptions: Record<string, OptionItem[]>;
1068
+ api: FormRuntimeApi;
1069
+ config: Pick<FormEngineConfig, 'mode' | 'formUuid' | 'appType' | 'formInstanceId' | 'submit'>;
1070
+ setFieldValue: (fieldId: string, value: any) => void;
1071
+ getFieldValue: (fieldId: string) => any;
1072
+ getFormData: () => Record<string, any>;
1073
+ validateField: (fieldId: string) => Promise<boolean>;
1074
+ validateAll: () => Promise<boolean>;
1075
+ validateAllWithErrors: () => Promise<Record<string, string>>;
1076
+ resetForm: () => void;
1077
+ registerField: (fieldId: string) => void;
1078
+ unregisterField: (fieldId: string) => void;
1079
+ }
1080
+ declare const FormContext: React.Context<FormContextValue | null>;
1081
+ declare function useFormContext(): FormContextValue;
1082
+
1083
+ interface FormProviderProps {
1084
+ schema: FormSchema;
1085
+ config: FormEngineConfig;
1086
+ initialValues?: Record<string, any>;
1087
+ components?: Record<string, React__default.ComponentType<any>>;
1088
+ runtime?: FormRuntimeConfig;
1089
+ children: React__default.ReactNode;
1090
+ }
1091
+ declare function FormProvider({ schema, config, initialValues, components, runtime, children, }: FormProviderProps): React__default.FunctionComponentElement<React__default.ProviderProps<FormContextValue | null>>;
1092
+
1093
+ interface ComponentRegistryContextValue {
1094
+ registry: Record<string, React__default.ComponentType<any>>;
1095
+ register: (name: string, component: React__default.ComponentType<any>) => void;
1096
+ }
1097
+ declare const ComponentRegistryContext: React__default.Context<ComponentRegistryContextValue | null>;
1098
+ declare function ComponentRegistryProvider({ components, children, }: {
1099
+ components: Record<string, React__default.ComponentType<any>>;
1100
+ children: React__default.ReactNode;
1101
+ }): React__default.ReactElement;
1102
+ declare function useComponent(componentName: string): React__default.ComponentType<any> | null;
1103
+
1104
+ interface FormRendererProps {
1105
+ className?: string;
1106
+ fieldClassName?: string;
1107
+ columns?: 1 | 2 | 3 | 4;
1108
+ size?: 'compact' | 'default' | 'large';
1109
+ }
1110
+ declare function FormRenderer({ className, fieldClassName, columns, size, }: FormRendererProps): react_jsx_runtime.JSX.Element;
1111
+
1112
+ interface FormShellProps {
1113
+ children: React__default.ReactNode;
1114
+ appearance?: FormAppearanceConfig;
1115
+ className?: string;
1116
+ }
1117
+ declare function FormShell({ children, appearance, className }: FormShellProps): react_jsx_runtime.JSX.Element;
1118
+
1119
+ interface FormActionsProps {
1120
+ className?: string;
1121
+ submitText?: string;
1122
+ resetText?: string;
1123
+ showReset?: boolean;
1124
+ onSubmit?: (values: Record<string, any>) => Promise<void>;
1125
+ submitSuccessMode?: 'stay' | 'callback';
1126
+ }
1127
+ declare function FormActions({ className, submitText, resetText, showReset, onSubmit, }: FormActionsProps): react_jsx_runtime.JSX.Element | null;
1128
+
1129
+ declare const defaultComponentRegistry: Record<string, React__default.ComponentType<any>>;
1130
+
1131
+ /**
1132
+ * 预设校验规则常量
1133
+ */
1134
+ declare const VALIDATION_PRESETS: Record<ValidationPreset, {
1135
+ pattern: RegExp;
1136
+ message: string;
1137
+ }>;
1138
+ /**
1139
+ * Validate a single field value against its rules.
1140
+ * Returns the first error message encountered, or null if valid.
1141
+ */
1142
+ declare function validateField(value: any, rules: ValidationRule[]): Promise<string | null>;
1143
+ /**
1144
+ * Validate all fields in a form.
1145
+ * Returns a map of fieldId → error message for fields that have errors.
1146
+ */
1147
+ declare function validateAllFields(formData: Record<string, any>, fieldRules: Record<string, ValidationRule[]>): Promise<Record<string, string>>;
1148
+
1149
+ /**
1150
+ * Evaluate form effects based on current form data.
1151
+ * Returns a map of fieldId → FieldBehavior adjustments.
1152
+ * Only behavior-changing actions (show/hide/enable/disable) are processed.
1153
+ * setValue actions are ignored in behavior evaluation.
1154
+ */
1155
+ declare function evaluateEffects(effects: FormEffect[], formData: Record<string, any>, currentBehaviors: Record<string, FieldBehavior>): Record<string, FieldBehavior>;
1156
+
1157
+ interface FieldWrapperProps {
1158
+ fieldId: string;
1159
+ label: string;
1160
+ required?: boolean;
1161
+ tips?: string;
1162
+ className?: string;
1163
+ labelClassName?: string;
1164
+ tipsClassName?: string;
1165
+ children: React__default.ReactNode;
1166
+ }
1167
+ declare function FieldWrapper({ fieldId, label, required, tips, className, labelClassName, tipsClassName, children, }: FieldWrapperProps): react_jsx_runtime.JSX.Element;
1168
+
1169
+ interface FormContainerProps {
1170
+ title?: string;
1171
+ description?: string;
1172
+ children: React__default.ReactNode;
1173
+ maxWidth?: 'sm' | 'md' | 'lg' | 'xl' | 'full';
1174
+ className?: string;
1175
+ }
1176
+ declare function FormContainer({ title, description, children, maxWidth, className, }: FormContainerProps): react_jsx_runtime.JSX.Element;
1177
+
1178
+ declare function createFormRuntimeApi(config?: FormRuntimeApiConfig): FormRuntimeApi;
1179
+
1180
+ /**
1181
+ * 解析选项数据源,返回选项列表
1182
+ */
1183
+ declare function resolveOptions(config: OptionSourceConfig, runtime: FormRuntimeConfig | undefined, formData: Record<string, any>): Promise<OptionItem[]>;
1184
+ /**
1185
+ * 解析默认值联动(用于非选择类字段的数据联动默认值)
1186
+ */
1187
+ declare function resolveDefaultValueLinkage(config: {
1188
+ formUuid: string;
1189
+ targetFieldId: string;
1190
+ conditions: any[];
1191
+ conditionLogic?: string;
1192
+ }, runtime: FormRuntimeConfig | undefined, formData: Record<string, any>): Promise<any>;
1193
+
1194
+ /** 流程状态元映射 */
1195
+ declare const PROCESS_STATUS_META: Record<ProcessStatus, StatusMeta>;
1196
+ /** 任务状态元映射 */
1197
+ declare const TASK_STATUS_META: Record<TaskStatus, StatusMeta>;
1198
+
1199
+ /** 获取流程基本信息 */
1200
+ declare function getProcessBasic(request: FormRuntimeApi['request'], formInstId: string): Promise<ProcessBasicInfo>;
1201
+ /** 获取流程进度(任务列表) */
1202
+ declare function getProcessProgress(request: FormRuntimeApi['request'], formInstId: string): Promise<ProcessTask[]>;
1203
+ /** 检查当前用户审批权限 */
1204
+ declare function checkUserApproval(request: FormRuntimeApi['request'], formInstId: string): Promise<ApprovalPermission>;
1205
+ /** 审批(同意/拒绝) */
1206
+ declare function handleApproval(request: FormRuntimeApi['request'], params: ApproveParams): Promise<any>;
1207
+ /** 撤销流程 */
1208
+ declare function withdrawProcess(request: FormRuntimeApi['request'], params: WithdrawParams): Promise<any>;
1209
+ /** 转交任务 */
1210
+ declare function transferTask(request: FormRuntimeApi['request'], params: TransferParams): Promise<any>;
1211
+ /** 退回任务 */
1212
+ declare function returnTask(request: FormRuntimeApi['request'], params: ReturnParams): Promise<any>;
1213
+ /** 重新提交任务 */
1214
+ declare function resubmitTask(request: FormRuntimeApi['request'], params: ResubmitParams): Promise<any>;
1215
+ /** 暂存任务 */
1216
+ declare function saveTask(request: FormRuntimeApi['request'], params: SaveTaskParams): Promise<any>;
1217
+ /** 获取可退回节点 */
1218
+ declare function getReturnableNodes(request: FormRuntimeApi['request'], taskId: string): Promise<ReturnableNode[]>;
1219
+ /** 获取可退回节点和退回策略 */
1220
+ declare function getReturnableNodeResult(request: FormRuntimeApi['request'], taskId: string): Promise<ReturnableNodeResult>;
1221
+ /** 预览流程路由 */
1222
+ declare function previewProcess(request: FormRuntimeApi['request'], params: PreviewParams): Promise<ProcessRoute[]>;
1223
+ declare function getInitiatorSelectRequirements(request: FormRuntimeApi['request'], params: {
1224
+ formUuid: string;
1225
+ appType: string;
1226
+ data: Record<string, any>;
1227
+ submissionDepartmentId?: string;
1228
+ }): Promise<InitiatorSelectRequirement[]>;
1229
+ declare function getResubmitInitiatorSelectRequirements(request: FormRuntimeApi['request'], params: {
1230
+ taskId: string;
1231
+ formUuid: string;
1232
+ appType: string;
1233
+ data: Record<string, any>;
1234
+ }): Promise<InitiatorSelectRequirement[]>;
1235
+ declare function getInitiatorSelectCandidates(request: FormRuntimeApi['request'], params: {
1236
+ formUuid: string;
1237
+ appType: string;
1238
+ nodeId: string;
1239
+ page?: number;
1240
+ pageSize?: number;
1241
+ keyword?: string;
1242
+ departmentId?: string;
1243
+ }): Promise<{
1244
+ items: InitiatorSelectCandidate[];
1245
+ total: number;
1246
+ page: number;
1247
+ pageSize: number;
1248
+ }>;
1249
+ /** 获取流程定义 */
1250
+ declare function getProcessDefinition(request: FormRuntimeApi['request'], formUuid: string): Promise<ProcessDefinition>;
1251
+ /** 触发回调等待任务 */
1252
+ declare function triggerCallbackTask(request: FormRuntimeApi['request'], params: {
1253
+ taskId: string;
1254
+ payload?: Record<string, any>;
1255
+ }): Promise<any>;
1256
+ /** 获取表单实例数据 */
1257
+ declare function getFormData(request: FormRuntimeApi['request'], params: FormDataQueryParams): Promise<FormInstanceData>;
1258
+ /** 删除表单数据 */
1259
+ declare function deleteFormData(request: FormRuntimeApi['request'], params: FormDataDeleteParams): Promise<any>;
1260
+ /** 获取表单变更记录 */
1261
+ declare function getChangeRecords(request: FormRuntimeApi['request'], params: ChangeRecordQueryParams): Promise<ChangeRecordListResponse>;
1262
+ /** 获取视图权限摘要 */
1263
+ declare function getViewPermission(request: FormRuntimeApi['request'], params: ViewPermissionQueryParams): Promise<ViewPermissionSummary>;
1264
+
1265
+ type DataManagementConfigScope = 'global' | 'personal';
1266
+ type DataManagementDensity = 'compact' | 'middle' | 'loose';
1267
+ type FilterLogic = 'AND' | 'OR';
1268
+ interface DataManagementField extends FieldDefinition {
1269
+ id: string;
1270
+ fieldId: string;
1271
+ componentName: string;
1272
+ label: string;
1273
+ width?: number;
1274
+ system?: boolean;
1275
+ processOnly?: boolean;
1276
+ displayable?: boolean;
1277
+ }
1278
+ interface DataManagementFilterRule {
1279
+ id: string;
1280
+ key: string;
1281
+ operator: string;
1282
+ value: any;
1283
+ componentName?: string;
1284
+ }
1285
+ interface DataManagementFilterGroup {
1286
+ id: string;
1287
+ logic: FilterLogic;
1288
+ rules: DataManagementFilterRule[];
1289
+ conditions: DataManagementFilterGroup[];
1290
+ }
1291
+ interface DataManagementSort {
1292
+ id: string;
1293
+ isAsc: 'y' | 'n';
1294
+ }
1295
+ interface DataManagementConfig {
1296
+ showFields?: string[];
1297
+ widths?: Record<string, number>;
1298
+ lockFieldIds?: string[];
1299
+ sort?: DataManagementSort[];
1300
+ filter?: {
1301
+ searchKeyWord?: string;
1302
+ group?: DataManagementFilterGroup;
1303
+ };
1304
+ density?: DataManagementDensity;
1305
+ detailOpenMode?: 'drawer' | 'newPage';
1306
+ pageSize?: number;
1307
+ showForcedConfig?: boolean;
1308
+ [key: string]: any;
1309
+ }
1310
+ interface DataManagementQuery {
1311
+ appType: string;
1312
+ formUuid: string;
1313
+ filters?: DataManagementFilterGroup;
1314
+ rawFilters?: string;
1315
+ conditionType?: FilterLogic;
1316
+ searchKeyWord?: string;
1317
+ currentPage?: number;
1318
+ pageSize?: number;
1319
+ order?: DataManagementSort[];
1320
+ instanceStatus?: string;
1321
+ }
1322
+ interface DataManagementListResult {
1323
+ records: any[];
1324
+ total: number;
1325
+ }
1326
+ interface DataManagementApiOptions {
1327
+ appType: string;
1328
+ formUuid: string;
1329
+ menuFormUuid?: string;
1330
+ scope?: DataManagementConfigScope;
1331
+ }
1332
+ declare const getSystemFieldsForFormType: (formType?: string) => DataManagementField[];
1333
+ declare const normalizeDataManagementFields: (payload: any) => {
1334
+ fields: DataManagementField[];
1335
+ formType?: string;
1336
+ schema?: FormSchema;
1337
+ };
1338
+ declare const normalizeDataManagementList: (payload: any) => DataManagementListResult;
1339
+ declare const buildFilterPayload: (group?: DataManagementFilterGroup) => string | undefined;
1340
+ declare const normalizeColumnConfig: (cfg: DataManagementConfig | undefined, fields: DataManagementField[]) => Required<Pick<DataManagementConfig, "showFields" | "widths" | "lockFieldIds" | "sort">> & {
1341
+ density: DataManagementDensity;
1342
+ detailOpenMode: "drawer" | "newPage";
1343
+ pageSize: number;
1344
+ };
1345
+ declare function getDataManagementSchema(request: FormRuntimeApi['request'], params: {
1346
+ appType: string;
1347
+ formUuid: string;
1348
+ }): Promise<{
1349
+ fields: DataManagementField[];
1350
+ formType?: string;
1351
+ schema?: FormSchema;
1352
+ }>;
1353
+ declare function getDataManagementConfig(request: FormRuntimeApi['request'], options: DataManagementApiOptions): Promise<DataManagementConfig | undefined>;
1354
+ declare function saveDataManagementConfig(request: FormRuntimeApi['request'], options: DataManagementApiOptions & {
1355
+ config: DataManagementConfig;
1356
+ }): Promise<any>;
1357
+ declare function advancedSearchDataManagement(request: FormRuntimeApi['request'], query: DataManagementQuery): Promise<DataManagementListResult>;
1358
+ declare function deleteDataManagementRows(request: FormRuntimeApi['request'], params: {
1359
+ appType: string;
1360
+ formUuid: string;
1361
+ formInstanceIds: string[];
1362
+ }): Promise<any>;
1363
+ declare function batchApproveDataManagementRows(request: FormRuntimeApi['request'], params: {
1364
+ appType: string;
1365
+ formUuid: string;
1366
+ formInstanceIds: string[];
1367
+ action: 'approved' | 'rejected';
1368
+ comments?: string;
1369
+ }): Promise<any>;
1370
+ declare function exportDataManagementRows(request: FormRuntimeApi['request'], params: DataManagementQuery & {
1371
+ exportAll?: 'y' | 'n';
1372
+ embedImages?: 'y' | 'n';
1373
+ exportFields?: string[];
1374
+ }): Promise<Blob | RuntimeResponse<any>>;
1375
+ declare function downloadDataManagementImportTemplate(request: FormRuntimeApi['request'], params: {
1376
+ appType: string;
1377
+ formUuid: string;
1378
+ }): Promise<Blob | RuntimeResponse<any>>;
1379
+ declare function importPreviewDataManagementRows(request: FormRuntimeApi['request'], params: {
1380
+ appType: string;
1381
+ formUuid: string;
1382
+ fileBase64: string;
1383
+ }): Promise<any>;
1384
+ declare function importDataManagementRows(request: FormRuntimeApi['request'], params: {
1385
+ appType: string;
1386
+ formUuid: string;
1387
+ fileBase64: string;
1388
+ }): Promise<any>;
1389
+ declare function getDataManagementTransferRecords(request: FormRuntimeApi['request'], params: {
1390
+ appType: string;
1391
+ formUuid: string;
1392
+ type: 'import' | 'export';
1393
+ currentPage?: number;
1394
+ pageSize?: number;
1395
+ }): Promise<DataManagementListResult>;
1396
+
1397
+ declare function TextField(props: TextFieldProps): react_jsx_runtime.JSX.Element | null;
1398
+
1399
+ declare function NumberField(props: NumberFieldProps): react_jsx_runtime.JSX.Element | null;
1400
+
1401
+ declare function TextAreaField(props: TextAreaFieldProps): react_jsx_runtime.JSX.Element | null;
1402
+
1403
+ declare function SelectField(props: SelectFieldProps): react_jsx_runtime.JSX.Element | null;
1404
+
1405
+ declare function MultiSelectField(props: MultiSelectFieldProps): react_jsx_runtime.JSX.Element | null;
1406
+
1407
+ declare function RadioField(props: RadioFieldProps): react_jsx_runtime.JSX.Element | null;
1408
+
1409
+ declare function CheckboxField(props: CheckboxFieldProps): react_jsx_runtime.JSX.Element | null;
1410
+
1411
+ declare function DateField(props: DateFieldProps): react_jsx_runtime.JSX.Element | null;
1412
+
1413
+ declare function CascadeDateField(props: CascadeDateFieldProps): react_jsx_runtime.JSX.Element | null;
1414
+
1415
+ declare function AttachmentField(props: AttachmentFieldProps): react_jsx_runtime.JSX.Element | null;
1416
+
1417
+ declare function ImageField(props: ImageFieldProps): react_jsx_runtime.JSX.Element | null;
1418
+
1419
+ declare function SubFormField(props: SubFormFieldProps): react_jsx_runtime.JSX.Element | null;
1420
+
1421
+ declare function UserSelectField(props: UserSelectFieldProps): react_jsx_runtime.JSX.Element | null;
1422
+
1423
+ declare function DepartmentSelectField(props: DepartmentSelectFieldProps): react_jsx_runtime.JSX.Element | null;
1424
+
1425
+ declare function CascadeSelectField(props: CascadeSelectFieldProps): react_jsx_runtime.JSX.Element | null;
1426
+
1427
+ declare function AddressField(props: AddressFieldProps): react_jsx_runtime.JSX.Element | null;
1428
+
1429
+ declare function AssociationFormField(props: AssociationFormFieldProps): react_jsx_runtime.JSX.Element | null;
1430
+
1431
+ interface RichTextEditorCoreProps {
1432
+ value?: string;
1433
+ onChange?: (value: string) => void;
1434
+ disabled?: boolean;
1435
+ placeholder?: string;
1436
+ rows?: number;
1437
+ maxLength?: number;
1438
+ height?: number | string;
1439
+ toolbarConfig?: EditorFieldProps['toolbarConfig'];
1440
+ uploadBucketName?: string;
1441
+ maxImageSize?: number;
1442
+ allowedImageTypes?: string[];
1443
+ fontFamilies?: EditorChoiceOption[];
1444
+ fontSizes?: EditorChoiceOption[];
1445
+ colorPresets?: string[];
1446
+ api?: Partial<FormRuntimeApi>;
1447
+ inputClassName?: string;
1448
+ fieldId?: string;
1449
+ mobile?: boolean;
1450
+ }
1451
+ declare function RichTextEditorCore({ value, onChange, disabled, inputClassName, placeholder, rows, maxLength, height, toolbarConfig, uploadBucketName, maxImageSize, allowedImageTypes, fontFamilies, fontSizes, colorPresets, api, fieldId, mobile, }: RichTextEditorCoreProps): react_jsx_runtime.JSX.Element;
1452
+ declare function EditorField(props: EditorFieldProps): react_jsx_runtime.JSX.Element | null;
1453
+
1454
+ declare function SerialNumberField(props: SerialNumberFieldProps): react_jsx_runtime.JSX.Element | null;
1455
+
1456
+ declare function LocationField(props: LocationFieldProps): react_jsx_runtime.JSX.Element | null;
1457
+
1458
+ declare function DigitalSignatureField(props: DigitalSignatureFieldProps): react_jsx_runtime.JSX.Element | null;
1459
+
1460
+ declare function JSONField(props: JSONFieldProps): react_jsx_runtime.JSX.Element | null;
1461
+
1462
+ interface FormGridProps {
1463
+ columns?: 1 | 2 | 3 | 4;
1464
+ gap?: number | string;
1465
+ columnGap?: number | string;
1466
+ rowGap?: number | string;
1467
+ columnRatios?: number[];
1468
+ className?: string;
1469
+ children: React__default.ReactNode;
1470
+ }
1471
+ declare function FormGrid({ columns, gap, columnGap, rowGap, columnRatios, className, children, }: FormGridProps): react_jsx_runtime.JSX.Element;
1472
+
1473
+ interface FormTabItem {
1474
+ key: string;
1475
+ label: string;
1476
+ children: React__default.ReactNode;
1477
+ }
1478
+ interface FormTabsProps {
1479
+ items: FormTabItem[];
1480
+ defaultActiveKey?: string;
1481
+ className?: string;
1482
+ tabClassName?: string;
1483
+ }
1484
+ declare function FormTabs({ items, defaultActiveKey, className, tabClassName }: FormTabsProps): react_jsx_runtime.JSX.Element;
1485
+
1486
+ interface FormStepItem {
1487
+ key: string;
1488
+ title: string;
1489
+ description?: string;
1490
+ children: React__default.ReactNode;
1491
+ }
1492
+ interface FormStepsProps {
1493
+ items: FormStepItem[];
1494
+ className?: string;
1495
+ onStepChange?: (step: number) => void;
1496
+ }
1497
+ declare function FormSteps({ items, className, onStepChange }: FormStepsProps): react_jsx_runtime.JSX.Element;
1498
+
1499
+ interface FormSummaryProps {
1500
+ className?: string;
1501
+ labelClassName?: string;
1502
+ valueClassName?: string;
1503
+ columns?: 1 | 2 | 3;
1504
+ fields?: string[];
1505
+ }
1506
+ declare function FormSummary({ className, labelClassName, valueClassName, columns, fields, }: FormSummaryProps): react_jsx_runtime.JSX.Element;
1507
+
1508
+ interface UseFormEngineReturn {
1509
+ formData: Record<string, any>;
1510
+ setFieldValue: (fieldId: string, value: any) => void;
1511
+ getFieldValue: (fieldId: string) => any;
1512
+ getFormData: () => Record<string, any>;
1513
+ validateAll: () => Promise<boolean>;
1514
+ resetForm: () => void;
1515
+ mode: string;
1516
+ fieldBehaviors: Record<string, FieldBehavior>;
1517
+ fieldErrors: Record<string, string>;
1518
+ }
1519
+ declare function useFormEngine(schema: FormSchema, config: FormEngineConfig): UseFormEngineReturn;
1520
+
1521
+ interface UseFormDataReturn {
1522
+ formData: Record<string, any>;
1523
+ setFieldValue: (fieldId: string, value: any) => void;
1524
+ getFieldValue: (fieldId: string) => any;
1525
+ getFormData: () => Record<string, any>;
1526
+ resetForm: () => void;
1527
+ dirtyFields: Set<string>;
1528
+ }
1529
+ declare function useFormData(initialValues?: Record<string, any>): UseFormDataReturn;
1530
+
1531
+ interface UseFieldBehaviorOptions {
1532
+ fieldId: string;
1533
+ permissions?: Record<string, FieldBehavior>;
1534
+ effects?: FormEffect[];
1535
+ formData: Record<string, any>;
1536
+ defaultBehavior?: FieldBehavior;
1537
+ }
1538
+ /**
1539
+ * Computes the final behavior for a field.
1540
+ * Priority: permissions > effects > defaultBehavior > 'NORMAL'
1541
+ */
1542
+ declare function useFieldBehavior({ fieldId, permissions, effects, formData, defaultBehavior, }: UseFieldBehaviorOptions): FieldBehavior;
1543
+
1544
+ interface SubmitConfig {
1545
+ beforeSubmit?: (values: Record<string, any>) => Promise<boolean | void>;
1546
+ afterSubmit?: (response: any) => Promise<void>;
1547
+ submitSuccessMode?: 'redirect' | 'stay' | 'callback';
1548
+ redirectUrl?: string;
1549
+ }
1550
+ interface UseFormSubmitReturn {
1551
+ submit: (formData: Record<string, any>, validateFn: () => Promise<boolean>) => Promise<void>;
1552
+ isSubmitting: boolean;
1553
+ submitError: string | null;
1554
+ }
1555
+ declare function useFormSubmit(config?: SubmitConfig): UseFormSubmitReturn;
1556
+
1557
+ interface DeviceDetectResult {
1558
+ isMobile: boolean;
1559
+ }
1560
+ declare function useDeviceDetect(): DeviceDetectResult;
1561
+
1562
+ interface UseFieldPermissionOptions {
1563
+ viewPermissions?: ViewPermissionSummary;
1564
+ processDefinition?: ProcessDefinition;
1565
+ currentTask?: ProcessTask;
1566
+ isApprover?: boolean;
1567
+ mode: 'readonly' | 'edit';
1568
+ }
1569
+ interface UseFieldPermissionReturn {
1570
+ fieldBehaviors: Record<string, FieldBehavior>;
1571
+ computeBehaviors: () => Record<string, FieldBehavior>;
1572
+ }
1573
+ /**
1574
+ * 字段权限计算 hook
1575
+ * 根据不同场景(普通详情、流程审批等)计算字段行为映射
1576
+ */
1577
+ declare function useFieldPermission(options: UseFieldPermissionOptions): UseFieldPermissionReturn;
1578
+
1579
+ interface UseFormDetailOptions {
1580
+ formUuid: string;
1581
+ appType: string;
1582
+ formInstanceId: string;
1583
+ fieldIds?: readonly string[];
1584
+ onPermissionDenied?: () => void;
1585
+ }
1586
+ interface UseFormDetailReturn {
1587
+ loading: boolean;
1588
+ mode: 'readonly' | 'edit';
1589
+ formData: Record<string, any> | null;
1590
+ instanceInfo: FormInstanceData | null;
1591
+ permissions: ViewPermissionSummary | null;
1592
+ fieldBehaviors: Record<string, FieldBehavior>;
1593
+ switchToEdit: () => void;
1594
+ switchToReadonly: () => void;
1595
+ saveChanges: (values: Record<string, any>) => Promise<boolean>;
1596
+ deleteInstance: () => Promise<boolean>;
1597
+ canEdit: boolean;
1598
+ canDelete: boolean;
1599
+ canViewChangeRecords: boolean;
1600
+ }
1601
+ /**
1602
+ * 详情页核心逻辑 hook
1603
+ * 处理数据加载、权限计算、模式切换、保存和删除
1604
+ */
1605
+ declare function useFormDetail(options: UseFormDetailOptions): UseFormDetailReturn;
1606
+
1607
+ interface UseProcessDetailOptions {
1608
+ formUuid: string;
1609
+ appType: string;
1610
+ formInstanceId: string;
1611
+ fieldIds?: readonly string[];
1612
+ }
1613
+ interface UseProcessDetailReturn {
1614
+ loading: boolean;
1615
+ processInfo: ProcessBasicInfo | null;
1616
+ processStatus: ProcessStatus | null;
1617
+ currentTask: ProcessTask | null;
1618
+ progressList: ProcessTask[];
1619
+ formData: Record<string, any> | null;
1620
+ instanceInfo: FormInstanceData | null;
1621
+ accessDenied: boolean;
1622
+ loadError: string | null;
1623
+ isApprover: boolean;
1624
+ activeActions: ProcessAction[];
1625
+ fieldBehaviors: Record<string, FieldBehavior>;
1626
+ mode: 'readonly' | 'edit';
1627
+ isOriginatorReturn: boolean;
1628
+ isProcessCompleted: boolean;
1629
+ canWithdraw: boolean;
1630
+ canEdit: boolean;
1631
+ canDelete: boolean;
1632
+ canViewWorkflow: boolean;
1633
+ canViewChangeRecords: boolean;
1634
+ dataVersion: number;
1635
+ switchToEdit: () => void;
1636
+ switchToReadonly: () => void;
1637
+ saveChanges: (values: Record<string, any>) => Promise<boolean>;
1638
+ deleteInstance: () => Promise<boolean>;
1639
+ refreshDetail: () => Promise<void>;
1640
+ refreshProgress: () => Promise<void>;
1641
+ }
1642
+ /**
1643
+ * 流程详情核心逻辑 hook
1644
+ */
1645
+ declare function useProcessDetail(options: UseProcessDetailOptions): UseProcessDetailReturn;
1646
+
1647
+ interface UseApprovalActionsOptions {
1648
+ formInstanceId: string;
1649
+ formUuid: string;
1650
+ appType: string;
1651
+ currentTaskId?: string;
1652
+ onActionComplete?: (action: string) => Promise<void> | void;
1653
+ getFormValues?: () => Record<string, any>;
1654
+ }
1655
+ interface UseApprovalActionsReturn {
1656
+ approve: (comments?: string) => Promise<boolean>;
1657
+ reject: (comments?: string) => Promise<boolean>;
1658
+ transfer: (userId: string, reason?: string) => Promise<boolean>;
1659
+ returnTo: (nodeId: string, reason?: string) => Promise<boolean>;
1660
+ withdraw: (reason?: string) => Promise<boolean>;
1661
+ save: () => Promise<boolean>;
1662
+ resubmit: (comments?: string, selectedApprovers?: InitiatorSelectedApprovers) => Promise<boolean>;
1663
+ callbackTask: (payload?: Record<string, any>) => Promise<boolean>;
1664
+ isLoading: boolean;
1665
+ currentAction: string | null;
1666
+ returnableNodes: ReturnableNode[];
1667
+ returnPolicy: ReturnPolicy | null;
1668
+ loadReturnableNodes: () => Promise<ReturnableNode[]>;
1669
+ }
1670
+ /**
1671
+ * 审批操作逻辑 hook
1672
+ */
1673
+ declare function useApprovalActions(options: UseApprovalActionsOptions): UseApprovalActionsReturn;
1674
+
1675
+ interface UseChangeRecordsOptions {
1676
+ formUuid: string;
1677
+ appType: string;
1678
+ formInstanceId: string;
1679
+ pageSize?: number;
1680
+ autoLoad?: boolean;
1681
+ }
1682
+ interface UseChangeRecordsReturn {
1683
+ records: ChangeRecord[];
1684
+ loading: boolean;
1685
+ total: number;
1686
+ page: number;
1687
+ loadMore: () => Promise<void>;
1688
+ refresh: () => Promise<void>;
1689
+ hasMore: boolean;
1690
+ }
1691
+ /**
1692
+ * 变更记录加载 hook
1693
+ */
1694
+ declare function useChangeRecords(options: UseChangeRecordsOptions): UseChangeRecordsReturn;
1695
+
1696
+ interface UseFormNavigationOptions {
1697
+ appType: string;
1698
+ formUuid: string;
1699
+ formType?: 'form' | 'process';
1700
+ mode?: 'redirect' | 'stay' | 'callback';
1701
+ redirectDelay?: number;
1702
+ basePath?: string;
1703
+ onStay?: (formInstId: string) => void;
1704
+ }
1705
+ interface UseFormNavigationReturn {
1706
+ navigateToDetail: (formInstId: string) => void;
1707
+ navigateToProcessDetail: (formInstId: string) => void;
1708
+ handlePostSubmit: (formInstId: string) => void;
1709
+ isRedirecting: boolean;
1710
+ countdown: number;
1711
+ cancelRedirect: () => void;
1712
+ }
1713
+ declare function useFormNavigation(options: UseFormNavigationOptions): UseFormNavigationReturn;
1714
+
1715
+ interface UseDraftStorageOptions {
1716
+ appType: string;
1717
+ formUuid: string;
1718
+ autoRestore?: boolean;
1719
+ }
1720
+ interface UseDraftStorageReturn {
1721
+ hasDraft: boolean;
1722
+ draftData: Record<string, any> | null;
1723
+ draftTimestamp: number | null;
1724
+ saveDraft: (data: Record<string, any>) => void;
1725
+ restoreDraft: () => Record<string, any> | null;
1726
+ clearDraft: () => void;
1727
+ }
1728
+ /**
1729
+ * 草稿暂存 hook
1730
+ * 使用 localStorage 存储表单草稿数据
1731
+ */
1732
+ declare function useDraftStorage(options: UseDraftStorageOptions): UseDraftStorageReturn;
1733
+
1734
+ /**
1735
+ * 类型安全的表单 Schema 定义辅助函数
1736
+ * 提供 TypeScript 类型推导和编辑器智能提示
1737
+ */
1738
+ declare function defineFormSchema(schema: FormSchema): FormSchema;
1739
+
1740
+ declare const extractFormValues: (formInstance: unknown, fieldIds?: readonly string[]) => Record<string, any> | null;
1741
+
1742
+ declare function decodeHtmlEntities(value: string): string;
1743
+ declare function sanitizeRichTextHtml(value?: string): string;
1744
+ declare function normalizeRichTextHtml(value?: unknown): string;
1745
+
1746
+ declare function normalizeOperation(operation?: string): string;
1747
+ declare function hasViewOperation(operations: string[] | undefined, expected: string): boolean;
1748
+ declare function normalizeFieldBehaviors(permissions: ViewPermissionSummary | null | undefined, mode: 'readonly' | 'edit'): Record<string, FieldBehavior>;
1749
+ declare function hasViewPermission(permissions: ViewPermissionSummary | null | undefined): boolean;
1750
+
1751
+ interface FormSummaryCardProps {
1752
+ title?: string;
1753
+ formInstanceId?: string;
1754
+ creator?: {
1755
+ name: string;
1756
+ avatar?: string;
1757
+ department?: string;
1758
+ };
1759
+ createdAt?: string;
1760
+ status?: {
1761
+ label: string;
1762
+ tone: 'brand' | 'success' | 'danger' | 'neutral' | 'warning';
1763
+ };
1764
+ className?: string;
1765
+ children?: React__default.ReactNode;
1766
+ }
1767
+ declare const FormSummaryCard: React__default.FC<FormSummaryCardProps>;
1768
+
1769
+ interface ChangeRecordsProps {
1770
+ records?: ChangeRecord[];
1771
+ loading?: boolean;
1772
+ defaultExpanded?: boolean;
1773
+ hasMore?: boolean;
1774
+ onLoadMore?: () => void;
1775
+ onExpand?: () => void;
1776
+ className?: string;
1777
+ renderItem?: (record: ChangeRecord) => React__default.ReactNode;
1778
+ }
1779
+ declare const ChangeRecords: React__default.FC<ChangeRecordsProps>;
1780
+
1781
+ interface RecordChangePanelProps {
1782
+ records?: ChangeRecord[];
1783
+ loading?: boolean;
1784
+ total?: number;
1785
+ page?: number;
1786
+ pageSize?: number;
1787
+ defaultExpanded?: boolean;
1788
+ hasMore?: boolean;
1789
+ onLoadMore?: () => void;
1790
+ onRefresh?: () => void;
1791
+ onExpand?: () => void;
1792
+ onPageChange?: (page: number, pageSize: number) => void;
1793
+ className?: string;
1794
+ }
1795
+ declare const RecordChangePanel: React__default.FC<RecordChangePanelProps>;
1796
+
1797
+ interface ApprovalTimelineProps {
1798
+ tasks: ProcessTask[];
1799
+ className?: string;
1800
+ renderNode?: (task: ProcessTask, index: number) => React__default.ReactNode;
1801
+ showRemarks?: boolean;
1802
+ compactMode?: boolean;
1803
+ showApproverInfo?: boolean;
1804
+ }
1805
+ declare const ApprovalTimeline: React__default.FC<ApprovalTimelineProps>;
1806
+
1807
+ interface ApprovalActionBarProps {
1808
+ actions: ProcessAction[];
1809
+ onApprove?: (comments?: string) => Promise<void> | void;
1810
+ onReject?: (comments?: string) => Promise<void> | void;
1811
+ onTransfer?: (userId: string, reason?: string) => Promise<void> | void;
1812
+ onReturn?: (nodeId: string, reason?: string) => Promise<void> | void;
1813
+ onWithdraw?: (reason?: string) => Promise<void> | void;
1814
+ onSave?: () => Promise<void> | void;
1815
+ onResubmit?: (comments?: string) => Promise<void> | void;
1816
+ onCallback?: () => Promise<void> | void;
1817
+ returnableNodes?: ReturnableNode[];
1818
+ returnPolicy?: ReturnPolicy | null;
1819
+ onLoadReturnableNodes?: () => Promise<ReturnableNode[] | void> | void;
1820
+ renderTransferSelector?: (props: {
1821
+ value?: string;
1822
+ onChange: (userId: string) => void;
1823
+ }) => React__default.ReactNode;
1824
+ renderReturnNodeLabel?: (node: ReturnableNode) => React__default.ReactNode;
1825
+ renderActionModalExtra?: (action: ProcessAction) => React__default.ReactNode;
1826
+ maxMobileButtons?: number;
1827
+ className?: string;
1828
+ inDrawer?: boolean;
1829
+ maxWidth?: number | string;
1830
+ }
1831
+ declare const ApprovalActionBar: React__default.FC<ApprovalActionBarProps>;
1832
+
1833
+ interface ApprovalActionsProps {
1834
+ actions: ProcessAction[];
1835
+ onApprove?: (comments?: string) => Promise<void> | void;
1836
+ onReject?: (comments?: string) => Promise<void> | void;
1837
+ onTransfer?: () => void;
1838
+ onReturn?: () => void;
1839
+ onWithdraw?: (reason?: string) => Promise<void> | void;
1840
+ onSave?: () => Promise<void> | void;
1841
+ layout?: 'horizontal' | 'vertical';
1842
+ maxVisible?: number;
1843
+ className?: string;
1844
+ }
1845
+ declare const ApprovalActions: React__default.FC<ApprovalActionsProps>;
1846
+
1847
+ interface ActionConfig {
1848
+ key: string;
1849
+ label: string;
1850
+ type?: 'primary' | 'default' | 'danger' | 'text';
1851
+ onClick: () => void | Promise<void>;
1852
+ loading?: boolean;
1853
+ disabled?: boolean;
1854
+ visible?: boolean;
1855
+ confirm?: {
1856
+ title: string;
1857
+ content: string;
1858
+ okText?: string;
1859
+ cancelText?: string;
1860
+ };
1861
+ icon?: React__default.ReactNode;
1862
+ priority?: number;
1863
+ placement?: 'left' | 'right';
1864
+ }
1865
+ interface FormActionBarProps {
1866
+ actions: ActionConfig[];
1867
+ position?: 'bottom-fixed' | 'inline';
1868
+ className?: string;
1869
+ }
1870
+ declare const FormActionBar: React__default.FC<FormActionBarProps>;
1871
+
1872
+ interface StickyActionBarProps {
1873
+ actions: ActionConfig[];
1874
+ className?: string;
1875
+ maxMobileButtons?: number;
1876
+ layoutMode?: 'default' | 'approval';
1877
+ align?: 'left' | 'center' | 'right';
1878
+ inDrawer?: boolean;
1879
+ maxWidth?: number | string;
1880
+ position?: 'sticky' | 'fixed' | 'inline';
1881
+ surface?: 'default' | 'transparent';
1882
+ }
1883
+ declare const StickyActionBar: React__default.FC<StickyActionBarProps>;
1884
+
1885
+ interface RuntimePageShellProps {
1886
+ children: React__default.ReactNode;
1887
+ actions?: React__default.ReactNode;
1888
+ loading?: boolean;
1889
+ loadingTip?: string;
1890
+ accessDenied?: boolean;
1891
+ error?: React__default.ReactNode;
1892
+ empty?: React__default.ReactNode;
1893
+ className?: string;
1894
+ contentClassName?: string;
1895
+ maxWidth?: number | string;
1896
+ inDrawer?: boolean;
1897
+ }
1898
+ declare const RuntimePageShell: React__default.FC<RuntimePageShellProps>;
1899
+
1900
+ interface SummaryPanelMetaItem {
1901
+ key: string;
1902
+ label: string;
1903
+ value?: React__default.ReactNode;
1904
+ icon?: React__default.ReactNode;
1905
+ }
1906
+ interface SummaryPanelProps {
1907
+ title?: React__default.ReactNode;
1908
+ eyebrow?: React__default.ReactNode;
1909
+ showEyebrow?: boolean;
1910
+ status?: StatusMeta;
1911
+ creator?: {
1912
+ name?: string;
1913
+ avatar?: string;
1914
+ department?: string;
1915
+ };
1916
+ createdAt?: React__default.ReactNode;
1917
+ metaItems?: SummaryPanelMetaItem[];
1918
+ className?: string;
1919
+ children?: React__default.ReactNode;
1920
+ }
1921
+ declare const SummaryPanel: React__default.FC<SummaryPanelProps>;
1922
+
1923
+ interface DraftManagerProps {
1924
+ hasDraft: boolean;
1925
+ draftTimestamp?: number | null;
1926
+ onRestore: () => void;
1927
+ onDiscard: () => void;
1928
+ className?: string;
1929
+ }
1930
+ declare const DraftManager: React__default.FC<DraftManagerProps>;
1931
+
1932
+ interface ProcessPreviewProps {
1933
+ open: boolean;
1934
+ onClose: () => void;
1935
+ onConfirm: () => void;
1936
+ routes: ProcessRoute[];
1937
+ loading?: boolean;
1938
+ }
1939
+ declare const ProcessPreview: React__default.FC<ProcessPreviewProps>;
1940
+
1941
+ type DetailRenderer = (props: {
1942
+ record: any;
1943
+ formInstanceId?: string;
1944
+ onClose: () => void;
1945
+ }) => React__default.ReactNode;
1946
+ type DetailPageUrlBuilder = (props: {
1947
+ record: any;
1948
+ formInstanceId: string;
1949
+ }) => string | undefined;
1950
+ type SubmitRenderer = (props: {
1951
+ onClose: () => void;
1952
+ onSubmitted: () => void;
1953
+ }) => React__default.ReactNode;
1954
+ interface DataManagementRowAction {
1955
+ key: string;
1956
+ label: string;
1957
+ danger?: boolean;
1958
+ onClick: (record: any) => void;
1959
+ }
1960
+ interface DataManagementListProps {
1961
+ appType: string;
1962
+ formUuid: string;
1963
+ detailBasePath?: string;
1964
+ menuFormUuid?: string;
1965
+ readonly?: boolean;
1966
+ fullHeight?: boolean;
1967
+ configScope?: DataManagementConfigScope;
1968
+ title?: string;
1969
+ formTitle?: string;
1970
+ formType?: string;
1971
+ forcedConfig?: DataManagementConfig;
1972
+ showForcedConfig?: boolean;
1973
+ detailRenderer?: DetailRenderer;
1974
+ detailPageUrlBuilder?: DetailPageUrlBuilder;
1975
+ submitRenderer?: SubmitRenderer;
1976
+ requestOverride?: FormRuntimeApi['request'] | FormRuntimeApiConfig;
1977
+ rowActions?: DataManagementRowAction[];
1978
+ }
1979
+ declare const DataManagementList: React__default.FC<DataManagementListProps>;
1980
+
1981
+ interface SubmitSuccessInfo {
1982
+ formInstanceId: string;
1983
+ message?: string;
1984
+ }
1985
+ interface FormSubmitTemplateProps {
1986
+ schema: FormSchema;
1987
+ config: FormEngineConfig;
1988
+ formType?: 'form' | 'process';
1989
+ submitSuccessMode?: 'redirect' | 'stay' | 'continue';
1990
+ enableDraft?: boolean;
1991
+ enableProcessPreview?: boolean;
1992
+ enableSubmissionDepartmentSelect?: boolean;
1993
+ departmentOptions?: OptionItem[];
1994
+ header?: React__default.ReactNode;
1995
+ footer?: React__default.ReactNode;
1996
+ beforeForm?: React__default.ReactNode;
1997
+ afterForm?: React__default.ReactNode;
1998
+ renderDepartmentSelector?: (props: {
1999
+ value?: string;
2000
+ onChange: (value?: string) => void;
2001
+ options: OptionItem[];
2002
+ }) => React__default.ReactNode;
2003
+ renderForm?: (props: {
2004
+ schema: FormSchema;
2005
+ config: FormEngineConfig;
2006
+ }) => React__default.ReactNode;
2007
+ renderSuccess?: (info: SubmitSuccessInfo) => React__default.ReactNode;
2008
+ onSubmitSuccess?: (formInstId: string) => void;
2009
+ initialValues?: Record<string, any>;
2010
+ inDrawer?: boolean;
2011
+ }
2012
+ declare const FormSubmitTemplate: React__default.FC<FormSubmitTemplateProps>;
2013
+
2014
+ interface FormDetailTemplateProps {
2015
+ schema: FormSchema;
2016
+ formUuid: string;
2017
+ appType: string;
2018
+ formInstanceId: string;
2019
+ enableEdit?: boolean;
2020
+ enableDelete?: boolean;
2021
+ enableChangeRecords?: boolean;
2022
+ header?: React__default.ReactNode;
2023
+ footer?: React__default.ReactNode;
2024
+ renderSummary?: (data: FormInstanceData) => React__default.ReactNode;
2025
+ renderActions?: (actions: ActionConfig[]) => React__default.ReactNode;
2026
+ onDelete?: () => void;
2027
+ onSave?: (values: Record<string, any>) => void;
2028
+ inDrawer?: boolean;
2029
+ }
2030
+ declare const FormDetailTemplate: React__default.FC<FormDetailTemplateProps>;
2031
+
2032
+ interface ProcessDetailTemplateProps {
2033
+ schema: FormSchema;
2034
+ formUuid: string;
2035
+ appType: string;
2036
+ formInstanceId: string;
2037
+ enableEdit?: boolean;
2038
+ enableDelete?: boolean;
2039
+ enableChangeRecords?: boolean;
2040
+ showApproverInfo?: boolean;
2041
+ header?: React__default.ReactNode;
2042
+ renderTimeline?: (tasks: ProcessTask[]) => React__default.ReactNode;
2043
+ renderActions?: (actions: ProcessAction[]) => React__default.ReactNode;
2044
+ renderFooterActions?: (actions: ActionConfig[]) => React__default.ReactNode;
2045
+ renderTransferSelector?: (props: {
2046
+ value?: string;
2047
+ onChange: (userId: string) => void;
2048
+ }) => React__default.ReactNode;
2049
+ renderReturnNodeLabel?: (node: ReturnableNode) => React__default.ReactNode;
2050
+ renderActionModalExtra?: (action: ProcessAction) => React__default.ReactNode;
2051
+ beforeForm?: React__default.ReactNode;
2052
+ afterForm?: React__default.ReactNode;
2053
+ onActionComplete?: (action: string) => Promise<void> | void;
2054
+ onSave?: (values: Record<string, any>) => Promise<void> | void;
2055
+ onDelete?: () => Promise<void> | void;
2056
+ inDrawer?: boolean;
2057
+ }
2058
+ declare const ProcessDetailTemplate: React__default.FC<ProcessDetailTemplateProps>;
2059
+
2060
+ interface StandardFormPageProps {
2061
+ schema: FormSchema;
2062
+ mode?: StandardFormPageMode;
2063
+ initialValues?: Record<string, any> | null;
2064
+ permissions?: FormEngineConfig['permissions'];
2065
+ formUuid?: string;
2066
+ appType?: string;
2067
+ formInstanceId?: string;
2068
+ onSubmit?: (values: Record<string, any>) => Promise<any>;
2069
+ onSubmitSuccess?: (formInstId: string) => void;
2070
+ inDrawer?: boolean;
2071
+ }
2072
+ declare const StandardFormPage: React__default.FC<StandardFormPageProps>;
2073
+
2074
+ interface LowcodePageRuntimeContext {
2075
+ appType?: string;
2076
+ mode?: string;
2077
+ route?: Record<string, any>;
2078
+ bridge?: {
2079
+ invoke?: (method: string, payload?: any) => Promise<any>;
2080
+ };
2081
+ [key: string]: any;
2082
+ }
2083
+ interface LowcodePageRendererProps {
2084
+ schema: LowcodePageSchema;
2085
+ context?: LowcodePageRuntimeContext;
2086
+ }
2087
+ declare function LowcodePageRenderer({ schema, context }: LowcodePageRendererProps): react_jsx_runtime.JSX.Element;
2088
+
2089
+ interface PageSkeletonProps {
2090
+ type: 'submit' | 'detail' | 'process';
2091
+ }
2092
+ declare const PageSkeleton: React__default.FC<PageSkeletonProps>;
2093
+
2094
+ export { type ActionConfig, AddressField, type AddressFieldProps, type AddressValue, ApprovalActionBar, type ApprovalActionBarProps, type ApprovalActionType, ApprovalActions, type ApprovalActionsProps, type ApprovalPermission, ApprovalTimeline, type ApprovalTimelineProps, type ApproveParams, type AssociationFormConfig, AssociationFormField, type AssociationFormFieldProps, type AssociationValue, AttachmentField, type AttachmentFieldProps, type AttachmentItem, type BaseFieldProps, type BaseLayoutNode, CascadeDateField, type CascadeDateFieldProps, CascadeSelectField, type CascadeSelectFieldProps, type ChangeRecord, type ChangeRecordListResponse, type ChangeRecordQueryParams, ChangeRecords, type ChangeRecordsProps, CheckboxField, type CheckboxFieldProps, ComponentRegistryContext, type ComponentRegistryContextValue, ComponentRegistryProvider, type DataFilter, type DataLinkageCondition, type DataLinkageConfig, type DataManagementConfig, type DataManagementConfigScope, type DataManagementDensity, type DataManagementField, type DataManagementFilterGroup, type DataManagementFilterRule, DataManagementList, type DataManagementListProps, type DataManagementListResult, type DataManagementQuery, type DataManagementRowAction, type DataManagementSort, DateField, type DateFieldProps, type DateRangeRestriction, type DateRestrictionConfig, type DateShortcutConfig, type DateShortcutType, type DefaultValueLinkageConfig, DepartmentSelectField, type DepartmentSelectFieldProps, type DepartmentTreeNode, type DeviceDetectResult, DigitalSignatureField, type DigitalSignatureFieldProps, type DigitalSignatureValue, DraftManager, type DraftManagerProps, type EditorChoiceOption, EditorField, type EditorFieldProps, type EditorToolbarAction, UserSelectField as EmployeeSelectField, type FieldBehavior, type FieldDefinition, type FieldLayoutNode, FieldWrapper, type FieldWrapperProps, FormActionBar, type FormActionBarProps, FormActions, type FormActionsProps, type FormAppearanceConfig, FormContainer, type FormContainerProps, FormContext, type FormContextValue, type FormDataDeleteParams, type FormDataQueryParams, FormDetailTemplate, type FormDetailTemplateProps, type FormEffect, type FormEffectAction, type FormEffectCondition, type FormEffectConditionOperator, type FormEngineConfig, type FormEngineMode, FormGrid, type FormGridProps, type FormInstanceData, type FormLayoutNode, FormProvider, type FormProviderProps, FormRenderer, type FormRendererProps, type FormRuntimeApi, type FormRuntimeApiConfig, type FormRuntimeConfig, type FormSchema, FormSection, type FormSectionProps, FormShell, type FormShellProps, type FormStepItem, FormSteps, type FormStepsProps, FormSubmitTemplate, type FormSubmitTemplateProps, FormSummary, FormSummaryCard, type FormSummaryCardProps, type FormSummaryProps, type FormTabItem, FormTabs, type FormTabsProps, type FormTemplateConfig, type GridLayoutCell, type GridLayoutNode, ImageField, type ImageFieldProps, type InitiatorSelectCandidate, type InitiatorSelectRequirement, type InitiatorSelectScope, type InitiatorSelectedApprovers, JSONField, type JSONFieldProps, type LayoutVisibleWhen, type LinkedFormOptionConfig, LocationField, type LocationFieldProps, type LocationValue, type LowcodePageMeta, type LowcodePageNode, type LowcodePageNodeType, LowcodePageRenderer, type LowcodePageRendererProps, type LowcodePageRuntimeContext, type LowcodePageSchema, MultiSelectField, type MultiSelectFieldProps, NumberField, type NumberFieldProps, type OptionItem, type OptionSourceConfig, type OptionSourceType, PROCESS_STATUS_META, PageSkeleton, type PageSkeletonProps, type PeopleShortcutConfig, type PeopleShortcutType, type PreviewParams, type ProcessAction, type ProcessBasicInfo, type ProcessDefinition, ProcessDetailTemplate, type ProcessDetailTemplateProps, type ProcessNodeType, ProcessPreview, type ProcessPreviewProps, type ProcessRoute, type ProcessStatus, type ProcessTask, RadioField, type RadioFieldProps, RecordChangePanel, type RecordChangePanelProps, type ResubmitParams, type ReturnParams, type ReturnPolicy, type ReturnableNode, type ReturnableNodeResult, RichTextEditorCore, type RichTextEditorCoreProps, type RuntimeDataQueryParams, type RuntimeDataQueryResult, RuntimePageShell, type RuntimePageShellProps, type RuntimeRequestConfig, type RuntimeResponse, type SaveTaskParams, type SectionLayoutNode, SelectField, type SelectFieldProps, SerialNumberField, type SerialNumberFieldProps, type SignaturePoint, StandardFormPage, type StandardFormPageMode, type StandardFormPageProps, type StatusMeta, type StepLayoutItem, type StepsLayoutNode, StickyActionBar, type StickyActionBarProps, type SubFormColumn, SubFormField, type SubFormFieldProps, type SubmitConfig, type SubmitSuccessInfo, SummaryPanel, type SummaryPanelMetaItem, type SummaryPanelProps, TASK_STATUS_META, type TabLayoutItem, type TabsLayoutNode, type TaskStatus, TextAreaField, type TextAreaFieldProps, TextField, type TextFieldProps, type TextShortcutConfig, type TextShortcutType, TextAreaField as TextareaField, type TransferParams, type UseApprovalActionsOptions, type UseApprovalActionsReturn, type UseChangeRecordsOptions, type UseChangeRecordsReturn, type UseDraftStorageOptions, type UseDraftStorageReturn, type UseFieldBehaviorOptions, type UseFieldPermissionOptions, type UseFieldPermissionReturn, type UseFormDataReturn, type UseFormDetailOptions, type UseFormDetailReturn, type UseFormEngineReturn, type UseFormNavigationOptions, type UseFormNavigationReturn, type UseFormSubmitReturn, type UseProcessDetailOptions, type UseProcessDetailReturn, type UserDisplayFormat, type UserItem, UserSelectField, type UserSelectFieldProps, VALIDATION_PRESETS, type ValidationPreset, type ValidationRule, type ViewPermissionQueryParams, type ViewPermissionSummary, type WithdrawParams, advancedSearchDataManagement, batchApproveDataManagementRows, buildFilterPayload, checkUserApproval, createFormRuntimeApi, decodeHtmlEntities, defaultComponentRegistry, defineFormSchema, deleteDataManagementRows, deleteFormData, downloadDataManagementImportTemplate, evaluateEffects, exportDataManagementRows, extractFormValues, getChangeRecords, getDataManagementConfig, getDataManagementSchema, getDataManagementTransferRecords, getFormData, getInitiatorSelectCandidates, getInitiatorSelectRequirements, getProcessBasic, getProcessDefinition, getProcessProgress, getResubmitInitiatorSelectRequirements, getReturnableNodeResult, getReturnableNodes, getSystemFieldsForFormType, getViewPermission, handleApproval, hasViewOperation, hasViewPermission, importDataManagementRows, importPreviewDataManagementRows, normalizeColumnConfig, normalizeDataManagementFields, normalizeDataManagementList, normalizeFieldBehaviors, normalizeOperation, normalizeRichTextHtml, previewProcess, resolveDefaultValueLinkage, resolveOptions, resubmitTask, returnTask, sanitizeRichTextHtml, saveDataManagementConfig, saveTask, transferTask, triggerCallbackTask, useApprovalActions, useChangeRecords, useComponent, useDeviceDetect, useDraftStorage, useFieldBehavior, useFieldPermission, useFormContext, useFormData, useFormDetail, useFormEngine, useFormNavigation, useFormSubmit, useProcessDetail, validateAllFields, validateField, withdrawProcess };