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
|
@@ -1,13 +1,33 @@
|
|
|
1
1
|
import { AuthSession } from '../core/auth.js';
|
|
2
2
|
import { ApiClient } from '../core/client.js';
|
|
3
|
+
import { CHECKED_NODES, REJECT_REMINDS, REJECT_TYPES, SUBMIT_TYPES, codeToKey, formatRejectForm, readRejectForm, saveRejectSet, } from './workflow-node-reject.js';
|
|
4
|
+
import { FLOW_TYPE_BY_ID, OVERTIME_FLOW_TYPES, formatDhm, listOvertimeRules, saveOvertimeRemind, saveOvertimeRule, setOvertimeRuleUsed, verifyOvertimeRule, } from '../services/workflow-overtime.js';
|
|
5
|
+
import { applyMenuPatch, findMenu, getNodeMenus, menuLabel, menuNames, saveNodeMenus, } from '../services/workflow-node-menu.js';
|
|
6
|
+
import { bindNodeLayout, createFormLayout, getLayoutReferNodes, getNodeLayout, initNodeLayout, listLayoutFields, listLayoutsWithNodes, unbindNodeLayout, } from '../services/workflow-node-layout.js';
|
|
7
|
+
/** `--rename 批准=发送` 这类可重复的「键=值」参数收集器 */
|
|
8
|
+
export function collectPairs(value, previous) {
|
|
9
|
+
const i = value.indexOf('=');
|
|
10
|
+
if (i < 0)
|
|
11
|
+
throw new Error(`需要「菜单=值」格式,收到: ${value}`);
|
|
12
|
+
previous.set(value.slice(0, i).trim(), value.slice(i + 1));
|
|
13
|
+
return previous;
|
|
14
|
+
}
|
|
3
15
|
export function registerWorkflowNodeCommands(wf, program) {
|
|
4
|
-
const nodeCmd = wf.command('node').description('节点维度设置(菜单 / 退回 / 超时 / 投票 /
|
|
16
|
+
const nodeCmd = wf.command('node').description('节点维度设置(菜单 / 退回 / 超时 / 投票 / 字段权限 / 独立布局)');
|
|
5
17
|
// ======== node menu ========
|
|
18
|
+
// 平台把菜单分 topmenu(快捷)/ moremenu(更多)两个数组返回,保存时 menuStr 要两组合并。
|
|
19
|
+
// 旧实现只读 moremenu,所以**快捷菜单一个都切不了**(批准/保存/退回/加签/强制收回全在 topmenu)。
|
|
6
20
|
nodeCmd.command('menu')
|
|
7
|
-
.description('
|
|
21
|
+
.description('查看/配置节点操作菜单(快捷菜单 / 更多菜单:启用、改名、默认意见、分组)')
|
|
8
22
|
.argument('<workflowId>', '流程 ID')
|
|
9
23
|
.argument('<nodeId>', '节点 ID')
|
|
10
|
-
.option('--toggle
|
|
24
|
+
.option('--toggle <菜单>', '切换单个菜单的启用状态(菜单名或类型码,两组都会找)')
|
|
25
|
+
.option('--quick <names...>', '快捷菜单只启用这些(其余快捷菜单关闭);不在快捷组的会移进来')
|
|
26
|
+
.option('--more <names...>', '更多菜单只启用这些(其余更多菜单关闭);不在更多组的会移进来')
|
|
27
|
+
.option('--enable <names...>', '启用这些菜单(不动分组)')
|
|
28
|
+
.option('--disable <names...>', '关闭这些菜单')
|
|
29
|
+
.option('--rename <menu=newName>', '改菜单显示名,可重复(新名留空则恢复默认名)', collectPairs, new Map())
|
|
30
|
+
.option('--sign <menu=sign>', '设置默认签字意见,可重复', collectPairs, new Map())
|
|
11
31
|
.action(async (workflowId, nodeId, cmdOpts) => {
|
|
12
32
|
const opts = program.opts();
|
|
13
33
|
const auth = await AuthSession.fromOptions(opts);
|
|
@@ -15,64 +35,75 @@ export function registerWorkflowNodeCommands(wf, program) {
|
|
|
15
35
|
process.exit(1);
|
|
16
36
|
const client = new ApiClient(auth);
|
|
17
37
|
const baseUrl = auth.getBaseUrl();
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
// Toggle mode
|
|
27
|
-
if (cmdOpts.toggle) {
|
|
28
|
-
let found = false;
|
|
29
|
-
for (const m of menus) {
|
|
30
|
-
if (String(m.id) === cmdOpts.toggle || String(m.menuId) === cmdOpts.toggle) {
|
|
31
|
-
m.useable = (m.useable === 1 || m.useable === '1' || m.useable === true) ? 0 : 1;
|
|
32
|
-
found = true;
|
|
33
|
-
break;
|
|
38
|
+
try {
|
|
39
|
+
const set = await getNodeMenus(client, baseUrl, workflowId, nodeId);
|
|
40
|
+
const hasChange = cmdOpts.toggle || cmdOpts.quick || cmdOpts.more || cmdOpts.enable
|
|
41
|
+
|| cmdOpts.disable || cmdOpts.rename?.size || cmdOpts.sign?.size;
|
|
42
|
+
if (!hasChange) {
|
|
43
|
+
if (opts.json) {
|
|
44
|
+
console.log(JSON.stringify(set, null, 2));
|
|
45
|
+
return;
|
|
34
46
|
}
|
|
47
|
+
console.log(`节点 ${nodeId} 操作菜单: 快捷菜单 ${set.quick.length} 个 / 更多菜单 ${set.more.length} 个\n`);
|
|
48
|
+
for (const [groupName, list] of [['快捷菜单', set.quick], ['更多菜单', set.more]]) {
|
|
49
|
+
console.log(`【${groupName}】`);
|
|
50
|
+
for (const m of list) {
|
|
51
|
+
const marks = [m.useable ? '✅ 启用' : '⛔ 关闭'];
|
|
52
|
+
if (m.title)
|
|
53
|
+
marks.push(`改名「${m.title}」`);
|
|
54
|
+
if (m.defaultSign)
|
|
55
|
+
marks.push(`默认意见「${m.defaultSign}」`);
|
|
56
|
+
console.log(` ${menuLabel(m).padEnd(14)} ${m.menutype.padEnd(20)} 序${String(m.orderid).padEnd(3)} ${marks.join(' ')}`);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return;
|
|
35
60
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
61
|
+
const patch = {
|
|
62
|
+
quick: cmdOpts.quick, more: cmdOpts.more,
|
|
63
|
+
enable: cmdOpts.enable, disable: cmdOpts.disable,
|
|
64
|
+
rename: cmdOpts.rename, sign: cmdOpts.sign,
|
|
65
|
+
};
|
|
66
|
+
if (cmdOpts.toggle) {
|
|
67
|
+
const all = [...set.quick, ...set.more];
|
|
68
|
+
const hit = findMenu(all, cmdOpts.toggle);
|
|
69
|
+
if (!hit)
|
|
70
|
+
throw new Error(`找不到菜单「${cmdOpts.toggle}」。可用: ${menuNames(all).join('、')}`);
|
|
71
|
+
const base = (hit.useable ? cmdOpts.disable : cmdOpts.enable) || [];
|
|
72
|
+
if (hit.useable)
|
|
73
|
+
patch.disable = [...base, hit.id];
|
|
74
|
+
else
|
|
75
|
+
patch.enable = [...base, hit.id];
|
|
39
76
|
}
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
deleteMenuIds: [],
|
|
46
|
-
});
|
|
47
|
-
if (saveRes?.code === 200 && saveRes?.status) {
|
|
48
|
-
const msg = opts.json
|
|
49
|
-
? JSON.stringify({ success: true, workflowId, nodeId, toggled: cmdOpts.toggle })
|
|
50
|
-
: `操作菜单已切换: ${cmdOpts.toggle}`;
|
|
51
|
-
console.log(msg);
|
|
77
|
+
const { next, changed } = applyMenuPatch(set, patch);
|
|
78
|
+
await saveNodeMenus(client, baseUrl, workflowId, nodeId, next, changed);
|
|
79
|
+
if (opts.json) {
|
|
80
|
+
console.log(JSON.stringify({ success: true, workflowId, nodeId, changed, menus: next }, null, 2));
|
|
81
|
+
return;
|
|
52
82
|
}
|
|
53
|
-
|
|
54
|
-
console.
|
|
55
|
-
|
|
83
|
+
if (!changed.length) {
|
|
84
|
+
console.log('菜单本来就是目标状态,没有改动');
|
|
85
|
+
return;
|
|
56
86
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
for (const m of menus) {
|
|
66
|
-
const enabled = m.useable === 1 || m.useable === '1' || m.useable === true;
|
|
67
|
-
const icon = enabled ? '✅' : '⛔';
|
|
68
|
-
const label = m.menutype || m.menuName || m.name || '(未命名)';
|
|
69
|
-
console.log(` ${icon} ${m.id || m.menuId} ${label}`);
|
|
87
|
+
const after = await getNodeMenus(client, baseUrl, workflowId, nodeId);
|
|
88
|
+
const byId = new Map([...after.quick, ...after.more].map((m) => [m.id, m]));
|
|
89
|
+
console.log(`已更新 ${changed.length} 个菜单:`);
|
|
90
|
+
for (const id of changed) {
|
|
91
|
+
const m = byId.get(id);
|
|
92
|
+
if (!m)
|
|
93
|
+
continue;
|
|
94
|
+
console.log(` ${menuLabel(m).padEnd(14)} ${m.istop ? '快捷菜单' : '更多菜单'} ${m.useable ? '✅ 启用' : '⛔ 关闭'}${m.title ? ` 改名「${m.title}」` : ''}`);
|
|
70
95
|
}
|
|
71
96
|
}
|
|
97
|
+
catch (e) {
|
|
98
|
+
console.error(`操作失败: ${e.message}`);
|
|
99
|
+
process.exitCode = 1;
|
|
100
|
+
}
|
|
72
101
|
});
|
|
73
|
-
// ======== node reject ========
|
|
102
|
+
// ======== node reject(已弃用,保留为 node-reject 的别名) ========
|
|
103
|
+
// 旧实现只有 4 个数值开关、拿不到 enableCustom/范围节点/提醒节点;现已共用
|
|
104
|
+
// workflow-node-reject.ts 的读/建/存一套实现,本命令只做数值码翻译 + 提示弃用。
|
|
74
105
|
nodeCmd.command('reject')
|
|
75
|
-
.description('
|
|
106
|
+
.description('[已弃用] 配置节点退回设置,请改用 `workflow node-reject`(get / set)')
|
|
76
107
|
.argument('<workflowId>', '流程 ID')
|
|
77
108
|
.argument('<nodeId>', '节点 ID')
|
|
78
109
|
.option('--remind <n>', '退回提醒: 0=不提醒, 1=提醒所有参与人, 2=选择提醒节点, 3=用户设置')
|
|
@@ -86,59 +117,55 @@ export function registerWorkflowNodeCommands(wf, program) {
|
|
|
86
117
|
process.exit(1);
|
|
87
118
|
const client = new ApiClient(auth);
|
|
88
119
|
const baseUrl = auth.getBaseUrl();
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
process.exit(1);
|
|
94
|
-
}
|
|
95
|
-
const form = getRes?.data?.data || getRes?.data || {};
|
|
120
|
+
console.error('⚠ `workflow node reject` 已弃用,请改用 `workflow node-reject`(get / set)。');
|
|
121
|
+
console.error(' 本次仍按新实现执行,行为与 node-reject 一致。');
|
|
122
|
+
const hasChange = cmdOpts.remind || cmdOpts.type || cmdOpts.checkedNode || cmdOpts.submitType;
|
|
123
|
+
const form = await readRejectForm(client, baseUrl, workflowId, nodeId)
|
|
124
|
+
.catch((e) => { console.error(e.message); process.exit(1); });
|
|
96
125
|
// Read-only: show current
|
|
97
|
-
if (!
|
|
98
|
-
const remindLabels = { '0': '不提醒', '1': '提醒所有参与人', '2': '选择提醒节点', '3': '用户设置' };
|
|
99
|
-
const typeLabels = { '0': '自由', '1': '逐级', '2': '指定范围', '3': '按出口', '4': '上一审批人' };
|
|
100
|
-
const checkedLabels = { '0': '上一节点', '1': '发起节点', '2': '指定节点' };
|
|
101
|
-
const submitLabels = { '0': '逐级', '1': '直达本节点', '2': '直达分叉起始节点', '3': '操作者选择' };
|
|
126
|
+
if (!hasChange) {
|
|
102
127
|
if (opts.json) {
|
|
103
128
|
console.log(JSON.stringify(form, null, 2));
|
|
129
|
+
return;
|
|
104
130
|
}
|
|
105
|
-
|
|
106
|
-
console.log(
|
|
107
|
-
console.log(`退回方式: ${typeLabels[form.rejectType] || form.rejectType || '-'}`);
|
|
108
|
-
console.log(`默认选中: ${checkedLabels[form.rejectCheckedNode] || form.rejectCheckedNode || '-'}`);
|
|
109
|
-
console.log(`退回后提交: ${submitLabels[form.rejectSubmitType] || form.rejectSubmitType || '-'}`);
|
|
110
|
-
}
|
|
131
|
+
for (const line of formatRejectForm(form))
|
|
132
|
+
console.log(line);
|
|
111
133
|
return;
|
|
112
134
|
}
|
|
113
|
-
// Update mode
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
const msg = opts.json
|
|
125
|
-
? JSON.stringify({ success: true, workflowId, nodeId })
|
|
126
|
-
: '退回设置已保存';
|
|
127
|
-
console.log(msg);
|
|
128
|
-
}
|
|
129
|
-
else {
|
|
130
|
-
console.error(`保存失败: ${saveRes?.msg || '未知错误'}`);
|
|
131
|
-
process.exit(1);
|
|
135
|
+
// Update mode:数值码 → 键名,交给共用实现合并保存
|
|
136
|
+
for (const [flag, map, code] of [
|
|
137
|
+
['--remind', REJECT_REMINDS, cmdOpts.remind],
|
|
138
|
+
['--type', REJECT_TYPES, cmdOpts.type],
|
|
139
|
+
['--checked-node', CHECKED_NODES, cmdOpts.checkedNode],
|
|
140
|
+
['--submit-type', SUBMIT_TYPES, cmdOpts.submitType],
|
|
141
|
+
]) {
|
|
142
|
+
if (code && !codeToKey(map, code)) {
|
|
143
|
+
console.error(`不支持的 ${flag}: ${code}(可选: ${Object.values(map).join(' / ')})`);
|
|
144
|
+
process.exit(1);
|
|
145
|
+
}
|
|
132
146
|
}
|
|
147
|
+
await saveRejectSet(client, baseUrl, form, {
|
|
148
|
+
rejectRemind: codeToKey(REJECT_REMINDS, cmdOpts.remind),
|
|
149
|
+
rejectType: codeToKey(REJECT_TYPES, cmdOpts.type),
|
|
150
|
+
defaultNode: codeToKey(CHECKED_NODES, cmdOpts.checkedNode),
|
|
151
|
+
submitType: codeToKey(SUBMIT_TYPES, cmdOpts.submitType),
|
|
152
|
+
}, workflowId, nodeId).catch((e) => { console.error(e.message); process.exit(1); });
|
|
153
|
+
console.log(opts.json ? JSON.stringify({ success: true, workflowId, nodeId }) : '退回设置已保存');
|
|
133
154
|
});
|
|
134
|
-
// ======== node timeout ========
|
|
155
|
+
// ======== node timeout(已弃用,保留为 node-overtime 的别名) ========
|
|
156
|
+
// 旧实现按 `overtime` 发超时时长、`remindTime` 发提醒偏移,平台都不认:
|
|
157
|
+
// 规则建得出来但超时时间落成 0天0小时0分钟,提醒步骤直接报「系统错误」。
|
|
158
|
+
// 现已改为共用 services/workflow-overtime.ts 的一套报文,本命令只做参数翻译 + 提示弃用。
|
|
135
159
|
nodeCmd.command('timeout')
|
|
136
|
-
.description('
|
|
160
|
+
.description('[已弃用] 配置节点超时处理,请改用 `workflow node-overtime`(set / remind / list)')
|
|
137
161
|
.argument('<workflowId>', '流程 ID')
|
|
138
162
|
.argument('<nodeId>', '节点 ID')
|
|
139
|
-
.option('--time-type <n>', '超时来源: 1
|
|
163
|
+
.option('--time-type <n>', '超时来源: 1=指定时间(2=表单字段暂不支持)')
|
|
140
164
|
.option('--time-value <n>', '超时小时数(time-type=1 时使用)')
|
|
141
165
|
.option('--flow-type <n>', '处理方式: 1=下一操作者, 2=退回节点, 3=提交节点, 4=干预对象, 6=指定操作者')
|
|
166
|
+
.option('--flow-node <nodeId>', '退回/提交的目标节点 ID(flow-type=2|3 时需要)')
|
|
167
|
+
.option('--intervene-ids <userIds>', '干预对象用户 ID 列表,逗号分隔(flow-type=4 时需要)')
|
|
168
|
+
.option('--operator-group <groupId>', '新增操作者的操作组 ID(flow-type=6 时需要)')
|
|
142
169
|
.option('--remind-type <n>', '提醒时机: 0=超时前, 1=超时后')
|
|
143
170
|
.option('--remind-hours <n>', '提前/延后小时数')
|
|
144
171
|
.action(async (workflowId, nodeId, cmdOpts) => {
|
|
@@ -148,95 +175,89 @@ export function registerWorkflowNodeCommands(wf, program) {
|
|
|
148
175
|
process.exit(1);
|
|
149
176
|
const client = new ApiClient(auth);
|
|
150
177
|
const baseUrl = auth.getBaseUrl();
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
if (listRes?.code !== 200 || !listRes?.status) {
|
|
154
|
-
console.error(`查询失败: ${listRes?.msg || '未知错误'}`);
|
|
155
|
-
process.exit(1);
|
|
156
|
-
}
|
|
157
|
-
const rules = listRes?.data?.data || listRes?.data || [];
|
|
178
|
+
console.error('⚠ `workflow node timeout` 已弃用,请改用 `workflow node-overtime`(set / remind / list)。');
|
|
179
|
+
console.error(' 本次仍按新实现执行,行为与 node-overtime 一致。');
|
|
158
180
|
// Read-only: show current
|
|
159
181
|
if (!cmdOpts.timeType) {
|
|
160
|
-
const
|
|
161
|
-
|
|
182
|
+
const rules = await listOvertimeRules(client, baseUrl, workflowId, nodeId).catch((e) => {
|
|
183
|
+
console.error(e.message);
|
|
184
|
+
process.exit(1);
|
|
185
|
+
});
|
|
162
186
|
if (opts.json) {
|
|
163
187
|
console.log(JSON.stringify({ rules }, null, 2));
|
|
188
|
+
return;
|
|
164
189
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
const typeLabel = typeLabels[r.overTimeType] || r.overTimeType || '-';
|
|
170
|
-
console.log(` ${r.id || ''} ${typeLabel} ${flowLabel} 延时${r.overTime || r.overtime || '-'}h`);
|
|
171
|
-
}
|
|
190
|
+
console.log(`共 ${rules.length} 条超时规则:\n`);
|
|
191
|
+
for (const r of rules) {
|
|
192
|
+
const used = r.isUsed === true || r.isUsed === 1;
|
|
193
|
+
console.log(` [${r.id}] ${used ? '✅ 已启用' : '⛔ 未启用'} ${r.overtimeSet || ''}`);
|
|
172
194
|
}
|
|
173
195
|
return;
|
|
174
196
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
const condData = condRes?.data?.data || condRes?.data || {};
|
|
178
|
-
const payload = {
|
|
179
|
-
...condData,
|
|
180
|
-
workflowId, nodeId,
|
|
181
|
-
id: '',
|
|
182
|
-
overTimeType: cmdOpts.timeType || '1',
|
|
183
|
-
flowType: cmdOpts.flowType || '1',
|
|
184
|
-
overtime: cmdOpts.timeValue || '',
|
|
185
|
-
};
|
|
186
|
-
const saveRes = await client.post(`${baseUrl}/api/bs/workflow/pathdef/nodeOvertime/saveOvertime`, payload);
|
|
187
|
-
if (saveRes?.code !== 200 || !saveRes?.status) {
|
|
188
|
-
console.error(`保存超时规则失败: ${saveRes?.msg || '未知错误'}`);
|
|
197
|
+
if (cmdOpts.timeType !== '1') {
|
|
198
|
+
console.error(`--time-type ${cmdOpts.timeType} 暂不支持(仅有「指定时间」的报文形状,表单字段取值需先确认平台字段名)`);
|
|
189
199
|
process.exit(1);
|
|
190
200
|
}
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
if (
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
if (remindRes?.code !== 200 || !remindRes?.status) {
|
|
203
|
-
console.error(`保存超时提醒失败: ${remindRes?.msg || '未知错误'}`);
|
|
204
|
-
process.exit(1);
|
|
205
|
-
}
|
|
206
|
-
// Save overtime list (batch + enable):真实结构为裸数组,每项 {id, batchOrder, isUsed:0|1, workflowId, nodeId}
|
|
207
|
-
// (isUsed=1 启用 / 0 停用;batchOrder 该规则的批次,缺失取 0)。
|
|
208
|
-
let batchOrder = 0;
|
|
209
|
-
try {
|
|
210
|
-
const listBack = await client.get(`${baseUrl}/api/bs/workflow/pathdef/nodeOvertime/getOvertimeList?workflowId=${workflowId}&nodeId=${nodeId}`);
|
|
211
|
-
const found = (listBack?.data?.data || listBack?.data || []).find((x) => String(x.id) === String(overtimeId));
|
|
212
|
-
if (found && found.batchOrder !== undefined)
|
|
213
|
-
batchOrder = Number(found.batchOrder) || 0;
|
|
214
|
-
}
|
|
215
|
-
catch { /* 批次读不到用 0 */ }
|
|
216
|
-
const listRes = await client.post(`${baseUrl}/api/bs/workflow/pathdef/nodeOvertime/saveOvertimeList`, [{ id: overtimeId, batchOrder, isUsed: 1, workflowId, nodeId }]).catch((e) => ({ code: -1, status: false, msg: e?.message || '网络错误' }));
|
|
217
|
-
if (listRes?.code !== 200 || !listRes?.status) {
|
|
218
|
-
console.error(`启用超时规则失败(规则已创建但未启用): ${listRes?.msg || '未知错误'}`);
|
|
219
|
-
process.exit(1);
|
|
220
|
-
}
|
|
201
|
+
// 旧参数 → 新服务参数:小时数 → 天:时:分;数值 flowType → 键
|
|
202
|
+
const hours = Number(cmdOpts.timeValue);
|
|
203
|
+
if (!Number.isFinite(hours) || hours < 0) {
|
|
204
|
+
console.error(`--time-value 须为小时数(非负数),收到: ${cmdOpts.timeValue}`);
|
|
205
|
+
process.exit(1);
|
|
206
|
+
}
|
|
207
|
+
const duration = { day: Math.floor(hours / 24), hour: hours % 24, minute: 0 };
|
|
208
|
+
const flowType = FLOW_TYPE_BY_ID[cmdOpts.flowType || '1'];
|
|
209
|
+
if (!flowType) {
|
|
210
|
+
console.error(`不支持的 --flow-type: ${cmdOpts.flowType},可选: ${Object.keys(FLOW_TYPE_BY_ID).join(', ')}`);
|
|
211
|
+
process.exit(1);
|
|
221
212
|
}
|
|
222
|
-
|
|
223
|
-
let actualUsed = null;
|
|
213
|
+
let overtimeId;
|
|
224
214
|
try {
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
215
|
+
overtimeId = await saveOvertimeRule(client, baseUrl, {
|
|
216
|
+
workflowId, nodeId, flowType, duration,
|
|
217
|
+
flowNodeId: cmdOpts.flowNode,
|
|
218
|
+
interveneIds: cmdOpts.interveneIds,
|
|
219
|
+
operatorGroupId: cmdOpts.operatorGroup,
|
|
220
|
+
});
|
|
221
|
+
// 新建规则默认未启用,显式打开后再回读核对
|
|
222
|
+
await setOvertimeRuleUsed(client, baseUrl, workflowId, nodeId, overtimeId, 1);
|
|
229
223
|
}
|
|
230
|
-
catch {
|
|
231
|
-
|
|
232
|
-
|
|
224
|
+
catch (e) {
|
|
225
|
+
console.error(e.message);
|
|
226
|
+
process.exit(1);
|
|
233
227
|
}
|
|
234
|
-
|
|
235
|
-
|
|
228
|
+
const { mismatches } = await verifyOvertimeRule(client, baseUrl, workflowId, nodeId, overtimeId, { duration, isUsed: 1 });
|
|
229
|
+
if (mismatches.length) {
|
|
230
|
+
console.error(`超时规则已提交但回读不符(规则 ID ${overtimeId}):`);
|
|
231
|
+
for (const m of mismatches)
|
|
232
|
+
console.error(` ⚠ ${m}`);
|
|
233
|
+
process.exit(1);
|
|
236
234
|
}
|
|
237
|
-
|
|
238
|
-
|
|
235
|
+
// 可选:顺带设提醒(沿用新的 remindDay/Hour/Minute 报文)
|
|
236
|
+
if (cmdOpts.remindType) {
|
|
237
|
+
const rh = Number(cmdOpts.remindHours);
|
|
238
|
+
const offset = {
|
|
239
|
+
day: Number.isFinite(rh) ? Math.floor(rh / 24) : 0,
|
|
240
|
+
hour: Number.isFinite(rh) ? rh % 24 : 1,
|
|
241
|
+
minute: 0,
|
|
242
|
+
};
|
|
243
|
+
try {
|
|
244
|
+
await saveOvertimeRemind(client, baseUrl, {
|
|
245
|
+
workflowId, nodeId, overtimeId,
|
|
246
|
+
name: '超时提醒',
|
|
247
|
+
type: Number(cmdOpts.remindType),
|
|
248
|
+
offset,
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
catch (e) {
|
|
252
|
+
console.error(e.message);
|
|
253
|
+
process.exit(1);
|
|
254
|
+
}
|
|
255
|
+
console.log(` 提醒: ${cmdOpts.remindType === '0' ? '超时前' : '超时后'} ${formatDhm(offset)}`);
|
|
239
256
|
}
|
|
257
|
+
console.log(`超时规则已保存: ${overtimeId}`);
|
|
258
|
+
console.log(` 超时时长: ${formatDhm(duration)}`);
|
|
259
|
+
console.log(` 处理方式: ${OVERTIME_FLOW_TYPES[flowType].label}`);
|
|
260
|
+
console.log(` 状态: 已启用`);
|
|
240
261
|
});
|
|
241
262
|
// ======== node field-permission ========
|
|
242
263
|
// 节点级字段权限:控制各字段在节点上的 显示/只读/必填。
|
|
@@ -535,5 +556,253 @@ export function registerWorkflowNodeCommands(wf, program) {
|
|
|
535
556
|
process.exit(1);
|
|
536
557
|
}
|
|
537
558
|
});
|
|
559
|
+
// ======== node layout ========
|
|
560
|
+
// 节点独立布局:节点上挂一套自己的表单布局,与表单默认布局并存。
|
|
561
|
+
// 一个节点同时只属于一套布局,换布局时服务端自动从旧的那套摘掉、回落默认。
|
|
562
|
+
const layoutCmd = nodeCmd
|
|
563
|
+
.command('layout')
|
|
564
|
+
.description('节点独立布局(挂哪套布局 / 新建布局 / 查引用节点)');
|
|
565
|
+
/** 建 client + base。与本文件其它子命令保持同款写法。 */
|
|
566
|
+
async function conn() {
|
|
567
|
+
const opts = program.opts();
|
|
568
|
+
const auth = await AuthSession.fromOptions(opts);
|
|
569
|
+
if (!auth)
|
|
570
|
+
throw new Error('无法加载认证');
|
|
571
|
+
return { client: new ApiClient(auth), baseUrl: auth.getBaseUrl(), json: !!opts.json };
|
|
572
|
+
}
|
|
573
|
+
layoutCmd
|
|
574
|
+
.command('list')
|
|
575
|
+
.description('列出该工作流表单的布局,以及每套被哪些节点引用')
|
|
576
|
+
.argument('<workflowId>', '工作流 ID')
|
|
577
|
+
.option('--terminal <t>', '终端:PC(默认) / MOBILE', 'PC')
|
|
578
|
+
.action(async (workflowId, o) => {
|
|
579
|
+
try {
|
|
580
|
+
const { client, json } = await conn();
|
|
581
|
+
const terminal = (o.terminal || 'PC').toUpperCase();
|
|
582
|
+
// formId 从任一节点的布局设置里反查(表单级接口需要它)
|
|
583
|
+
const refer = await getLayoutReferNodes(client, workflowId, terminal);
|
|
584
|
+
if (!refer.formId)
|
|
585
|
+
throw new Error(`读不到该工作流的表单信息(workflowId=${workflowId})`);
|
|
586
|
+
const rows = await listLayoutsWithNodes(client, refer.formId, workflowId, terminal);
|
|
587
|
+
if (json) {
|
|
588
|
+
console.log(JSON.stringify({ workflowId, formId: refer.formId, pcDefaultLayoutId: refer.pcDefaultLayoutId, layouts: rows }, null, 2));
|
|
589
|
+
return;
|
|
590
|
+
}
|
|
591
|
+
console.log(`工作流 ${workflowId} 表单 ${refer.formId} ${terminal} 端布局 ${rows.length} 套`);
|
|
592
|
+
for (const r of rows) {
|
|
593
|
+
console.log(` ${r.id}\t${r.name}\t${r.layoutType}${r.isDefault ? '\t[默认]' : ''}\t引用 ${r.nodeIds.length} 个节点` +
|
|
594
|
+
(r.nodeNames.length ? `(${r.nodeNames.join('、')})` : ''));
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
catch (e) {
|
|
598
|
+
console.error(`读取布局失败: ${e.message}`);
|
|
599
|
+
process.exitCode = 1;
|
|
600
|
+
}
|
|
601
|
+
});
|
|
602
|
+
layoutCmd
|
|
603
|
+
.command('get')
|
|
604
|
+
.description('查看某个节点挂的是哪套布局')
|
|
605
|
+
.argument('<workflowId>', '工作流 ID')
|
|
606
|
+
.argument('<nodeId>', '节点 ID')
|
|
607
|
+
.action(async (workflowId, nodeId) => {
|
|
608
|
+
try {
|
|
609
|
+
const { client, json } = await conn();
|
|
610
|
+
const s = await getNodeLayout(client, workflowId, nodeId);
|
|
611
|
+
if (json) {
|
|
612
|
+
console.log(JSON.stringify(s, null, 2));
|
|
613
|
+
return;
|
|
614
|
+
}
|
|
615
|
+
const custom = !!s.layoutId && s.layoutId !== s.defaultLayoutId;
|
|
616
|
+
console.log(`节点 ${s.nodeId} ${s.nodeName}`);
|
|
617
|
+
console.log(` PC 端布局: ${s.layoutId || '(默认)'}${custom ? ' ← 独立布局' : ' ← 跟随表单默认'}`);
|
|
618
|
+
console.log(` 表单默认布局: ${s.defaultLayoutId}`);
|
|
619
|
+
console.log(` 移动端: 模式=${s.mLayoutMode || '(未设)'}(0=独立布局 1=读取PC端) 独立布局=${s.mLayoutId || '(无)'}`);
|
|
620
|
+
console.log(` 字段权限: ${s.hasNodePermissionSet ? '已设置' : '未设置'}`);
|
|
621
|
+
}
|
|
622
|
+
catch (e) {
|
|
623
|
+
console.error(`读取节点布局失败: ${e.message}`);
|
|
624
|
+
process.exitCode = 1;
|
|
625
|
+
}
|
|
626
|
+
});
|
|
627
|
+
layoutCmd
|
|
628
|
+
.command('bind')
|
|
629
|
+
.description('把节点挂到指定布局上(自动从原来那套摘掉,不残留)')
|
|
630
|
+
.argument('<workflowId>', '工作流 ID')
|
|
631
|
+
.argument('<nodeId>', '节点 ID')
|
|
632
|
+
.requiredOption('--layout-id <id>', '目标布局 ID(node layout list 可查)')
|
|
633
|
+
.option('--terminal <t>', '终端:PC(默认) / MOBILE', 'PC')
|
|
634
|
+
.action(async (workflowId, nodeId, o) => {
|
|
635
|
+
try {
|
|
636
|
+
const { client, json } = await conn();
|
|
637
|
+
const r = await bindNodeLayout(client, {
|
|
638
|
+
workflowId, nodeId, layoutId: o.layoutId,
|
|
639
|
+
terminal: (o.terminal || 'PC').toUpperCase(),
|
|
640
|
+
});
|
|
641
|
+
if (json) {
|
|
642
|
+
console.log(JSON.stringify({ success: true, ...r, workflowId, nodeId, layoutId: o.layoutId }, null, 2));
|
|
643
|
+
return;
|
|
644
|
+
}
|
|
645
|
+
console.log(r.changed
|
|
646
|
+
? `节点 ${nodeId} 已挂到布局 ${o.layoutId}(该布局现引用 ${r.nodeIds.length} 个节点)`
|
|
647
|
+
: `节点 ${nodeId} 本来就在布局 ${o.layoutId} 上,未改动`);
|
|
648
|
+
}
|
|
649
|
+
catch (e) {
|
|
650
|
+
console.error(`绑定失败: ${e.message}`);
|
|
651
|
+
process.exitCode = 1;
|
|
652
|
+
}
|
|
653
|
+
});
|
|
654
|
+
layoutCmd
|
|
655
|
+
.command('unbind')
|
|
656
|
+
.description('把节点从独立布局上摘下来,回落到表单默认布局')
|
|
657
|
+
.argument('<workflowId>', '工作流 ID')
|
|
658
|
+
.argument('<nodeId>', '节点 ID')
|
|
659
|
+
.option('--terminal <t>', '终端:PC(默认) / MOBILE', 'PC')
|
|
660
|
+
.action(async (workflowId, nodeId, o) => {
|
|
661
|
+
try {
|
|
662
|
+
const { client, json } = await conn();
|
|
663
|
+
const r = await unbindNodeLayout(client, {
|
|
664
|
+
workflowId, nodeId,
|
|
665
|
+
terminal: (o.terminal || 'PC').toUpperCase(),
|
|
666
|
+
});
|
|
667
|
+
if (json) {
|
|
668
|
+
console.log(JSON.stringify({ success: true, ...r, workflowId, nodeId }, null, 2));
|
|
669
|
+
return;
|
|
670
|
+
}
|
|
671
|
+
console.log(r.changed
|
|
672
|
+
? `节点 ${nodeId} 已从布局 ${r.layoutId} 摘下,回落表单默认布局(该布局现引用 ${r.nodeIds.length} 个节点)`
|
|
673
|
+
: `节点 ${nodeId} 本来就没挂独立布局,未改动`);
|
|
674
|
+
}
|
|
675
|
+
catch (e) {
|
|
676
|
+
console.error(`解绑失败: ${e.message}`);
|
|
677
|
+
process.exitCode = 1;
|
|
678
|
+
}
|
|
679
|
+
});
|
|
680
|
+
layoutCmd
|
|
681
|
+
.command('init')
|
|
682
|
+
.description('重建某套布局的排版(只动这一套,默认布局与其它布局不受影响);可只摆指定字段')
|
|
683
|
+
.argument('<workflowId>', '工作流 ID')
|
|
684
|
+
.argument('<layoutId>', '目标布局 ID(node layout list 可查)')
|
|
685
|
+
.option('--fields <names...>', '只摆这些字段(显示名);不传 = 摆全部字段')
|
|
686
|
+
.option('--list-fields', '只列出该表单可用的字段清单,不重建')
|
|
687
|
+
.option('--style-template <name|id>', '样式模板;缺省按布局类型取(流式=标准版 / 表格式=表格版)')
|
|
688
|
+
.option('--required', '字段必填')
|
|
689
|
+
.option('--readonly', '字段只读')
|
|
690
|
+
.option('--single-row', '字段独占一行')
|
|
691
|
+
.action(async (workflowId, layoutId, o) => {
|
|
692
|
+
try {
|
|
693
|
+
const { client, json } = await conn();
|
|
694
|
+
const refer = await getLayoutReferNodes(client, workflowId, 'PC');
|
|
695
|
+
if (!refer.formId)
|
|
696
|
+
throw new Error(`读不到该工作流的表单信息(workflowId=${workflowId})`);
|
|
697
|
+
if (o.listFields) {
|
|
698
|
+
const list = await listLayoutFields(client, refer.formId);
|
|
699
|
+
if (json) {
|
|
700
|
+
console.log(JSON.stringify(list, null, 2));
|
|
701
|
+
return;
|
|
702
|
+
}
|
|
703
|
+
console.log(`表单 ${refer.formId} 可摆字段 ${list.filter((x) => !x.system).length} 个(业务):`);
|
|
704
|
+
list.filter((x) => !x.system).forEach((x) => console.log(` ${x.label} ${x.id}`));
|
|
705
|
+
return;
|
|
706
|
+
}
|
|
707
|
+
const r = await initNodeLayout(client, {
|
|
708
|
+
formId: refer.formId,
|
|
709
|
+
workflowId,
|
|
710
|
+
layoutId,
|
|
711
|
+
fields: o.fields,
|
|
712
|
+
styleTemplateId: o.styleTemplate,
|
|
713
|
+
required: o.required,
|
|
714
|
+
readOnly: o.readonly,
|
|
715
|
+
singleRow: o.singleRow,
|
|
716
|
+
});
|
|
717
|
+
if (json) {
|
|
718
|
+
console.log(JSON.stringify({ success: true, formId: refer.formId, layoutId, ...r }, null, 2));
|
|
719
|
+
return;
|
|
720
|
+
}
|
|
721
|
+
console.log(`布局 ${layoutId} 已重建: ${r.comps} 个组件 · 类型 ${r.layoutType} · 模板 ${r.styleTemplateId}`);
|
|
722
|
+
if (r.placed.length)
|
|
723
|
+
console.log(` 摆了: ${r.placed.join('、')}`);
|
|
724
|
+
}
|
|
725
|
+
catch (e) {
|
|
726
|
+
console.error(`重建布局失败: ${e.message}`);
|
|
727
|
+
process.exitCode = 1;
|
|
728
|
+
}
|
|
729
|
+
});
|
|
730
|
+
layoutCmd
|
|
731
|
+
.command('create')
|
|
732
|
+
.description('新建一套布局(FLOW 流式 / EXCEL 表格式);可同时挂上若干节点')
|
|
733
|
+
.argument('<workflowId>', '工作流 ID')
|
|
734
|
+
.requiredOption('--name <name>', '布局名称')
|
|
735
|
+
.option('--layout-type <t>', '布局类型:FLOW 流式 / EXCEL 表格式(默认跟随复制来源;不复制时 FLOW)')
|
|
736
|
+
.option('--terminal <t>', '终端:PC(默认) / MOBILE', 'PC')
|
|
737
|
+
.option('--describe <text>', '布局描述', '')
|
|
738
|
+
.option('--nodes <ids...>', '建完直接把这些节点挂上去')
|
|
739
|
+
.option('--from <layoutId>', '复制这套布局的内容(默认复制表单默认布局)。不传 = 建空白布局')
|
|
740
|
+
.option('--empty', '建空白布局,不复制任何内容(与 --from 互斥)')
|
|
741
|
+
.option('--init', '建完立即重建一次布局(按字段清单排版),免去手工在设计器里摆')
|
|
742
|
+
.option('--fields <names...>', '配合 --init:只摆这些字段(显示名)。不传 = 摆全部字段')
|
|
743
|
+
.option('--style-template <name|id>', '配合 --init:样式模板;缺省按布局类型取')
|
|
744
|
+
.option('--required', '配合 --init:字段必填')
|
|
745
|
+
.option('--readonly', '配合 --init:字段只读')
|
|
746
|
+
.option('--single-row', '配合 --init:字段独占一行')
|
|
747
|
+
.action(async (workflowId, o) => {
|
|
748
|
+
try {
|
|
749
|
+
const { client, json } = await conn();
|
|
750
|
+
if (o.from && o.empty)
|
|
751
|
+
throw new Error('--from 与 --empty 互斥,二选一。');
|
|
752
|
+
const terminal = (o.terminal || 'PC').toUpperCase();
|
|
753
|
+
const refer = await getLayoutReferNodes(client, workflowId, terminal);
|
|
754
|
+
if (!refer.formId)
|
|
755
|
+
throw new Error(`读不到该工作流的表单信息(workflowId=${workflowId})`);
|
|
756
|
+
// 不指定就复制表单默认布局 —— 空布局节点上什么都显示不出来,几乎不会是想要的结果
|
|
757
|
+
const from = o.empty ? undefined : String(o.from || refer.pcDefaultLayoutId || '');
|
|
758
|
+
if (!o.empty && !from) {
|
|
759
|
+
throw new Error('该表单没有默认布局可供复制,请显式指定 --from <layoutId> 或加 --empty 建空白布局。');
|
|
760
|
+
}
|
|
761
|
+
const layout = await createFormLayout(client, {
|
|
762
|
+
formId: refer.formId,
|
|
763
|
+
workflowId,
|
|
764
|
+
name: o.name,
|
|
765
|
+
layoutType: o.layoutType ? o.layoutType.toUpperCase() : undefined,
|
|
766
|
+
terminal,
|
|
767
|
+
describe: o.describe,
|
|
768
|
+
nodeIds: o.nodes,
|
|
769
|
+
from,
|
|
770
|
+
});
|
|
771
|
+
if (json) {
|
|
772
|
+
console.log(JSON.stringify({ success: true, formId: refer.formId, copiedFrom: from || null, layout, nodes: o.nodes || [] }, null, 2));
|
|
773
|
+
return;
|
|
774
|
+
}
|
|
775
|
+
console.log(`布局已新建: ${layout.name}(${layout.layoutType === 'FLOW' ? '流式' : '表格式'})layoutId=${layout.id}`);
|
|
776
|
+
console.log(from ? ` 已从布局 ${from} 复制内容` : ' ⚠ 建的是空白布局:字段与排版都需要重新配');
|
|
777
|
+
if (o.nodes?.length)
|
|
778
|
+
console.log(` 已挂节点: ${o.nodes.join(', ')}`);
|
|
779
|
+
if (o.init) {
|
|
780
|
+
const layoutFields = await listLayoutFields(client, refer.formId);
|
|
781
|
+
// 复制模式下本来就已经排好版;再 init 会把内容按字段清单重排,只有显式 --init 才做
|
|
782
|
+
const r = await initNodeLayout(client, {
|
|
783
|
+
formId: refer.formId,
|
|
784
|
+
workflowId,
|
|
785
|
+
layoutId: layout.id,
|
|
786
|
+
fields: o.fields,
|
|
787
|
+
styleTemplateId: o.styleTemplate,
|
|
788
|
+
required: o.required,
|
|
789
|
+
readOnly: o.readonly,
|
|
790
|
+
singleRow: o.singleRow,
|
|
791
|
+
});
|
|
792
|
+
if (json) {
|
|
793
|
+
console.log(JSON.stringify({ success: true, formId: refer.formId, copiedFrom: from || null, layout, nodes: o.nodes || [], init: { ...r, availableFields: layoutFields.length } }, null, 2));
|
|
794
|
+
return;
|
|
795
|
+
}
|
|
796
|
+
console.log(` 已排版: ${r.comps} 个组件 · 模板 ${r.styleTemplateId}${o.fields?.length ? ` · 只摆 ${o.fields.join('、')}` : ' · 全部字段'}`);
|
|
797
|
+
if (o.fields?.length && layoutFields.length) {
|
|
798
|
+
console.log(` (其余 ${layoutFields.filter((x) => !x.system).length - r.comps} 个业务字段只是这套布局不显示,表单上仍在)`);
|
|
799
|
+
}
|
|
800
|
+
}
|
|
801
|
+
}
|
|
802
|
+
catch (e) {
|
|
803
|
+
console.error(`新建布局失败: ${e.message}`);
|
|
804
|
+
process.exitCode = 1;
|
|
805
|
+
}
|
|
806
|
+
});
|
|
538
807
|
}
|
|
539
808
|
//# sourceMappingURL=workflow-node.js.map
|