weaver-e10-builder 1.6.15 → 1.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli-register.d.ts +8 -1
- package/dist/cli-register.d.ts.map +1 -1
- package/dist/cli-register.js +238 -86
- package/dist/cli-register.js.map +1 -1
- package/dist/commands/actionflow.d.ts +1 -0
- package/dist/commands/actionflow.d.ts.map +1 -1
- package/dist/commands/actionflow.js +17 -1
- package/dist/commands/actionflow.js.map +1 -1
- package/dist/commands/designer-custom-page.d.ts +3 -0
- package/dist/commands/designer-custom-page.d.ts.map +1 -0
- package/dist/commands/designer-custom-page.js +56 -0
- package/dist/commands/designer-custom-page.js.map +1 -0
- package/dist/commands/designer-event.d.ts.map +1 -1
- package/dist/commands/designer-event.js +70 -5
- package/dist/commands/designer-event.js.map +1 -1
- package/dist/commands/designer-list-advanced.d.ts +3 -0
- package/dist/commands/designer-list-advanced.d.ts.map +1 -0
- package/dist/commands/designer-list-advanced.js +53 -0
- package/dist/commands/designer-list-advanced.js.map +1 -0
- package/dist/commands/designer-list-controls.d.ts +3 -0
- package/dist/commands/designer-list-controls.d.ts.map +1 -0
- package/dist/commands/designer-list-controls.js +39 -0
- package/dist/commands/designer-list-controls.js.map +1 -0
- package/dist/commands/designer-permission.d.ts +3 -0
- package/dist/commands/designer-permission.d.ts.map +1 -0
- package/dist/commands/designer-permission.js +32 -0
- package/dist/commands/designer-permission.js.map +1 -0
- package/dist/commands/designer-tabbar.d.ts +3 -0
- package/dist/commands/designer-tabbar.d.ts.map +1 -0
- package/dist/commands/designer-tabbar.js +24 -0
- package/dist/commands/designer-tabbar.js.map +1 -0
- package/dist/commands/ecode.d.ts +9 -0
- package/dist/commands/ecode.d.ts.map +1 -0
- package/dist/commands/ecode.js +81 -0
- package/dist/commands/ecode.js.map +1 -0
- package/dist/commands/form-base-setting.d.ts +3 -0
- package/dist/commands/form-base-setting.d.ts.map +1 -0
- package/dist/commands/form-base-setting.js +192 -0
- package/dist/commands/form-base-setting.js.map +1 -0
- package/dist/commands/form-field-linkage.d.ts +5 -0
- package/dist/commands/form-field-linkage.d.ts.map +1 -1
- package/dist/commands/form-field-linkage.js +82 -16
- package/dist/commands/form-field-linkage.js.map +1 -1
- package/dist/commands/form-list-columns.d.ts.map +1 -1
- package/dist/commands/form-list-columns.js +4 -0
- package/dist/commands/form-list-columns.js.map +1 -1
- package/dist/commands/form-list-config.d.ts.map +1 -1
- package/dist/commands/form-list-config.js +19 -3
- package/dist/commands/form-list-config.js.map +1 -1
- package/dist/commands/form-list-permission.d.ts.map +1 -1
- package/dist/commands/form-list-permission.js +34 -1
- package/dist/commands/form-list-permission.js.map +1 -1
- package/dist/commands/form-obj-meta.d.ts.map +1 -1
- package/dist/commands/form-obj-meta.js +194 -1
- package/dist/commands/form-obj-meta.js.map +1 -1
- package/dist/commands/form-table-view.d.ts.map +1 -1
- package/dist/commands/form-table-view.js +14 -4
- package/dist/commands/form-table-view.js.map +1 -1
- package/dist/commands/matrix-person.d.ts +3 -0
- package/dist/commands/matrix-person.d.ts.map +1 -0
- package/dist/commands/matrix-person.js +95 -0
- package/dist/commands/matrix-person.js.map +1 -0
- package/dist/commands/matrix.d.ts.map +1 -1
- package/dist/commands/matrix.js +3 -1
- package/dist/commands/matrix.js.map +1 -1
- package/dist/commands/page-combination.d.ts.map +1 -1
- package/dist/commands/page-combination.js +15 -0
- package/dist/commands/page-combination.js.map +1 -1
- package/dist/commands/page-management.d.ts +3 -0
- package/dist/commands/page-management.d.ts.map +1 -0
- package/dist/commands/page-management.js +16 -0
- package/dist/commands/page-management.js.map +1 -0
- package/dist/commands/page.d.ts.map +1 -1
- package/dist/commands/page.js +8 -9
- package/dist/commands/page.js.map +1 -1
- package/dist/commands/report-cell.d.ts.map +1 -1
- package/dist/commands/report-cell.js +215 -0
- package/dist/commands/report-cell.js.map +1 -1
- package/dist/commands/report-code.d.ts +9 -0
- package/dist/commands/report-code.d.ts.map +1 -0
- package/dist/commands/report-code.js +105 -0
- package/dist/commands/report-code.js.map +1 -0
- package/dist/commands/report.d.ts.map +1 -1
- package/dist/commands/report.js +70 -17
- package/dist/commands/report.js.map +1 -1
- package/dist/core/client.d.ts +12 -0
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +23 -2
- package/dist/core/client.js.map +1 -1
- package/dist/index.js +15 -5
- package/dist/index.js.map +1 -1
- package/dist/services/action-detail.d.ts +2 -0
- package/dist/services/action-detail.d.ts.map +1 -1
- package/dist/services/action-detail.js +11 -5
- package/dist/services/action-detail.js.map +1 -1
- package/dist/services/actionflow/build_workflow_draft.d.ts +1 -1
- package/dist/services/actionflow/build_workflow_draft.d.ts.map +1 -1
- package/dist/services/actionflow/build_workflow_draft.js +28 -24
- package/dist/services/actionflow/build_workflow_draft.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.js +2 -15
- package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -1
- package/dist/services/actionflow/components/custom_set_form.d.ts.map +1 -1
- package/dist/services/actionflow/components/custom_set_form.js +1 -9
- package/dist/services/actionflow/components/custom_set_form.js.map +1 -1
- package/dist/services/actionflow/components/dml_execute.d.ts.map +1 -1
- package/dist/services/actionflow/components/dml_execute.js +3 -4
- package/dist/services/actionflow/components/dml_execute.js.map +1 -1
- package/dist/services/actionflow/components/document_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/document_actions.js +0 -3
- package/dist/services/actionflow/components/document_actions.js.map +1 -1
- package/dist/services/actionflow/components/form_data_builder.d.ts.map +1 -1
- package/dist/services/actionflow/components/form_data_builder.js +27 -5
- package/dist/services/actionflow/components/form_data_builder.js.map +1 -1
- package/dist/services/actionflow/components/hrm_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/hrm_actions.js +1 -3
- package/dist/services/actionflow/components/hrm_actions.js.map +1 -1
- package/dist/services/actionflow/components/index.d.ts +1 -1
- package/dist/services/actionflow/components/index.d.ts.map +1 -1
- package/dist/services/actionflow/components/index.js +1 -1
- package/dist/services/actionflow/components/index.js.map +1 -1
- package/dist/services/actionflow/components/inner_mq_listener.js +1 -1
- package/dist/services/actionflow/components/inner_mq_listener.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 +6 -2
- package/dist/services/actionflow/components/inner_mq_send.js.map +1 -1
- package/dist/services/actionflow/components/multiple_execution.d.ts +1 -2
- package/dist/services/actionflow/components/multiple_execution.d.ts.map +1 -1
- package/dist/services/actionflow/components/multiple_execution.js +55 -276
- package/dist/services/actionflow/components/multiple_execution.js.map +1 -1
- package/dist/services/actionflow/components/output.d.ts.map +1 -1
- package/dist/services/actionflow/components/output.js +3 -7
- package/dist/services/actionflow/components/output.js.map +1 -1
- package/dist/services/actionflow/components/send_message.d.ts.map +1 -1
- package/dist/services/actionflow/components/send_message.js +6 -10
- package/dist/services/actionflow/components/send_message.js.map +1 -1
- package/dist/services/actionflow/components/serverless_action.d.ts.map +1 -1
- package/dist/services/actionflow/components/serverless_action.js +3 -2
- package/dist/services/actionflow/components/serverless_action.js.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.js +0 -3
- package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
- package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
- package/dist/services/actionflow/context_preflight.js +12 -9
- package/dist/services/actionflow/context_preflight.js.map +1 -1
- package/dist/services/actionflow/filter_rules.js +4 -4
- package/dist/services/actionflow/filter_rules.js.map +1 -1
- package/dist/services/actionflow/formula_service.d.ts +0 -13
- package/dist/services/actionflow/formula_service.d.ts.map +1 -1
- package/dist/services/actionflow/formula_service.js +45 -267
- 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 +10 -12
- package/dist/services/actionflow/generation_service.js.map +1 -1
- package/dist/services/actionflow/id_generator.d.ts +2 -2
- package/dist/services/actionflow/id_generator.d.ts.map +1 -1
- package/dist/services/actionflow/id_generator.js +5 -11
- package/dist/services/actionflow/id_generator.js.map +1 -1
- package/dist/services/actionflow/loop_context.d.ts +12 -0
- package/dist/services/actionflow/loop_context.d.ts.map +1 -0
- package/dist/services/actionflow/loop_context.js +134 -0
- package/dist/services/actionflow/loop_context.js.map +1 -0
- package/dist/services/actionflow/param_group_dto.d.ts +7 -0
- package/dist/services/actionflow/param_group_dto.d.ts.map +1 -1
- package/dist/services/actionflow/param_group_dto.js +128 -16
- package/dist/services/actionflow/param_group_dto.js.map +1 -1
- package/dist/services/actionflow/param_mapping_basis.js +2 -2
- package/dist/services/actionflow/param_mapping_basis.js.map +1 -1
- package/dist/services/actionflow/preflight_service.d.ts +1 -0
- package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
- package/dist/services/actionflow/preflight_service.js +88 -291
- package/dist/services/actionflow/preflight_service.js.map +1 -1
- package/dist/services/actionflow/readback_verifier.d.ts.map +1 -1
- package/dist/services/actionflow/readback_verifier.js +21 -2
- package/dist/services/actionflow/readback_verifier.js.map +1 -1
- package/dist/services/actionflow/save_workflow_draft.d.ts +2 -3
- package/dist/services/actionflow/save_workflow_draft.d.ts.map +1 -1
- package/dist/services/actionflow/save_workflow_draft.js +14 -16
- package/dist/services/actionflow/save_workflow_draft.js.map +1 -1
- package/dist/services/actionflow/update_service.d.ts +5 -0
- package/dist/services/actionflow/update_service.d.ts.map +1 -1
- package/dist/services/actionflow/update_service.js +126 -3
- package/dist/services/actionflow/update_service.js.map +1 -1
- package/dist/services/actionflow/workflow_compiler.d.ts +1 -2
- package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/workflow_compiler.js +79 -105
- package/dist/services/actionflow/workflow_compiler.js.map +1 -1
- package/dist/services/designer-custom-page.d.ts +11 -0
- package/dist/services/designer-custom-page.d.ts.map +1 -0
- package/dist/services/designer-custom-page.js +227 -0
- package/dist/services/designer-custom-page.js.map +1 -0
- package/dist/services/designer-event.d.ts +7 -2
- package/dist/services/designer-event.d.ts.map +1 -1
- package/dist/services/designer-event.js +357 -33
- package/dist/services/designer-event.js.map +1 -1
- package/dist/services/designer-list-advanced.d.ts +9 -0
- package/dist/services/designer-list-advanced.d.ts.map +1 -0
- package/dist/services/designer-list-advanced.js +64 -0
- package/dist/services/designer-list-advanced.js.map +1 -0
- package/dist/services/designer-list-controls.d.ts +2 -0
- package/dist/services/designer-list-controls.d.ts.map +1 -0
- package/dist/services/designer-list-controls.js +85 -0
- package/dist/services/designer-list-controls.js.map +1 -0
- package/dist/services/designer-list-presentation.d.ts +2 -0
- package/dist/services/designer-list-presentation.d.ts.map +1 -0
- package/dist/services/designer-list-presentation.js +45 -0
- package/dist/services/designer-list-presentation.js.map +1 -0
- package/dist/services/designer-list-runtime.d.ts +2 -0
- package/dist/services/designer-list-runtime.d.ts.map +1 -0
- package/dist/services/designer-list-runtime.js +80 -0
- package/dist/services/designer-list-runtime.js.map +1 -0
- package/dist/services/designer-list-search.d.ts +2 -0
- package/dist/services/designer-list-search.d.ts.map +1 -0
- package/dist/services/designer-list-search.js +72 -0
- package/dist/services/designer-list-search.js.map +1 -0
- package/dist/services/designer-permission.d.ts +52 -0
- package/dist/services/designer-permission.d.ts.map +1 -0
- package/dist/services/designer-permission.js +316 -0
- package/dist/services/designer-permission.js.map +1 -0
- package/dist/services/designer-tabbar.d.ts +11 -0
- package/dist/services/designer-tabbar.d.ts.map +1 -0
- package/dist/services/designer-tabbar.js +114 -0
- package/dist/services/designer-tabbar.js.map +1 -0
- package/dist/services/ecode-check.d.ts +50 -0
- package/dist/services/ecode-check.d.ts.map +1 -0
- package/dist/services/ecode-check.js +408 -0
- package/dist/services/ecode-check.js.map +1 -0
- package/dist/services/esb-interface/importer.d.ts +35 -1
- package/dist/services/esb-interface/importer.d.ts.map +1 -1
- package/dist/services/esb-interface/importer.js +77 -1
- package/dist/services/esb-interface/importer.js.map +1 -1
- package/dist/services/form-base-setting.d.ts +88 -0
- package/dist/services/form-base-setting.d.ts.map +1 -0
- package/dist/services/form-base-setting.js +272 -0
- package/dist/services/form-base-setting.js.map +1 -0
- package/dist/services/form-list-columns.d.ts.map +1 -1
- package/dist/services/form-list-columns.js +12 -3
- package/dist/services/form-list-columns.js.map +1 -1
- package/dist/services/form-list-config.d.ts +40 -3
- package/dist/services/form-list-config.d.ts.map +1 -1
- package/dist/services/form-list-config.js +207 -25
- package/dist/services/form-list-config.js.map +1 -1
- package/dist/services/form-list-fields.d.ts.map +1 -1
- package/dist/services/form-list-fields.js +3 -1
- package/dist/services/form-list-fields.js.map +1 -1
- package/dist/services/form-log-setting.d.ts +55 -0
- package/dist/services/form-log-setting.d.ts.map +1 -0
- package/dist/services/form-log-setting.js +108 -0
- package/dist/services/form-log-setting.js.map +1 -0
- package/dist/services/form-obj-lang.d.ts +45 -0
- package/dist/services/form-obj-lang.d.ts.map +1 -0
- package/dist/services/form-obj-lang.js +127 -0
- package/dist/services/form-obj-lang.js.map +1 -0
- package/dist/services/form-obj-meta.d.ts +34 -0
- package/dist/services/form-obj-meta.d.ts.map +1 -1
- package/dist/services/form-obj-meta.js +81 -12
- package/dist/services/form-obj-meta.js.map +1 -1
- package/dist/services/form-table-view.d.ts +8 -2
- package/dist/services/form-table-view.d.ts.map +1 -1
- package/dist/services/form-table-view.js +22 -5
- package/dist/services/form-table-view.js.map +1 -1
- package/dist/services/form-view.d.ts +1 -1
- package/dist/services/form-view.d.ts.map +1 -1
- package/dist/services/form-view.js +38 -13
- package/dist/services/form-view.js.map +1 -1
- package/dist/services/matrix-person.d.ts +37 -0
- package/dist/services/matrix-person.d.ts.map +1 -0
- package/dist/services/matrix-person.js +57 -0
- package/dist/services/matrix-person.js.map +1 -0
- package/dist/services/org-browser.d.ts +32 -0
- package/dist/services/org-browser.d.ts.map +1 -1
- package/dist/services/org-browser.js +90 -12
- package/dist/services/org-browser.js.map +1 -1
- package/dist/services/page-combination.d.ts +1 -1
- package/dist/services/page-combination.d.ts.map +1 -1
- package/dist/services/page-combination.js +43 -10
- package/dist/services/page-combination.js.map +1 -1
- package/dist/services/page-management.d.ts +67 -0
- package/dist/services/page-management.d.ts.map +1 -0
- package/dist/services/page-management.js +166 -0
- package/dist/services/page-management.js.map +1 -0
- package/dist/services/page-permission.d.ts +2 -2
- package/dist/services/page-permission.d.ts.map +1 -1
- package/dist/services/page-permission.js +22 -9
- package/dist/services/page-permission.js.map +1 -1
- package/dist/services/report/cell-transform.d.ts +62 -0
- package/dist/services/report/cell-transform.d.ts.map +1 -0
- package/dist/services/report/cell-transform.js +192 -0
- package/dist/services/report/cell-transform.js.map +1 -0
- package/dist/services/report/code-block.d.ts +45 -0
- package/dist/services/report/code-block.d.ts.map +1 -0
- package/dist/services/report/code-block.js +92 -0
- package/dist/services/report/code-block.js.map +1 -0
- package/dist/services/report/dataset.d.ts +40 -0
- package/dist/services/report/dataset.d.ts.map +1 -1
- package/dist/services/report/dataset.js +171 -1
- package/dist/services/report/dataset.js.map +1 -1
- package/dist/services/report/lifecycle.d.ts.map +1 -1
- package/dist/services/report/lifecycle.js +24 -3
- package/dist/services/report/lifecycle.js.map +1 -1
- package/dist/services/workflow-base-settings.d.ts.map +1 -1
- package/dist/services/workflow-base-settings.js +19 -5
- package/dist/services/workflow-base-settings.js.map +1 -1
- package/ecode-ui/README.md +9 -0
- package/ecode-ui/ui-types.zip +0 -0
- package/ecode-ui/version.json +7 -0
- package/package.json +4 -1
- package/skill-docs/SKILL.md +19 -5
- package/skill-docs/_catalog.md +22 -1
- package/skill-docs/actionflows/SKILL.md +15 -11
- package/skill-docs/actionflows/references/components/database/DMLExecute.md +4 -0
- package/skill-docs/actionflows/references/components/ebuilder/ActionEbAdd.md +1 -1
- package/skill-docs/actionflows/references/components/ebuilder/ActionEbUpdate.md +2 -0
- package/skill-docs/actionflows/references/components/logic/MultipleExecution.md +9 -30
- package/skill-docs/actionflows/references/components/message/InnerMQSend.md +7 -3
- package/skill-docs/actionflows/references/components/serverless/ServerlessAction.md +4 -0
- package/skill-docs/actionflows/references/components/trigger/CustomTrigger.md +6 -6
- package/skill-docs/actionflows/references/components/trigger/InnerMQListener.md +46 -41
- package/skill-docs/actionflows/references/components/trigger/WebHookTrigger.md +4 -0
- package/skill-docs/actionflows/references/dynamic_capability_matrix.md +3 -4
- package/skill-docs/actionflows/references/function_rules.md +5 -1
- package/skill-docs/actionflows/references/trigger_runtime_notes.md +1 -1
- package/skill-docs/assets/factory/factory-custom-page.json +339 -0
- package/skill-docs/references/common/ref-cli-commands.md +34 -5
- package/skill-docs/references/ebuilder-designer/component-permission.md +131 -0
- package/skill-docs/references/ebuilder-designer/events/actions-interaction.md +132 -108
- package/skill-docs/references/ebuilder-designer/events/guide-events.md +112 -57
- package/skill-docs/references/ebuilder-designer/guide-custom-page.md +176 -0
- package/skill-docs/references/ebuilder-designer/guide-designer-components.md +2 -0
- package/skill-docs/references/ebuilder-designer/guide-designer-factory.md +2 -0
- package/skill-docs/references/ebuilder-designer/guide-designer.md +304 -296
- package/skill-docs/references/ebuilder-designer/guide-list.md +339 -0
- package/skill-docs/references/ebuilder-designer/guide-page-combination.md +162 -142
- package/skill-docs/references/ebuilder-designer/guide-page-management.md +90 -0
- package/skill-docs/references/ebuilder-designer/guide-page-permission.md +151 -145
- package/skill-docs/references/ebuilder-designer/guide-tabbar.md +57 -0
- package/skill-docs/references/esb-interface/guide-import.md +38 -34
- package/skill-docs/references/form/guide-create-form.md +13 -0
- package/skill-docs/references/form/guide-form-base-setting.md +78 -0
- package/skill-docs/references/form/guide-form-view.md +77 -13
- package/skill-docs/references/form/guide-list-columns.md +8 -0
- package/skill-docs/references/hrm/guide-matrix.md +16 -0
- package/skill-docs/references/report/cell-transform-guide.md +17 -3
- package/skill-docs/references/report/code-block-guide.md +54 -0
- package/skill-docs/references/report/dataset-sidebar-ops-guide.md +8 -0
- package/skill-docs/references/report/ref-report-commands.md +7 -1
- package/skill-docs/references/report/report-designer-feature-map.md +1 -1
- package/skill-docs/references/report/report-list-page-ops-guide.md +2 -0
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export interface TransformState {
|
|
2
|
+
transType: string;
|
|
3
|
+
browserType: any[];
|
|
4
|
+
transSelectOptions: any[];
|
|
5
|
+
isHtml: string;
|
|
6
|
+
qrcodeType: string;
|
|
7
|
+
prefixAndSuffix: any[];
|
|
8
|
+
hiddenContext: string;
|
|
9
|
+
textDirection: string;
|
|
10
|
+
}
|
|
11
|
+
export declare const TRANSFORM_DEFAULTS: TransformState;
|
|
12
|
+
/** 字段记录 → 转换状态(数组键兼容 JSON 串 / 数组)。 */
|
|
13
|
+
export declare function readTransform(cell: any): TransformState;
|
|
14
|
+
export interface TransformPatch {
|
|
15
|
+
transType?: string;
|
|
16
|
+
browserType?: any[];
|
|
17
|
+
transSelectOptions?: any[];
|
|
18
|
+
isHtml?: string | number | boolean;
|
|
19
|
+
qrcodeType?: string;
|
|
20
|
+
prefixAndSuffix?: any[];
|
|
21
|
+
hiddenContext?: string | number | boolean;
|
|
22
|
+
textDirection?: string;
|
|
23
|
+
}
|
|
24
|
+
/** `--map 人员` 这类中文名 → 转换补丁;已废弃写法直接报错。 */
|
|
25
|
+
export declare function transformFromMap(label: string): TransformPatch;
|
|
26
|
+
/** 逗号分隔的浏览对象名单 → `browserType`。`none` / 空 = 清空。 */
|
|
27
|
+
export declare function browserTypesFromArg(input: string): any[];
|
|
28
|
+
/**
|
|
29
|
+
* 合并「当前值 + 补丁」并规范化。
|
|
30
|
+
*
|
|
31
|
+
* 显式改 `transType` 时,会清掉不再适配的 `browserType` / `transSelectOptions`
|
|
32
|
+
* (除非本次也显式给了它们),避免留下切换前的脏配置。
|
|
33
|
+
*/
|
|
34
|
+
export declare function mergeTransform(current: TransformState, patch: TransformPatch, opts?: {
|
|
35
|
+
transTypeExplicit?: boolean;
|
|
36
|
+
}): {
|
|
37
|
+
state: TransformState;
|
|
38
|
+
warnings: string[];
|
|
39
|
+
};
|
|
40
|
+
/** 写进 `fields[]` 的补丁(数组转 JSON 串)。 */
|
|
41
|
+
export declare function transformFieldsPatch(state: TransformState): Record<string, any>;
|
|
42
|
+
/** 写进 workbook `style.cellType` 的补丁(数组保持数组)。 */
|
|
43
|
+
export declare function transformCellTypePatch(state: TransformState): Record<string, any>;
|
|
44
|
+
/** 是否仍是「无转换」的默认态。 */
|
|
45
|
+
export declare function isDefaultTransform(state: TransformState): boolean;
|
|
46
|
+
/** 回读断言:逐键比较。 */
|
|
47
|
+
export declare function diffTransform(expected: TransformState, actual: TransformState): string[];
|
|
48
|
+
export interface TransformRow {
|
|
49
|
+
cell: string;
|
|
50
|
+
text: string;
|
|
51
|
+
fieldKey: string;
|
|
52
|
+
transform: TransformState;
|
|
53
|
+
}
|
|
54
|
+
/** 列出所有非默认转换的单元格。 */
|
|
55
|
+
export declare function listTransformCells(fields: any[]): TransformRow[];
|
|
56
|
+
/** 文字方向 / 二维码的中文速查(CLI 输出用)。 */
|
|
57
|
+
export declare const TRANSFORM_LABELS: {
|
|
58
|
+
qrcode: Record<string, string>;
|
|
59
|
+
direction: Record<string, string>;
|
|
60
|
+
browser: Record<string, string>;
|
|
61
|
+
};
|
|
62
|
+
//# sourceMappingURL=cell-transform.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell-transform.d.ts","sourceRoot":"","sources":["../../../src/services/report/cell-transform.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,GAAG,EAAE,CAAC;IACnB,kBAAkB,EAAE,GAAG,EAAE,CAAC;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,GAAG,EAAE,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,eAAO,MAAM,kBAAkB,EAAE,cAShC,CAAC;AAQF,sCAAsC;AACtC,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,cAAc,CAoBvD;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,GAAG,EAAE,CAAC;IACpB,kBAAkB,CAAC,EAAE,GAAG,EAAE,CAAC;IAC3B,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,GAAG,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,yCAAyC;AACzC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,CAU9D;AAED,mDAAmD;AACnD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE,CAOxD;AAkBD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,cAAc,EACrB,IAAI,GAAE;IAAE,iBAAiB,CAAC,EAAE,OAAO,CAAA;CAAO,GACzC;IAAE,KAAK,EAAE,cAAc,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CA2B/C;AAED,qCAAqC;AACrC,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAM/E;AAED,gDAAgD;AAChD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAEjF;AAED,qBAAqB;AACrB,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAYjE;AAED,iBAAiB;AACjB,wBAAgB,aAAa,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,EAAE,cAAc,GAAG,MAAM,EAAE,CAQxF;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,cAAc,CAAC;CAC3B;AAED,qBAAqB;AACrB,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,EAAE,CAchE;AAED,gCAAgC;AAChC,eAAO,MAAM,gBAAgB;;;;CAI5B,CAAC"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 单元格「转换」面板(设计器右侧:单元格 → 转换)。
|
|
3
|
+
*
|
|
4
|
+
* 落库键在 `fields[]` 顶层,同时要写进 workbook 的 `style.cellType`:
|
|
5
|
+
* - `transType` + `browserType` / `transSelectOptions`
|
|
6
|
+
* - `isHtml`(HTML 转换,不是 transType)
|
|
7
|
+
* - `qrcodeType`(条码/二维码)
|
|
8
|
+
* - `prefixAndSuffix`(前缀/后缀)
|
|
9
|
+
* - `hiddenContext`(隐藏内容,拼写是 Context)
|
|
10
|
+
* - `textDirection`(文字方向)
|
|
11
|
+
*
|
|
12
|
+
* `fields[]` 里数组类键是 JSON 字符串,workbook 里是数组;读写都要走本文件的转换。
|
|
13
|
+
*/
|
|
14
|
+
import { BROWSER_PRESETS, DIR_MAP, QR_MAP, TRANS_MAP, normalizeTransform } from './validate.js';
|
|
15
|
+
import { jsonArrayOf } from './cell-edit.js';
|
|
16
|
+
export const TRANSFORM_DEFAULTS = {
|
|
17
|
+
transType: 'default',
|
|
18
|
+
browserType: [],
|
|
19
|
+
transSelectOptions: [],
|
|
20
|
+
isHtml: '0',
|
|
21
|
+
qrcodeType: 'no',
|
|
22
|
+
prefixAndSuffix: ['', ''],
|
|
23
|
+
hiddenContext: '0',
|
|
24
|
+
textDirection: 'FromLeftToRight',
|
|
25
|
+
};
|
|
26
|
+
/** 写 `fields[]` 顶层时,数组键要序列化成 JSON 字符串。 */
|
|
27
|
+
const ARRAY_KEYS = new Set(['browserType', 'transSelectOptions', 'prefixAndSuffix']);
|
|
28
|
+
/** 会用到 `transSelectOptions` 的转换类型。 */
|
|
29
|
+
const OPTION_TYPES = new Set(['select', 'colorSelect', 'scoreIcon', 'slashWord']);
|
|
30
|
+
/** 字段记录 → 转换状态(数组键兼容 JSON 串 / 数组)。 */
|
|
31
|
+
export function readTransform(cell) {
|
|
32
|
+
const pick = (key, fallback) => {
|
|
33
|
+
const raw = cell?.[key];
|
|
34
|
+
if (ARRAY_KEYS.has(key))
|
|
35
|
+
return jsonArrayOf(raw);
|
|
36
|
+
return raw == null || raw === '' ? fallback : String(raw);
|
|
37
|
+
};
|
|
38
|
+
const state = {
|
|
39
|
+
transType: pick('transType', TRANSFORM_DEFAULTS.transType),
|
|
40
|
+
browserType: pick('browserType', [...TRANSFORM_DEFAULTS.browserType]),
|
|
41
|
+
transSelectOptions: pick('transSelectOptions', [...TRANSFORM_DEFAULTS.transSelectOptions]),
|
|
42
|
+
isHtml: pick('isHtml', TRANSFORM_DEFAULTS.isHtml),
|
|
43
|
+
qrcodeType: pick('qrcodeType', TRANSFORM_DEFAULTS.qrcodeType),
|
|
44
|
+
prefixAndSuffix: pick('prefixAndSuffix', [...TRANSFORM_DEFAULTS.prefixAndSuffix]),
|
|
45
|
+
hiddenContext: pick('hiddenContext', TRANSFORM_DEFAULTS.hiddenContext),
|
|
46
|
+
textDirection: pick('textDirection', TRANSFORM_DEFAULTS.textDirection),
|
|
47
|
+
};
|
|
48
|
+
if (state.prefixAndSuffix.length < 2) {
|
|
49
|
+
state.prefixAndSuffix = [state.prefixAndSuffix[0] ?? '', state.prefixAndSuffix[1] ?? ''];
|
|
50
|
+
}
|
|
51
|
+
return state;
|
|
52
|
+
}
|
|
53
|
+
/** `--map 人员` 这类中文名 → 转换补丁;已废弃写法直接报错。 */
|
|
54
|
+
export function transformFromMap(label) {
|
|
55
|
+
const entry = TRANS_MAP[String(label).trim()];
|
|
56
|
+
if (!entry) {
|
|
57
|
+
throw new Error(`不认识的转换类型「${label}」。可用:${Object.keys(TRANS_MAP).join(' / ')}`);
|
|
58
|
+
}
|
|
59
|
+
if (entry.error)
|
|
60
|
+
throw new Error(entry.error);
|
|
61
|
+
const patch = {};
|
|
62
|
+
if (entry.transType)
|
|
63
|
+
patch.transType = entry.transType;
|
|
64
|
+
if (entry.browserType)
|
|
65
|
+
patch.browserType = entry.browserType;
|
|
66
|
+
return patch;
|
|
67
|
+
}
|
|
68
|
+
/** 逗号分隔的浏览对象名单 → `browserType`。`none` / 空 = 清空。 */
|
|
69
|
+
export function browserTypesFromArg(input) {
|
|
70
|
+
const parts = String(input ?? '')
|
|
71
|
+
.split(/[,,]/)
|
|
72
|
+
.map((s) => s.trim())
|
|
73
|
+
.filter(Boolean);
|
|
74
|
+
if (!parts.length || parts.some((p) => p.toLowerCase() === 'none' || p === '无'))
|
|
75
|
+
return [];
|
|
76
|
+
return parts.map((p) => ({ id: BROWSER_PRESETS[p] ?? p }));
|
|
77
|
+
}
|
|
78
|
+
/** 数组键:数组原样,JSON 数组字符串解析,其余报错。 */
|
|
79
|
+
function toArrayValue(value, key) {
|
|
80
|
+
if (Array.isArray(value))
|
|
81
|
+
return value;
|
|
82
|
+
if (value == null || value === '')
|
|
83
|
+
return [];
|
|
84
|
+
if (typeof value === 'string') {
|
|
85
|
+
try {
|
|
86
|
+
const parsed = JSON.parse(value);
|
|
87
|
+
if (Array.isArray(parsed))
|
|
88
|
+
return parsed;
|
|
89
|
+
}
|
|
90
|
+
catch {
|
|
91
|
+
/* fallthrough */
|
|
92
|
+
}
|
|
93
|
+
throw new Error(`${key} 必须是数组或 JSON 数组字符串`);
|
|
94
|
+
}
|
|
95
|
+
throw new Error(`${key} 必须是数组`);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* 合并「当前值 + 补丁」并规范化。
|
|
99
|
+
*
|
|
100
|
+
* 显式改 `transType` 时,会清掉不再适配的 `browserType` / `transSelectOptions`
|
|
101
|
+
* (除非本次也显式给了它们),避免留下切换前的脏配置。
|
|
102
|
+
*/
|
|
103
|
+
export function mergeTransform(current, patch, opts = {}) {
|
|
104
|
+
const merged = { ...TRANSFORM_DEFAULTS, ...current, ...patch };
|
|
105
|
+
if (opts.transTypeExplicit) {
|
|
106
|
+
if (patch.browserType === undefined && merged.transType !== 'browser')
|
|
107
|
+
merged.browserType = [];
|
|
108
|
+
if (patch.transSelectOptions === undefined && !OPTION_TYPES.has(merged.transType))
|
|
109
|
+
merged.transSelectOptions = [];
|
|
110
|
+
}
|
|
111
|
+
// 两个数组键既接受数组,也接受 JSON 数组字符串;其它形状直接拒绝。
|
|
112
|
+
const browserType = toArrayValue(merged.browserType, 'browserType');
|
|
113
|
+
const transSelectOptions = toArrayValue(merged.transSelectOptions, 'transSelectOptions');
|
|
114
|
+
merged.browserType = browserType;
|
|
115
|
+
merged.transSelectOptions = transSelectOptions;
|
|
116
|
+
const r = normalizeTransform(merged);
|
|
117
|
+
if (!r.ok) {
|
|
118
|
+
throw new Error(`转换配置不合法:\n - ${r.errors.map((e) => e.message).join('\n - ')}`);
|
|
119
|
+
}
|
|
120
|
+
const n = r.normalized || {};
|
|
121
|
+
const state = {
|
|
122
|
+
transType: String(n.transType ?? merged.transType ?? TRANSFORM_DEFAULTS.transType),
|
|
123
|
+
browserType: Array.isArray(n.browserType) ? n.browserType : browserType,
|
|
124
|
+
transSelectOptions,
|
|
125
|
+
isHtml: String(n.isHtml ?? merged.isHtml ?? TRANSFORM_DEFAULTS.isHtml),
|
|
126
|
+
qrcodeType: String(n.qrcodeType ?? merged.qrcodeType ?? TRANSFORM_DEFAULTS.qrcodeType),
|
|
127
|
+
prefixAndSuffix: Array.isArray(n.prefixAndSuffix) ? n.prefixAndSuffix : merged.prefixAndSuffix,
|
|
128
|
+
hiddenContext: String(n.hiddenContext ?? merged.hiddenContext ?? TRANSFORM_DEFAULTS.hiddenContext),
|
|
129
|
+
textDirection: String(n.textDirection ?? merged.textDirection ?? TRANSFORM_DEFAULTS.textDirection),
|
|
130
|
+
};
|
|
131
|
+
return { state, warnings: r.warnings.map((w) => w.message) };
|
|
132
|
+
}
|
|
133
|
+
/** 写进 `fields[]` 的补丁(数组转 JSON 串)。 */
|
|
134
|
+
export function transformFieldsPatch(state) {
|
|
135
|
+
const out = {};
|
|
136
|
+
for (const [key, value] of Object.entries(state)) {
|
|
137
|
+
out[key] = ARRAY_KEYS.has(key) ? JSON.stringify(value) : value;
|
|
138
|
+
}
|
|
139
|
+
return out;
|
|
140
|
+
}
|
|
141
|
+
/** 写进 workbook `style.cellType` 的补丁(数组保持数组)。 */
|
|
142
|
+
export function transformCellTypePatch(state) {
|
|
143
|
+
return { ...state };
|
|
144
|
+
}
|
|
145
|
+
/** 是否仍是「无转换」的默认态。 */
|
|
146
|
+
export function isDefaultTransform(state) {
|
|
147
|
+
return (state.transType === TRANSFORM_DEFAULTS.transType &&
|
|
148
|
+
state.browserType.length === 0 &&
|
|
149
|
+
state.transSelectOptions.length === 0 &&
|
|
150
|
+
state.isHtml === TRANSFORM_DEFAULTS.isHtml &&
|
|
151
|
+
state.qrcodeType === TRANSFORM_DEFAULTS.qrcodeType &&
|
|
152
|
+
(state.prefixAndSuffix[0] ?? '') === '' &&
|
|
153
|
+
(state.prefixAndSuffix[1] ?? '') === '' &&
|
|
154
|
+
state.hiddenContext === TRANSFORM_DEFAULTS.hiddenContext &&
|
|
155
|
+
state.textDirection === TRANSFORM_DEFAULTS.textDirection);
|
|
156
|
+
}
|
|
157
|
+
/** 回读断言:逐键比较。 */
|
|
158
|
+
export function diffTransform(expected, actual) {
|
|
159
|
+
const errors = [];
|
|
160
|
+
for (const key of Object.keys(expected)) {
|
|
161
|
+
const want = JSON.stringify(expected[key]);
|
|
162
|
+
const got = JSON.stringify(actual[key]);
|
|
163
|
+
if (want !== got)
|
|
164
|
+
errors.push(`${key} 回读=${got},期望=${want}`);
|
|
165
|
+
}
|
|
166
|
+
return errors;
|
|
167
|
+
}
|
|
168
|
+
/** 列出所有非默认转换的单元格。 */
|
|
169
|
+
export function listTransformCells(fields) {
|
|
170
|
+
const rows = [];
|
|
171
|
+
for (const f of fields || []) {
|
|
172
|
+
if (String(f?.cellType ?? '') !== 'Field')
|
|
173
|
+
continue;
|
|
174
|
+
const transform = readTransform(f);
|
|
175
|
+
if (isDefaultTransform(transform))
|
|
176
|
+
continue;
|
|
177
|
+
rows.push({
|
|
178
|
+
cell: `${f.x},${f.y}`,
|
|
179
|
+
text: String(f.text ?? ''),
|
|
180
|
+
fieldKey: String(f.fieldKey ?? ''),
|
|
181
|
+
transform,
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
return rows;
|
|
185
|
+
}
|
|
186
|
+
/** 文字方向 / 二维码的中文速查(CLI 输出用)。 */
|
|
187
|
+
export const TRANSFORM_LABELS = {
|
|
188
|
+
qrcode: QR_MAP,
|
|
189
|
+
direction: DIR_MAP,
|
|
190
|
+
browser: BROWSER_PRESETS,
|
|
191
|
+
};
|
|
192
|
+
//# sourceMappingURL=cell-transform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cell-transform.js","sourceRoot":"","sources":["../../../src/services/report/cell-transform.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 报表「代码块」(设计器 开始 → 代码块)。
|
|
3
|
+
*
|
|
4
|
+
* 按 **sheet** 存取,不是按报表整份:
|
|
5
|
+
* - 读:`GET /api/bs/edc/report/queryCustomCodeById?sheetId=`
|
|
6
|
+
* - 写:`POST /api/bs/edc/report/saveCustomCode` form `cusCode` + `sheetId`
|
|
7
|
+
*
|
|
8
|
+
* `cusCode` 是**代码文本的 UTF-8 base64**(`btoa(unescape(encodeURIComponent(code)))`)。
|
|
9
|
+
* 写接口回 200 不代表内容已落库,所以 `saveCodeBlock` 会回读比对。
|
|
10
|
+
*/
|
|
11
|
+
import type { ReportHttp } from './http.js';
|
|
12
|
+
export declare const CUSTOM_CODE: {
|
|
13
|
+
readonly get: "/api/bs/edc/report/queryCustomCodeById";
|
|
14
|
+
readonly save: "/api/bs/edc/report/saveCustomCode";
|
|
15
|
+
};
|
|
16
|
+
/** UI 新建代码块时的默认模板(清空后设计器再次打开会显示它)。 */
|
|
17
|
+
export declare const CODE_BLOCK_TEMPLATE = "<script type=\"text/javascript\">\n/*\n* \u8BF7\u5728\u4E0B\u9762\u7F16\u5199JS\u4EE3\u7801\n*/\n\n</script>";
|
|
18
|
+
export interface CodeBlock {
|
|
19
|
+
sheetId: string;
|
|
20
|
+
code: string;
|
|
21
|
+
bytes: number;
|
|
22
|
+
}
|
|
23
|
+
/** 代码 → UTF-8 base64(与服务端 `cusCode` 一致)。 */
|
|
24
|
+
export declare function encodeCustomCode(code: string): string;
|
|
25
|
+
/** base64 → 代码文本;非 base64 原样返回(兼容服务端异常回包)。 */
|
|
26
|
+
export declare function decodeCustomCode(raw: unknown): string;
|
|
27
|
+
/**
|
|
28
|
+
* 解析目标 sheet。优先级:显式 `sheetId` → `sheetIndex` → 第一张 sheet。
|
|
29
|
+
* 报表带 sheetProps 时,显式值必须命中,否则列出可选值。
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveSheetId(dev: any, options?: {
|
|
32
|
+
sheetId?: string;
|
|
33
|
+
sheetIndex?: number;
|
|
34
|
+
}): string;
|
|
35
|
+
/** 读代码块。 */
|
|
36
|
+
export declare function getCodeBlock(http: ReportHttp, sheetId: string): Promise<CodeBlock>;
|
|
37
|
+
/**
|
|
38
|
+
* 保存代码块并回读校验。
|
|
39
|
+
*
|
|
40
|
+
* 空字符串表示清空;平台返回 200 但回读仍非空时按失败处理。
|
|
41
|
+
*/
|
|
42
|
+
export declare function saveCodeBlock(http: ReportHttp, sheetId: string, code: string): Promise<CodeBlock>;
|
|
43
|
+
/** 清空代码块(保存空文本并回读确认)。 */
|
|
44
|
+
export declare function clearCodeBlock(http: ReportHttp, sheetId: string): Promise<CodeBlock>;
|
|
45
|
+
//# sourceMappingURL=code-block.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-block.d.ts","sourceRoot":"","sources":["../../../src/services/report/code-block.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,eAAO,MAAM,WAAW;;;CAGd,CAAC;AAEX,sCAAsC;AACtC,eAAO,MAAM,mBAAmB,iHACsC,CAAC;AAEvE,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf;AAED,4CAA4C;AAC5C,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,8CAA8C;AAC9C,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CASrD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,GAAG,EACR,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACtD,MAAM,CAiCR;AAED,YAAY;AACZ,wBAAsB,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAOxF;AAED;;;;GAIG;AACH,wBAAsB,aAAa,CACjC,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,SAAS,CAAC,CAiBpB;AAED,yBAAyB;AACzB,wBAAsB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAE1F"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
export const CUSTOM_CODE = {
|
|
2
|
+
get: '/api/bs/edc/report/queryCustomCodeById',
|
|
3
|
+
save: '/api/bs/edc/report/saveCustomCode',
|
|
4
|
+
};
|
|
5
|
+
/** UI 新建代码块时的默认模板(清空后设计器再次打开会显示它)。 */
|
|
6
|
+
export const CODE_BLOCK_TEMPLATE = '<script type="text/javascript">\n/*\n* 请在下面编写JS代码\n*/\n\n</script>';
|
|
7
|
+
/** 代码 → UTF-8 base64(与服务端 `cusCode` 一致)。 */
|
|
8
|
+
export function encodeCustomCode(code) {
|
|
9
|
+
return Buffer.from(String(code ?? ''), 'utf8').toString('base64');
|
|
10
|
+
}
|
|
11
|
+
/** base64 → 代码文本;非 base64 原样返回(兼容服务端异常回包)。 */
|
|
12
|
+
export function decodeCustomCode(raw) {
|
|
13
|
+
const value = raw == null ? '' : String(raw);
|
|
14
|
+
if (!value)
|
|
15
|
+
return '';
|
|
16
|
+
if (!/^[A-Za-z0-9+/]*={0,2}$/.test(value) || value.length % 4 !== 0)
|
|
17
|
+
return value;
|
|
18
|
+
try {
|
|
19
|
+
return Buffer.from(value, 'base64').toString('utf8');
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* 解析目标 sheet。优先级:显式 `sheetId` → `sheetIndex` → 第一张 sheet。
|
|
27
|
+
* 报表带 sheetProps 时,显式值必须命中,否则列出可选值。
|
|
28
|
+
*/
|
|
29
|
+
export function resolveSheetId(dev, options = {}) {
|
|
30
|
+
const sheets = Array.isArray(dev?.sheetProps) ? dev.sheetProps : [];
|
|
31
|
+
const idOf = (s) => String(s?.sheetId ?? s?.id ?? '');
|
|
32
|
+
const labelOf = (s) => `sheetIndex=${s?.sheetIndex ?? '?'} sheetId=${idOf(s)} name=${s?.name ?? ''}`;
|
|
33
|
+
if (options.sheetId != null && options.sheetId !== '') {
|
|
34
|
+
const hit = sheets.find((s) => idOf(s) === String(options.sheetId));
|
|
35
|
+
if (hit)
|
|
36
|
+
return idOf(hit);
|
|
37
|
+
if (sheets.length) {
|
|
38
|
+
throw new Error(`报表里没有 sheetId=${options.sheetId} 的页。可选:\n - ${sheets.map(labelOf).join('\n - ')}`);
|
|
39
|
+
}
|
|
40
|
+
return String(options.sheetId);
|
|
41
|
+
}
|
|
42
|
+
if (options.sheetIndex != null) {
|
|
43
|
+
if (!Number.isInteger(options.sheetIndex) || options.sheetIndex < 0) {
|
|
44
|
+
throw new Error('--sheet-index 必须是非负整数');
|
|
45
|
+
}
|
|
46
|
+
const hit = sheets.find((s) => Number(s?.sheetIndex) === options.sheetIndex);
|
|
47
|
+
if (!hit) {
|
|
48
|
+
throw new Error(`报表里没有 sheetIndex=${options.sheetIndex} 的页。可选:\n - ${sheets.map(labelOf).join('\n - ')}`);
|
|
49
|
+
}
|
|
50
|
+
return idOf(hit);
|
|
51
|
+
}
|
|
52
|
+
const first = sheets[0];
|
|
53
|
+
const id = first ? idOf(first) : '';
|
|
54
|
+
if (!id)
|
|
55
|
+
throw new Error('取不到报表的 sheetId(sheetProps 为空);请用 --sheet-id 显式指定');
|
|
56
|
+
return id;
|
|
57
|
+
}
|
|
58
|
+
/** 读代码块。 */
|
|
59
|
+
export async function getCodeBlock(http, sheetId) {
|
|
60
|
+
const r = await http.get(CUSTOM_CODE.get, { sheetId });
|
|
61
|
+
if (r?.code != null && r.code !== 200) {
|
|
62
|
+
throw new Error(`读取代码块失败:${r?.msg || r?.message || `code=${r.code}`}`);
|
|
63
|
+
}
|
|
64
|
+
const code = decodeCustomCode(r?.data);
|
|
65
|
+
return { sheetId, code, bytes: Buffer.byteLength(code, 'utf8') };
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* 保存代码块并回读校验。
|
|
69
|
+
*
|
|
70
|
+
* 空字符串表示清空;平台返回 200 但回读仍非空时按失败处理。
|
|
71
|
+
*/
|
|
72
|
+
export async function saveCodeBlock(http, sheetId, code) {
|
|
73
|
+
const text = String(code ?? '');
|
|
74
|
+
const r = await http.postFields(CUSTOM_CODE.save, {
|
|
75
|
+
cusCode: encodeCustomCode(text),
|
|
76
|
+
sheetId,
|
|
77
|
+
});
|
|
78
|
+
if (r?.code != null && r.code !== 200) {
|
|
79
|
+
throw new Error(`保存代码块失败:${r?.msg || r?.message || `code=${r.code}`}`);
|
|
80
|
+
}
|
|
81
|
+
const after = await getCodeBlock(http, sheetId);
|
|
82
|
+
if (after.code !== text) {
|
|
83
|
+
throw new Error(`保存接口返回成功,但回读代码不一致(期望 ${Buffer.byteLength(text, 'utf8')} 字节,` +
|
|
84
|
+
`回读 ${after.bytes} 字节)。`);
|
|
85
|
+
}
|
|
86
|
+
return after;
|
|
87
|
+
}
|
|
88
|
+
/** 清空代码块(保存空文本并回读确认)。 */
|
|
89
|
+
export async function clearCodeBlock(http, sheetId) {
|
|
90
|
+
return saveCodeBlock(http, sheetId, '');
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=code-block.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-block.js","sourceRoot":"","sources":["../../../src/services/report/code-block.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,6 +61,46 @@ export declare function fieldsBySource(http: ReportHttp, sourceId: string, opts?
|
|
|
61
61
|
export declare function renameDataset(http: ReportHttp, datasetId: string, name: string, nameLabelId?: string): Promise<any>;
|
|
62
62
|
export declare function getAggregation(http: ReportHttp, datasetId: string): Promise<any>;
|
|
63
63
|
export declare function saveAggregation(http: ReportHttp, datasetId: string, aggreData: unknown): Promise<any>;
|
|
64
|
+
/**
|
|
65
|
+
* 「数据聚合」(左侧数据集 `…` → 数据聚合)的 `aggreData` 行只有两种:
|
|
66
|
+
* - 维度:`{ groupBy: '<datasetId>.<tableId>.<fieldName>' }`
|
|
67
|
+
* - 度量:`{ fieldId: 同上, countType, showName?, fieldName? }`
|
|
68
|
+
*
|
|
69
|
+
* 非空配置必须同时有维度与度量;空数组 = 清空。此函数只做本地结构校验,
|
|
70
|
+
* 不做字段是否属于该数据集的校验(需要额外拉字段清单,留给调用方按需处理)。
|
|
71
|
+
*/
|
|
72
|
+
export declare function normalizeAggreData(input: unknown, opts?: {
|
|
73
|
+
requirePair?: boolean;
|
|
74
|
+
}): {
|
|
75
|
+
rows: any[];
|
|
76
|
+
warnings: string[];
|
|
77
|
+
};
|
|
78
|
+
/** 聚合行身份:维度按 groupBy,度量按 fieldId + countType。 */
|
|
79
|
+
export declare function aggreRowKey(row: any): string;
|
|
80
|
+
/** 服务端回包 → 聚合数组(可能是数组、JSON 字符串、或 { aggreData/list })。 */
|
|
81
|
+
export declare function asAggreArray(value: unknown): any[];
|
|
82
|
+
export interface SaveAggregationResult {
|
|
83
|
+
rows: any[];
|
|
84
|
+
warnings: string[];
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* 保存聚合配置 + 回读校验。
|
|
88
|
+
*
|
|
89
|
+
* 平台 `aggregationSave` 是「先删该数据集全部聚合行再插入」的全量替换;
|
|
90
|
+
* 返回 200 不代表行真的落进去了,所以以回读数组为判据。
|
|
91
|
+
*/
|
|
92
|
+
export declare function saveAggregationChecked(http: ReportHttp, datasetId: string, input: unknown): Promise<SaveAggregationResult>;
|
|
93
|
+
/** 追加聚合行(读现有 → 追加 → 全量保存 → 回读)。 */
|
|
94
|
+
export declare function addAggregation(http: ReportHttp, datasetId: string, extra: unknown): Promise<SaveAggregationResult>;
|
|
95
|
+
/**
|
|
96
|
+
* 删除聚合行。按 `group-by` / `field-id` 匹配整行,或按 1 基序号删。
|
|
97
|
+
* 没有匹配项直接报错,避免「命令成功但什么都没删」。
|
|
98
|
+
*/
|
|
99
|
+
export declare function removeAggregation(http: ReportHttp, datasetId: string, match: {
|
|
100
|
+
groupBy?: string;
|
|
101
|
+
fieldId?: string;
|
|
102
|
+
index?: number;
|
|
103
|
+
}): Promise<SaveAggregationResult>;
|
|
64
104
|
export declare function getSort(http: ReportHttp, datasetId: string): Promise<any>;
|
|
65
105
|
export declare function saveSort(http: ReportHttp, datasetId: string, sortData: unknown): Promise<any>;
|
|
66
106
|
/** 替换数据集(整表换源)。body 由调用方给出,含 `fieldMap` 映射。 */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataset.d.ts","sourceRoot":"","sources":["../../../src/services/report/dataset.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dataset.d.ts","sourceRoot":"","sources":["../../../src/services/report/dataset.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAO,UAAU,EAAE,MAAM,WAAW,CAAC;AAG5C,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE7D,oBAAoB;AACpB,wBAAsB,YAAY,CAChC,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,aAAa,EAAE,CAAC,CAY1B;AAED,MAAM,WAAW,eAAgB,SAAQ,aAAa;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,gCAAgC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;;GAOG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,UAAU,EAChB,GAAG,EAAE;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GACA,OAAO,CAAC,eAAe,CAAC,CAsF1B;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,MAAM,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAO,GACnD,OAAO,CAAC,WAAW,EAAE,CAAC,CAoBxB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAC9F,OAAO,CAAC,WAAW,EAAE,CAAC,CAWxB;AAID,wBAAsB,aAAa,CACjC,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,WAAW,SAAO,GACjB,OAAO,CAAC,GAAG,CAAC,CAEd;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAGtF;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,OAAO,GACjB,OAAO,CAAC,GAAG,CAAC,CAKd;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GACnC;IAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CA+CrC;AAKD,iDAAiD;AACjD,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,GAAG,MAAM,CAI5C;AAED,yDAAyD;AACzD,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,GAAG,EAAE,CAclD;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,GAAG,EAAE,CAAC;IACZ,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,qBAAqB,CAAC,CAkChC;AAED,mCAAmC;AACnC,wBAAsB,cAAc,CAClC,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,GACb,OAAO,CAAC,qBAAqB,CAAC,CAKhC;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5D,OAAO,CAAC,qBAAqB,CAAC,CAsBhC;AAED,wBAAsB,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAG/E;AAED,wBAAsB,QAAQ,CAC5B,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,GAAG,CAAC,CAKd;AAED,+CAA+C;AAC/C,wBAAsB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAKrF;AAED,uDAAuD;AACvD,wBAAsB,aAAa,CACjC,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,OAAO,CAAC,CAIlB;AAED,6DAA6D;AAC7D,wBAAsB,aAAa,CACjC,IAAI,EAAE,UAAU,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,GAAG,CAAC,CAMd;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAGtF"}
|