weaver-e10-builder 1.2.3 → 1.5.1
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/assets/org-employee-template.xlsx +0 -0
- package/dist/commands/actionflow.d.ts.map +1 -1
- package/dist/commands/actionflow.js +12 -25
- package/dist/commands/actionflow.js.map +1 -1
- package/dist/commands/designer-css.d.ts +15 -0
- package/dist/commands/designer-css.d.ts.map +1 -0
- package/dist/commands/designer-css.js +205 -0
- package/dist/commands/designer-css.js.map +1 -0
- package/dist/commands/form-button.d.ts.map +1 -1
- package/dist/commands/form-button.js +28 -5
- package/dist/commands/form-button.js.map +1 -1
- package/dist/commands/form-field-lang.d.ts.map +1 -1
- package/dist/commands/form-field-lang.js +4 -39
- package/dist/commands/form-field-lang.js.map +1 -1
- package/dist/commands/form-field-linkage.d.ts.map +1 -1
- package/dist/commands/form-field-linkage.js +27 -6
- package/dist/commands/form-field-linkage.js.map +1 -1
- package/dist/commands/form-formula-linkage.d.ts +3 -0
- package/dist/commands/form-formula-linkage.d.ts.map +1 -0
- package/dist/commands/form-formula-linkage.js +434 -0
- package/dist/commands/form-formula-linkage.js.map +1 -0
- package/dist/commands/form-formula.d.ts.map +1 -1
- package/dist/commands/form-formula.js +22 -3
- package/dist/commands/form-formula.js.map +1 -1
- package/dist/commands/form-layout-init.d.ts.map +1 -1
- package/dist/commands/form-layout-init.js +15 -10
- package/dist/commands/form-layout-init.js.map +1 -1
- package/dist/commands/form-layout.js +24 -21
- package/dist/commands/form-layout.js.map +1 -1
- package/dist/commands/form-list-click.d.ts.map +1 -1
- package/dist/commands/form-list-click.js +2 -1
- package/dist/commands/form-list-click.js.map +1 -1
- package/dist/commands/form-native.d.ts.map +1 -1
- package/dist/commands/form-native.js +192 -3
- package/dist/commands/form-native.js.map +1 -1
- package/dist/commands/form-validate.d.ts.map +1 -1
- package/dist/commands/form-validate.js +11 -3
- package/dist/commands/form-validate.js.map +1 -1
- package/dist/commands/form.d.ts.map +1 -1
- package/dist/commands/form.js +323 -192
- package/dist/commands/form.js.map +1 -1
- package/dist/commands/matrix.d.ts.map +1 -1
- package/dist/commands/matrix.js +175 -36
- package/dist/commands/matrix.js.map +1 -1
- package/dist/commands/menu.d.ts.map +1 -1
- package/dist/commands/menu.js +170 -23
- package/dist/commands/menu.js.map +1 -1
- package/dist/commands/org.d.ts +10 -0
- package/dist/commands/org.d.ts.map +1 -0
- package/dist/commands/org.js +278 -0
- package/dist/commands/org.js.map +1 -0
- package/dist/commands/role.d.ts.map +1 -1
- package/dist/commands/role.js +106 -62
- package/dist/commands/role.js.map +1 -1
- package/dist/commands/wf-form.d.ts +1 -0
- package/dist/commands/wf-form.d.ts.map +1 -1
- package/dist/commands/wf-form.js +545 -39
- package/dist/commands/wf-form.js.map +1 -1
- package/dist/commands/workflow-auth-resp.d.ts.map +1 -1
- package/dist/commands/workflow-auth-resp.js +53 -5
- package/dist/commands/workflow-auth-resp.js.map +1 -1
- package/dist/commands/workflow-create-auth-resp.d.ts.map +1 -1
- package/dist/commands/workflow-create-auth-resp.js +5 -1
- package/dist/commands/workflow-create-auth-resp.js.map +1 -1
- package/dist/commands/workflow-node-assign-flow.d.ts.map +1 -1
- package/dist/commands/workflow-node-assign-flow.js +1 -2
- package/dist/commands/workflow-node-assign-flow.js.map +1 -1
- package/dist/commands/workflow-node.d.ts.map +1 -1
- package/dist/commands/workflow-node.js +147 -2
- package/dist/commands/workflow-node.js.map +1 -1
- package/dist/commands/workflow-odoc.d.ts.map +1 -1
- package/dist/commands/workflow-odoc.js +56 -56
- package/dist/commands/workflow-odoc.js.map +1 -1
- package/dist/commands/workflow-setting.d.ts.map +1 -1
- package/dist/commands/workflow-setting.js +77 -1
- package/dist/commands/workflow-setting.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +114 -89
- package/dist/commands/workflow.js.map +1 -1
- package/dist/core/client.d.ts +14 -0
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +28 -12
- package/dist/core/client.js.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/services/action-detail.d.ts.map +1 -1
- package/dist/services/action-detail.js +5 -4
- package/dist/services/action-detail.js.map +1 -1
- package/dist/services/actionflow/command_output.d.ts +7 -0
- package/dist/services/actionflow/command_output.d.ts.map +1 -1
- package/dist/services/actionflow/command_output.js +46 -0
- package/dist/services/actionflow/command_output.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_add.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_add.js +14 -4
- package/dist/services/actionflow/components/action_eb_add.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_add_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_add_compiler.js +29 -0
- package/dist/services/actionflow/components/action_eb_add_compiler.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 +23 -8
- package/dist/services/actionflow/components/action_eb_update.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.js +261 -13
- package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -1
- package/dist/services/actionflow/components/approve_create.d.ts.map +1 -1
- package/dist/services/actionflow/components/approve_create.js +6 -3
- package/dist/services/actionflow/components/approve_create.js.map +1 -1
- package/dist/services/actionflow/components/custom_set_form.d.ts +10 -0
- package/dist/services/actionflow/components/custom_set_form.d.ts.map +1 -0
- package/dist/services/actionflow/components/custom_set_form.js +99 -0
- package/dist/services/actionflow/components/custom_set_form.js.map +1 -0
- package/dist/services/actionflow/components/custom_trigger.d.ts +2 -2
- package/dist/services/actionflow/components/custom_trigger.d.ts.map +1 -1
- package/dist/services/actionflow/components/custom_trigger.js +11 -11
- package/dist/services/actionflow/components/custom_trigger.js.map +1 -1
- package/dist/services/actionflow/components/dml_execute.d.ts.map +1 -1
- package/dist/services/actionflow/components/dml_execute.js +7 -3
- package/dist/services/actionflow/components/dml_execute.js.map +1 -1
- package/dist/services/actionflow/components/document_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/document_actions.js +7 -3
- package/dist/services/actionflow/components/document_actions.js.map +1 -1
- package/dist/services/actionflow/components/enquiry_form.js +1 -1
- package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
- package/dist/services/actionflow/components/hrm_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/hrm_actions.js +7 -3
- package/dist/services/actionflow/components/hrm_actions.js.map +1 -1
- package/dist/services/actionflow/components/multiple_execution.d.ts.map +1 -1
- package/dist/services/actionflow/components/multiple_execution.js +14 -5
- package/dist/services/actionflow/components/multiple_execution.js.map +1 -1
- package/dist/services/actionflow/components/output.d.ts.map +1 -1
- package/dist/services/actionflow/components/output.js +6 -1
- package/dist/services/actionflow/components/output.js.map +1 -1
- package/dist/services/actionflow/components/send_message.js +2 -2
- package/dist/services/actionflow/components/send_message.js.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.js +7 -3
- package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
- package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
- package/dist/services/actionflow/context_preflight.js +25 -8
- package/dist/services/actionflow/context_preflight.js.map +1 -1
- package/dist/services/actionflow/context_provider.d.ts.map +1 -1
- package/dist/services/actionflow/context_provider.js +24 -4
- package/dist/services/actionflow/context_provider.js.map +1 -1
- package/dist/services/actionflow/custom_trigger_context.d.ts +10 -0
- package/dist/services/actionflow/custom_trigger_context.d.ts.map +1 -0
- package/dist/services/actionflow/custom_trigger_context.js +46 -0
- package/dist/services/actionflow/custom_trigger_context.js.map +1 -0
- package/dist/services/actionflow/dynamic_resources.d.ts.map +1 -1
- package/dist/services/actionflow/dynamic_resources.js +1 -1
- package/dist/services/actionflow/dynamic_resources.js.map +1 -1
- package/dist/services/actionflow/ebuilder_source.d.ts +19 -0
- package/dist/services/actionflow/ebuilder_source.d.ts.map +1 -0
- package/dist/services/actionflow/ebuilder_source.js +78 -0
- package/dist/services/actionflow/ebuilder_source.js.map +1 -0
- package/dist/services/actionflow/filter_rules.js +2 -2
- package/dist/services/actionflow/filter_rules.js.map +1 -1
- package/dist/services/actionflow/form_source.d.ts +51 -10
- package/dist/services/actionflow/form_source.d.ts.map +1 -1
- package/dist/services/actionflow/form_source.js +173 -29
- package/dist/services/actionflow/form_source.js.map +1 -1
- package/dist/services/actionflow/formula_service.d.ts +13 -2
- package/dist/services/actionflow/formula_service.d.ts.map +1 -1
- package/dist/services/actionflow/formula_service.js +104 -42
- package/dist/services/actionflow/formula_service.js.map +1 -1
- package/dist/services/actionflow/id_generator.d.ts +2 -0
- package/dist/services/actionflow/id_generator.d.ts.map +1 -1
- package/dist/services/actionflow/id_generator.js +13 -0
- package/dist/services/actionflow/id_generator.js.map +1 -1
- package/dist/services/actionflow/preflight_service.d.ts +6 -0
- package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
- package/dist/services/actionflow/preflight_service.js +217 -4
- package/dist/services/actionflow/preflight_service.js.map +1 -1
- package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/workflow_compiler.js +172 -50
- package/dist/services/actionflow/workflow_compiler.js.map +1 -1
- package/dist/services/auth-resp-condition.d.ts +35 -0
- package/dist/services/auth-resp-condition.d.ts.map +1 -0
- package/dist/services/auth-resp-condition.js +111 -0
- package/dist/services/auth-resp-condition.js.map +1 -0
- package/dist/services/condition-rules.d.ts.map +1 -1
- package/dist/services/condition-rules.js +4 -1
- package/dist/services/condition-rules.js.map +1 -1
- package/dist/services/designer-css.d.ts +89 -0
- package/dist/services/designer-css.d.ts.map +1 -0
- package/dist/services/designer-css.js +163 -0
- package/dist/services/designer-css.js.map +1 -0
- package/dist/services/dom-structure.d.ts +42 -0
- package/dist/services/dom-structure.d.ts.map +1 -0
- package/dist/services/dom-structure.js +251 -0
- package/dist/services/dom-structure.js.map +1 -0
- package/dist/services/esb-interface/document-parser.d.ts.map +1 -1
- package/dist/services/esb-interface/document-parser.js +62 -5
- package/dist/services/esb-interface/document-parser.js.map +1 -1
- package/dist/services/form-association.d.ts +19 -0
- package/dist/services/form-association.d.ts.map +1 -1
- package/dist/services/form-association.js +64 -0
- package/dist/services/form-association.js.map +1 -1
- package/dist/services/form-button-action.d.ts +7 -0
- package/dist/services/form-button-action.d.ts.map +1 -1
- package/dist/services/form-button-action.js +11 -1
- package/dist/services/form-button-action.js.map +1 -1
- package/dist/services/form-create.d.ts +4 -0
- package/dist/services/form-create.d.ts.map +1 -1
- package/dist/services/form-create.js +18 -12
- package/dist/services/form-create.js.map +1 -1
- package/dist/services/form-field-patch.d.ts +25 -1
- package/dist/services/form-field-patch.d.ts.map +1 -1
- package/dist/services/form-field-patch.js +52 -9
- package/dist/services/form-field-patch.js.map +1 -1
- package/dist/services/form-formula-linkage.d.ts +349 -0
- package/dist/services/form-formula-linkage.d.ts.map +1 -0
- package/dist/services/form-formula-linkage.js +546 -0
- package/dist/services/form-formula-linkage.js.map +1 -0
- package/dist/services/form-i18n-label.d.ts +48 -0
- package/dist/services/form-i18n-label.d.ts.map +1 -0
- package/dist/services/form-i18n-label.js +91 -0
- package/dist/services/form-i18n-label.js.map +1 -0
- package/dist/services/form-layout-insert.d.ts +84 -0
- package/dist/services/form-layout-insert.d.ts.map +1 -0
- package/dist/services/form-layout-insert.js +244 -0
- package/dist/services/form-layout-insert.js.map +1 -0
- package/dist/services/form-linkage-condition.d.ts +159 -0
- package/dist/services/form-linkage-condition.d.ts.map +1 -0
- package/dist/services/form-linkage-condition.js +307 -0
- package/dist/services/form-linkage-condition.js.map +1 -0
- package/dist/services/form-style-template.d.ts +6 -2
- package/dist/services/form-style-template.d.ts.map +1 -1
- package/dist/services/form-style-template.js +8 -4
- package/dist/services/form-style-template.js.map +1 -1
- package/dist/services/formula-detail.d.ts +98 -6
- package/dist/services/formula-detail.d.ts.map +1 -1
- package/dist/services/formula-detail.js +208 -26
- package/dist/services/formula-detail.js.map +1 -1
- package/dist/services/matrix-rows.d.ts +43 -0
- package/dist/services/matrix-rows.d.ts.map +1 -0
- package/dist/services/matrix-rows.js +104 -0
- package/dist/services/matrix-rows.js.map +1 -0
- package/dist/services/menu-catalog.d.ts +84 -0
- package/dist/services/menu-catalog.d.ts.map +1 -0
- package/dist/services/menu-catalog.js +183 -0
- package/dist/services/menu-catalog.js.map +1 -0
- package/dist/services/org-department.d.ts +114 -0
- package/dist/services/org-department.d.ts.map +1 -0
- package/dist/services/org-department.js +209 -0
- package/dist/services/org-department.js.map +1 -0
- package/dist/services/org-employee.d.ts +87 -0
- package/dist/services/org-employee.d.ts.map +1 -0
- package/dist/services/org-employee.js +219 -0
- package/dist/services/org-employee.js.map +1 -0
- package/dist/services/role-member.d.ts +99 -0
- package/dist/services/role-member.d.ts.map +1 -0
- package/dist/services/role-member.js +206 -0
- package/dist/services/role-member.js.map +1 -0
- package/dist/services/workflow-add-step.d.ts +45 -0
- package/dist/services/workflow-add-step.d.ts.map +1 -0
- package/dist/services/workflow-add-step.js +122 -0
- package/dist/services/workflow-add-step.js.map +1 -0
- package/dist/services/workflow-assign-flow.d.ts +1 -6
- package/dist/services/workflow-assign-flow.d.ts.map +1 -1
- package/dist/services/workflow-assign-flow.js +3 -8
- package/dist/services/workflow-assign-flow.js.map +1 -1
- package/dist/services/workflow-drawback.d.ts +19 -0
- package/dist/services/workflow-drawback.d.ts.map +1 -0
- package/dist/services/workflow-drawback.js +59 -0
- package/dist/services/workflow-drawback.js.map +1 -0
- package/dist/services/workflow-info.d.ts +83 -0
- package/dist/services/workflow-info.d.ts.map +1 -0
- package/dist/services/workflow-info.js +97 -0
- package/dist/services/workflow-info.js.map +1 -0
- package/dist/services/workflow-links.d.ts +51 -0
- package/dist/services/workflow-links.d.ts.map +1 -0
- package/dist/services/workflow-links.js +162 -0
- package/dist/services/workflow-links.js.map +1 -0
- package/dist/services/workflow-node-layout.d.ts +45 -4
- package/dist/services/workflow-node-layout.d.ts.map +1 -1
- package/dist/services/workflow-node-layout.js +142 -41
- package/dist/services/workflow-node-layout.js.map +1 -1
- package/dist/services/workflow-odoc-setting.d.ts +43 -0
- package/dist/services/workflow-odoc-setting.d.ts.map +1 -0
- package/dist/services/workflow-odoc-setting.js +109 -0
- package/dist/services/workflow-odoc-setting.js.map +1 -0
- package/dist/services/workflow-tab-config.d.ts +54 -0
- package/dist/services/workflow-tab-config.d.ts.map +1 -0
- package/dist/services/workflow-tab-config.js +137 -0
- package/dist/services/workflow-tab-config.js.map +1 -0
- package/dist/types.d.ts +5 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/column-name.d.ts +24 -0
- package/dist/utils/column-name.d.ts.map +1 -1
- package/dist/utils/column-name.js +16 -0
- package/dist/utils/column-name.js.map +1 -1
- package/ecodecmd/package.json +1 -2
- package/ecodecmd/src/loaddep.js +19 -9
- package/package.json +48 -48
- package/skill-docs/SKILL.md +15 -11
- package/skill-docs/_catalog.md +85 -79
- package/skill-docs/actionflows/SKILL.md +173 -168
- package/skill-docs/actionflows/references/components/ebuilder/ActionEbAdd.md +38 -1
- package/skill-docs/actionflows/references/components/ebuilder/ActionEbUpdate.md +42 -0
- package/skill-docs/actionflows/references/components/ebuilder/EventButton.md +1 -1
- package/skill-docs/actionflows/references/components/logic/Output.md +2 -0
- package/skill-docs/actionflows/references/components/trigger/CustomTrigger.md +48 -11
- package/skill-docs/actionflows/references/components/workflow/ApproveCreate.md +1 -1
- package/skill-docs/assets/dom-structure/Bar.json +341 -0
- package/skill-docs/assets/dom-structure/BarStack.json +341 -0
- package/skill-docs/assets/dom-structure/Bubble.json +323 -0
- package/skill-docs/assets/dom-structure/Calendar.json +515 -0
- package/skill-docs/assets/dom-structure/Circular.json +337 -0
- package/skill-docs/assets/dom-structure/CollapsePanel.json +289 -0
- package/skill-docs/assets/dom-structure/Comment.json +617 -0
- package/skill-docs/assets/dom-structure/CountDown.json +755 -0
- package/skill-docs/assets/dom-structure/DigitalPanel.json +191 -0
- package/skill-docs/assets/dom-structure/EbButton.json +387 -0
- package/skill-docs/assets/dom-structure/FastCreate.json +242 -0
- package/skill-docs/assets/dom-structure/Gauge.json +282 -0
- package/skill-docs/assets/dom-structure/HBar.json +336 -0
- package/skill-docs/assets/dom-structure/HBarStack.json +337 -0
- package/skill-docs/assets/dom-structure/Line.json +341 -0
- package/skill-docs/assets/dom-structure/NList.json +712 -0
- package/skill-docs/assets/dom-structure/NavBar.json +274 -0
- package/skill-docs/assets/dom-structure/NavPanel.json +390 -0
- package/skill-docs/assets/dom-structure/NewTab.json +606 -0
- package/skill-docs/assets/dom-structure/Nightingale.json +336 -0
- package/skill-docs/assets/dom-structure/PageHeader.json +205 -0
- package/skill-docs/assets/dom-structure/Picture.json +209 -0
- package/skill-docs/assets/dom-structure/Pie.json +338 -0
- package/skill-docs/assets/dom-structure/ProgressChart.json +299 -0
- package/skill-docs/assets/dom-structure/SearchGlobal.json +628 -0
- package/skill-docs/assets/dom-structure/Slide.json +489 -0
- package/skill-docs/assets/dom-structure/Treemap.json +324 -0
- package/skill-docs/references/common/guide-plan-template.md +10 -4
- package/skill-docs/references/common/ref-cli-commands.md +67 -34
- package/skill-docs/references/ebuilder-designer/guide-designer-components.md +12 -1
- package/skill-docs/references/ebuilder-designer/guide-designer-css.md +127 -0
- package/skill-docs/references/ebuilder-designer/guide-designer.md +6 -5
- package/skill-docs/references/esb-interface/guide-import.md +4 -1
- package/skill-docs/references/form/guide-create-form.md +14 -1
- package/skill-docs/references/form/guide-field-linkage.md +2 -0
- package/skill-docs/references/form/guide-form-formula-functions.md +36 -0
- package/skill-docs/references/form/guide-form-layout-incremental.md +75 -0
- package/skill-docs/references/form/guide-form-layout-planning.md +1 -1
- package/skill-docs/references/form/guide-form-linkage.md +89 -5
- package/skill-docs/references/form/guide-formula-linkage.md +250 -0
- package/skill-docs/references/form/ref-form-fields.md +6 -0
- package/skill-docs/references/hrm/guide-matrix.md +79 -16
- package/skill-docs/references/hrm/guide-org-employee.md +56 -0
- package/skill-docs/references/menu/system-menus.md +12 -0
- package/skill-docs/references/workflow/guide-workflow-auth-resp.md +48 -22
- package/skill-docs/references/workflow/guide-workflow-odoc-setting.md +248 -0
- package/skill-docs/references/workflow/guide-workflow-odoc.md +25 -33
- package/skill-docs/references/workflow/guide-workflow.md +18 -3
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
* 对齐 Python 版 core/workflow_compiler.py(黄金参照)。
|
|
4
4
|
* 第 1 期聚焦:ApproveTrigger / ActionEbAdd / ActionEbUpdate / ActionEbDelete / Output 的编译主链。
|
|
5
5
|
*/
|
|
6
|
-
import { genSfId } from './id_generator.js';
|
|
6
|
+
import { genSfId, normalizeNumericFrontId } from './id_generator.js';
|
|
7
7
|
import fs from 'node:fs';
|
|
8
8
|
import { get, getCompiler, getNodePost } from './components/index.js';
|
|
9
9
|
import { findInMetadata, getTargetFormFields, getWorkflowDetailNames, getTargetDetailFields, getWorkflowDetailFields, getWorkflowFieldIds, workflowFieldId, getWorkflowContextFields, getWorkflowContextFieldsByKey } from './runtime_metadata.js';
|
|
10
|
-
import { buildPersonFormula, buildSettingEntry, buildAssignBean, attachEsbAssign, resolveEnumConstant, resolveParamKey, resolveSourceFieldLabel, resolveSourceFieldType, normalizeConstantAssignment, lookupTargetFieldMeta, formulaFixedForAssignSwitch, formulaSystemVar, formulaContext, assignFlatContextDirect, getFormulaFn, formulaFunction, } from './formula_service.js';
|
|
10
|
+
import { buildPersonFormula, buildSettingEntry, buildAssignBean, attachEsbAssign, resolveEnumConstant, resolveParamKey, resolveSourceFieldLabel, resolveSourceFieldType, normalizeConstantAssignment, lookupTargetFieldMeta, formulaFixedForAssignSwitch, formulaSystemVar, formulaContext, assignFlatContextDirect, getFormulaFn, formulaFunction, contextRootForComponent, contextTableNameForRoot, normalizeContextParamKey, } from './formula_service.js';
|
|
11
11
|
import { buildFormulaReference, buildUpdateFieldCondition } from './components/action_eb_update_compiler.js';
|
|
12
|
+
import { resolveCustomTriggerDtoId } from './custom_trigger_context.js';
|
|
12
13
|
import { resolveSystemParameter, isDateSystemParameter } from './system_params.js';
|
|
13
14
|
import { conditionFieldFamily, filterFieldType, normalizeFilterOperator, conditionOperatorOverride, resolveFormCtx, buildFilterContextFormula, } from './filter_rules.js';
|
|
14
15
|
import { getStepBranches } from './step_branches.js';
|
|
@@ -224,7 +225,11 @@ function handleSpecial(draftKey, special, val, result, meta, appId, idx, eventId
|
|
|
224
225
|
if (!wfName)
|
|
225
226
|
wfName = String(meta?._upstream_form_name || '');
|
|
226
227
|
const pn = wfName ? `${wfName}.${label}` : label;
|
|
227
|
-
|
|
228
|
+
const sourceComponent = String(val._resolvedContext?.componentType || val.componentType || '');
|
|
229
|
+
const updateMeta = sourceComponent === 'CustomTrigger'
|
|
230
|
+
? { ...(meta || {}), _context_component_type: sourceComponent }
|
|
231
|
+
: meta;
|
|
232
|
+
result.updateId = assignFlatContextDirect(resolved, label, String(eventId || val.source || '0'), appId, 'string', pn, updateMeta, val._resolvedContext?.fieldId);
|
|
228
233
|
// esbAssign.wId 指向当前数据动作节点(设计器动态赋值定位用),与 filterInput 修复同源。
|
|
229
234
|
attachEsbAssign(result.updateId, meta, String(eventId || val.source || '0'));
|
|
230
235
|
}
|
|
@@ -279,18 +284,25 @@ function handleSpecial(draftKey, special, val, result, meta, appId, idx, eventId
|
|
|
279
284
|
result.filterInput = buildFilterInput(result, val, meta, appId, componentType);
|
|
280
285
|
}
|
|
281
286
|
else if (special === '_bizWorkflowPath' && val && typeof val === 'object') {
|
|
282
|
-
const
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
287
|
+
const workflowRows = Array.isArray(val) ? val : [val];
|
|
288
|
+
result.workflowPath = workflowRows
|
|
289
|
+
.filter((item) => item && typeof item === 'object' && !Array.isArray(item))
|
|
290
|
+
.map((item) => {
|
|
291
|
+
// ApproveCreateDTO 接收前端完整的 WorkflowPathBrowser 对象;只归一化
|
|
292
|
+
// 后端保存必需的别名,不能重建对象后丢掉 version/status/分权等字段。
|
|
293
|
+
const workflow = JSON.parse(JSON.stringify(item));
|
|
294
|
+
const wfId = String(workflow.id || workflow.createFlowId || '');
|
|
295
|
+
let formIds = workflow.formIds;
|
|
296
|
+
if (!Array.isArray(formIds))
|
|
297
|
+
formIds = workflow.formId || workflow.objId ? [String(workflow.formId || workflow.objId)] : [];
|
|
298
|
+
workflow.id = wfId;
|
|
299
|
+
workflow.formIds = formIds.filter(Boolean).map(String);
|
|
300
|
+
workflow.createFlowId = String(workflow.createFlowId || wfId);
|
|
301
|
+
workflow.workflowtype = String(workflow.workflowtype ?? workflow.workflowType ?? appId ?? '');
|
|
302
|
+
workflow.bridgeService ??= 'ebuilder';
|
|
303
|
+
workflow.relateFormTypes ??= ['WEA_EBUILDER'];
|
|
304
|
+
return workflow;
|
|
305
|
+
});
|
|
294
306
|
}
|
|
295
307
|
else if (special === '_bizRequestName') {
|
|
296
308
|
if (typeof val === 'string' && val.trim())
|
|
@@ -306,7 +318,10 @@ function handleSpecial(draftKey, special, val, result, meta, appId, idx, eventId
|
|
|
306
318
|
else {
|
|
307
319
|
const wfId = String(meta?._workflow_id || '');
|
|
308
320
|
const rqKey = resolveParamKey(wfId, String(val.key ?? val.value ?? ''));
|
|
309
|
-
result.requestName = formulaContext('', rqKey, {
|
|
321
|
+
result.requestName = formulaContext('', rqKey, {
|
|
322
|
+
name: String(val.label || ''),
|
|
323
|
+
frontId: val._resolvedContext?.fieldId || val.frontId || val.fieldId,
|
|
324
|
+
});
|
|
310
325
|
attachEsbAssign(result.requestName, meta, String(eventId || ''));
|
|
311
326
|
}
|
|
312
327
|
}
|
|
@@ -375,7 +390,7 @@ function handleBasisValue(val, result, meta, appId, eventId) {
|
|
|
375
390
|
comId: srcId, newParentName: bvParent,
|
|
376
391
|
};
|
|
377
392
|
const bvf = {
|
|
378
|
-
frontId: bvId, formulaType: bvfType, name: bvLabel, businessId: fBiz, id: fId,
|
|
393
|
+
frontId: normalizeNumericFrontId(bvId, '依据值 FormulaBean.frontId'), formulaType: bvfType, name: bvLabel, businessId: fBiz, id: fId,
|
|
379
394
|
source: srcId, type: '3', value: `FormData.${bvKey}`, childs: [], config: bvfConfig, parentId: '0',
|
|
380
395
|
};
|
|
381
396
|
// 依据值公式同样需要 esbAssign.wId 指向当前数据动作节点(设计器动态赋值定位用)。
|
|
@@ -599,6 +614,7 @@ export function fillSetting(result, updates, mapping, constants, formula, meta,
|
|
|
599
614
|
dataDrWithCalc: false,
|
|
600
615
|
main,
|
|
601
616
|
detail: [],
|
|
617
|
+
deleteMainFields: [],
|
|
602
618
|
updateFieldCondition: { updateField: [] },
|
|
603
619
|
};
|
|
604
620
|
}
|
|
@@ -1075,6 +1091,7 @@ function conditionFormulaType(right, shape, sourceId) {
|
|
|
1075
1091
|
name: String(right?.label || right?.name || key),
|
|
1076
1092
|
fieldType: shape.formulaType,
|
|
1077
1093
|
componentType: String(right?.componentType || right?.comType || 'ApproveTrigger'),
|
|
1094
|
+
frontId: right?._resolvedContext?.fieldId || right?._resolvedContext?.rawField?.id || right?.frontId || right?.fieldId,
|
|
1078
1095
|
});
|
|
1079
1096
|
bean.businessId = String(right?.businessId || bean.businessId || '0');
|
|
1080
1097
|
return bean;
|
|
@@ -1244,6 +1261,32 @@ export function buildConditionDetail(condition, sourceId, meta = null) {
|
|
|
1244
1261
|
};
|
|
1245
1262
|
}
|
|
1246
1263
|
// ── _build_setting_detail ───────────────────────────────────
|
|
1264
|
+
function buildDetailRowId(value, meta, appId, eventId, nodeType) {
|
|
1265
|
+
if (!value || typeof value !== 'object')
|
|
1266
|
+
throw new Error('明细 rowId 必须是固定值、上下文或其他动态赋值对象');
|
|
1267
|
+
const raw = value.assign ?? value.value ?? value;
|
|
1268
|
+
let assign;
|
|
1269
|
+
if (raw && typeof raw === 'object' && (raw.type || raw.formulaType) && !raw.kind)
|
|
1270
|
+
assign = { ...raw };
|
|
1271
|
+
else
|
|
1272
|
+
assign = buildFormulaReference(raw, { meta, appId, eventId, componentType: nodeType });
|
|
1273
|
+
attachEsbAssign(assign, meta, eventId);
|
|
1274
|
+
const assignId = String(value.assignId || assign.id || genSfId());
|
|
1275
|
+
const fieldId = value.id ?? value.primaryId ?? assignId;
|
|
1276
|
+
return {
|
|
1277
|
+
id: String(fieldId),
|
|
1278
|
+
primaryId: value.primaryId == null ? String(fieldId) : value.primaryId,
|
|
1279
|
+
original: false,
|
|
1280
|
+
assign,
|
|
1281
|
+
assignId,
|
|
1282
|
+
operate: value.operate || 'OPERATE_EQUAL',
|
|
1283
|
+
assignType: value.assignType || '',
|
|
1284
|
+
fieldType: value.fieldType || 'Text',
|
|
1285
|
+
switchType: value.switchType || (String(assign.type || assign.formulaType) === '1' ? 'fixvalue' : 'assign'),
|
|
1286
|
+
multiSelect: value.multiSelect === true,
|
|
1287
|
+
fieldKey: 'rowId',
|
|
1288
|
+
};
|
|
1289
|
+
}
|
|
1247
1290
|
export function buildSettingDetail(nodeData, detailItems, meta, appId, eventId, nodeType) {
|
|
1248
1291
|
if (!Array.isArray(detailItems))
|
|
1249
1292
|
return;
|
|
@@ -1251,6 +1294,13 @@ export function buildSettingDetail(nodeData, detailItems, meta, appId, eventId,
|
|
|
1251
1294
|
for (const item of detailItems) {
|
|
1252
1295
|
if (!item || typeof item !== 'object' || !item.detailTableId)
|
|
1253
1296
|
continue;
|
|
1297
|
+
if (nodeType === 'ActionEbAdd') {
|
|
1298
|
+
const strategyKeys = ['operateType', 'updateType', 'updateFieldCondition', 'updatePolicy', 'rowId'];
|
|
1299
|
+
const configured = strategyKeys.filter((key) => item[key] !== undefined && item[key] !== null && item[key] !== '');
|
|
1300
|
+
if (configured.length) {
|
|
1301
|
+
throw new Error(`ActionEbAdd.detail 明细策略固定为新增,不支持 ${configured.join('、')};请使用 ActionEbUpdate`);
|
|
1302
|
+
}
|
|
1303
|
+
}
|
|
1254
1304
|
const ele = { detailTableId: String(item.detailTableId) };
|
|
1255
1305
|
if (item.updateFieldCondition && typeof item.updateFieldCondition === 'object') {
|
|
1256
1306
|
ele.updateFieldCondition = buildUpdateFieldCondition(item.updateFieldCondition, { meta, appId, eventId: String(eventId), componentType: nodeType });
|
|
@@ -1262,7 +1312,19 @@ export function buildSettingDetail(nodeData, detailItems, meta, appId, eventId,
|
|
|
1262
1312
|
// 明细项依据值:引用整个明细表,source=event 节点 id, frontId=明细表 id。
|
|
1263
1313
|
if (item.basisValue && typeof item.basisValue === 'object') {
|
|
1264
1314
|
const bvVal = item.basisValue;
|
|
1265
|
-
|
|
1315
|
+
let bvKey = String(bvVal.paramKey || bvVal.key || '').trim();
|
|
1316
|
+
const isCustomTriggerSource = String(meta?._context_component_type || meta?._upstream_component_type || '') === 'CustomTrigger';
|
|
1317
|
+
const basisContextRoot = isCustomTriggerSource ? contextRootForComponent('CustomTrigger') : 'FormData';
|
|
1318
|
+
const basisTableName = contextTableNameForRoot(basisContextRoot);
|
|
1319
|
+
if (isCustomTriggerSource)
|
|
1320
|
+
bvKey = normalizeContextParamKey(bvKey, 'CustomTrigger');
|
|
1321
|
+
if (bvKey && !bvKey.includes('[]')) {
|
|
1322
|
+
const wfId = String(meta?._workflow_id || '');
|
|
1323
|
+
const keyIndex = wfId ? getWorkflowContextFieldsByKey()[wfId] || {} : {};
|
|
1324
|
+
const arrayKey = `${bvKey}[]`;
|
|
1325
|
+
if (keyIndex[arrayKey] && !keyIndex[bvKey])
|
|
1326
|
+
bvKey = arrayKey;
|
|
1327
|
+
}
|
|
1266
1328
|
const bvLabel = String(bvVal.label || bvVal.name || bvKey);
|
|
1267
1329
|
if (bvKey) {
|
|
1268
1330
|
const bvType = resolveSourceFieldType(bvKey, meta);
|
|
@@ -1273,15 +1335,28 @@ export function buildSettingDetail(nodeData, detailItems, meta, appId, eventId,
|
|
|
1273
1335
|
prefix = String(meta._upstream_form_name || '');
|
|
1274
1336
|
}
|
|
1275
1337
|
const parentName = prefix ? `${prefix}.${bvLabel}[]` : `${bvLabel}[]`;
|
|
1276
|
-
|
|
1338
|
+
// CustomTrigger 的明细依据值也是表维度上下文,frontId 必须取
|
|
1339
|
+
// CustFormTableDto.id,不能把 detail1 这类 paramKey 尾段直接当成 ID。
|
|
1340
|
+
const customTriggerTableId = isCustomTriggerSource
|
|
1341
|
+
? resolveCustomTriggerDtoId(bvKey, meta?._custom_trigger_data, 'table')
|
|
1342
|
+
: '';
|
|
1343
|
+
const legacyBvSubformId = bvKey.includes('[]')
|
|
1344
|
+
? bvKey.split('[]')[0].includes('.')
|
|
1345
|
+
? bvKey.split('[]')[0].slice(bvKey.split('[]')[0].lastIndexOf('.') + 1)
|
|
1346
|
+
: bvKey
|
|
1347
|
+
: bvKey;
|
|
1348
|
+
// CustomTrigger 无法定位 DTO 表对象时按统一规则留空;不能回退到
|
|
1349
|
+
// detail1 这类业务 paramKey,否则既不是真实 ID,也会触发数字校验。
|
|
1350
|
+
const bvSubformId = isCustomTriggerSource ? customTriggerTableId : legacyBvSubformId;
|
|
1277
1351
|
ele.basisValue = {
|
|
1278
|
-
frontId: bvSubformId,
|
|
1352
|
+
frontId: normalizeNumericFrontId(bvSubformId, '明细依据值 FormulaBean.frontId'),
|
|
1279
1353
|
formulaType: bvType,
|
|
1280
1354
|
name: bvLabel,
|
|
1355
|
+
businessId: appId,
|
|
1281
1356
|
id: genSfId(),
|
|
1282
1357
|
source: String(eventId),
|
|
1283
1358
|
type: '3',
|
|
1284
|
-
value:
|
|
1359
|
+
value: `${basisContextRoot}.${bvKey}`,
|
|
1285
1360
|
childs: [],
|
|
1286
1361
|
config: {
|
|
1287
1362
|
paramKey: bvKey,
|
|
@@ -1293,12 +1368,13 @@ export function buildSettingDetail(nodeData, detailItems, meta, appId, eventId,
|
|
|
1293
1368
|
multKey: '',
|
|
1294
1369
|
multTypeObj: {
|
|
1295
1370
|
allName: parentName, currentName: parentName,
|
|
1296
|
-
currentParamKey:
|
|
1371
|
+
currentParamKey: `${basisContextRoot}.${bvKey}`, allParamKey: `${basisContextRoot}.${bvKey}`,
|
|
1297
1372
|
},
|
|
1298
1373
|
comId: String(eventId),
|
|
1299
|
-
comType: 'ApproveTrigger',
|
|
1374
|
+
comType: isCustomTriggerSource ? 'CustomTrigger' : 'ApproveTrigger',
|
|
1300
1375
|
newParentName: parentName,
|
|
1301
|
-
|
|
1376
|
+
tableName: basisTableName,
|
|
1377
|
+
fieldInfo: { paramKey: bvKey, tablePrimaryKey: basisContextRoot },
|
|
1302
1378
|
},
|
|
1303
1379
|
parentId: '0',
|
|
1304
1380
|
};
|
|
@@ -1306,6 +1382,10 @@ export function buildSettingDetail(nodeData, detailItems, meta, appId, eventId,
|
|
|
1306
1382
|
}
|
|
1307
1383
|
const mapping = item.mapping || {};
|
|
1308
1384
|
const constants = item.constants || {};
|
|
1385
|
+
const detailTargetFormId = String((nodeData.targetForm || {}).id || '');
|
|
1386
|
+
const targetDetailFields = detailTargetFormId
|
|
1387
|
+
? (getTargetDetailFields()[detailTargetFormId] || {})[String(item.detailTableId)] || {}
|
|
1388
|
+
: {};
|
|
1309
1389
|
if (mapping && typeof mapping === 'object' && !Array.isArray(mapping)) {
|
|
1310
1390
|
for (const [sourceKey, targetFieldIdRaw] of Object.entries(mapping)) {
|
|
1311
1391
|
const targetFieldId = targetFieldIdRaw;
|
|
@@ -1326,10 +1406,16 @@ export function buildSettingDetail(nodeData, detailItems, meta, appId, eventId,
|
|
|
1326
1406
|
const refKey = String(targetFieldId.paramKey || sourceKey);
|
|
1327
1407
|
const refLabel = String(targetFieldId.label || sourceKey);
|
|
1328
1408
|
const refDetail = String(targetFieldId.detailLabel || '');
|
|
1329
|
-
|
|
1409
|
+
const declaredKind = String(targetFieldId.kind || targetFieldId.assignmentKind || 'context');
|
|
1410
|
+
assignment = {
|
|
1411
|
+
...(targetFieldId.assignment && typeof targetFieldId.assignment === 'object' ? targetFieldId.assignment : {}),
|
|
1412
|
+
kind: declaredKind, paramKey: refKey, label: refLabel,
|
|
1413
|
+
};
|
|
1330
1414
|
if (refDetail)
|
|
1331
1415
|
assignment.detailLabel = refDetail;
|
|
1332
|
-
|
|
1416
|
+
const targetMeta = targetDetailFields[raw] || {};
|
|
1417
|
+
const targetType = String(targetMeta.componentKey || targetMeta.type || 'Text');
|
|
1418
|
+
eleData[raw] = buildSettingEntry(raw, assignment, targetType, meta, appId, eventId, operate, nodeType, true, '');
|
|
1333
1419
|
}
|
|
1334
1420
|
else {
|
|
1335
1421
|
let raw = String(targetFieldId);
|
|
@@ -1342,16 +1428,20 @@ export function buildSettingDetail(nodeData, detailItems, meta, appId, eventId,
|
|
|
1342
1428
|
raw = raw.slice(1);
|
|
1343
1429
|
}
|
|
1344
1430
|
assignment = { kind: 'context', paramKey: String(sourceKey), label: resolveSourceFieldLabel(String(sourceKey), meta, String(sourceKey)) };
|
|
1345
|
-
|
|
1431
|
+
const targetMeta = targetDetailFields[raw] || {};
|
|
1432
|
+
const targetType = String(targetMeta.componentKey || targetMeta.type || 'Text');
|
|
1433
|
+
eleData[raw] = buildSettingEntry(raw, assignment, targetType, meta, appId, eventId, operate, nodeType, true, '');
|
|
1346
1434
|
}
|
|
1347
1435
|
}
|
|
1348
1436
|
}
|
|
1349
1437
|
if (constants && typeof constants === 'object' && !Array.isArray(constants)) {
|
|
1350
1438
|
for (const [targetFieldIdRaw, valueRaw] of Object.entries(constants)) {
|
|
1351
1439
|
const targetFieldId = String(targetFieldIdRaw);
|
|
1352
|
-
const
|
|
1440
|
+
const targetMeta = targetDetailFields[targetFieldId] || {};
|
|
1441
|
+
const value = resolveEnumConstant(valueRaw, targetMeta);
|
|
1353
1442
|
const [assignment, ft] = normalizeConstantAssignment(value, 'Text');
|
|
1354
|
-
|
|
1443
|
+
const targetType = String(targetMeta.componentKey || targetMeta.type || ft);
|
|
1444
|
+
eleData[targetFieldId] = buildSettingEntry(targetFieldId, assignment, targetType, meta, appId, eventId, 'OPERATE_EQUAL', nodeType, true, '');
|
|
1355
1445
|
}
|
|
1356
1446
|
}
|
|
1357
1447
|
const formula = item.formula || {};
|
|
@@ -1372,14 +1462,22 @@ export function buildSettingDetail(nodeData, detailItems, meta, appId, eventId,
|
|
|
1372
1462
|
const targetFormId = String((nodeData.targetForm || {}).id || '');
|
|
1373
1463
|
autoFillDetailMapping(eleData, item, targetFormId, meta, appId, eventId, nodeType);
|
|
1374
1464
|
ele.data = eleData;
|
|
1375
|
-
|
|
1376
|
-
|
|
1465
|
+
ele.deleteFields = Array.isArray(item.deleteFields) ? item.deleteFields : [];
|
|
1466
|
+
// EsbDetailForm 的明细操作值来自 ActionEbDlg:add/update/updateAdd/cover/delete/default。
|
|
1467
|
+
// ActionEbAdd 没有明细操作选择器,不能写入不存在的 "insert";缺省操作由 ADD
|
|
1468
|
+
// 组件按新增明细处理。ActionEbUpdate 则保留用户明确选择的策略。
|
|
1377
1469
|
if (item.operateType)
|
|
1378
|
-
ele.operateType = item.operateType;
|
|
1379
|
-
else
|
|
1470
|
+
ele.operateType = String(item.operateType);
|
|
1471
|
+
else if (nodeType !== 'ActionEbAdd' && nodeType !== 'ActionEbUpdate')
|
|
1380
1472
|
ele.operateType = 'insert';
|
|
1381
|
-
if (item.
|
|
1382
|
-
ele.
|
|
1473
|
+
if (item.updateType)
|
|
1474
|
+
ele.updateType = String(item.updateType);
|
|
1475
|
+
if (item.updatePolicy !== undefined && item.updatePolicy !== null && item.updatePolicy !== '') {
|
|
1476
|
+
ele.updatePolicy = String(item.updatePolicy);
|
|
1477
|
+
}
|
|
1478
|
+
if (item.rowId !== undefined && item.rowId !== null && item.rowId !== '') {
|
|
1479
|
+
ele.rowId = buildDetailRowId(item.rowId, meta, appId, String(eventId), nodeType);
|
|
1480
|
+
}
|
|
1383
1481
|
detailOut.push(ele);
|
|
1384
1482
|
}
|
|
1385
1483
|
if (detailOut.length)
|
|
@@ -1442,6 +1540,13 @@ export function convertNode(draftAction, isEvent = false, meta = null, appId = '
|
|
|
1442
1540
|
parentId: '0',
|
|
1443
1541
|
};
|
|
1444
1542
|
const nodeData = node.data || {};
|
|
1543
|
+
if (nodeType === 'ApproveCreate') {
|
|
1544
|
+
// ApproveCreateComponent#save 使用这些 DTO 字段;它们不能依赖前端默认值。
|
|
1545
|
+
nodeData.module ??= 'workflow';
|
|
1546
|
+
nodeData.applicationId ??= String(appId);
|
|
1547
|
+
nodeData.dataId ??= [];
|
|
1548
|
+
nodeData.rejectToNodeId ??= [];
|
|
1549
|
+
}
|
|
1445
1550
|
const pendingMapping = nodeData._pending_mapping;
|
|
1446
1551
|
delete nodeData._pending_mapping;
|
|
1447
1552
|
const pendingConstants = nodeData._pending_constants;
|
|
@@ -1461,15 +1566,18 @@ export function convertNode(draftAction, isEvent = false, meta = null, appId = '
|
|
|
1461
1566
|
delete nodeData.setting;
|
|
1462
1567
|
const main = (setting || {}).main || {};
|
|
1463
1568
|
const detailOut = (setting || {}).detail || [];
|
|
1464
|
-
nodeData.formData = { main, detail: detailOut, dataDrWithCalc: false };
|
|
1465
|
-
|
|
1466
|
-
|
|
1467
|
-
|
|
1468
|
-
bizFields =
|
|
1469
|
-
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
|
|
1569
|
+
nodeData.formData = { main, detail: detailOut, dataDrWithCalc: false, deleteMainFields: [] };
|
|
1570
|
+
// ApproveCreateDTO 没有使用 fields;目标字段仅用于编译 mapping,不能写入保存 DTO。
|
|
1571
|
+
if (nodeType !== 'ApproveCreate') {
|
|
1572
|
+
const fieldsMetaKey = String(formDataPayload.fieldsMetaKey || '_bizFields');
|
|
1573
|
+
let bizFields = meta && typeof meta === 'object' ? (meta[fieldsMetaKey] || {}) : {};
|
|
1574
|
+
if (!bizFields || Object.keys(bizFields).length === 0)
|
|
1575
|
+
bizFields = draftAction.params?.[fieldsMetaKey] || {};
|
|
1576
|
+
nodeData.fields = {
|
|
1577
|
+
main: bizFields && typeof bizFields === 'object' ? (bizFields.main || []) : [],
|
|
1578
|
+
detail: bizFields && typeof bizFields === 'object' ? (bizFields.detail || []) : [],
|
|
1579
|
+
};
|
|
1580
|
+
}
|
|
1473
1581
|
}
|
|
1474
1582
|
else if (pendingDetail && !(pendingMapping || pendingConstants || pendingFormula)) {
|
|
1475
1583
|
// 只有明细表赋值(无主表 mapping/constants):先 _fill_setting 生成空 main + setting,再放回 detail。
|
|
@@ -1479,8 +1587,9 @@ export function convertNode(draftAction, isEvent = false, meta = null, appId = '
|
|
|
1479
1587
|
}
|
|
1480
1588
|
else if (formDataPayload && typeof formDataPayload === 'object') {
|
|
1481
1589
|
// 声明 formDataPayload 的组件即使没有字段映射,也显式携带表单数据容器。
|
|
1482
|
-
nodeData.formData ??= { main: {}, detail: [], dataDrWithCalc: false };
|
|
1483
|
-
|
|
1590
|
+
nodeData.formData ??= { main: {}, detail: [], dataDrWithCalc: false, deleteMainFields: [] };
|
|
1591
|
+
if (nodeType !== 'ApproveCreate')
|
|
1592
|
+
nodeData.fields ??= { main: [], detail: [] };
|
|
1484
1593
|
nodeData.formDataId ??= genSfId();
|
|
1485
1594
|
}
|
|
1486
1595
|
else if ((pendingMapping || pendingConstants || pendingFormula) && !('setting' in nodeData)) {
|
|
@@ -1609,7 +1718,9 @@ export function convertNode(draftAction, isEvent = false, meta = null, appId = '
|
|
|
1609
1718
|
// saveDesign 需要 fields 明确登记组件配置的可持久化字段。
|
|
1610
1719
|
// 手工添加的 EnquiryForm 等节点都会带这组字段;仅发送 data
|
|
1611
1720
|
// 会导致后端保存后无法按 data.id 读取配置,前端回显为全部必填为空。
|
|
1612
|
-
|
|
1721
|
+
// ApproveCreate 直接对应 ApproveCreateDTO,后端不接收该字段。
|
|
1722
|
+
if (nodeType !== 'ApproveCreate')
|
|
1723
|
+
node.fields = Object.keys(node.data || {});
|
|
1613
1724
|
delete node.componentId;
|
|
1614
1725
|
// 保留上面依据 previousNodeId 建立的 sources。组件目录壳只补前端元数据,
|
|
1615
1726
|
// 不能把非首节点重新变成起始节点,否则平台会拒绝“有两个起始执行组件”。
|
|
@@ -1627,6 +1738,13 @@ export function convertNode(draftAction, isEvent = false, meta = null, appId = '
|
|
|
1627
1738
|
if (postNode) {
|
|
1628
1739
|
node = postNode(node, { draftAction, meta: meta || {}, appId, eventNodeId, isEvent });
|
|
1629
1740
|
}
|
|
1741
|
+
// ApproveCreateDTO 的保存请求不需要 fields;同时清掉可能由目录元数据或
|
|
1742
|
+
// 旧编译结果带入的同名字段,避免它出现在最终请求 JSON 中。
|
|
1743
|
+
if (nodeType === 'ApproveCreate') {
|
|
1744
|
+
delete node.fields;
|
|
1745
|
+
if (node.data && typeof node.data === 'object')
|
|
1746
|
+
delete node.data.fields;
|
|
1747
|
+
}
|
|
1630
1748
|
return node;
|
|
1631
1749
|
}
|
|
1632
1750
|
// ── convert_condition ───────────────────────────────────────
|
|
@@ -1815,20 +1933,25 @@ export function convert(draft, appId = '', sceneId = '', metadataPath = '', leni
|
|
|
1815
1933
|
meta = JSON.parse(fs.readFileSync(metadataPath, 'utf-8'));
|
|
1816
1934
|
if (!meta || typeof meta !== 'object')
|
|
1817
1935
|
meta = {};
|
|
1936
|
+
let draftEvent = draft.event || {};
|
|
1937
|
+
let draftActions = draft.actions || [];
|
|
1818
1938
|
meta._scene_id = String(sceneId || '');
|
|
1819
1939
|
meta._http_response_fields = collectHttpResponseFields(draft.actions || []);
|
|
1820
1940
|
meta._componentOptions = draft._componentOptions && typeof draft._componentOptions === 'object'
|
|
1821
1941
|
? draft._componentOptions
|
|
1822
1942
|
: {};
|
|
1823
1943
|
meta._function_registry = Array.isArray(draft._functionRegistry) ? draft._functionRegistry : undefined;
|
|
1824
|
-
|
|
1825
|
-
|
|
1944
|
+
// 事件上下文来源对所有事件类型都有效;CustomTrigger 没有 workflowId,
|
|
1945
|
+
// 不能等到 workflowId 分支里再设置,否则其字段公式会被误判为 ApprovalData。
|
|
1826
1946
|
const lenientWarnings = [];
|
|
1827
1947
|
if ('resolvedPlan' in draft) {
|
|
1828
1948
|
const rp = draft.resolvedPlan;
|
|
1829
1949
|
draftEvent = rp.event || {};
|
|
1830
1950
|
draftActions = rp.actions || [];
|
|
1831
1951
|
}
|
|
1952
|
+
// 事件上下文来源对所有事件类型都有效;CustomTrigger 没有 workflowId,
|
|
1953
|
+
// 不能等到 workflowId 分支里再设置,否则其字段公式会被误判为 ApprovalData。
|
|
1954
|
+
meta._upstream_component_type = String(draftEvent?.type || 'ApproveTrigger');
|
|
1832
1955
|
const eventNode = convertNode(draftEvent, true, meta, appId);
|
|
1833
1956
|
const eventId = eventNode.id;
|
|
1834
1957
|
const eventName = String(eventNode.attr?.componentName || eventNode.data?.typeName || eventNode.name || '流程触发');
|
|
@@ -1873,7 +1996,6 @@ export function convert(draft, appId = '', sceneId = '', metadataPath = '', leni
|
|
|
1873
1996
|
eventFormId = workflowId;
|
|
1874
1997
|
}
|
|
1875
1998
|
meta._event_form_id = eventFormId;
|
|
1876
|
-
meta._upstream_component_type = String(draftEvent?.type || 'ApproveTrigger');
|
|
1877
1999
|
let wfName = '';
|
|
1878
2000
|
if (Array.isArray(workflowPath) && workflowPath.length && workflowPath[0] && typeof workflowPath[0] === 'object')
|
|
1879
2001
|
wfName = String(workflowPath[0].name || workflowPath[0].text || '');
|