weaver-e10-builder 1.6.12 → 1.6.14

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 (266) hide show
  1. package/dist/cli-register.d.ts +22 -0
  2. package/dist/cli-register.d.ts.map +1 -0
  3. package/dist/cli-register.js +352 -0
  4. package/dist/cli-register.js.map +1 -0
  5. package/dist/commands/actionflow.d.ts.map +1 -1
  6. package/dist/commands/actionflow.js +4 -0
  7. package/dist/commands/actionflow.js.map +1 -1
  8. package/dist/commands/designer-event.d.ts +3 -0
  9. package/dist/commands/designer-event.d.ts.map +1 -0
  10. package/dist/commands/designer-event.js +106 -0
  11. package/dist/commands/designer-event.js.map +1 -0
  12. package/dist/commands/designer-source.d.ts +3 -0
  13. package/dist/commands/designer-source.d.ts.map +1 -0
  14. package/dist/commands/designer-source.js +51 -0
  15. package/dist/commands/designer-source.js.map +1 -0
  16. package/dist/commands/form-browser-scope-rules.d.ts +2 -1
  17. package/dist/commands/form-browser-scope-rules.d.ts.map +1 -1
  18. package/dist/commands/form-browser-scope-rules.js +8 -4
  19. package/dist/commands/form-browser-scope-rules.js.map +1 -1
  20. package/dist/commands/form-browser-scope-tree.js +1 -1
  21. package/dist/commands/form-browser-scope-tree.js.map +1 -1
  22. package/dist/commands/form-field-linkage.d.ts.map +1 -1
  23. package/dist/commands/form-field-linkage.js +6 -11
  24. package/dist/commands/form-field-linkage.js.map +1 -1
  25. package/dist/commands/form-layout-detail-settings.d.ts +3 -0
  26. package/dist/commands/form-layout-detail-settings.d.ts.map +1 -0
  27. package/dist/commands/form-layout-detail-settings.js +36 -0
  28. package/dist/commands/form-layout-detail-settings.js.map +1 -0
  29. package/dist/commands/form-list-columns.d.ts.map +1 -1
  30. package/dist/commands/form-list-columns.js +258 -3
  31. package/dist/commands/form-list-columns.js.map +1 -1
  32. package/dist/commands/form-list-config.d.ts +9 -0
  33. package/dist/commands/form-list-config.d.ts.map +1 -0
  34. package/dist/commands/form-list-config.js +189 -0
  35. package/dist/commands/form-list-config.js.map +1 -0
  36. package/dist/commands/form-list-event.d.ts.map +1 -1
  37. package/dist/commands/form-list-event.js +2 -1
  38. package/dist/commands/form-list-event.js.map +1 -1
  39. package/dist/commands/form-list-filter.d.ts.map +1 -1
  40. package/dist/commands/form-list-filter.js +231 -3
  41. package/dist/commands/form-list-filter.js.map +1 -1
  42. package/dist/commands/form-list-hierarchy.d.ts.map +1 -1
  43. package/dist/commands/form-list-hierarchy.js +2 -1
  44. package/dist/commands/form-list-hierarchy.js.map +1 -1
  45. package/dist/commands/form-list-utils.d.ts.map +1 -1
  46. package/dist/commands/form-list-utils.js +4 -3
  47. package/dist/commands/form-list-utils.js.map +1 -1
  48. package/dist/commands/form-list.d.ts.map +1 -1
  49. package/dist/commands/form-list.js +2 -1
  50. package/dist/commands/form-list.js.map +1 -1
  51. package/dist/commands/form-nlist.d.ts.map +1 -1
  52. package/dist/commands/form-nlist.js +125 -1
  53. package/dist/commands/form-nlist.js.map +1 -1
  54. package/dist/commands/form-permission.d.ts.map +1 -1
  55. package/dist/commands/form-permission.js +743 -77
  56. package/dist/commands/form-permission.js.map +1 -1
  57. package/dist/commands/page-combination.d.ts +3 -0
  58. package/dist/commands/page-combination.d.ts.map +1 -0
  59. package/dist/commands/page-combination.js +86 -0
  60. package/dist/commands/page-combination.js.map +1 -0
  61. package/dist/commands/page-permission.d.ts +3 -0
  62. package/dist/commands/page-permission.d.ts.map +1 -0
  63. package/dist/commands/page-permission.js +46 -0
  64. package/dist/commands/page-permission.js.map +1 -0
  65. package/dist/index.js +19 -213
  66. package/dist/index.js.map +1 -1
  67. package/dist/services/actionflow/build_workflow_draft.d.ts.map +1 -1
  68. package/dist/services/actionflow/build_workflow_draft.js +8 -0
  69. package/dist/services/actionflow/build_workflow_draft.js.map +1 -1
  70. package/dist/services/actionflow/calendar_mapper.d.ts.map +1 -1
  71. package/dist/services/actionflow/calendar_mapper.js +7 -4
  72. package/dist/services/actionflow/calendar_mapper.js.map +1 -1
  73. package/dist/services/actionflow/component_registry.d.ts.map +1 -1
  74. package/dist/services/actionflow/component_registry.js +18 -2
  75. package/dist/services/actionflow/component_registry.js.map +1 -1
  76. package/dist/services/actionflow/components/action_eb_delete.js +1 -1
  77. package/dist/services/actionflow/components/action_eb_delete.js.map +1 -1
  78. package/dist/services/actionflow/components/action_eb_update.d.ts.map +1 -1
  79. package/dist/services/actionflow/components/action_eb_update.js +9 -1
  80. package/dist/services/actionflow/components/action_eb_update.js.map +1 -1
  81. package/dist/services/actionflow/components/approve_create.d.ts.map +1 -1
  82. package/dist/services/actionflow/components/approve_create.js +4 -3
  83. package/dist/services/actionflow/components/approve_create.js.map +1 -1
  84. package/dist/services/actionflow/components/document_actions.d.ts.map +1 -1
  85. package/dist/services/actionflow/components/document_actions.js +15 -48
  86. package/dist/services/actionflow/components/document_actions.js.map +1 -1
  87. package/dist/services/actionflow/components/enquiry_form.d.ts +0 -7
  88. package/dist/services/actionflow/components/enquiry_form.d.ts.map +1 -1
  89. package/dist/services/actionflow/components/enquiry_form.js +10 -54
  90. package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
  91. package/dist/services/actionflow/components/form_data_builder.d.ts +2 -0
  92. package/dist/services/actionflow/components/form_data_builder.d.ts.map +1 -1
  93. package/dist/services/actionflow/components/form_data_builder.js +53 -2
  94. package/dist/services/actionflow/components/form_data_builder.js.map +1 -1
  95. package/dist/services/actionflow/components/inner_mq_send.d.ts.map +1 -1
  96. package/dist/services/actionflow/components/inner_mq_send.js +8 -2
  97. package/dist/services/actionflow/components/inner_mq_send.js.map +1 -1
  98. package/dist/services/actionflow/components/send_message.d.ts.map +1 -1
  99. package/dist/services/actionflow/components/send_message.js +52 -1
  100. package/dist/services/actionflow/components/send_message.js.map +1 -1
  101. package/dist/services/actionflow/components/serverless_action.d.ts.map +1 -1
  102. package/dist/services/actionflow/components/serverless_action.js +39 -0
  103. package/dist/services/actionflow/components/serverless_action.js.map +1 -1
  104. package/dist/services/actionflow/components/simple_scheduler.d.ts.map +1 -1
  105. package/dist/services/actionflow/components/simple_scheduler.js +46 -12
  106. package/dist/services/actionflow/components/simple_scheduler.js.map +1 -1
  107. package/dist/services/actionflow/components/time_batch_trigger.js +4 -3
  108. package/dist/services/actionflow/components/time_batch_trigger.js.map +1 -1
  109. package/dist/services/actionflow/context_discovery.d.ts +2 -0
  110. package/dist/services/actionflow/context_discovery.d.ts.map +1 -1
  111. package/dist/services/actionflow/context_discovery.js +32 -4
  112. package/dist/services/actionflow/context_discovery.js.map +1 -1
  113. package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
  114. package/dist/services/actionflow/context_preflight.js +24 -7
  115. package/dist/services/actionflow/context_preflight.js.map +1 -1
  116. package/dist/services/actionflow/form_source.d.ts +2 -0
  117. package/dist/services/actionflow/form_source.d.ts.map +1 -1
  118. package/dist/services/actionflow/form_source.js +45 -10
  119. package/dist/services/actionflow/form_source.js.map +1 -1
  120. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  121. package/dist/services/actionflow/formula_service.js +28 -13
  122. package/dist/services/actionflow/formula_service.js.map +1 -1
  123. package/dist/services/actionflow/param_mapping_basis.d.ts +3 -0
  124. package/dist/services/actionflow/param_mapping_basis.d.ts.map +1 -0
  125. package/dist/services/actionflow/param_mapping_basis.js +61 -0
  126. package/dist/services/actionflow/param_mapping_basis.js.map +1 -0
  127. package/dist/services/actionflow/preflight_service.d.ts +10 -0
  128. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  129. package/dist/services/actionflow/preflight_service.js +149 -47
  130. package/dist/services/actionflow/preflight_service.js.map +1 -1
  131. package/dist/services/actionflow/runtime_metadata.d.ts +1 -0
  132. package/dist/services/actionflow/runtime_metadata.d.ts.map +1 -1
  133. package/dist/services/actionflow/runtime_metadata.js +3 -0
  134. package/dist/services/actionflow/runtime_metadata.js.map +1 -1
  135. package/dist/services/actionflow/trigger_common.d.ts.map +1 -1
  136. package/dist/services/actionflow/trigger_common.js +4 -7
  137. package/dist/services/actionflow/trigger_common.js.map +1 -1
  138. package/dist/services/actionflow/update_service.d.ts +6 -0
  139. package/dist/services/actionflow/update_service.d.ts.map +1 -1
  140. package/dist/services/actionflow/update_service.js +6 -38
  141. package/dist/services/actionflow/update_service.js.map +1 -1
  142. package/dist/services/actionflow/workflow_compiler.d.ts +1 -1
  143. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  144. package/dist/services/actionflow/workflow_compiler.js +34 -20
  145. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  146. package/dist/services/actionflow/workflow_request_level.d.ts +3 -0
  147. package/dist/services/actionflow/workflow_request_level.d.ts.map +1 -0
  148. package/dist/services/actionflow/workflow_request_level.js +11 -0
  149. package/dist/services/actionflow/workflow_request_level.js.map +1 -0
  150. package/dist/services/designer-event.d.ts +54 -0
  151. package/dist/services/designer-event.d.ts.map +1 -0
  152. package/dist/services/designer-event.js +312 -0
  153. package/dist/services/designer-event.js.map +1 -0
  154. package/dist/services/designer-source.d.ts +46 -0
  155. package/dist/services/designer-source.d.ts.map +1 -0
  156. package/dist/services/designer-source.js +145 -0
  157. package/dist/services/designer-source.js.map +1 -0
  158. package/dist/services/field-identity.d.ts +3 -0
  159. package/dist/services/field-identity.d.ts.map +1 -0
  160. package/dist/services/field-identity.js +8 -0
  161. package/dist/services/field-identity.js.map +1 -0
  162. package/dist/services/form-layout-detail-advanced.d.ts +10 -0
  163. package/dist/services/form-layout-detail-advanced.d.ts.map +1 -0
  164. package/dist/services/form-layout-detail-advanced.js +134 -0
  165. package/dist/services/form-layout-detail-advanced.js.map +1 -0
  166. package/dist/services/form-layout-detail-settings.d.ts +151 -0
  167. package/dist/services/form-layout-detail-settings.d.ts.map +1 -0
  168. package/dist/services/form-layout-detail-settings.js +131 -0
  169. package/dist/services/form-layout-detail-settings.js.map +1 -0
  170. package/dist/services/form-list-columns.d.ts +11 -0
  171. package/dist/services/form-list-columns.d.ts.map +1 -1
  172. package/dist/services/form-list-columns.js +12 -1
  173. package/dist/services/form-list-columns.js.map +1 -1
  174. package/dist/services/form-list-config.d.ts +93 -0
  175. package/dist/services/form-list-config.d.ts.map +1 -0
  176. package/dist/services/form-list-config.js +369 -0
  177. package/dist/services/form-list-config.js.map +1 -0
  178. package/dist/services/form-list-fields.d.ts +38 -0
  179. package/dist/services/form-list-fields.d.ts.map +1 -0
  180. package/dist/services/form-list-fields.js +261 -0
  181. package/dist/services/form-list-fields.js.map +1 -0
  182. package/dist/services/form-list-filter-http.d.ts +60 -0
  183. package/dist/services/form-list-filter-http.d.ts.map +1 -0
  184. package/dist/services/form-list-filter-http.js +137 -0
  185. package/dist/services/form-list-filter-http.js.map +1 -0
  186. package/dist/services/form-list-filter-sql.d.ts +74 -0
  187. package/dist/services/form-list-filter-sql.d.ts.map +1 -0
  188. package/dist/services/form-list-filter-sql.js +206 -0
  189. package/dist/services/form-list-filter-sql.js.map +1 -0
  190. package/dist/services/form-list-search-group.d.ts.map +1 -1
  191. package/dist/services/form-list-search-group.js +3 -2
  192. package/dist/services/form-list-search-group.js.map +1 -1
  193. package/dist/services/form-list-search.d.ts.map +1 -1
  194. package/dist/services/form-list-search.js +3 -13
  195. package/dist/services/form-list-search.js.map +1 -1
  196. package/dist/services/form-list-table-fields.d.ts +58 -0
  197. package/dist/services/form-list-table-fields.d.ts.map +1 -0
  198. package/dist/services/form-list-table-fields.js +265 -0
  199. package/dist/services/form-list-table-fields.js.map +1 -0
  200. package/dist/services/form-nlist-field-attrs.d.ts +43 -0
  201. package/dist/services/form-nlist-field-attrs.d.ts.map +1 -0
  202. package/dist/services/form-nlist-field-attrs.js +170 -0
  203. package/dist/services/form-nlist-field-attrs.js.map +1 -0
  204. package/dist/services/form-nlist.d.ts +25 -0
  205. package/dist/services/form-nlist.d.ts.map +1 -1
  206. package/dist/services/form-nlist.js +226 -2
  207. package/dist/services/form-nlist.js.map +1 -1
  208. package/dist/services/form-permission-edit.d.ts +115 -0
  209. package/dist/services/form-permission-edit.d.ts.map +1 -0
  210. package/dist/services/form-permission-edit.js +552 -0
  211. package/dist/services/form-permission-edit.js.map +1 -0
  212. package/dist/services/form-view.d.ts +3 -3
  213. package/dist/services/form-view.d.ts.map +1 -1
  214. package/dist/services/form-view.js +26 -12
  215. package/dist/services/form-view.js.map +1 -1
  216. package/dist/services/matrix-condition.d.ts +0 -30
  217. package/dist/services/matrix-condition.d.ts.map +1 -1
  218. package/dist/services/matrix-condition.js +3 -2
  219. package/dist/services/matrix-condition.js.map +1 -1
  220. package/dist/services/page-combination.d.ts +58 -0
  221. package/dist/services/page-combination.d.ts.map +1 -0
  222. package/dist/services/page-combination.js +296 -0
  223. package/dist/services/page-combination.js.map +1 -0
  224. package/dist/services/page-permission.d.ts +74 -0
  225. package/dist/services/page-permission.d.ts.map +1 -0
  226. package/dist/services/page-permission.js +287 -0
  227. package/dist/services/page-permission.js.map +1 -0
  228. package/dist/services/report/verify.d.ts.map +1 -1
  229. package/dist/services/report/verify.js +1 -7
  230. package/dist/services/report/verify.js.map +1 -1
  231. package/dist/services/workflow-function-management.d.ts +1 -1
  232. package/package.json +1 -1
  233. package/skill-docs/SKILL.md +14 -4
  234. package/skill-docs/_catalog.md +7 -0
  235. package/skill-docs/actionflows/SKILL.md +7 -3
  236. package/skill-docs/actionflows/references/components/ebuilder/ActionEbAdd.md +5 -1
  237. package/skill-docs/actionflows/references/components/ebuilder/ActionEbUpdate.md +5 -1
  238. package/skill-docs/actionflows/references/components/ebuilder/DateTrigger.md +32 -32
  239. package/skill-docs/actionflows/references/components/ebuilder/EnquiryForm.md +5 -1
  240. package/skill-docs/actionflows/references/components/ebuilder/TimeBatchTrigger.md +19 -19
  241. package/skill-docs/references/common/ref-cli-commands.md +27 -7
  242. package/skill-docs/references/ebuilder-designer/events/actions-integration.md +88 -0
  243. package/skill-docs/references/ebuilder-designer/events/actions-interaction.md +108 -0
  244. package/skill-docs/references/ebuilder-designer/events/guide-events.md +57 -0
  245. package/skill-docs/references/ebuilder-designer/guide-designer.md +296 -288
  246. package/skill-docs/references/ebuilder-designer/guide-page-combination.md +142 -0
  247. package/skill-docs/references/ebuilder-designer/guide-page-permission.md +145 -0
  248. package/skill-docs/references/ebuilder-designer/page-source/page-source-guide.md +129 -0
  249. package/skill-docs/references/ebuilder-designer/page-source/sdk-chart.md +49 -0
  250. package/skill-docs/references/ebuilder-designer/page-source/sdk-coverage.json +372 -0
  251. package/skill-docs/references/ebuilder-designer/page-source/sdk-date.md +54 -0
  252. package/skill-docs/references/ebuilder-designer/page-source/sdk-dialogs.md +279 -0
  253. package/skill-docs/references/ebuilder-designer/page-source/sdk-form.md +255 -0
  254. package/skill-docs/references/ebuilder-designer/page-source/sdk-foundations.md +401 -0
  255. package/skill-docs/references/ebuilder-designer/page-source/sdk-index.md +34 -0
  256. package/skill-docs/references/ebuilder-designer/page-source/sdk-list.md +297 -0
  257. package/skill-docs/references/ebuilder-designer/page-source/sdk-native.md +193 -0
  258. package/skill-docs/references/ebuilder-designer/page-source/sdk-navigation.md +156 -0
  259. package/skill-docs/references/ebuilder-designer/page-source/sdk-other.md +242 -0
  260. package/skill-docs/references/ebuilder-designer/page-source/sdk-refresh.md +132 -0
  261. package/skill-docs/references/ebuilder-designer/page-source/sdk-sql.md +39 -0
  262. package/skill-docs/references/form/guide-form-permission.md +185 -0
  263. package/skill-docs/references/form/guide-form-view.md +725 -423
  264. package/skill-docs/references/form/layout/detail-advanced.md +124 -0
  265. package/skill-docs/references/form/layout/detail-settings.md +106 -0
  266. package/skill-docs/references/form/layout/layout-overview.md +2 -0
