weaver-e10-builder 1.1.9 → 1.2.3
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/README.md +9 -20
- package/dist/commands/actionflow.d.ts.map +1 -1
- package/dist/commands/actionflow.js +58 -0
- package/dist/commands/actionflow.js.map +1 -1
- package/dist/commands/app.d.ts.map +1 -1
- package/dist/commands/app.js +17 -5
- package/dist/commands/app.js.map +1 -1
- package/dist/commands/auth.d.ts.map +1 -1
- package/dist/commands/auth.js +9 -2
- package/dist/commands/auth.js.map +1 -1
- package/dist/commands/designer.d.ts.map +1 -1
- package/dist/commands/designer.js +22 -1
- package/dist/commands/designer.js.map +1 -1
- package/dist/commands/form-add-detail-table.d.ts.map +1 -1
- package/dist/commands/form-add-detail-table.js +127 -7
- package/dist/commands/form-add-detail-table.js.map +1 -1
- package/dist/commands/form-ebuilder-columns.d.ts +7 -0
- package/dist/commands/form-ebuilder-columns.d.ts.map +1 -1
- package/dist/commands/form-ebuilder-columns.js +2 -24
- package/dist/commands/form-ebuilder-columns.js.map +1 -1
- package/dist/commands/form-field-props.d.ts +3 -0
- package/dist/commands/form-field-props.d.ts.map +1 -0
- package/dist/commands/form-field-props.js +242 -0
- package/dist/commands/form-field-props.js.map +1 -0
- package/dist/commands/form-formula.d.ts.map +1 -1
- package/dist/commands/form-formula.js +35 -11
- package/dist/commands/form-formula.js.map +1 -1
- package/dist/commands/form-layout-init.d.ts +0 -7
- package/dist/commands/form-layout-init.d.ts.map +1 -1
- package/dist/commands/form-layout-init.js +23 -39
- package/dist/commands/form-layout-init.js.map +1 -1
- package/dist/commands/form-nlist.d.ts +1 -1
- package/dist/commands/form-nlist.d.ts.map +1 -1
- package/dist/commands/form-nlist.js +5 -3
- package/dist/commands/form-nlist.js.map +1 -1
- package/dist/commands/form-serial-mark.d.ts.map +1 -1
- package/dist/commands/form-serial-mark.js +134 -42
- package/dist/commands/form-serial-mark.js.map +1 -1
- package/dist/commands/form-virtual.d.ts +3 -0
- package/dist/commands/form-virtual.d.ts.map +1 -0
- package/dist/commands/form-virtual.js +197 -0
- package/dist/commands/form-virtual.js.map +1 -0
- package/dist/commands/form.d.ts +3 -0
- package/dist/commands/form.d.ts.map +1 -1
- package/dist/commands/form.js +356 -129
- package/dist/commands/form.js.map +1 -1
- package/dist/commands/interface.js +1 -1
- package/dist/commands/interface.js.map +1 -1
- package/dist/commands/report-admin.d.ts +5 -0
- package/dist/commands/report-admin.d.ts.map +1 -0
- package/dist/commands/report-admin.js +420 -0
- package/dist/commands/report-admin.js.map +1 -0
- package/dist/commands/report-query.d.ts +3 -0
- package/dist/commands/report-query.d.ts.map +1 -0
- package/dist/commands/report-query.js +314 -0
- package/dist/commands/report-query.js.map +1 -0
- package/dist/commands/report-validate.d.ts +3 -0
- package/dist/commands/report-validate.d.ts.map +1 -0
- package/dist/commands/report-validate.js +719 -0
- package/dist/commands/report-validate.js.map +1 -0
- package/dist/commands/report.d.ts +12 -0
- package/dist/commands/report.d.ts.map +1 -0
- package/dist/commands/report.js +666 -0
- package/dist/commands/report.js.map +1 -0
- package/dist/commands/wf-form.d.ts +34 -0
- package/dist/commands/wf-form.d.ts.map +1 -1
- package/dist/commands/wf-form.js +303 -127
- package/dist/commands/wf-form.js.map +1 -1
- package/dist/commands/workflow-advanced.d.ts.map +1 -1
- package/dist/commands/workflow-advanced.js +109 -90
- package/dist/commands/workflow-advanced.js.map +1 -1
- package/dist/commands/workflow-auth-resp.d.ts +8 -0
- package/dist/commands/workflow-auth-resp.d.ts.map +1 -0
- package/dist/commands/workflow-auth-resp.js +629 -0
- package/dist/commands/workflow-auth-resp.js.map +1 -0
- package/dist/commands/workflow-condition.d.ts.map +1 -1
- package/dist/commands/workflow-condition.js +3 -1
- package/dist/commands/workflow-condition.js.map +1 -1
- package/dist/commands/workflow-create-auth-resp.d.ts +4 -0
- package/dist/commands/workflow-create-auth-resp.d.ts.map +1 -0
- package/dist/commands/workflow-create-auth-resp.js +204 -0
- package/dist/commands/workflow-create-auth-resp.js.map +1 -0
- package/dist/commands/workflow-node-assign-flow.d.ts +3 -0
- package/dist/commands/workflow-node-assign-flow.d.ts.map +1 -0
- package/dist/commands/workflow-node-assign-flow.js +342 -0
- package/dist/commands/workflow-node-assign-flow.js.map +1 -0
- package/dist/commands/workflow-node-overtime.d.ts.map +1 -1
- package/dist/commands/workflow-node-overtime.js +125 -92
- package/dist/commands/workflow-node-overtime.js.map +1 -1
- package/dist/commands/workflow-node-reject.d.ts +52 -0
- package/dist/commands/workflow-node-reject.d.ts.map +1 -1
- package/dist/commands/workflow-node-reject.js +134 -63
- package/dist/commands/workflow-node-reject.js.map +1 -1
- package/dist/commands/workflow-node-sign.d.ts.map +1 -1
- package/dist/commands/workflow-node-sign.js +14 -7
- package/dist/commands/workflow-node-sign.js.map +1 -1
- package/dist/commands/workflow-node-validate.d.ts +6 -0
- package/dist/commands/workflow-node-validate.d.ts.map +1 -1
- package/dist/commands/workflow-node-validate.js +143 -21
- package/dist/commands/workflow-node-validate.js.map +1 -1
- package/dist/commands/workflow-node.d.ts +2 -0
- package/dist/commands/workflow-node.d.ts.map +1 -1
- package/dist/commands/workflow-node.js +434 -165
- package/dist/commands/workflow-node.js.map +1 -1
- package/dist/commands/workflow-numbering.d.ts.map +1 -1
- package/dist/commands/workflow-numbering.js +73 -34
- package/dist/commands/workflow-numbering.js.map +1 -1
- package/dist/commands/workflow-operator-sign.d.ts +10 -0
- package/dist/commands/workflow-operator-sign.d.ts.map +1 -1
- package/dist/commands/workflow-operator-sign.js +40 -53
- package/dist/commands/workflow-operator-sign.js.map +1 -1
- package/dist/commands/workflow-plan-range.d.ts +10 -0
- package/dist/commands/workflow-plan-range.d.ts.map +1 -1
- package/dist/commands/workflow-plan-range.js +15 -54
- package/dist/commands/workflow-plan-range.js.map +1 -1
- package/dist/commands/workflow-segment.d.ts.map +1 -1
- package/dist/commands/workflow-segment.js +22 -14
- package/dist/commands/workflow-segment.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +13 -69
- package/dist/commands/workflow.js.map +1 -1
- package/dist/core/auth.js +1 -1
- package/dist/index.js +17 -0
- package/dist/index.js.map +1 -1
- package/dist/services/actionflow/build_workflow_draft.d.ts +6 -0
- package/dist/services/actionflow/build_workflow_draft.d.ts.map +1 -1
- package/dist/services/actionflow/build_workflow_draft.js +63 -4
- package/dist/services/actionflow/build_workflow_draft.js.map +1 -1
- package/dist/services/actionflow/calendar_mapper.d.ts +2 -2
- package/dist/services/actionflow/calendar_mapper.d.ts.map +1 -1
- package/dist/services/actionflow/calendar_mapper.js +33 -13
- package/dist/services/actionflow/calendar_mapper.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 +13 -1
- package/dist/services/actionflow/components/action_eb_add.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_delete.js +2 -2
- package/dist/services/actionflow/components/action_eb_delete.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_recover.js +2 -2
- package/dist/services/actionflow/components/action_eb_recover.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_save_version.js +2 -2
- package/dist/services/actionflow/components/action_eb_save_version.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 +15 -3
- package/dist/services/actionflow/components/action_eb_update.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.js +5 -5
- 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 +5 -2
- package/dist/services/actionflow/components/approve_create.js.map +1 -1
- package/dist/services/actionflow/components/approve_trigger.d.ts.map +1 -1
- package/dist/services/actionflow/components/approve_trigger.js +5 -0
- package/dist/services/actionflow/components/approve_trigger.js.map +1 -1
- package/dist/services/actionflow/components/assign_var.d.ts +12 -0
- package/dist/services/actionflow/components/assign_var.d.ts.map +1 -0
- package/dist/services/actionflow/components/assign_var.js +133 -0
- package/dist/services/actionflow/components/assign_var.js.map +1 -0
- package/dist/services/actionflow/components/date_trigger.d.ts.map +1 -1
- package/dist/services/actionflow/components/date_trigger.js +14 -1
- package/dist/services/actionflow/components/date_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 +18 -10
- package/dist/services/actionflow/components/dml_execute.js.map +1 -1
- package/dist/services/actionflow/components/document_actions.js +5 -5
- package/dist/services/actionflow/components/document_actions.js.map +1 -1
- package/dist/services/actionflow/components/eb_get_data_by_id.d.ts.map +1 -1
- package/dist/services/actionflow/components/eb_get_data_by_id.js +8 -6
- package/dist/services/actionflow/components/eb_get_data_by_id.js.map +1 -1
- package/dist/services/actionflow/components/enquiry_form.d.ts.map +1 -1
- package/dist/services/actionflow/components/enquiry_form.js +28 -9
- 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 +34 -13
- package/dist/services/actionflow/components/hrm_actions.js.map +1 -1
- package/dist/services/actionflow/components/index.d.ts.map +1 -1
- package/dist/services/actionflow/components/index.js +12 -3
- package/dist/services/actionflow/components/index.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 +43 -4
- package/dist/services/actionflow/components/inner_mq_send.js.map +1 -1
- package/dist/services/actionflow/components/meeting_create.js +9 -9
- package/dist/services/actionflow/components/meeting_create.js.map +1 -1
- package/dist/services/actionflow/components/multiple_execution.d.ts.map +1 -1
- package/dist/services/actionflow/components/multiple_execution.js +83 -4
- package/dist/services/actionflow/components/multiple_execution.js.map +1 -1
- package/dist/services/actionflow/components/output.d.ts +3 -2
- package/dist/services/actionflow/components/output.d.ts.map +1 -1
- package/dist/services/actionflow/components/output.js +33 -0
- package/dist/services/actionflow/components/output.js.map +1 -1
- package/dist/services/actionflow/components/schedule_create.js +10 -10
- package/dist/services/actionflow/components/schedule_create.js.map +1 -1
- package/dist/services/actionflow/components/send_message.js +1 -1
- package/dist/services/actionflow/components/send_message.js.map +1 -1
- package/dist/services/actionflow/components/simple_scheduler.d.ts.map +1 -1
- package/dist/services/actionflow/components/simple_scheduler.js +42 -9
- package/dist/services/actionflow/components/simple_scheduler.js.map +1 -1
- package/dist/services/actionflow/components/time_batch_trigger.d.ts.map +1 -1
- package/dist/services/actionflow/components/time_batch_trigger.js +43 -13
- package/dist/services/actionflow/components/time_batch_trigger.js.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.d.ts +0 -1
- package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.js +21 -27
- package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
- package/dist/services/actionflow/context_preflight.d.ts +30 -1
- package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
- package/dist/services/actionflow/context_preflight.js +175 -2
- package/dist/services/actionflow/context_preflight.js.map +1 -1
- package/dist/services/actionflow/design_client.d.ts +4 -0
- package/dist/services/actionflow/design_client.d.ts.map +1 -1
- package/dist/services/actionflow/design_client.js +10 -0
- package/dist/services/actionflow/design_client.js.map +1 -1
- package/dist/services/actionflow/dynamic_resources.d.ts +7 -1
- package/dist/services/actionflow/dynamic_resources.d.ts.map +1 -1
- package/dist/services/actionflow/dynamic_resources.js +74 -10
- package/dist/services/actionflow/dynamic_resources.js.map +1 -1
- package/dist/services/actionflow/enrich_approve_trigger.d.ts.map +1 -1
- package/dist/services/actionflow/enrich_approve_trigger.js +18 -3
- package/dist/services/actionflow/enrich_approve_trigger.js.map +1 -1
- package/dist/services/actionflow/form_source.d.ts +35 -0
- package/dist/services/actionflow/form_source.d.ts.map +1 -1
- package/dist/services/actionflow/form_source.js +50 -0
- package/dist/services/actionflow/form_source.js.map +1 -1
- package/dist/services/actionflow/formula_service.d.ts +1 -1
- package/dist/services/actionflow/formula_service.d.ts.map +1 -1
- package/dist/services/actionflow/formula_service.js +186 -13
- package/dist/services/actionflow/formula_service.js.map +1 -1
- package/dist/services/actionflow/generation_service.d.ts.map +1 -1
- package/dist/services/actionflow/generation_service.js +18 -2
- package/dist/services/actionflow/generation_service.js.map +1 -1
- package/dist/services/actionflow/preflight_service.d.ts +1 -1
- package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
- package/dist/services/actionflow/preflight_service.js +168 -5
- package/dist/services/actionflow/preflight_service.js.map +1 -1
- package/dist/services/actionflow/save_workflow_draft.d.ts +8 -0
- package/dist/services/actionflow/save_workflow_draft.d.ts.map +1 -1
- package/dist/services/actionflow/save_workflow_draft.js +6 -2
- package/dist/services/actionflow/save_workflow_draft.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 +125 -7
- package/dist/services/actionflow/update_service.js.map +1 -1
- package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/workflow_compiler.js +17 -9
- package/dist/services/actionflow/workflow_compiler.js.map +1 -1
- package/dist/services/browser.d.ts +34 -0
- package/dist/services/browser.d.ts.map +1 -0
- package/dist/services/browser.js +57 -0
- package/dist/services/browser.js.map +1 -0
- package/dist/services/esb-interface/document-parser.d.ts +5 -0
- package/dist/services/esb-interface/document-parser.d.ts.map +1 -1
- package/dist/services/esb-interface/document-parser.js +117 -1
- package/dist/services/esb-interface/document-parser.js.map +1 -1
- package/dist/services/esb-interface/importer.d.ts.map +1 -1
- package/dist/services/esb-interface/importer.js +7 -2
- package/dist/services/esb-interface/importer.js.map +1 -1
- package/dist/services/field-props-data.d.ts +56 -0
- package/dist/services/field-props-data.d.ts.map +1 -0
- package/dist/services/field-props-data.js +732 -0
- package/dist/services/field-props-data.js.map +1 -0
- package/dist/services/form-create.d.ts +2 -1
- package/dist/services/form-create.d.ts.map +1 -1
- package/dist/services/form-create.js.map +1 -1
- package/dist/services/form-ebuilder-columns.d.ts +50 -0
- package/dist/services/form-ebuilder-columns.d.ts.map +1 -0
- package/dist/services/form-ebuilder-columns.js +68 -0
- package/dist/services/form-ebuilder-columns.js.map +1 -0
- package/dist/services/form-edit-base.d.ts +45 -0
- package/dist/services/form-edit-base.d.ts.map +1 -0
- package/dist/services/form-edit-base.js +76 -0
- package/dist/services/form-edit-base.js.map +1 -0
- package/dist/services/form-field-drop.d.ts +70 -0
- package/dist/services/form-field-drop.d.ts.map +1 -0
- package/dist/services/form-field-drop.js +118 -0
- package/dist/services/form-field-drop.js.map +1 -0
- package/dist/services/form-field-patch.d.ts +47 -0
- package/dist/services/form-field-patch.d.ts.map +1 -0
- package/dist/services/form-field-patch.js +88 -0
- package/dist/services/form-field-patch.js.map +1 -0
- package/dist/services/form-nlist.d.ts +1 -0
- package/dist/services/form-nlist.d.ts.map +1 -1
- package/dist/services/form-nlist.js +32 -5
- package/dist/services/form-nlist.js.map +1 -1
- package/dist/services/form-style-template.d.ts +17 -0
- package/dist/services/form-style-template.d.ts.map +1 -0
- package/dist/services/form-style-template.js +102 -0
- package/dist/services/form-style-template.js.map +1 -0
- package/dist/services/form-sub-detail.d.ts +51 -3
- package/dist/services/form-sub-detail.d.ts.map +1 -1
- package/dist/services/form-sub-detail.js +183 -20
- package/dist/services/form-sub-detail.js.map +1 -1
- package/dist/services/form-virtual.d.ts +60 -0
- package/dist/services/form-virtual.d.ts.map +1 -0
- package/dist/services/form-virtual.js +331 -0
- package/dist/services/form-virtual.js.map +1 -0
- package/dist/services/formula-detail.d.ts +68 -5
- package/dist/services/formula-detail.d.ts.map +1 -1
- package/dist/services/formula-detail.js +110 -44
- package/dist/services/formula-detail.js.map +1 -1
- package/dist/services/report/analyze.d.ts +67 -0
- package/dist/services/report/analyze.d.ts.map +1 -0
- package/dist/services/report/analyze.js +173 -0
- package/dist/services/report/analyze.js.map +1 -0
- package/dist/services/report/build.d.ts +166 -0
- package/dist/services/report/build.d.ts.map +1 -0
- package/dist/services/report/build.js +520 -0
- package/dist/services/report/build.js.map +1 -0
- package/dist/services/report/constants.d.ts +145 -0
- package/dist/services/report/constants.d.ts.map +1 -0
- package/dist/services/report/constants.js +250 -0
- package/dist/services/report/constants.js.map +1 -0
- package/dist/services/report/dataset.d.ts +73 -0
- package/dist/services/report/dataset.d.ts.map +1 -0
- package/dist/services/report/dataset.js +185 -0
- package/dist/services/report/dataset.js.map +1 -0
- package/dist/services/report/fields.d.ts +80 -0
- package/dist/services/report/fields.d.ts.map +1 -0
- package/dist/services/report/fields.js +245 -0
- package/dist/services/report/fields.js.map +1 -0
- package/dist/services/report/forms.d.ts +70 -0
- package/dist/services/report/forms.d.ts.map +1 -0
- package/dist/services/report/forms.js +237 -0
- package/dist/services/report/forms.js.map +1 -0
- package/dist/services/report/guard.d.ts +73 -0
- package/dist/services/report/guard.d.ts.map +1 -0
- package/dist/services/report/guard.js +262 -0
- package/dist/services/report/guard.js.map +1 -0
- package/dist/services/report/http.d.ts +118 -0
- package/dist/services/report/http.d.ts.map +1 -0
- package/dist/services/report/http.js +159 -0
- package/dist/services/report/http.js.map +1 -0
- package/dist/services/report/lifecycle.d.ts +107 -0
- package/dist/services/report/lifecycle.d.ts.map +1 -0
- package/dist/services/report/lifecycle.js +323 -0
- package/dist/services/report/lifecycle.js.map +1 -0
- package/dist/services/report/permission.d.ts +59 -0
- package/dist/services/report/permission.d.ts.map +1 -0
- package/dist/services/report/permission.js +286 -0
- package/dist/services/report/permission.js.map +1 -0
- package/dist/services/report/query-checks.d.ts +124 -0
- package/dist/services/report/query-checks.d.ts.map +1 -0
- package/dist/services/report/query-checks.js +374 -0
- package/dist/services/report/query-checks.js.map +1 -0
- package/dist/services/report/query.d.ts +106 -0
- package/dist/services/report/query.d.ts.map +1 -0
- package/dist/services/report/query.js +278 -0
- package/dist/services/report/query.js.map +1 -0
- package/dist/services/report/render.d.ts +52 -0
- package/dist/services/report/render.d.ts.map +1 -0
- package/dist/services/report/render.js +138 -0
- package/dist/services/report/render.js.map +1 -0
- package/dist/services/report/reports.d.ts +110 -0
- package/dist/services/report/reports.d.ts.map +1 -0
- package/dist/services/report/reports.js +179 -0
- package/dist/services/report/reports.js.map +1 -0
- package/dist/services/report/safe-save.d.ts +57 -0
- package/dist/services/report/safe-save.d.ts.map +1 -0
- package/dist/services/report/safe-save.js +325 -0
- package/dist/services/report/safe-save.js.map +1 -0
- package/dist/services/report/sources.d.ts +48 -0
- package/dist/services/report/sources.d.ts.map +1 -0
- package/dist/services/report/sources.js +147 -0
- package/dist/services/report/sources.js.map +1 -0
- package/dist/services/report/types.d.ts +312 -0
- package/dist/services/report/types.d.ts.map +1 -0
- package/dist/services/report/types.js +2 -0
- package/dist/services/report/types.js.map +1 -0
- package/dist/services/report/validate.d.ts +169 -0
- package/dist/services/report/validate.d.ts.map +1 -0
- package/dist/services/report/validate.js +685 -0
- package/dist/services/report/validate.js.map +1 -0
- package/dist/services/report/verify.d.ts +72 -0
- package/dist/services/report/verify.d.ts.map +1 -0
- package/dist/services/report/verify.js +441 -0
- package/dist/services/report/verify.js.map +1 -0
- package/dist/services/report/workbook.d.ts +108 -0
- package/dist/services/report/workbook.d.ts.map +1 -0
- package/dist/services/report/workbook.js +471 -0
- package/dist/services/report/workbook.js.map +1 -0
- package/dist/services/rich-text.d.ts +33 -0
- package/dist/services/rich-text.d.ts.map +1 -0
- package/dist/services/rich-text.js +134 -0
- package/dist/services/rich-text.js.map +1 -0
- package/dist/services/rich-types.d.ts +39 -0
- package/dist/services/rich-types.d.ts.map +1 -1
- package/dist/services/rich-types.js +61 -30
- package/dist/services/rich-types.js.map +1 -1
- package/dist/services/workflow-assign-flow.d.ts +114 -0
- package/dist/services/workflow-assign-flow.d.ts.map +1 -0
- package/dist/services/workflow-assign-flow.js +311 -0
- package/dist/services/workflow-assign-flow.js.map +1 -0
- package/dist/services/workflow-node-layout.d.ts +214 -0
- package/dist/services/workflow-node-layout.d.ts.map +1 -0
- package/dist/services/workflow-node-layout.js +338 -0
- package/dist/services/workflow-node-layout.js.map +1 -0
- package/dist/services/workflow-node-menu.d.ts +57 -0
- package/dist/services/workflow-node-menu.d.ts.map +1 -0
- package/dist/services/workflow-node-menu.js +144 -0
- package/dist/services/workflow-node-menu.js.map +1 -0
- package/dist/services/workflow-operator.d.ts +47 -2
- package/dist/services/workflow-operator.d.ts.map +1 -1
- package/dist/services/workflow-operator.js +102 -5
- package/dist/services/workflow-operator.js.map +1 -1
- package/dist/services/workflow-overtime.d.ts +95 -0
- package/dist/services/workflow-overtime.d.ts.map +1 -0
- package/dist/services/workflow-overtime.js +207 -0
- package/dist/services/workflow-overtime.js.map +1 -0
- package/dist/services/workflow-plan-range.d.ts +18 -0
- package/dist/services/workflow-plan-range.d.ts.map +1 -0
- package/dist/services/workflow-plan-range.js +72 -0
- package/dist/services/workflow-plan-range.js.map +1 -0
- package/package.json +48 -47
- package/skill-docs/SKILL.md +278 -261
- package/skill-docs/_catalog.md +13 -0
- package/skill-docs/actionflows/SKILL.md +168 -159
- package/skill-docs/actionflows/references/components/calendar/MeetingCreate.md +17 -17
- package/skill-docs/actionflows/references/components/calendar/ScheduleCreate.md +17 -17
- package/skill-docs/actionflows/references/components/database/DMLExecute.md +3 -3
- package/skill-docs/actionflows/references/components/ebuilder/ActionEbAdd.md +1 -1
- package/skill-docs/actionflows/references/components/ebuilder/DateTrigger.md +32 -17
- package/skill-docs/actionflows/references/components/ebuilder/EbGetDataById.md +17 -17
- package/skill-docs/actionflows/references/components/ebuilder/EnquiryForm.md +6 -0
- package/skill-docs/actionflows/references/components/ebuilder/EventButton.md +33 -33
- package/skill-docs/actionflows/references/components/ebuilder/EventFormData.md +2 -0
- package/skill-docs/actionflows/references/components/ebuilder/TimeBatchTrigger.md +19 -17
- package/skill-docs/actionflows/references/components/logic/Output.md +28 -17
- package/skill-docs/actionflows/references/components/message/InnerMQSend.md +6 -2
- package/skill-docs/actionflows/references/components/personnel/AlterPersonStatus.md +30 -30
- package/skill-docs/actionflows/references/components/personnel/HrmEmployeeUpdate.md +32 -32
- package/skill-docs/actionflows/references/components/trigger/InnerMQListener.md +41 -40
- package/skill-docs/actionflows/references/components/trigger/SimpleScheduler.md +19 -17
- package/skill-docs/actionflows/references/components/workflow/ApproveCreate.md +17 -17
- package/skill-docs/actionflows/references/components/workflow/ApproveDelete.md +19 -17
- package/skill-docs/actionflows/references/components/workflow/ApproveEntrust.md +19 -17
- package/skill-docs/actionflows/references/components/workflow/ApproveSave.md +17 -17
- package/skill-docs/actionflows/references/components/workflow/ApproveTrigger.md +99 -84
- package/skill-docs/actionflows/references/dynamic_capability_matrix.md +39 -0
- package/skill-docs/references/common/guide-plan-template.md +22 -1
- package/skill-docs/references/common/ref-cli-commands.md +167 -11
- package/skill-docs/references/ebuilder-designer/guide-designer-components.md +1 -1
- package/skill-docs/references/ebuilder-designer/guide-designer-factory.md +460 -460
- package/skill-docs/references/ebuilder-designer/guide-designer.md +4 -4
- package/skill-docs/references/form/guide-create-form.md +25 -6
- package/skill-docs/references/form/guide-form-association.md +1 -1
- package/skill-docs/references/form/guide-form-formula-functions.md +11 -1
- package/skill-docs/references/form/guide-form-sub-detail.md +82 -0
- package/skill-docs/references/form/guide-form-view.md +318 -318
- package/skill-docs/references/form/guide-list-custom-text.md +52 -0
- package/skill-docs/references/form/guide-virtual-form.md +156 -0
- package/skill-docs/references/form/ref-form-fields.md +239 -100
- package/skill-docs/references/form/style-templates.md +80 -27
- package/skill-docs/references/report/add-dataset-registration-guide.md +139 -0
- package/skill-docs/references/report/ai-report-workflow.md +412 -0
- package/skill-docs/references/report/api-report-build-fast-path.md +275 -0
- package/skill-docs/references/report/app-datasource-lookup-guide.md +230 -0
- package/skill-docs/references/report/cell-config-echo-guide.md +163 -0
- package/skill-docs/references/report/cell-transform-guide.md +147 -0
- package/skill-docs/references/report/condition-format-guide.md +140 -0
- package/skill-docs/references/report/cross-dataset-filter-guide.md +304 -0
- package/skill-docs/references/report/dataset-query-filter-guide.md +235 -0
- package/skill-docs/references/report/dataset-sidebar-ops-guide.md +280 -0
- package/skill-docs/references/report/dataset-table-field-contract-guide.md +339 -0
- package/skill-docs/references/report/datasource-metadata-guide.md +365 -0
- package/skill-docs/references/report/datasource-selection-and-parent-filter-guide.md +148 -0
- package/skill-docs/references/report/date-range-query-reference.md +102 -0
- package/skill-docs/references/report/default-header-style-guide.md +70 -0
- package/skill-docs/references/report/designer-blank-prevention-guide.md +111 -0
- package/skill-docs/references/report/event-hreflink-guide.md +184 -0
- package/skill-docs/references/report/field-bind-exact-match-guide.md +208 -0
- package/skill-docs/references/report/formula-cell-api-guide.md +258 -0
- package/skill-docs/references/report/guide-report-build.md +131 -0
- package/skill-docs/references/report/guide-report-modify.md +100 -0
- package/skill-docs/references/report/guide-report-multisource.md +143 -0
- package/skill-docs/references/report/guide-report-query.md +98 -0
- package/skill-docs/references/report/hidden-row-and-header-merge-guide.md +100 -0
- package/skill-docs/references/report/layout-showlocation-freeze-guide.md +167 -0
- package/skill-docs/references/report/preaggregate-auto-disable-guide.md +107 -0
- package/skill-docs/references/report/query-condition-api-guide.md +890 -0
- package/skill-docs/references/report/ref-report-commands.md +122 -0
- package/skill-docs/references/report/ref-report-pitfalls.md +226 -0
- package/skill-docs/references/report/report-baseinfo-defaults-guide.md +117 -0
- package/skill-docs/references/report/report-building-guide.md +511 -0
- package/skill-docs/references/report/report-config-schema.md +445 -0
- package/skill-docs/references/report/report-create-modes-guide.md +182 -0
- package/skill-docs/references/report/report-data-model.md +447 -0
- package/skill-docs/references/report/report-delivery-contract.md +101 -0
- package/skill-docs/references/report/report-designer-feature-map.md +500 -0
- package/skill-docs/references/report/report-internal-error-guide.md +78 -0
- package/skill-docs/references/report/report-knowledge-base.md +389 -0
- package/skill-docs/references/report/report-lifecycle-api-guide.md +392 -0
- package/skill-docs/references/report/report-list-page-ops-guide.md +191 -0
- package/skill-docs/references/report/report-permission-guide.md +365 -0
- package/skill-docs/references/report/report-requirement-analysis-template.md +202 -0
- package/skill-docs/references/report/report-self-check-guide.md +164 -0
- package/skill-docs/references/report/safe-partial-save-guide.md +151 -0
- package/skill-docs/references/report/snowflake-id-precision-guide.md +84 -0
- package/skill-docs/references/report/spec-build-schema.md +291 -0
- package/skill-docs/references/report/targeted-fix-guide.md +97 -0
- package/skill-docs/references/report/user-request-scope-only-guide.md +82 -0
- package/skill-docs/references/workflow/guide-workflow-auth-resp.md +198 -0
- package/skill-docs/references/workflow/guide-workflow-node-layout.md +181 -0
- package/skill-docs/references/workflow/guide-workflow.md +14 -3
- package/skill-docs/actionflows/references/components/workflow/ApproveCompletelyDelete.md +0 -17
package/dist/commands/wf-form.js
CHANGED
|
@@ -2,6 +2,9 @@ import { AuthSession } from '../core/auth.js';
|
|
|
2
2
|
import { ApiClient } from '../core/client.js';
|
|
3
3
|
import { toSubTableName, toColumnName } from '../utils/column-name.js';
|
|
4
4
|
import { normalizeDetailTableChildren, placeholderFromFormat } from '../services/form-create.js';
|
|
5
|
+
import { getRichType, resolveBrowserConfig, richIdUnits, BROWSER_TYPE_CATALOG } from '../services/rich-types.js';
|
|
6
|
+
import { dropFieldComponents, prepareLayoutForSave } from '../services/form-field-drop.js';
|
|
7
|
+
import { BROWSER_BEAN_SEARCH, pickBrowserBean, browserBeanCandidates, toBrowserType } from '../services/browser.js';
|
|
5
8
|
import { randomUUID } from 'node:crypto';
|
|
6
9
|
/** 流程表单选项配色(对齐浏览器抓包 styleConfig.OptionBackground,循环取用)。 */
|
|
7
10
|
const OPTION_COLORS = ['#FFBD4F', '#FF716E', '#3BD8C3', '#5B8FF9', '#5AD8A6', '#F6BD16', '#E86452', '#6DC8EC', '#945FB9', '#FF99C3'];
|
|
@@ -30,9 +33,11 @@ function canon(ck) {
|
|
|
30
33
|
const m = {
|
|
31
34
|
textarea: 'TextArea', text: 'Text', number: 'Number', money: 'Money',
|
|
32
35
|
date: 'Date', datetime: 'DateTime', select: 'Select', selectmultiple: 'SelectMultiple',
|
|
33
|
-
|
|
36
|
+
// 平台的浏览按钮类型名是 RelateBrowser(不是 Browser)——写错会被拒「程序异常」
|
|
37
|
+
employee: 'Employee', department: 'Department', browser: 'RelateBrowser',
|
|
38
|
+
relatebrowser: 'RelateBrowser', 浏览: 'RelateBrowser',
|
|
34
39
|
file: 'FileComponent', filecomponent: 'FileComponent', upload: 'FileComponent', 附件: 'FileComponent',
|
|
35
|
-
ebuilder: '
|
|
40
|
+
ebuilder: 'EBuilder', eb: 'EBuilder', flow: 'Flow',
|
|
36
41
|
};
|
|
37
42
|
return m[ck.toLowerCase()] || ck;
|
|
38
43
|
}
|
|
@@ -61,32 +66,33 @@ async function readConfigs(client, baseUrl, formId) {
|
|
|
61
66
|
* getConfig 的 configs 不带已保存的 singleRow(设计视图默认 false);field-prop/group/layout init
|
|
62
67
|
* 重排前若不从运行时合并回来,独占一行字段会被 initLayout 冲掉(实测:group initLayout 后 客户地址 singleRow 丢失)。 */
|
|
63
68
|
async function fetchRuntimeSingleRows(client, baseUrl, formId) {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
for (const x of arr) {
|
|
74
|
-
const cfg = x.config || x;
|
|
75
|
-
const fid = cfg.fieldId || cfg.id || x.id;
|
|
76
|
-
if (fid && cfg.singleRow === true)
|
|
77
|
-
set.add(String(fid));
|
|
78
|
-
if (x.components?.length)
|
|
79
|
-
walk(x.components);
|
|
80
|
-
if (x.children?.length)
|
|
81
|
-
walk(x.children);
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
walk(comps);
|
|
85
|
-
return set;
|
|
86
|
-
}
|
|
87
|
-
catch {
|
|
88
|
-
return new Set();
|
|
69
|
+
// 读失败**必须抛错**:这里返回空 Set 等于「运行时一个 singleRow 都没有」,
|
|
70
|
+
// 后面的 initLayout 就会把用户已配的「独占一行」整批冲掉(历史上出过这个事故)。
|
|
71
|
+
// 宁可整条命令失败,也不静默丢配置。
|
|
72
|
+
const res = await client.post(`${baseUrl}${ROUTE}/builder/getFormLayout`, {
|
|
73
|
+
formId, module: MODULE, customParam: {}, formTableIdList: [],
|
|
74
|
+
designerParam: { onlyLayout: false, convert: false }, form: { id: formId },
|
|
75
|
+
}, { ebbusinessid: formId });
|
|
76
|
+
if (res?.code !== 200 || !res?.status) {
|
|
77
|
+
throw new Error(`读取运行时布局失败(getFormLayout): ${res?.msg || '未知错误'};已中止,未改动布局`);
|
|
89
78
|
}
|
|
79
|
+
const pls = res?.data?.formLayout?.pageLayouts || res?.data?.pageLayouts || [];
|
|
80
|
+
const comps = pls[0]?.comps || [];
|
|
81
|
+
const set = new Set();
|
|
82
|
+
const walk = (arr) => {
|
|
83
|
+
for (const x of arr) {
|
|
84
|
+
const cfg = x.config || x;
|
|
85
|
+
const fid = cfg.fieldId || cfg.id || x.id;
|
|
86
|
+
if (fid && cfg.singleRow === true)
|
|
87
|
+
set.add(String(fid));
|
|
88
|
+
if (x.components?.length)
|
|
89
|
+
walk(x.components);
|
|
90
|
+
if (x.children?.length)
|
|
91
|
+
walk(x.children);
|
|
92
|
+
}
|
|
93
|
+
};
|
|
94
|
+
walk(comps);
|
|
95
|
+
return set;
|
|
90
96
|
}
|
|
91
97
|
/** 将运行时已保存的 singleRow 合并回 getConfig configs(递归含 Collapse children),保留独占一行不被重排冲掉。 */
|
|
92
98
|
function mergeRuntimeSingleRow(configs, srSet) {
|
|
@@ -145,21 +151,30 @@ function applyLoneSingleRows(configs) {
|
|
|
145
151
|
// getFieldGroupPage 返回全部主表字段,字段 formField.group 带 groupId+groupName;
|
|
146
152
|
// refFieldId = groupId - 1(平台先分配 layout config 再分配 formFieldGroup,顺序相连)。
|
|
147
153
|
// 用于 field-prop / layout init 重跑 initLayout 时保留 Collapse 折叠分组。
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
154
|
+
/** 读该表单的全部字段分组条目(翻页取全;**读失败抛错**,不静默当成「没有分组」)。 */
|
|
155
|
+
async function fetchFormGroupEntries(client, baseUrl, formId) {
|
|
156
|
+
const PAGE = 100;
|
|
157
|
+
const out = [];
|
|
158
|
+
for (let pageNo = 1;; pageNo++) {
|
|
159
|
+
const r = await client.post(`${baseUrl}${ROUTE}/field/manage/getFieldGroupPage`, { pageNo, pageSize: PAGE, module: MODULE, formFieldSearchEntity: { formId }, customParam: {} }, { ebbusinessid: formId });
|
|
160
|
+
if (r?.code !== 200 || !r?.status) {
|
|
161
|
+
throw new Error(`读取字段分组失败(getFieldGroupPage 第 ${pageNo} 页): ${r?.msg || '未知错误'}`);
|
|
162
|
+
}
|
|
151
163
|
const list = r?.data?.pageDatas?.result || [];
|
|
152
|
-
const seen = new Set();
|
|
153
164
|
for (const f of list) {
|
|
154
165
|
const g = f?.formField?.group;
|
|
155
166
|
if (g?.id)
|
|
156
|
-
|
|
167
|
+
out.push(g);
|
|
157
168
|
}
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
catch {
|
|
161
|
-
return [];
|
|
169
|
+
if (list.length < PAGE)
|
|
170
|
+
break;
|
|
162
171
|
}
|
|
172
|
+
return out;
|
|
173
|
+
}
|
|
174
|
+
/** 字段分组的 refFieldId 列表(= groupId - 1)。 */
|
|
175
|
+
async function fetchFormGroups(client, baseUrl, formId) {
|
|
176
|
+
const groups = await fetchFormGroupEntries(client, baseUrl, formId);
|
|
177
|
+
return [...new Set(groups.map((g) => String(g.id)))].map((id) => String(BigInt(id) - 1n));
|
|
163
178
|
}
|
|
164
179
|
/** 初始化/重建流程表单布局(initLayout):getConfig 读 → 强制业务字段 readOnly=false(防 FLOW 模板默认锁死)
|
|
165
180
|
* → 合并运行时 singleRow → applyLoneSingleRows(落单/孤字段独占整行)→ initLayout 落库运行时布局。
|
|
@@ -177,6 +192,10 @@ export async function initWorkflowFormLayout(client, baseUrl, formId, o = {}, ho
|
|
|
177
192
|
customParam: { terminal: '', objId: formId }, initMode: 5, groupFieldIds: groupIds,
|
|
178
193
|
designerParam: { sourceModule: MODULE },
|
|
179
194
|
}, ebb);
|
|
195
|
+
// 读失败必须中止:下面会把 configs 原样 initLayout 落库,空 configs 等于把表单布局清空。
|
|
196
|
+
if (cfgRes?.code !== 200 || !cfgRes?.status) {
|
|
197
|
+
throw new Error(`读取表单布局失败(getConfig): ${cfgRes?.msg || '未知错误'};已中止,未改动布局`);
|
|
198
|
+
}
|
|
180
199
|
// 流程表单 FLOW 布局 getConfig 默认把业务字段 readOnly=true(锁死),init 时强制可编辑:
|
|
181
200
|
// 业务字段 readOnly=false / disableEdit=false(除非 --read-only 显式锁);明细/系统字段/Collapse 分组容器保留。
|
|
182
201
|
const configs = normalizeDetailTableChildren((cfgRes?.data?.configs || []).map((c) => {
|
|
@@ -205,7 +224,7 @@ export async function initWorkflowFormLayout(client, baseUrl, formId, o = {}, ho
|
|
|
205
224
|
const initRes = await client.post(`${baseUrl}${ROUTE}/view/relate/initLayout`, {
|
|
206
225
|
formId, module: MODULE, apiModule: 'workflow/form', layoutId: meta.layoutId,
|
|
207
226
|
generateCollapse: o.generateCollapse !== false,
|
|
208
|
-
styleTemplateId
|
|
227
|
+
styleTemplateId, styleTemplateType: 1,
|
|
209
228
|
configs: finalConfigs, addLayout: false, ecodeType: ['js', 'css'], initMode: '1',
|
|
210
229
|
groupFieldIds: groupIds,
|
|
211
230
|
customParam: { terminal: '', objId: formId },
|
|
@@ -221,8 +240,140 @@ async function genIds(client, baseUrl, n) {
|
|
|
221
240
|
const r = await client.post(`${baseUrl}/api/form/local/generatorIds?size=${n}`, {});
|
|
222
241
|
return (r?.data?.generatorIds || []).map(String);
|
|
223
242
|
}
|
|
243
|
+
/**
|
|
244
|
+
* wf-form 分支链**自己处理**的类型。
|
|
245
|
+
*
|
|
246
|
+
* 这些分支写的是流程表单专属结构(浏览按钮的 browserType、员工的 defaultExtend、
|
|
247
|
+
* EBuilder 的 sformId 族…),**不能被 rich-types 的通用模板覆盖**,所以下面查表时跳过它们。
|
|
248
|
+
*/
|
|
249
|
+
export const WF_FORM_HANDLED = new Set([
|
|
250
|
+
'Number', 'Money', 'TextArea', 'Date', 'DateTime',
|
|
251
|
+
'Employee', 'Department', 'RelateBrowser', 'Select', 'EBuilder', 'Flow',
|
|
252
|
+
]);
|
|
253
|
+
/**
|
|
254
|
+
* 构建字段 jsonObj(add-field / add-fields 共用)。返回未带 fieldId 的模板,调用方填 fieldId。
|
|
255
|
+
*
|
|
256
|
+
* `client`/`baseUrl` 只在需要额外 ID 的类型(Matrix)上用到,其余类型传 `null` 即可 ——
|
|
257
|
+
* 导出是为了让回归测试能直接断言「同一个类型名,流程表单和 eb 表建出来的 componentKey 必须一致」。
|
|
258
|
+
*/
|
|
259
|
+
export async function buildFieldJsonObj(client, baseUrl, fieldName, fieldType, title, o, formId, fieldId) {
|
|
260
|
+
const ck = canon(fieldType);
|
|
261
|
+
const colName = toColumnName(fieldName);
|
|
262
|
+
const jsonObj = {
|
|
263
|
+
type: ck, title: title || fieldName, fieldId, groupId: '-1', formId, showOrder: '0.00',
|
|
264
|
+
dataKey: colName, columnName: colName,
|
|
265
|
+
};
|
|
266
|
+
if (o.singleRow === true)
|
|
267
|
+
jsonObj.singleRow = true;
|
|
268
|
+
if (o.subFormId)
|
|
269
|
+
jsonObj.subFormId = o.subFormId;
|
|
270
|
+
if (ck === 'Number' || ck === 'Money') {
|
|
271
|
+
const isPercent = ck === 'Number' && o.percent === true;
|
|
272
|
+
const hasDefault = o.default !== undefined && o.default !== null && o.default !== '';
|
|
273
|
+
Object.assign(jsonObj, {
|
|
274
|
+
pointSize: o.precision !== undefined ? o.precision : (isPercent ? '1' : (ck === 'Money' ? '2' : '0')),
|
|
275
|
+
isDefault: hasDefault, isDelimiter: ck === 'Money', isCapital: false,
|
|
276
|
+
capitalFormat: 'onlyUpperCase', capitalPosition: 'outside', capitalSetting: 'system',
|
|
277
|
+
capitalPrecision: 'yuan', isExchangeRates: false,
|
|
278
|
+
...(ck === 'Number' ? { numberType: isPercent ? 'percentage' : 'number', content: hasDefault ? String(o.default) : '' } : {}),
|
|
279
|
+
...(hasDefault ? { stepMode: false, step: 1 } : {}),
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
else if (ck === 'TextArea') {
|
|
283
|
+
Object.assign(jsonObj, { content: '', maxLen: 4000 });
|
|
284
|
+
}
|
|
285
|
+
else if (ck === 'Date' || ck === 'DateTime') {
|
|
286
|
+
const fmt = o.format || (ck === 'DateTime' ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd');
|
|
287
|
+
// 对齐浏览器 workflow 模块 saveFormFieldNew 新字段实测结构:
|
|
288
|
+
// earlyDate/lateDate + earlyType/lateType=currentDay + isSystemDate:false;
|
|
289
|
+
// 非默认字段不发 hasDisplayFormat/minuteStep/defaultExtend(平台服务端自算 hasDisplayFormat)。
|
|
290
|
+
Object.assign(jsonObj, {
|
|
291
|
+
type: 'Date', format: fmt, placeholder: placeholderFromFormat(fmt),
|
|
292
|
+
earlyDate: false, lateDate: false, earlyType: 'currentDay', lateType: 'currentDay',
|
|
293
|
+
isSystemDate: false, timePanelStyle: { type: 'system' }, isDefault: false,
|
|
294
|
+
});
|
|
295
|
+
if (o.defaultCurrent) {
|
|
296
|
+
jsonObj.isDefault = true;
|
|
297
|
+
jsonObj.defaultExtend = { date: { type: 'current' }, time: { customValue: '00:00', type: 'custom' } };
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
else if (ck === 'Employee' || ck === 'Department') {
|
|
301
|
+
jsonObj.isSingle = o.multiple ? false : true;
|
|
302
|
+
if (o.defaultCurrent && ck === 'Employee') {
|
|
303
|
+
jsonObj.defaultExtend = { type: 'current', relation: 'current', virtualId: '1' };
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
else if (ck === 'RelateBrowser') {
|
|
307
|
+
// 浏览按钮必须带**浏览数据源**,只发 type 会被平台拒「程序异常」。
|
|
308
|
+
// 结构见平台工作流表单字段规范:{ type:'RelateBrowser', isSingle, browserType:{module,name,id,type} }
|
|
309
|
+
const resolved = resolveBrowserConfig({ browserType: o.browserType, browserFormSource: o.browserFormSource });
|
|
310
|
+
Object.assign(jsonObj, {
|
|
311
|
+
isSingle: o.multiple ? false : true,
|
|
312
|
+
browserType: resolved.browserType,
|
|
313
|
+
viewDataDetail: true,
|
|
314
|
+
includeChild: false,
|
|
315
|
+
displayType: 'space',
|
|
316
|
+
isAddForRelation: true,
|
|
317
|
+
pcDisplaySelectedCount: { type: 'default' },
|
|
318
|
+
mobileDisplaySelectedCount: { type: 'default' },
|
|
319
|
+
});
|
|
320
|
+
}
|
|
321
|
+
else if (ck === 'Select') {
|
|
322
|
+
if (o.multiple) {
|
|
323
|
+
jsonObj.type = 'SelectMultiple';
|
|
324
|
+
jsonObj.componentKey = 'SelectMultiple';
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
else if (ck === 'EBuilder' || ck === 'Flow') {
|
|
328
|
+
// EBuilder 关联字段(浏览器抓包 saveFormFieldNew 实测格式):type=EBuilder(大写EB),
|
|
329
|
+
// 标准字段元数据(isAllFormData/hasDisplayFormat/openRelateView/dataCount/currentLevel/columnType/
|
|
330
|
+
// columnTypeSwitch/singleEdit/typeLen)+ displayType=space + isAddForRelation=false + sformId/dataTitle/formName
|
|
331
|
+
// + content/formEntity/filterQueryParams/filterParams(抓包含,filterParams 可能承载字段层筛选)。
|
|
332
|
+
Object.assign(jsonObj, {
|
|
333
|
+
// 平台真值:type=EBuilder(大写EB)、componentKey=Ebuilder(小写b)——canon 归一成 EBuilder 后
|
|
334
|
+
// 若不在此显式指定 componentKey,下方兜底 componentKey=jsonObj.type 会写成 'EBuilder'(错)。
|
|
335
|
+
componentKey: 'Ebuilder',
|
|
336
|
+
isAllFormData: false, viewDataDetail: true, quickAddParams: [],
|
|
337
|
+
hasDisplayFormat: false, openRelateView: false,
|
|
338
|
+
dataCount: 0, currentLevel: '1', columnType: 'TEXT', columnTypeSwitch: false,
|
|
339
|
+
singleEdit: true, typeLen: 16, isAddForRelation: false, displayType: 'space',
|
|
340
|
+
sformId: o.sformId || '', dataTitle: o.dataTitle || 'name',
|
|
341
|
+
relateViewData: [], formName: o.formName || '', relateField: null,
|
|
342
|
+
content: [], formEntity: {}, filterQueryParams: '{}', filterParams: '{}',
|
|
343
|
+
virtualForm: false, appId: o.appId || '', virtualTable: false,
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
// 富组件映射:CLI 类型名 ≠ 平台 componentKey 的那批(Time→TimeComponent、Score→Raty、
|
|
347
|
+
// Signature→SignatureComponent、Project→Mainline…共 25 个)必须查表。
|
|
348
|
+
// 原先这里只有 `componentKey = 类型名` 的兜底 —— Time 恰好被平台按 type 归一对了,
|
|
349
|
+
// Score 就写成平台不认的 `score`,而且完全不带富组件附加配置(format/minuteStep/…)。
|
|
350
|
+
// 已在分支链里处理的类型跳过,避免通用模板覆盖流程表单专属结构。
|
|
351
|
+
const rich = WF_FORM_HANDLED.has(ck) ? undefined : getRichType(ck);
|
|
352
|
+
if (rich) {
|
|
353
|
+
jsonObj.type = rich.platformType;
|
|
354
|
+
jsonObj.componentKey = rich.platformComponentKey;
|
|
355
|
+
if (rich.build) {
|
|
356
|
+
const extra = richIdUnits(ck, {}) - 1;
|
|
357
|
+
let extraIds = [];
|
|
358
|
+
if (extra > 0) {
|
|
359
|
+
if (!client || !baseUrl)
|
|
360
|
+
throw new Error('该字段类型需要额外 ID,构建时必须提供 client');
|
|
361
|
+
const extraRes = await client.post(`${baseUrl}/api/workflow/core/form/generatorIds?size=${extra}`, {});
|
|
362
|
+
extraIds = (extraRes?.data?.generatorIds || []).map(String);
|
|
363
|
+
}
|
|
364
|
+
Object.assign(jsonObj, await rich.build({
|
|
365
|
+
def: { multiple: o.multiple, browserType: o.browserType, browserFormSource: o.browserFormSource, format: o.format },
|
|
366
|
+
fieldId, formId, formTableId: '', dataKey: colName, columnName: colName,
|
|
367
|
+
showOrder: '0.00', extraIds,
|
|
368
|
+
}));
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
if (!jsonObj.componentKey)
|
|
372
|
+
jsonObj.componentKey = jsonObj.type;
|
|
373
|
+
return jsonObj;
|
|
374
|
+
}
|
|
224
375
|
export function registerWorkflowFormCommands(program) {
|
|
225
|
-
const wfForm = program.command('wf-form').description('流程表单(工作流程表单)管理:read / add-field / add-detail-table / layout init');
|
|
376
|
+
const wfForm = program.command('wf-form').description('流程表单(工作流程表单)管理:read / add-field / edit-field / delete-field / add-detail-table / layout init');
|
|
226
377
|
// ---------- wf-form read ----------
|
|
227
378
|
wfForm.command('read')
|
|
228
379
|
.description('读取流程表单字段(getConfig)')
|
|
@@ -255,89 +406,30 @@ export function registerWorkflowFormCommands(program) {
|
|
|
255
406
|
process.exitCode = 1;
|
|
256
407
|
}
|
|
257
408
|
});
|
|
258
|
-
/**
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
if (ck === 'Number' || ck === 'Money') {
|
|
271
|
-
const isPercent = ck === 'Number' && o.percent === true;
|
|
272
|
-
const hasDefault = o.default !== undefined && o.default !== null && o.default !== '';
|
|
273
|
-
Object.assign(jsonObj, {
|
|
274
|
-
pointSize: o.precision !== undefined ? o.precision : (isPercent ? '1' : (ck === 'Money' ? '2' : '0')),
|
|
275
|
-
isDefault: hasDefault, isDelimiter: ck === 'Money', isCapital: false,
|
|
276
|
-
capitalFormat: 'onlyUpperCase', capitalPosition: 'outside', capitalSetting: 'system',
|
|
277
|
-
capitalPrecision: 'yuan', isExchangeRates: false,
|
|
278
|
-
...(ck === 'Number' ? { numberType: isPercent ? 'percentage' : 'number', content: hasDefault ? String(o.default) : '' } : {}),
|
|
279
|
-
...(hasDefault ? { stepMode: false, step: 1 } : {}),
|
|
280
|
-
});
|
|
409
|
+
/**
|
|
410
|
+
* `--browser-name` → 查平台检索接口拿到浏览数据源对象。
|
|
411
|
+
* **精确匹配**,查不到就报错并列候选,不猜相近的顶上。
|
|
412
|
+
*/
|
|
413
|
+
async function resolveBrowserByName(client, baseUrl, name, ebb) {
|
|
414
|
+
const r = await client.get(`${baseUrl}${BROWSER_BEAN_SEARCH}?searchValue=${encodeURIComponent(name)}`, ebb);
|
|
415
|
+
const bean = pickBrowserBean(r, name);
|
|
416
|
+
if (!bean) {
|
|
417
|
+
const cands = browserBeanCandidates(r);
|
|
418
|
+
throw new Error(`未找到名为「${name}」的浏览数据源。` +
|
|
419
|
+
(cands.length ? `检索到的相近项:${cands.map((c) => c.name).join('、')}` : '(检索无结果)') +
|
|
420
|
+
'。请核对名称,或用 --browser-type 指定系统浏览。');
|
|
281
421
|
}
|
|
282
|
-
|
|
283
|
-
Object.assign(jsonObj, { content: '', maxLen: 4000 });
|
|
284
|
-
}
|
|
285
|
-
else if (ck === 'Date' || ck === 'DateTime') {
|
|
286
|
-
const fmt = o.format || (ck === 'DateTime' ? 'yyyy-MM-dd HH:mm' : 'yyyy-MM-dd');
|
|
287
|
-
// 对齐浏览器 workflow 模块 saveFormFieldNew 新字段实测结构:
|
|
288
|
-
// earlyDate/lateDate + earlyType/lateType=currentDay + isSystemDate:false;
|
|
289
|
-
// 非默认字段不发 hasDisplayFormat/minuteStep/defaultExtend(平台服务端自算 hasDisplayFormat)。
|
|
290
|
-
Object.assign(jsonObj, {
|
|
291
|
-
type: 'Date', format: fmt, placeholder: placeholderFromFormat(fmt),
|
|
292
|
-
earlyDate: false, lateDate: false, earlyType: 'currentDay', lateType: 'currentDay',
|
|
293
|
-
isSystemDate: false, timePanelStyle: { type: 'system' }, isDefault: false,
|
|
294
|
-
});
|
|
295
|
-
if (o.defaultCurrent) {
|
|
296
|
-
jsonObj.isDefault = true;
|
|
297
|
-
jsonObj.defaultExtend = { date: { type: 'current' }, time: { customValue: '00:00', type: 'custom' } };
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
else if (ck === 'Employee' || ck === 'Department' || ck === 'Browser') {
|
|
301
|
-
jsonObj.isSingle = o.multiple ? false : true;
|
|
302
|
-
if (o.defaultCurrent && ck === 'Employee') {
|
|
303
|
-
jsonObj.defaultExtend = { type: 'current', relation: 'current', virtualId: '1' };
|
|
304
|
-
}
|
|
305
|
-
}
|
|
306
|
-
else if (ck === 'Select') {
|
|
307
|
-
if (o.multiple) {
|
|
308
|
-
jsonObj.type = 'SelectMultiple';
|
|
309
|
-
jsonObj.componentKey = 'SelectMultiple';
|
|
310
|
-
}
|
|
311
|
-
}
|
|
312
|
-
else if (ck === 'EBuilder' || ck === 'Flow') {
|
|
313
|
-
// EBuilder 关联字段(浏览器抓包 saveFormFieldNew 实测格式):type=EBuilder(大写EB),
|
|
314
|
-
// 标准字段元数据(isAllFormData/hasDisplayFormat/openRelateView/dataCount/currentLevel/columnType/
|
|
315
|
-
// columnTypeSwitch/singleEdit/typeLen)+ displayType=space + isAddForRelation=false + sformId/dataTitle/formName
|
|
316
|
-
// + content/formEntity/filterQueryParams/filterParams(抓包含,filterParams 可能承载字段层筛选)。
|
|
317
|
-
Object.assign(jsonObj, {
|
|
318
|
-
isAllFormData: false, viewDataDetail: true, quickAddParams: [],
|
|
319
|
-
hasDisplayFormat: false, openRelateView: false,
|
|
320
|
-
dataCount: 0, currentLevel: '1', columnType: 'TEXT', columnTypeSwitch: false,
|
|
321
|
-
singleEdit: true, typeLen: 16, isAddForRelation: false, displayType: 'space',
|
|
322
|
-
sformId: o.sformId || '', dataTitle: o.dataTitle || 'name',
|
|
323
|
-
relateViewData: [], formName: o.formName || '', relateField: null,
|
|
324
|
-
content: [], formEntity: {}, filterQueryParams: '{}', filterParams: '{}',
|
|
325
|
-
virtualForm: false, appId: o.appId || '', virtualTable: false,
|
|
326
|
-
});
|
|
327
|
-
}
|
|
328
|
-
if (!jsonObj.componentKey)
|
|
329
|
-
jsonObj.componentKey = jsonObj.type;
|
|
330
|
-
return jsonObj;
|
|
422
|
+
return toBrowserType(bean);
|
|
331
423
|
}
|
|
332
424
|
// ---------- wf-form add-field ----------
|
|
333
425
|
wfForm.command('add-field')
|
|
334
|
-
.description('给流程表单加字段(Text/TextArea/Number/Money/Date/DateTime/Select/Employee/Department
|
|
426
|
+
.description('给流程表单加字段(Text/TextArea/Number/Money/Date/DateTime/Select/Employee/Department/浏览按钮/EBuilder/Flow)')
|
|
335
427
|
.argument('<formId>', '流程表单 formId')
|
|
336
428
|
.argument('<fieldName>', '字段名')
|
|
337
429
|
.argument('<fieldType>', '字段类型')
|
|
338
430
|
.argument('[title]', '字段显示名(不传同 fieldName)')
|
|
339
431
|
.option('--sub-form-id <id>', '在指定明细子表里加字段(明细表 subFormId)')
|
|
340
|
-
.option('--multiple', '多选(Employee/Department
|
|
432
|
+
.option('--multiple', '多选(Employee/Department/浏览按钮/下拉Select→SelectMultiple)')
|
|
341
433
|
.option('--precision <n>', '小数位(Number 缺省 0 / Money 缺省 2 / 百分比缺省 1)')
|
|
342
434
|
.option('--percent', 'Number 百分比显示(numberType=percentage)')
|
|
343
435
|
.option('--default <value>', 'Number/Money 默认值')
|
|
@@ -348,6 +440,9 @@ export function registerWorkflowFormCommands(program) {
|
|
|
348
440
|
.option('--app-id <appId>', '目标表单所属应用 appId(EBuilder 建议传,不传 formName 自动解析需要)')
|
|
349
441
|
.option('--data-title <field>', 'EBuilder 关联显示字段(默认 name;目标表含"名称"的字段或 fieldId)')
|
|
350
442
|
.option('--form-name <name>', '目标表单名称(不传自动解析)')
|
|
443
|
+
.option('--browser-type <kind>', `浏览按钮的数据源:${Object.keys(BROWSER_TYPE_CATALOG).join(' / ')} / form(缺省 workflow=工作流)`)
|
|
444
|
+
.option('--browser-form-source <src>', '--browser-type form 时的来源:business(默认) / ebuilder')
|
|
445
|
+
.option('--browser-name <name>', '按名字指定浏览数据源(含自定义浏览框,如 "CLM-合同类型");优先于 --browser-type')
|
|
351
446
|
.option('--no-init', '跳过末尾自动 layout init(默认加完自动重排布局,对齐 add-fields 批量)')
|
|
352
447
|
.action(async (formId, fieldName, fieldType, title, o) => {
|
|
353
448
|
try {
|
|
@@ -379,7 +474,14 @@ export function registerWorkflowFormCommands(program) {
|
|
|
379
474
|
if (!o.formName)
|
|
380
475
|
o.formName = o.sformId; // 兜底
|
|
381
476
|
}
|
|
382
|
-
|
|
477
|
+
// 按名字查浏览数据源(含自定义浏览框)——查不到就停下报错,不用近似项顶替
|
|
478
|
+
if (o.browserName) {
|
|
479
|
+
if (ck !== 'RelateBrowser') {
|
|
480
|
+
throw new Error('--browser-name 只对浏览按钮类型有效(字段类型传 Browser)');
|
|
481
|
+
}
|
|
482
|
+
o.browserType = await resolveBrowserByName(client, baseUrl, o.browserName, ebb);
|
|
483
|
+
}
|
|
484
|
+
const jsonObj = await buildFieldJsonObj(client, baseUrl, fieldName, fieldType, title, o, formId, fieldId);
|
|
383
485
|
const r = await client.post(`${baseUrl}${ROUTE}/field/manage/saveFormFieldNew`, { formId, module: MODULE, customParam: {}, jsonObj: JSON.stringify(jsonObj) }, ebb);
|
|
384
486
|
if (r?.code !== 200 || !r?.status)
|
|
385
487
|
throw new Error(`加字段失败: ${r?.msg || '未知错误'}`);
|
|
@@ -622,8 +724,18 @@ export function registerWorkflowFormCommands(program) {
|
|
|
622
724
|
throw new Error('无法加载认证');
|
|
623
725
|
const client = new ApiClient(auth);
|
|
624
726
|
const baseUrl = auth.getBaseUrl();
|
|
625
|
-
|
|
626
|
-
const
|
|
727
|
+
// 翻页取全:固定 pageSize 会在规则数超过一页时静默漏显示
|
|
728
|
+
const PAGE = 100;
|
|
729
|
+
const rules = [];
|
|
730
|
+
for (let pageNo = 1;; pageNo++) {
|
|
731
|
+
const res = await client.post(`${baseUrl}${ROUTE}/validate/pageFormDataValidate`, { module: MODULE, formId, pageNo, pageSize: PAGE }, { ebbusinessid: formId });
|
|
732
|
+
if (res?.code !== 200 || !res?.status)
|
|
733
|
+
throw new Error(res?.msg || '未知错误');
|
|
734
|
+
const page = res?.data?.records || [];
|
|
735
|
+
rules.push(...page);
|
|
736
|
+
if (page.length < PAGE)
|
|
737
|
+
break;
|
|
738
|
+
}
|
|
627
739
|
if (opts.json) {
|
|
628
740
|
console.log(JSON.stringify(rules, null, 2));
|
|
629
741
|
return;
|
|
@@ -760,7 +872,10 @@ export function registerWorkflowFormCommands(program) {
|
|
|
760
872
|
allFields.push({ ...c, isDetail: false });
|
|
761
873
|
}
|
|
762
874
|
const findField = (name) => allFields.find((f) => f.name === name || String(f.id) === name || f.dataKey === name);
|
|
763
|
-
|
|
875
|
+
// 条件载荷里的 targetName 只是展示用,平台按 targetId 定位。
|
|
876
|
+
// 这里曾写 `configs.find(c => !c.system)?.name ? '流程表单' : '流程表单'`——两个分支同值等于没写,
|
|
877
|
+
// 且 configs 是**布局字段**数组、取到的是字段名而非表单名,照字面"修好"反而会把字段名当表单名发出去。
|
|
878
|
+
const formName = '流程表单';
|
|
764
879
|
// conditions
|
|
765
880
|
const conditionDetails = cfg.conditions.map((c) => {
|
|
766
881
|
const f = findField(c.field);
|
|
@@ -1046,7 +1161,7 @@ export function registerWorkflowFormCommands(program) {
|
|
|
1046
1161
|
continue;
|
|
1047
1162
|
}
|
|
1048
1163
|
const fieldId = ids[i];
|
|
1049
|
-
const jsonObj = buildFieldJsonObj(d.name, d.type, d.title, d, formId, fieldId);
|
|
1164
|
+
const jsonObj = await buildFieldJsonObj(client, baseUrl, d.name, d.type, d.title, d, formId, fieldId);
|
|
1050
1165
|
const r = await client.post(`${baseUrl}${ROUTE}/field/manage/saveFormFieldNew`, { formId, module: MODULE, customParam: {}, jsonObj: JSON.stringify(jsonObj) }, ebb);
|
|
1051
1166
|
if (r?.code === 200 && r?.status) {
|
|
1052
1167
|
added++;
|
|
@@ -1079,6 +1194,71 @@ export function registerWorkflowFormCommands(program) {
|
|
|
1079
1194
|
}
|
|
1080
1195
|
});
|
|
1081
1196
|
// ---------- wf-form edit-field ----------
|
|
1197
|
+
// ---------- wf-form delete-field ----------
|
|
1198
|
+
// 流程表单删字段。平台默认拒绝删「仍被布局引用」的字段,需先从布局里摘掉组件再删
|
|
1199
|
+
// (与 eb 侧 `form delete-field --force` 同一套套路,只是走 workflow 模块的端点)。
|
|
1200
|
+
// 摘组件那段(含「一个字段 = 本体 + 标题标签,靠 associatedId 配对」的坑)在
|
|
1201
|
+
// services/form-field-drop.ts,与 eb 侧共用。
|
|
1202
|
+
wfForm.command('delete-field')
|
|
1203
|
+
.description('删除流程表单字段(可批量)。仍被布局引用的字段删不掉,加 --force 让 CLI 先从布局摘掉组件再删')
|
|
1204
|
+
.argument('<formId>', '流程表单 formId')
|
|
1205
|
+
.argument('<fieldIds...>', '要删除的字段 fieldId')
|
|
1206
|
+
.option('--force', '被布局引用时,先从布局摘掉这些组件再删')
|
|
1207
|
+
.action(async (formId, fieldIds, cmdOpts) => {
|
|
1208
|
+
try {
|
|
1209
|
+
const opts = program.opts();
|
|
1210
|
+
const auth = await AuthSession.fromOptions(opts);
|
|
1211
|
+
if (!auth)
|
|
1212
|
+
throw new Error('无法加载认证');
|
|
1213
|
+
const client = new ApiClient(auth);
|
|
1214
|
+
const baseUrl = auth.getBaseUrl();
|
|
1215
|
+
const ebb = { ebbusinessid: formId };
|
|
1216
|
+
const del = (ids) => client.post(`${baseUrl}${ROUTE}/field/manage/batchDeleteFormField`, { module: MODULE, formId, ids }, ebb);
|
|
1217
|
+
let res = await del(fieldIds);
|
|
1218
|
+
if (cmdOpts.force && (res?.code !== 200 || !res?.status)) {
|
|
1219
|
+
const layoutRes = await client.post(`${baseUrl}${ROUTE}/builder/getFormLayout`, {
|
|
1220
|
+
formId, module: MODULE, customParam: {}, formTableIdList: [],
|
|
1221
|
+
designerParam: { onlyLayout: false, convert: false }, form: { id: formId },
|
|
1222
|
+
}, ebb);
|
|
1223
|
+
if (layoutRes?.code !== 200 || !layoutRes?.status) {
|
|
1224
|
+
throw new Error(`读取布局失败,未继续删除: ${layoutRes?.msg || '未知错误'}`);
|
|
1225
|
+
}
|
|
1226
|
+
const snapshot = layoutRes.data || {};
|
|
1227
|
+
const pageLayouts = snapshot.formLayout?.pageLayouts;
|
|
1228
|
+
if (!Array.isArray(pageLayouts)) {
|
|
1229
|
+
throw new Error('布局数据格式异常(无 formLayout.pageLayouts),未继续删除');
|
|
1230
|
+
}
|
|
1231
|
+
const removed = dropFieldComponents(pageLayouts, fieldIds);
|
|
1232
|
+
if (!removed) {
|
|
1233
|
+
throw new Error('布局里没找到这些字段的组件,无法自动移除;请到设计器里手动删除');
|
|
1234
|
+
}
|
|
1235
|
+
const formLayout = prepareLayoutForSave(snapshot.formLayout, formId);
|
|
1236
|
+
const saveRes = await client.post(`${baseUrl}${ROUTE}/builder/saveFormAndLayout`, {
|
|
1237
|
+
module: MODULE, customParam: {},
|
|
1238
|
+
designerParam: { onlyLayout: false, convert: false },
|
|
1239
|
+
form: JSON.parse(JSON.stringify(snapshot.form || {})), formLayout,
|
|
1240
|
+
}, ebb);
|
|
1241
|
+
if (saveRes?.code !== 200 || !saveRes?.status) {
|
|
1242
|
+
throw new Error(`从布局移除失败,未继续删除: ${saveRes?.msg || '未知错误'}`);
|
|
1243
|
+
}
|
|
1244
|
+
console.error(` 已从布局移除 ${removed} 个组件`);
|
|
1245
|
+
res = await del(fieldIds);
|
|
1246
|
+
}
|
|
1247
|
+
if (res?.code !== 200 || !res?.status) {
|
|
1248
|
+
console.error(`删除失败: ${res?.msg || '未知错误'}`);
|
|
1249
|
+
console.error(' 提示: 仍被表单布局引用的字段平台不允许删除,加 --force 让 CLI 先从布局摘掉再删');
|
|
1250
|
+
process.exitCode = 1;
|
|
1251
|
+
return;
|
|
1252
|
+
}
|
|
1253
|
+
console.log(opts.json
|
|
1254
|
+
? JSON.stringify({ success: true, formId, deleted: fieldIds })
|
|
1255
|
+
: `字段已删除: ${fieldIds.join(', ')}`);
|
|
1256
|
+
}
|
|
1257
|
+
catch (e) {
|
|
1258
|
+
console.error(`删除字段失败: ${e.message}`);
|
|
1259
|
+
process.exitCode = 1;
|
|
1260
|
+
}
|
|
1261
|
+
});
|
|
1082
1262
|
wfForm.command('edit-field')
|
|
1083
1263
|
.description('编辑流程表单已有字段(read-modify-write:getFormField 读全字段 → 改 → saveFormFieldNew 重存)')
|
|
1084
1264
|
.argument('<formId>', '流程表单 formId')
|
|
@@ -1111,7 +1291,7 @@ export function registerWorkflowFormCommands(program) {
|
|
|
1111
1291
|
if (o.multiple === true || o.single === true) {
|
|
1112
1292
|
const multi = o.multiple === true;
|
|
1113
1293
|
const t = jsonObj.type;
|
|
1114
|
-
if (t === 'Employee' || t === 'Department' || t === '
|
|
1294
|
+
if (t === 'Employee' || t === 'Department' || t === 'RelateBrowser') {
|
|
1115
1295
|
jsonObj.isSingle = !multi;
|
|
1116
1296
|
changes.push(`isSingle=${!multi}`);
|
|
1117
1297
|
}
|
|
@@ -1121,7 +1301,7 @@ export function registerWorkflowFormCommands(program) {
|
|
|
1121
1301
|
changes.push(`type=${jsonObj.type}`);
|
|
1122
1302
|
}
|
|
1123
1303
|
else {
|
|
1124
|
-
throw new Error(`字段类型 ${t} 不支持多选切换(仅 Employee/Department
|
|
1304
|
+
throw new Error(`字段类型 ${t} 不支持多选切换(仅 Employee/Department/浏览按钮/Select)`);
|
|
1125
1305
|
}
|
|
1126
1306
|
}
|
|
1127
1307
|
// EB关联带出(ffRelateField):选关联记录后自动带出目标表字段值
|
|
@@ -1513,16 +1693,12 @@ export function registerWorkflowFormCommands(program) {
|
|
|
1513
1693
|
const resolveField = (ref) => fieldByName.get(String(ref)) || fieldByName.get(String(ref)) || null;
|
|
1514
1694
|
// ① 建全部分组(saveFieldGroup,去重:同名复用避免重跑建重复分组——saveFieldGroup 不幂等)
|
|
1515
1695
|
const existingByName = new Map();
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
if (g?.id && g?.groupName && !existingByName.has(g.groupName)) {
|
|
1521
|
-
existingByName.set(g.groupName, { groupId: String(g.id), refFieldId: String(BigInt(g.id) - 1n) });
|
|
1522
|
-
}
|
|
1696
|
+
// 读失败不再吞:按「无现有」继续会重复建同名分组(saveFieldGroup 不幂等)
|
|
1697
|
+
for (const g of await fetchFormGroupEntries(client, baseUrl, formId)) {
|
|
1698
|
+
if (g?.id && g?.groupName && !existingByName.has(g.groupName)) {
|
|
1699
|
+
existingByName.set(g.groupName, { groupId: String(g.id), refFieldId: String(BigInt(g.id) - 1n) });
|
|
1523
1700
|
}
|
|
1524
1701
|
}
|
|
1525
|
-
catch { /* 忽略,按无现有处理 */ }
|
|
1526
1702
|
const created = [];
|
|
1527
1703
|
for (const [gname, fieldRefs] of entries) {
|
|
1528
1704
|
let groupId = '', refFieldId = '';
|