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.
- package/dist/cli-register.d.ts +22 -0
- package/dist/cli-register.d.ts.map +1 -0
- package/dist/cli-register.js +352 -0
- package/dist/cli-register.js.map +1 -0
- package/dist/commands/actionflow.d.ts.map +1 -1
- package/dist/commands/actionflow.js +4 -0
- package/dist/commands/actionflow.js.map +1 -1
- package/dist/commands/designer-event.d.ts +3 -0
- package/dist/commands/designer-event.d.ts.map +1 -0
- package/dist/commands/designer-event.js +106 -0
- package/dist/commands/designer-event.js.map +1 -0
- package/dist/commands/designer-source.d.ts +3 -0
- package/dist/commands/designer-source.d.ts.map +1 -0
- package/dist/commands/designer-source.js +51 -0
- package/dist/commands/designer-source.js.map +1 -0
- package/dist/commands/form-browser-scope-rules.d.ts +2 -1
- package/dist/commands/form-browser-scope-rules.d.ts.map +1 -1
- package/dist/commands/form-browser-scope-rules.js +8 -4
- package/dist/commands/form-browser-scope-rules.js.map +1 -1
- package/dist/commands/form-browser-scope-tree.js +1 -1
- package/dist/commands/form-browser-scope-tree.js.map +1 -1
- package/dist/commands/form-field-linkage.d.ts.map +1 -1
- package/dist/commands/form-field-linkage.js +6 -11
- package/dist/commands/form-field-linkage.js.map +1 -1
- package/dist/commands/form-layout-detail-settings.d.ts +3 -0
- package/dist/commands/form-layout-detail-settings.d.ts.map +1 -0
- package/dist/commands/form-layout-detail-settings.js +36 -0
- package/dist/commands/form-layout-detail-settings.js.map +1 -0
- package/dist/commands/form-list-columns.d.ts.map +1 -1
- package/dist/commands/form-list-columns.js +258 -3
- package/dist/commands/form-list-columns.js.map +1 -1
- package/dist/commands/form-list-config.d.ts +9 -0
- package/dist/commands/form-list-config.d.ts.map +1 -0
- package/dist/commands/form-list-config.js +189 -0
- package/dist/commands/form-list-config.js.map +1 -0
- package/dist/commands/form-list-event.d.ts.map +1 -1
- package/dist/commands/form-list-event.js +2 -1
- package/dist/commands/form-list-event.js.map +1 -1
- package/dist/commands/form-list-filter.d.ts.map +1 -1
- package/dist/commands/form-list-filter.js +231 -3
- package/dist/commands/form-list-filter.js.map +1 -1
- package/dist/commands/form-list-hierarchy.d.ts.map +1 -1
- package/dist/commands/form-list-hierarchy.js +2 -1
- package/dist/commands/form-list-hierarchy.js.map +1 -1
- package/dist/commands/form-list-utils.d.ts.map +1 -1
- package/dist/commands/form-list-utils.js +4 -3
- package/dist/commands/form-list-utils.js.map +1 -1
- package/dist/commands/form-list.d.ts.map +1 -1
- package/dist/commands/form-list.js +2 -1
- package/dist/commands/form-list.js.map +1 -1
- package/dist/commands/form-nlist.d.ts.map +1 -1
- package/dist/commands/form-nlist.js +125 -1
- package/dist/commands/form-nlist.js.map +1 -1
- package/dist/commands/form-permission.d.ts.map +1 -1
- package/dist/commands/form-permission.js +743 -77
- package/dist/commands/form-permission.js.map +1 -1
- package/dist/commands/page-combination.d.ts +3 -0
- package/dist/commands/page-combination.d.ts.map +1 -0
- package/dist/commands/page-combination.js +86 -0
- package/dist/commands/page-combination.js.map +1 -0
- package/dist/commands/page-permission.d.ts +3 -0
- package/dist/commands/page-permission.d.ts.map +1 -0
- package/dist/commands/page-permission.js +46 -0
- package/dist/commands/page-permission.js.map +1 -0
- package/dist/index.js +19 -213
- package/dist/index.js.map +1 -1
- package/dist/services/actionflow/build_workflow_draft.d.ts.map +1 -1
- package/dist/services/actionflow/build_workflow_draft.js +8 -0
- package/dist/services/actionflow/build_workflow_draft.js.map +1 -1
- package/dist/services/actionflow/calendar_mapper.d.ts.map +1 -1
- package/dist/services/actionflow/calendar_mapper.js +7 -4
- package/dist/services/actionflow/calendar_mapper.js.map +1 -1
- package/dist/services/actionflow/component_registry.d.ts.map +1 -1
- package/dist/services/actionflow/component_registry.js +18 -2
- package/dist/services/actionflow/component_registry.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_delete.js +1 -1
- package/dist/services/actionflow/components/action_eb_delete.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_update.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_update.js +9 -1
- package/dist/services/actionflow/components/action_eb_update.js.map +1 -1
- package/dist/services/actionflow/components/approve_create.d.ts.map +1 -1
- package/dist/services/actionflow/components/approve_create.js +4 -3
- package/dist/services/actionflow/components/approve_create.js.map +1 -1
- package/dist/services/actionflow/components/document_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/document_actions.js +15 -48
- package/dist/services/actionflow/components/document_actions.js.map +1 -1
- package/dist/services/actionflow/components/enquiry_form.d.ts +0 -7
- package/dist/services/actionflow/components/enquiry_form.d.ts.map +1 -1
- package/dist/services/actionflow/components/enquiry_form.js +10 -54
- package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
- package/dist/services/actionflow/components/form_data_builder.d.ts +2 -0
- package/dist/services/actionflow/components/form_data_builder.d.ts.map +1 -1
- package/dist/services/actionflow/components/form_data_builder.js +53 -2
- package/dist/services/actionflow/components/form_data_builder.js.map +1 -1
- package/dist/services/actionflow/components/inner_mq_send.d.ts.map +1 -1
- package/dist/services/actionflow/components/inner_mq_send.js +8 -2
- package/dist/services/actionflow/components/inner_mq_send.js.map +1 -1
- package/dist/services/actionflow/components/send_message.d.ts.map +1 -1
- package/dist/services/actionflow/components/send_message.js +52 -1
- package/dist/services/actionflow/components/send_message.js.map +1 -1
- package/dist/services/actionflow/components/serverless_action.d.ts.map +1 -1
- package/dist/services/actionflow/components/serverless_action.js +39 -0
- package/dist/services/actionflow/components/serverless_action.js.map +1 -1
- package/dist/services/actionflow/components/simple_scheduler.d.ts.map +1 -1
- package/dist/services/actionflow/components/simple_scheduler.js +46 -12
- package/dist/services/actionflow/components/simple_scheduler.js.map +1 -1
- package/dist/services/actionflow/components/time_batch_trigger.js +4 -3
- package/dist/services/actionflow/components/time_batch_trigger.js.map +1 -1
- package/dist/services/actionflow/context_discovery.d.ts +2 -0
- package/dist/services/actionflow/context_discovery.d.ts.map +1 -1
- package/dist/services/actionflow/context_discovery.js +32 -4
- package/dist/services/actionflow/context_discovery.js.map +1 -1
- package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
- package/dist/services/actionflow/context_preflight.js +24 -7
- package/dist/services/actionflow/context_preflight.js.map +1 -1
- package/dist/services/actionflow/form_source.d.ts +2 -0
- package/dist/services/actionflow/form_source.d.ts.map +1 -1
- package/dist/services/actionflow/form_source.js +45 -10
- package/dist/services/actionflow/form_source.js.map +1 -1
- package/dist/services/actionflow/formula_service.d.ts.map +1 -1
- package/dist/services/actionflow/formula_service.js +28 -13
- package/dist/services/actionflow/formula_service.js.map +1 -1
- package/dist/services/actionflow/param_mapping_basis.d.ts +3 -0
- package/dist/services/actionflow/param_mapping_basis.d.ts.map +1 -0
- package/dist/services/actionflow/param_mapping_basis.js +61 -0
- package/dist/services/actionflow/param_mapping_basis.js.map +1 -0
- package/dist/services/actionflow/preflight_service.d.ts +10 -0
- package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
- package/dist/services/actionflow/preflight_service.js +149 -47
- package/dist/services/actionflow/preflight_service.js.map +1 -1
- package/dist/services/actionflow/runtime_metadata.d.ts +1 -0
- package/dist/services/actionflow/runtime_metadata.d.ts.map +1 -1
- package/dist/services/actionflow/runtime_metadata.js +3 -0
- package/dist/services/actionflow/runtime_metadata.js.map +1 -1
- package/dist/services/actionflow/trigger_common.d.ts.map +1 -1
- package/dist/services/actionflow/trigger_common.js +4 -7
- package/dist/services/actionflow/trigger_common.js.map +1 -1
- package/dist/services/actionflow/update_service.d.ts +6 -0
- package/dist/services/actionflow/update_service.d.ts.map +1 -1
- package/dist/services/actionflow/update_service.js +6 -38
- package/dist/services/actionflow/update_service.js.map +1 -1
- package/dist/services/actionflow/workflow_compiler.d.ts +1 -1
- package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/workflow_compiler.js +34 -20
- package/dist/services/actionflow/workflow_compiler.js.map +1 -1
- package/dist/services/actionflow/workflow_request_level.d.ts +3 -0
- package/dist/services/actionflow/workflow_request_level.d.ts.map +1 -0
- package/dist/services/actionflow/workflow_request_level.js +11 -0
- package/dist/services/actionflow/workflow_request_level.js.map +1 -0
- package/dist/services/designer-event.d.ts +54 -0
- package/dist/services/designer-event.d.ts.map +1 -0
- package/dist/services/designer-event.js +312 -0
- package/dist/services/designer-event.js.map +1 -0
- package/dist/services/designer-source.d.ts +46 -0
- package/dist/services/designer-source.d.ts.map +1 -0
- package/dist/services/designer-source.js +145 -0
- package/dist/services/designer-source.js.map +1 -0
- package/dist/services/field-identity.d.ts +3 -0
- package/dist/services/field-identity.d.ts.map +1 -0
- package/dist/services/field-identity.js +8 -0
- package/dist/services/field-identity.js.map +1 -0
- package/dist/services/form-layout-detail-advanced.d.ts +10 -0
- package/dist/services/form-layout-detail-advanced.d.ts.map +1 -0
- package/dist/services/form-layout-detail-advanced.js +134 -0
- package/dist/services/form-layout-detail-advanced.js.map +1 -0
- package/dist/services/form-layout-detail-settings.d.ts +151 -0
- package/dist/services/form-layout-detail-settings.d.ts.map +1 -0
- package/dist/services/form-layout-detail-settings.js +131 -0
- package/dist/services/form-layout-detail-settings.js.map +1 -0
- package/dist/services/form-list-columns.d.ts +11 -0
- package/dist/services/form-list-columns.d.ts.map +1 -1
- package/dist/services/form-list-columns.js +12 -1
- package/dist/services/form-list-columns.js.map +1 -1
- package/dist/services/form-list-config.d.ts +93 -0
- package/dist/services/form-list-config.d.ts.map +1 -0
- package/dist/services/form-list-config.js +369 -0
- package/dist/services/form-list-config.js.map +1 -0
- package/dist/services/form-list-fields.d.ts +38 -0
- package/dist/services/form-list-fields.d.ts.map +1 -0
- package/dist/services/form-list-fields.js +261 -0
- package/dist/services/form-list-fields.js.map +1 -0
- package/dist/services/form-list-filter-http.d.ts +60 -0
- package/dist/services/form-list-filter-http.d.ts.map +1 -0
- package/dist/services/form-list-filter-http.js +137 -0
- package/dist/services/form-list-filter-http.js.map +1 -0
- package/dist/services/form-list-filter-sql.d.ts +74 -0
- package/dist/services/form-list-filter-sql.d.ts.map +1 -0
- package/dist/services/form-list-filter-sql.js +206 -0
- package/dist/services/form-list-filter-sql.js.map +1 -0
- package/dist/services/form-list-search-group.d.ts.map +1 -1
- package/dist/services/form-list-search-group.js +3 -2
- package/dist/services/form-list-search-group.js.map +1 -1
- package/dist/services/form-list-search.d.ts.map +1 -1
- package/dist/services/form-list-search.js +3 -13
- package/dist/services/form-list-search.js.map +1 -1
- package/dist/services/form-list-table-fields.d.ts +58 -0
- package/dist/services/form-list-table-fields.d.ts.map +1 -0
- package/dist/services/form-list-table-fields.js +265 -0
- package/dist/services/form-list-table-fields.js.map +1 -0
- package/dist/services/form-nlist-field-attrs.d.ts +43 -0
- package/dist/services/form-nlist-field-attrs.d.ts.map +1 -0
- package/dist/services/form-nlist-field-attrs.js +170 -0
- package/dist/services/form-nlist-field-attrs.js.map +1 -0
- package/dist/services/form-nlist.d.ts +25 -0
- package/dist/services/form-nlist.d.ts.map +1 -1
- package/dist/services/form-nlist.js +226 -2
- package/dist/services/form-nlist.js.map +1 -1
- package/dist/services/form-permission-edit.d.ts +115 -0
- package/dist/services/form-permission-edit.d.ts.map +1 -0
- package/dist/services/form-permission-edit.js +552 -0
- package/dist/services/form-permission-edit.js.map +1 -0
- package/dist/services/form-view.d.ts +3 -3
- package/dist/services/form-view.d.ts.map +1 -1
- package/dist/services/form-view.js +26 -12
- package/dist/services/form-view.js.map +1 -1
- package/dist/services/matrix-condition.d.ts +0 -30
- package/dist/services/matrix-condition.d.ts.map +1 -1
- package/dist/services/matrix-condition.js +3 -2
- package/dist/services/matrix-condition.js.map +1 -1
- package/dist/services/page-combination.d.ts +58 -0
- package/dist/services/page-combination.d.ts.map +1 -0
- package/dist/services/page-combination.js +296 -0
- package/dist/services/page-combination.js.map +1 -0
- package/dist/services/page-permission.d.ts +74 -0
- package/dist/services/page-permission.d.ts.map +1 -0
- package/dist/services/page-permission.js +287 -0
- package/dist/services/page-permission.js.map +1 -0
- package/dist/services/report/verify.d.ts.map +1 -1
- package/dist/services/report/verify.js +1 -7
- package/dist/services/report/verify.js.map +1 -1
- package/dist/services/workflow-function-management.d.ts +1 -1
- package/package.json +1 -1
- package/skill-docs/SKILL.md +14 -4
- package/skill-docs/_catalog.md +7 -0
- package/skill-docs/actionflows/SKILL.md +7 -3
- package/skill-docs/actionflows/references/components/ebuilder/ActionEbAdd.md +5 -1
- package/skill-docs/actionflows/references/components/ebuilder/ActionEbUpdate.md +5 -1
- package/skill-docs/actionflows/references/components/ebuilder/DateTrigger.md +32 -32
- package/skill-docs/actionflows/references/components/ebuilder/EnquiryForm.md +5 -1
- package/skill-docs/actionflows/references/components/ebuilder/TimeBatchTrigger.md +19 -19
- package/skill-docs/references/common/ref-cli-commands.md +27 -7
- package/skill-docs/references/ebuilder-designer/events/actions-integration.md +88 -0
- package/skill-docs/references/ebuilder-designer/events/actions-interaction.md +108 -0
- package/skill-docs/references/ebuilder-designer/events/guide-events.md +57 -0
- package/skill-docs/references/ebuilder-designer/guide-designer.md +296 -288
- package/skill-docs/references/ebuilder-designer/guide-page-combination.md +142 -0
- package/skill-docs/references/ebuilder-designer/guide-page-permission.md +145 -0
- package/skill-docs/references/ebuilder-designer/page-source/page-source-guide.md +129 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-chart.md +49 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-coverage.json +372 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-date.md +54 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-dialogs.md +279 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-form.md +255 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-foundations.md +401 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-index.md +34 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-list.md +297 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-native.md +193 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-navigation.md +156 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-other.md +242 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-refresh.md +132 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-sql.md +39 -0
- package/skill-docs/references/form/guide-form-permission.md +185 -0
- package/skill-docs/references/form/guide-form-view.md +725 -423
- package/skill-docs/references/form/layout/detail-advanced.md +124 -0
- package/skill-docs/references/form/layout/detail-settings.md +106 -0
- package/skill-docs/references/form/layout/layout-overview.md +2 -0
|
@@ -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,
|
|
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
|
-
//
|
|
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
|
-
|
|
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'
|
|
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'
|
|
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
|
-
|
|
2047
|
+
let requestedKey = target && typeof target === 'object' && !Array.isArray(target)
|
|
2013
2048
|
? String(target.paramKey || target.key || sourceKey)
|
|
2014
2049
|
: String(sourceKey);
|
|
2015
|
-
|
|
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
|
-
|
|
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:
|
|
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', '
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
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 &&
|
|
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
|
|
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 =
|
|
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;回填到后续
|