@@ -0,0 +1,3 @@
1
+ /** 编译参数映射中选择的「依据值(参数行)」下级。 */
2
+ export declare function buildParamMappingBasisFormula(rows: any[], target: any, item: any, appId: string): Record<string, any>;
3
+ //# sourceMappingURL=param_mapping_basis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"param_mapping_basis.d.ts","sourceRoot":"","sources":["../../../src/services/actionflow/param_mapping_basis.ts"],"names":[],"mappings":"AAEA,8BAA8B;AAC9B,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAkDrH"}
@@ -0,0 +1,61 @@
1
+ import { genSfId, normalizeNumericFrontId } from './id_generator.js';
2
+ /** 编译参数映射中选择的「依据值(参数行)」下级。 */
3
+ export function buildParamMappingBasisFormula(rows, target, item, appId) {
4
+ const reference = item.value;
5
+ if (!reference || typeof reference !== 'object' || String(reference.kind || reference.assignmentKind) !== 'context') {
6
+ throw new Error('参数映射依据值下级必须选择上下文字段');
7
+ }
8
+ const selector = String(item.basisParamId || item.basisParamKey || '').trim();
9
+ const candidates = rows.filter((row) => String(row.id || '') === selector || String(row.paramKey || '') === selector);
10
+ if (!selector || candidates.length !== 1)
11
+ throw new Error(`参数映射依据行 '${selector}' 未在 tableData 中唯一匹配`);
12
+ const basis = candidates[0];
13
+ let parentId = String(target.parentId || '');
14
+ const seen = new Set();
15
+ while (parentId && parentId !== String(basis.id)) {
16
+ if (seen.has(parentId))
17
+ throw new Error('参数映射存在循环父子关系');
18
+ seen.add(parentId);
19
+ parentId = String(rows.find((row) => String(row.id) === parentId)?.parentId || '');
20
+ }
21
+ if (parentId !== String(basis.id))
22
+ throw new Error('参数映射依据行必须是目标参数的上级');
23
+ const formula = basis.formulaData;
24
+ const context = String(formula?.type) === '8' ? formula.childs?.[0] : formula;
25
+ if (!context || !['3', '10'].includes(String(context.type)))
26
+ throw new Error('参数映射依据行需要先设置上下文或依据值赋值');
27
+ const basisConfig = String(context.type) === '10' ? context.config : context;
28
+ const basisSource = String(basisConfig?.source || '').trim();
29
+ const selectedSource = String(reference.source || reference.comId || '').trim();
30
+ if (basisSource && selectedSource && !['event', 'event_1', 'trigger'].includes(selectedSource) && basisSource !== selectedSource) {
31
+ throw new Error('参数映射依据行与来源字段属于不同的上下文节点');
32
+ }
33
+ const basisPath = String(String(context.type) === '10' ? basisConfig?.paramKey : basisConfig?.config?.paramKey || basisConfig?.paramKey || '').trim();
34
+ const resolved = reference._resolvedContext || {};
35
+ const sourcePath = String(resolved.paramKey || '').trim();
36
+ if (!sourcePath)
37
+ throw new Error('参数映射依据值字段缺少上下文接口返回的 paramKey');
38
+ const root = String(resolved.tablePrimaryKey || '').trim();
39
+ const stripRoot = (path) => root && path.startsWith(`${root}.`) ? path.slice(root.length + 1) : path;
40
+ const parentPath = stripRoot(basisPath);
41
+ const fieldPath = stripRoot(sourcePath);
42
+ const relative = fieldPath === parentPath ? 'esbAssignSelf' : fieldPath.startsWith(`${parentPath}.`) ? fieldPath.slice(parentPath.length + 1) : '';
43
+ if (!parentPath || !relative)
44
+ throw new Error(`来源字段 '${sourcePath}' 不属于依据值 '${basisPath}'`);
45
+ const fieldId = normalizeNumericFrontId(resolved.fieldId || resolved.rawField?.id, '参数映射依据值字段 frontId');
46
+ if (!fieldId)
47
+ throw new Error(`来源字段 '${sourcePath}' 缺少真实 ParamBean.id`);
48
+ const selected = `${basis.id}#${relative}`;
49
+ const name = String(reference.label || resolved.label || reference.name || resolved.rawField?.showName || sourcePath);
50
+ const fieldType = String(resolved.fieldType || resolved.rawField?.paramType || reference.valueType || target.paramType || 'string');
51
+ return {
52
+ id: genSfId(), name, value: selected, type: '10', fieldType, formulaType: fieldType,
53
+ applicationId: String(appId || ''), childs: [], parentId: '0',
54
+ config: {
55
+ frontId: fieldId, paramKey: fieldPath, basisType: 'paramSetting', switchType: `sub#${basis.id}`,
56
+ level: 1, id: selected, source: basisSource, formulaVersion: 'V1',
57
+ value: basisConfig.value, config: basisConfig.config, originValue: selected, content: name,
58
+ },
59
+ };
60
+ }
61
+ //# sourceMappingURL=param_mapping_basis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"param_mapping_basis.js","sourceRoot":"","sources":["../../../src/services/actionflow/param_mapping_basis.ts"],"names":[],"mappings":"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"}
@@ -15,6 +15,8 @@ export declare function resolveEventButtonSelection(plan: Record<string, any>, c
15
15
  export declare function stepFormRef(step: Record<string, any>): Record<string, any> | null;
16
16
  /** 查 form-fields 返回完整字段列表(id/showName/componentKey/paramType),进程缓存。 */
17
17
  export declare function getFormFieldsFull(formId: string, client: ApiClient, tf?: Record<string, any> | null): Promise<any[]>;
18
+ /** 删除和条件更新只解析 EB 表单,不使用数据源各分类的 Browser。 */
19
+ export declare function resolveFormConditionTargets(plan: Record<string, any>, client: ApiClient): Promise<void>;
18
20
  /** 回填 plan 里 targetForm 缺失的 groupId/name/text/groupName。返回无法解析的表单 id 列表。 */
19
21
  export declare function resolveTargetForms(plan: Record<string, any>, client: ApiClient): Promise<string[]>;
20
22
  /** 为必填的表单定时触发器补一个当前租户真实操作人。 */
@@ -85,6 +87,14 @@ export declare function normalizeShowDataSourceFields(response: any, formId: str
85
87
  * options 使用,通常是 [{ id, content, type }],不是 { fields: [...] }。
86
88
  */
87
89
  export declare function normalizeDataSourceSelectorFields(response: any, formId: string): any[];
90
+ /**
91
+ * 归一化 /api/ebuilder/common/ds/fields 的字段对象。
92
+ *
93
+ * EnquiryForm 的 filterInput 左值必须使用数据源字段选择器返回的实时元数据;
94
+ * getEbField 只适合表单字段校验,部分租户不会带齐 componentKey、formInfo、
95
+ * sformId 和物理字段信息。这里只补齐编译器读取的别名,不改变平台原对象。
96
+ */
97
+ export declare function normalizeDataSourceField(field: any, formId: string): any;
88
98
  export declare function syncEventResourcesToDraft(draft: Record<string, any>, plan: Record<string, any>): void;
89
99
  export declare function syncFixedPeopleToDraft(draft: Record<string, any>, plan: Record<string, any>): void;
90
100
  export declare function syncBizFieldsToDraft(draft: Record<string, any>, plan: Record<string, any>): void;
@@ -1 +1 @@
1
- {"version":3,"file":"preflight_service.d.ts","sourceRoot":"","sources":["../../../src/services/actionflow/preflight_service.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AA6DtD;;;;GAIG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAiCpF;AAED,uCAAuC;AACvC,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAiB9G;AAgFD,gEAAgE;AAChE,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAKjF;AAOD,uEAAuE;AACvE,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAgE1H;AAgCD,4EAA4E;AAC5E,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA6LxG;AAED,+BAA+B;AAC/B,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAe9G;AAsCD,yCAAyC;AACzC,wBAAsB,wCAAwC,CAC5D,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GACjF,OAAO,CAAC,IAAI,CAAC,CAuEf;AAED,iCAAiC;AACjC,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAyErG;AAkBD,oDAAoD;AACpD,wBAAsB,6BAA6B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAgDhH;AAwBD,qDAAqD;AACrD,wBAAsB,yBAAyB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CA4D5G;AAkCD,4CAA4C;AAC5C,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAsB9G;AAqDD;;;GAGG;AACH,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CA8C9G;AAmGD,0DAA0D;AAC1D,wBAAsB,kCAAkC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CA8DrH;AAkBD;;;;GAIG;AACH,wBAAsB,0BAA0B,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAmF7G;AAED,0CAA0C;AAC1C,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CxH;AAED,mDAAmD;AACnD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CA4FnK;AAED,4CAA4C;AAC5C,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,gBAAgB,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,IAAI,CAiI9J;AAgPD;;;;;;;;;GASG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACzB,kBAAkB,EAAE,GAAG,EAAE,EACzB,YAAY,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GACrC,IAAI,CAuHN;AAED;;;;GAIG;AACH,wBAAgB,iCAAiC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,kBAAkB,EAAE,GAAG,EAAE,GAAG,IAAI,CAwD5G;AAID,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CASnG;AAED,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAsBrG;AAED;uDACuD;AACvD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAgBlG;AAuED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,CAkClF;AAED;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE,CAiBtF;AA+BD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAMrG;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAsClG;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAYhG;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAcpG;AAED,uDAAuD;AACvD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAiBtG;AAoGD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,GAAG,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;CACvB;AAiCD,kCAAkC;AAClC,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,eAAe,CAAC,CAklB5H"}
1
+ {"version":3,"file":"preflight_service.d.ts","sourceRoot":"","sources":["../../../src/services/actionflow/preflight_service.ts"],"names":[],"mappings":"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"}
@@ -15,10 +15,10 @@ const FORM_ID_CACHE = {};
15
15
  import { ContextStore, PlatformContextProvider } from './context_provider.js';
16
16
  import { hydrateContextReferences, hydrateQueryResultReferences, queryNodeContext, resolveContextGroupRoot, } from './context_preflight.js';
17
17
  import { get as getComponent } from './components/index.js';
18
- import { defaultQueryFieldsAll } from './query_field_defaults.js';
19
18
  import { getStepBranches } from './step_branches.js';
20
19
  import { normalizeParamGroupSetting } from './param_group_dto.js';
21
20
  import { genSfId } from './id_generator.js';
21
+ import { OPTION_FIELD_COMPONENT_KEYS } from './option_field_types.js';
22
22
  // 表单字段进程缓存
23
23
  const FORM_FIELDS_CACHE = {};
24
24
  const FORM_LIST_CACHE = {};
@@ -241,9 +241,7 @@ export async function getFormFieldsFull(formId, client, tf) {
241
241
  catch {
242
242
  // 查询失败返回空,由调用方判定
243
243
  }
244
- // getEbField 在部分租户/版本只返回空 data 或直接请求失败,但动作流
245
- // 设计器的 ds/fields 仍能返回完整的主表和明细字段。这里仅作为动作流
246
- // 预检的字段元数据兜底,不修改表单数据或表单设计接口。
244
+ // 保持原有字段查询兼容;条件字段始终由各自的实时选择器单独登记。
247
245
  if (!fields.length) {
248
246
  try {
249
247
  const fallback = await formSource.dataSourceFields(client, formId);
@@ -263,7 +261,7 @@ export async function getFormFieldsFull(formId, client, tf) {
263
261
  }
264
262
  }
265
263
  catch {
266
- // 两个字段接口都不可用时仍返回空,由动作流预检给出可定位错误。
264
+ // 查询失败时保持空字段列表,由预检报告。
267
265
  }
268
266
  }
269
267
  FORM_FIELDS_CACHE[formId] = fields;
@@ -303,6 +301,41 @@ function findTfGroup(plan, formId) {
303
301
  };
304
302
  return search(plan.actions || []);
305
303
  }
304
+ function usesFormConditionFields(step) {
305
+ return step?.type === 'ActionEbDelete' || (step?.type === 'ActionEbUpdate'
306
+ && String(step?.params?.opType || 'updateData') === 'updateData');
307
+ }
308
+ /** 删除和条件更新只解析 EB 表单,不使用数据源各分类的 Browser。 */
309
+ export async function resolveFormConditionTargets(plan, client) {
310
+ for (const step of walkPlanSteps(plan.actions || [])) {
311
+ if (!usesFormConditionFields(step))
312
+ continue;
313
+ const ref = step.params?.targetForm;
314
+ if (!ref || typeof ref !== 'object' || Array.isArray(ref))
315
+ throw new Error(`${step.type}.targetForm 缺少目标表单`);
316
+ const id = String(ref.id || ref.tableId || '').trim();
317
+ const groupId = String(ref.groupId || ref.appId || '').trim();
318
+ if (id && groupId && (ref.name || ref.text) && ref.groupName) {
319
+ ref.id = id;
320
+ ref.groupId = groupId;
321
+ continue;
322
+ }
323
+ const keyword = id || String(ref.name || ref.text || '').trim();
324
+ if (!keyword)
325
+ throw new Error(`${step.type}.targetForm 缺少表单 ID 或名称,无法查询所属应用`);
326
+ const result = await formSource.searchForms(client, keyword, groupId ? { appId: groupId } : {});
327
+ const hits = result.hits.filter((hit) => (!id || hit.objId === id) && (!groupId || hit.appId === groupId));
328
+ if (result.truncated || hits.length !== 1 || !hits[0].appId) {
329
+ throw new Error(`${step.type}.targetForm 未能唯一确定表单及所属应用:${keyword}(匹配 ${hits.length} 项)`);
330
+ }
331
+ const hit = hits[0];
332
+ ref.id = hit.objId;
333
+ ref.groupId = hit.appId;
334
+ ref.name ||= hit.name;
335
+ ref.text ||= hit.name;
336
+ ref.groupName ||= hit.appName;
337
+ }
338
+ }
306
339
  /** 回填 plan 里 targetForm 缺失的 groupId/name/text/groupName。返回无法解析的表单 id 列表。 */
307
340
  export async function resolveTargetForms(plan, client) {
308
341
  const normalizeRef = (ref) => {
@@ -344,7 +377,7 @@ export async function resolveTargetForms(plan, client) {
344
377
  for (const step of steps || []) {
345
378
  if (!step || typeof step !== 'object')
346
379
  continue;
347
- if (['ActionEbAdd', 'ActionEbUpdate', 'ActionEbDelete', 'ActionEbRecover', 'ActionEbSaveVersion', 'EbGetDataById'].includes(step.type)) {
380
+ if (!usesFormConditionFields(step) && ['ActionEbAdd', 'ActionEbUpdate', 'ActionEbDelete', 'ActionEbRecover', 'ActionEbSaveVersion', 'EbGetDataById'].includes(step.type)) {
348
381
  const tf = (step.params || {}).targetForm;
349
382
  if (tf && typeof tf === 'object' && tf.id) {
350
383
  if (!tf.groupId || !tf.name || !tf.text || !tf.groupName)
@@ -357,7 +390,9 @@ export async function resolveTargetForms(plan, client) {
357
390
  collect(branch.actions || []);
358
391
  }
359
392
  }
360
- if (['EventFormData', 'EventButton', 'TimeBatchTrigger', 'DateTrigger', 'EnquiryForm'].includes(step.type)) {
393
+ // 这三类数据源已由 resolveActionflowDataSources 通过实时 Browser 解析;
394
+ // Browser.groupId 是服务组而不是应用 ID,不再走旧表单归属查询。
395
+ if (['EventFormData', 'EventButton'].includes(step.type)) {
361
396
  const ds = (step.params || {}).dataSource || (step.params || {}).targetForm;
362
397
  if (ds && typeof ds === 'object' && ds.id) {
363
398
  if (needsLegacyFormResolution(ds) && (!ds.groupId || !ds.name || !ds.text || !ds.groupName))
@@ -366,7 +401,7 @@ export async function resolveTargetForms(plan, client) {
366
401
  }
367
402
  }
368
403
  };
369
- if (event && typeof event === 'object') {
404
+ if (event && typeof event === 'object' && !['TimeBatchTrigger', 'DateTrigger'].includes(String(event.type || ''))) {
370
405
  const ep = event.params || {};
371
406
  if (ep && typeof ep === 'object') {
372
407
  const es = ep.targetForm || ep.dataSource;
@@ -420,12 +455,12 @@ export async function resolveTargetForms(plan, client) {
420
455
  continue;
421
456
  const params = step.params || {};
422
457
  if (params && typeof params === 'object') {
423
- if (['ActionEbAdd', 'ActionEbUpdate', 'ActionEbDelete', 'ActionEbRecover', 'ActionEbSaveVersion', 'EbGetDataById'].includes(step.type)) {
458
+ if (!usesFormConditionFields(step) && ['ActionEbAdd', 'ActionEbUpdate', 'ActionEbDelete', 'ActionEbRecover', 'ActionEbSaveVersion', 'EbGetDataById'].includes(step.type)) {
424
459
  const tf = params.targetForm;
425
460
  if (tf && typeof tf === 'object' && tf.groupId)
426
461
  groupIds.add(String(tf.groupId));
427
462
  }
428
- if (['EventFormData', 'EventButton', 'TimeBatchTrigger', 'DateTrigger', 'EnquiryForm'].includes(step.type)) {
463
+ if (['EventFormData', 'EventButton'].includes(step.type)) {
429
464
  const ds = params.dataSource || params.targetForm;
430
465
  if (ds && typeof ds === 'object' && ds.groupId)
431
466
  groupIds.add(String(ds.groupId));
@@ -440,7 +475,7 @@ export async function resolveTargetForms(plan, client) {
440
475
  }
441
476
  };
442
477
  collectGroups(plan.actions || []);
443
- if (event && typeof event === 'object') {
478
+ if (event && typeof event === 'object' && !['TimeBatchTrigger', 'DateTrigger'].includes(String(event.type || ''))) {
444
479
  const ep = event.params || {};
445
480
  if (ep && typeof ep === 'object') {
446
481
  const es = ep.targetForm || ep.dataSource;
@@ -482,7 +517,7 @@ export async function resolveTargetForms(plan, client) {
482
517
  tf.groupName = info.groupName;
483
518
  }
484
519
  }
485
- if (['EventFormData', 'EventButton', 'TimeBatchTrigger', 'DateTrigger', 'EnquiryForm'].includes(step.type)) {
520
+ if (['EventFormData', 'EventButton'].includes(step.type)) {
486
521
  const ds = (step.params || {}).dataSource || (step.params || {}).targetForm;
487
522
  if (ds && typeof ds === 'object' && String(ds.id || '') === fid) {
488
523
  ds.groupId = info.groupId;
@@ -503,7 +538,7 @@ export async function resolveTargetForms(plan, client) {
503
538
  }
504
539
  };
505
540
  patch(plan.actions || []);
506
- if (event && typeof event === 'object') {
541
+ if (event && typeof event === 'object' && !['TimeBatchTrigger', 'DateTrigger'].includes(String(event.type || ''))) {
507
542
  const ep = event.params || {};
508
543
  if (ep && typeof ep === 'object') {
509
544
  const es = ep.targetForm || ep.dataSource;
@@ -2009,10 +2044,30 @@ export function hydrateMappingLabels(plan, eventContextFields, eventContext = {}
2009
2044
  };
2010
2045
  const labelOf = (field, fallback) => String(field?.label || field?.showName || field?.paramName || field?.raw?.showName || field?.raw?.paramName || fallback);
2011
2046
  const enrichTarget = (sourceKey, target) => {
2012
- const requestedKey = target && typeof target === 'object' && !Array.isArray(target)
2047
+ let requestedKey = target && typeof target === 'object' && !Array.isArray(target)
2013
2048
  ? String(target.paramKey || target.key || sourceKey)
2014
2049
  : String(sourceKey);
2015
- const field = findField(requestedKey);
2050
+ let field = findField(requestedKey);
2051
+ const kind = String(target?.kind || target?.assignmentKind || 'context');
2052
+ const sourceComponent = String(field?.componentKey || field?.raw?.componentKey || '');
2053
+ // 依据值下级由 fieldSet.matchMode 控制匹配方式,优先于普通赋值的 assignType。
2054
+ const matchMode = String(target?.fieldSet?.matchMode || target?.fieldOptions?.fieldSet?.matchMode || '');
2055
+ const matchByName = matchMode
2056
+ ? matchMode === 'optionName'
2057
+ : String(target?.assignType || target?.fieldOptions?.assignType || '') === 'name';
2058
+ if (matchByName && kind === 'context' && field && OPTION_FIELD_COMPONENT_KEYS.has(sourceComponent)
2059
+ && !requestedKey.endsWith('_name')) {
2060
+ // 只使用实时上下文确实返回的名称字段,不能靠后缀伪造引用。
2061
+ const nameField = findField(`${requestedKey}_name`);
2062
+ if (!nameField)
2063
+ throw new Error(`选项名称赋值的来源 '${requestedKey}' 未返回唯一的名称上下文字段,请查询组件上下文并指定名称字段`);
2064
+ requestedKey = String(nameField.paramKey);
2065
+ field = nameField;
2066
+ target.paramKey = requestedKey;
2067
+ target.label = labelOf(field, requestedKey);
2068
+ delete target._resolvedContext;
2069
+ delete target.frontId;
2070
+ }
2016
2071
  const label = labelOf(field, requestedKey);
2017
2072
  if (target && typeof target === 'object' && !Array.isArray(target)) {
2018
2073
  const declaredKind = String(target.kind || target.assignmentKind || 'context');
@@ -2040,6 +2095,43 @@ export function hydrateMappingLabels(plan, eventContextFields, eventContext = {}
2040
2095
  if (!step || typeof step !== 'object')
2041
2096
  continue;
2042
2097
  const params = step.params || {};
2098
+ // 其他复用表单设置的组件可能使用 fieldAssignments 或平台 DTO,
2099
+ // 而不是 e-builder 的 mapping。只处理明确携带选项匹配设置的上下文引用。
2100
+ const hydrateSettingRefs = (value) => {
2101
+ if (!value || typeof value !== 'object')
2102
+ return;
2103
+ if (Array.isArray(value)) {
2104
+ value.forEach(hydrateSettingRefs);
2105
+ return;
2106
+ }
2107
+ const entry = value.value;
2108
+ if (entry && typeof entry === 'object' && entry.assign && typeof entry.assign === 'object'
2109
+ && String(entry.assign.kind || entry.assign.assignmentKind || '') === 'context') {
2110
+ const ref = entry.assign;
2111
+ const originalKey = String(ref.paramKey || ref.key || '');
2112
+ const enriched = enrichTarget(String(ref.paramKey || ref.key || ''), {
2113
+ ...ref, assignType: entry.assignType, fieldSet: entry.fieldSet,
2114
+ });
2115
+ for (const key of ['paramKey', 'label', '_resolvedContext', 'frontId']) {
2116
+ if (enriched[key] !== undefined)
2117
+ ref[key] = enriched[key];
2118
+ else if (key === 'frontId' && enriched.paramKey !== originalKey)
2119
+ delete ref.frontId;
2120
+ }
2121
+ }
2122
+ if (String(value.kind || value.assignmentKind || '') === 'context'
2123
+ && (value.assignType || value.fieldSet || value.fieldOptions)) {
2124
+ enrichTarget(String(value.paramKey || value.key || ''), value);
2125
+ }
2126
+ for (const child of Object.values(value))
2127
+ hydrateSettingRefs(child);
2128
+ };
2129
+ if (params.fieldAssignments)
2130
+ hydrateSettingRefs(params.fieldAssignments);
2131
+ for (const key of ['setting', 'settingCommon', 'settingType', 'formSetting', 'settingId']) {
2132
+ if (params[key] && typeof params[key] === 'object')
2133
+ hydrateSettingRefs(params[key]);
2134
+ }
2043
2135
  const mapping = params && typeof params === 'object' ? params.mapping : null;
2044
2136
  if (mapping && typeof mapping === 'object') {
2045
2137
  for (const [sourceKey, target] of Object.entries(mapping)) {
@@ -2265,8 +2357,7 @@ function referencedDataSourceFieldIds(plan, sourceStep, sourceId) {
2265
2357
  return [...ids];
2266
2358
  }
2267
2359
  function canonicalQueryFieldId(value) {
2268
- const id = String(value || '').trim();
2269
- return id.startsWith('field_') ? id.slice('field_'.length) : id;
2360
+ return String(value || '').trim();
2270
2361
  }
2271
2362
  /**
2272
2363
  * 归一化 showDataSourceFields 的返回值。
@@ -2344,7 +2435,7 @@ export function normalizeDataSourceSelectorFields(response, formId) {
2344
2435
  * getEbField 只适合表单字段校验,部分租户不会带齐 componentKey、formInfo、
2345
2436
  * sformId 和物理字段信息。这里只补齐编译器读取的别名,不改变平台原对象。
2346
2437
  */
2347
- function normalizeDataSourceField(field, formId) {
2438
+ export function normalizeDataSourceField(field, formId) {
2348
2439
  if (!field || typeof field !== 'object')
2349
2440
  return field;
2350
2441
  let config = field.config;
@@ -2363,8 +2454,10 @@ function normalizeDataSourceField(field, formId) {
2363
2454
  return {
2364
2455
  ...field,
2365
2456
  id,
2457
+ // 区分接口原始 name 与下面仅用于展示/兼容的合成 name。
2458
+ ...(field.name !== undefined && field.name !== null && String(field.name).trim() ? { _conditionFieldName: String(field.name) } : {}),
2366
2459
  showName: String(field.showName || field.text || field.name || field.content || id),
2367
- name: String(field.name || (id && /^\d+$/.test(id) ? `field_${id}` : field.text || id)),
2460
+ name: field.name === undefined || field.name === null ? '' : String(field.name),
2368
2461
  componentKey: String(field.componentKey || config.componentKey || field.compType || field.type || ''),
2369
2462
  paramType: String(field.paramType || field.type || config.type || 'string').toLowerCase(),
2370
2463
  type: String(field.type || field.paramType || config.type || 'String'),
@@ -2712,13 +2805,14 @@ export async function preflightContext(plan, appId, client) {
2712
2805
  return { valid: false, errors, warnings, contextStore: store.asDict() };
2713
2806
  // 回填 targetForm 缺失的 groupId/name
2714
2807
  try {
2808
+ await resolveFormConditionTargets(plan, client);
2715
2809
  const unresolvedForms = await resolveTargetForms(plan, client);
2716
2810
  for (const fid of unresolvedForms) {
2717
2811
  errors.push(`targetForm.id='${fid}' 未在平台表单中找到, 无法确定所属应用(groupId). 请用 form-applications + form-list 确认表单真实存在.`);
2718
2812
  }
2719
2813
  }
2720
- catch {
2721
- // 忽略
2814
+ catch (error) {
2815
+ errors.push(`目标表单查询失败: ${String(error?.message || error)}`);
2722
2816
  }
2723
2817
  // EventButton 的 targetForm 可能只提供表单 id;先完成 targetForm 的实时归属回填,
2724
2818
  // 再按前端 ebuilderButton 浏览器校验真实按钮以及 before 能力。
@@ -2731,11 +2825,11 @@ export async function preflightContext(plan, appId, client) {
2731
2825
  errors.push(`EventButton 按钮查询/执行前能力校验失败: ${String(error?.message || error)}`);
2732
2826
  }
2733
2827
  // 查并登记所有目标表单字段元数据(转换前必须有 fieldType/componentKey)
2734
- const hydrateFilterFields = async (steps) => {
2828
+ const hydrateFilterFields = async (steps, formConditionOnly = false) => {
2735
2829
  for (const step of steps || []) {
2736
2830
  if (!step || typeof step !== 'object')
2737
2831
  continue;
2738
- if (['ActionEbAdd', 'ActionEbUpdate', 'ActionEbDelete', 'ActionEbRecover', 'ActionEbSaveVersion', 'EbGetDataById', 'EnquiryForm', 'TimeBatchTrigger', 'EventFormData', 'EventButton', 'DateTrigger'].includes(step.type)) {
2832
+ if ((!formConditionOnly || usesFormConditionFields(step)) && ['ActionEbAdd', 'ActionEbUpdate', 'ActionEbDelete', 'EnquiryForm', 'TimeBatchTrigger', 'EventFormData', 'EventButton', 'DateTrigger'].includes(step.type)) {
2739
2833
  const tf = stepFormRef(step);
2740
2834
  if (tf && tf.id) {
2741
2835
  const formId = String(tf.id);
@@ -2744,28 +2838,23 @@ export async function preflightContext(plan, appId, client) {
2744
2838
  // /api/ebuilder/common/ds/fields,不能回退到 getEbField。
2745
2839
  const isActionEbUpdateCondition = step.type === 'ActionEbUpdate'
2746
2840
  && String((step.params || {}).opType || 'updateData') === 'updateData';
2841
+ const isFormCondition = usesFormConditionFields(step);
2842
+ const isButtonCondition = step.type === 'EventButton' && Boolean(step.params?.filter);
2843
+ // 表单数据触发沿用前端按字段变化的既有查询;其余仅表单设置使用 getEbField。
2844
+ const needsEbFields = ['ActionEbAdd', 'ActionEbUpdate', 'EventFormData'].includes(step.type);
2747
2845
  const strictConditionSource = [
2748
2846
  'ActionEbDelete', 'EnquiryForm', 'TimeBatchTrigger', 'DateTrigger',
2749
- ].includes(step.type) || isActionEbUpdateCondition;
2750
- const sourceProtocol = formSource.actionflowDataSourceProtocol(tf);
2751
- // 删除/条件更新的 ConditionSet 绑定的是目标 e-builder 表单 Browser,
2752
- // 与数据源查询/定时触发器不同:ds/fields 必须传应用 groupId、表单 sourceId
2753
- // 和 sourceType=FORM(前端 ConditionSet 的实际请求协议)。
2754
- const conditionFieldProtocol = step.type === 'ActionEbDelete' || isActionEbUpdateCondition
2755
- ? {
2756
- groupId: String(tf.groupId || tf.appId || ''),
2757
- sourceType: 'FORM',
2758
- }
2759
- : sourceProtocol;
2847
+ ].includes(step.type) || isActionEbUpdateCondition || isButtonCondition;
2848
+ const sourceProtocol = isFormCondition || isButtonCondition ? null : formSource.actionflowDataSourceProtocol(tf);
2760
2849
  // 严格条件来源的字段不是普通 EB 表单字段:
2761
2850
  // 它们必须来自 /api/ebuilder/common/ds/fields,不能先调用 getEbField。
2762
- let fields = strictConditionSource ? [] : await getFormFieldsFull(formId, client, tf);
2763
- if (!strictConditionSource)
2851
+ let fields = needsEbFields ? await getFormFieldsFull(formId, client, tf) : [];
2852
+ if (!strictConditionSource && needsEbFields)
2764
2853
  await hydrateReferenceFilterFields(plan, client, formId, tf, fields);
2765
2854
  // “默认全选”必须在计划层固化为实时字段列表。仅在编译期依赖全局缓存时,
2766
2855
  // 查询组件偶尔会只保留系统字段,筛选编辑器因此把业务字段标成“已删除”。
2767
2856
  const params = step.params && typeof step.params === 'object' ? step.params : (step.params = {});
2768
- if (['ActionEbDelete', 'EnquiryForm', 'TimeBatchTrigger', 'DateTrigger'].includes(step.type)
2857
+ if (['ActionEbDelete', 'EnquiryForm', 'TimeBatchTrigger', 'DateTrigger'].includes(step.type) || isButtonCondition
2769
2858
  || (step.type === 'ActionEbUpdate' && String(params.opType || 'updateData') === 'updateData')) {
2770
2859
  // EnquiryForm/条件更新的筛选条件左值必须来自数据源字段选择器,
2771
2860
  // 而不是只用 getEbField 的表单字段对象。后者经常缺少数据源侧的
@@ -2773,7 +2862,9 @@ export async function preflightContext(plan, appId, client) {
2773
2862
  // 或保存时静默丢弃。
2774
2863
  let dataSourceFields = [];
2775
2864
  try {
2776
- const dataSourceResponse = await formSource.dataSourceFields(client, formId, true, conditionFieldProtocol);
2865
+ const dataSourceResponse = isFormCondition || isButtonCondition
2866
+ ? await formSource.formConditionFields(client, String(tf.groupId || tf.appId || ''), formId)
2867
+ : await formSource.dataSourceFields(client, formId, true, sourceProtocol);
2777
2868
  dataSourceFields = normalizeShowDataSourceFields(dataSourceResponse, formId)
2778
2869
  .map((field) => normalizeDataSourceField(field, formId))
2779
2870
  .filter((field) => Boolean(field?.id));
@@ -2781,20 +2872,24 @@ export async function preflightContext(plan, appId, client) {
2781
2872
  replaceTargetDataSourceFields(formId, dataSourceFields);
2782
2873
  if (strictConditionSource) {
2783
2874
  fields = dataSourceFields;
2784
- await hydrateReferenceFilterFields(plan, client, formId, tf, fields);
2875
+ if (!isFormCondition && !isButtonCondition)
2876
+ await hydrateReferenceFilterFields(plan, client, formId, tf, fields);
2785
2877
  }
2786
- if (dataSourceFields.length)
2878
+ if (dataSourceFields.length && step.type !== 'ActionEbUpdate')
2787
2879
  registerTargetFormFields(formId, dataSourceFields);
2788
- if (strictConditionSource && sourceProtocol.kind !== 'data_processing' && !dataSourceFields.length) {
2880
+ if (strictConditionSource && !dataSourceFields.length) {
2789
2881
  errors.push(`${step.type}.filterCondition: /api/ebuilder/common/ds/fields 未返回数据源字段,拒绝使用 getEbField 生成条件左值。`);
2790
2882
  }
2791
2883
  }
2792
2884
  catch (error) {
2793
- if (strictConditionSource && sourceProtocol.kind !== 'data_processing') {
2885
+ if (strictConditionSource) {
2794
2886
  replaceTargetDataSourceFields(formId, []);
2795
2887
  errors.push(`${step.type}.filterCondition: /api/ebuilder/common/ds/fields 查询失败,拒绝使用 getEbField 生成条件左值:${String(error?.message || error)}`);
2796
2888
  }
2797
2889
  }
2890
+ // 删除和条件更新不配置数据源查询的 queryFields,也不请求 showDataSourceFields。
2891
+ if (isFormCondition || isButtonCondition)
2892
+ continue;
2798
2893
  if (step.type === 'EnquiryForm') {
2799
2894
  const groupFields = Array.isArray(params.groupFields) ? params.groupFields : [];
2800
2895
  const groupMessage = Array.isArray(params.groupMessage) ? params.groupMessage : [];
@@ -2810,7 +2905,6 @@ export async function preflightContext(plan, appId, client) {
2810
2905
  if (!id)
2811
2906
  continue;
2812
2907
  byId.set(id, field);
2813
- byId.set(id.startsWith('field_') ? id.slice('field_'.length) : `field_${id}`, field);
2814
2908
  }
2815
2909
  if (!selectorFields.length && (groupFields.length || groupMessage.length)) {
2816
2910
  errors.push('EnquiryForm.groupFields/groupMessage: /component/getDataSourceFields 未返回可选字段,拒绝凭空生成分组字段。');
@@ -2850,7 +2944,7 @@ export async function preflightContext(plan, appId, client) {
2850
2944
  let physicalTable = String(selectable.find((f) => f?.physicalTable)?.physicalTable || fields.find((f) => f?.physicalTable)?.physicalTable || '');
2851
2945
  if (!physicalTable) {
2852
2946
  try {
2853
- const full = await formSource.dataSourceFields(client, formId, true, sourceProtocol);
2947
+ const full = await formSource.dataSourceFields(client, formId, true, sourceProtocol ?? undefined);
2854
2948
  const walkPhysical = (items) => {
2855
2949
  for (const item of items || []) {
2856
2950
  if (item?.physicalTable)
@@ -2904,9 +2998,8 @@ export async function preflightContext(plan, appId, client) {
2904
2998
  const mainFields = fields
2905
2999
  .filter((field) => String(field.subFormId ?? '-1') === '-1')
2906
3000
  .map((field) => ({ formId, parseMark: Boolean(field.parseMark ?? true), id: String(field.id), content: String(field.showName || field.name || field.id) }));
2907
- const defaults = defaultQueryFieldsAll(formId);
2908
3001
  const seen = new Set();
2909
- params.queryFields = [...mainFields, ...defaults].filter((field) => {
3002
+ params.queryFields = mainFields.filter((field) => {
2910
3003
  const id = String(field?.id || '');
2911
3004
  if (!id || seen.has(id))
2912
3005
  return false;
@@ -2937,9 +3030,11 @@ export async function preflightContext(plan, appId, client) {
2937
3030
  if (step.type === 'Condition') {
2938
3031
  for (const branch of getStepBranches(step) || []) {
2939
3032
  if (branch && typeof branch === 'object')
2940
- await hydrateFilterFields(branch.actions || []);
3033
+ await hydrateFilterFields(branch.actions || [], formConditionOnly);
2941
3034
  }
2942
3035
  }
3036
+ if (step.type === 'MultipleExecution' && Array.isArray(step.actions))
3037
+ await hydrateFilterFields(step.actions, true);
2943
3038
  }
2944
3039
  };
2945
3040
  await hydrateFilterFields([event]);
@@ -3211,6 +3306,13 @@ export async function preflightContext(plan, appId, client) {
3211
3306
  // 后替换为真实节点 ID,且不再错误退回到触发器组件类型。
3212
3307
  const sourceRef = String(step.ref || step.id || `context_${path.replace(/[^A-Za-z0-9_]/g, '_')}`);
3213
3308
  step.ref ??= sourceRef;
3309
+ try {
3310
+ hydrateMappingLabels({ actions: steps.slice(index + 1) }, [], result.context);
3311
+ }
3312
+ catch (e) {
3313
+ errors.push(String(e?.message || e));
3314
+ return;
3315
+ }
3214
3316
  hydrateContextReferences(steps.slice(index + 1), result.context, { id: sourceRef, type: String(step.type || '') });
3215
3317
  if (step.type === 'EnquiryForm') {
3216
3318
  // 预检拿到的上下文包含平台生成的字段实例 id;回填到后续