weaver-e10-builder 1.5.10 → 1.5.12
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 +212 -189
- package/assets/image-style-observation.schema.json +1355 -0
- package/assets/layout-spec.schema.json +52 -0
- package/dist/commands/app.d.ts.map +1 -1
- package/dist/commands/app.js +159 -8
- package/dist/commands/app.js.map +1 -1
- package/dist/commands/designer-setters.d.ts.map +1 -1
- package/dist/commands/designer-setters.js +26 -4
- package/dist/commands/designer-setters.js.map +1 -1
- package/dist/commands/form-association-manage.d.ts.map +1 -1
- package/dist/commands/form-association-manage.js +3 -0
- package/dist/commands/form-association-manage.js.map +1 -1
- package/dist/commands/form-button-actions-cmd.d.ts +3 -0
- package/dist/commands/form-button-actions-cmd.d.ts.map +1 -0
- package/dist/commands/form-button-actions-cmd.js +309 -0
- package/dist/commands/form-button-actions-cmd.js.map +1 -0
- package/dist/commands/form-button-permission-cmd.d.ts +3 -0
- package/dist/commands/form-button-permission-cmd.d.ts.map +1 -0
- package/dist/commands/form-button-permission-cmd.js +132 -0
- package/dist/commands/form-button-permission-cmd.js.map +1 -0
- package/dist/commands/form-button-props-cmd.d.ts +3 -0
- package/dist/commands/form-button-props-cmd.d.ts.map +1 -0
- package/dist/commands/form-button-props-cmd.js +236 -0
- package/dist/commands/form-button-props-cmd.js.map +1 -0
- package/dist/commands/form-button.d.ts.map +1 -1
- package/dist/commands/form-button.js +82 -55
- package/dist/commands/form-button.js.map +1 -1
- package/dist/commands/form-field-linkage.d.ts +55 -0
- package/dist/commands/form-field-linkage.d.ts.map +1 -1
- package/dist/commands/form-field-linkage.js +1026 -12
- package/dist/commands/form-field-linkage.js.map +1 -1
- package/dist/commands/form-formula-linkage.d.ts +36 -0
- package/dist/commands/form-formula-linkage.d.ts.map +1 -1
- package/dist/commands/form-formula-linkage.js +256 -65
- package/dist/commands/form-formula-linkage.js.map +1 -1
- package/dist/commands/form-layout-restore.d.ts +3 -0
- package/dist/commands/form-layout-restore.d.ts.map +1 -0
- package/dist/commands/form-layout-restore.js +217 -0
- package/dist/commands/form-layout-restore.js.map +1 -0
- package/dist/commands/form-layout.d.ts.map +1 -1
- package/dist/commands/form-layout.js +11 -1
- package/dist/commands/form-layout.js.map +1 -1
- package/dist/commands/form-list-permission.d.ts.map +1 -1
- package/dist/commands/form-list-permission.js +29 -3
- package/dist/commands/form-list-permission.js.map +1 -1
- package/dist/commands/form-list-search-group.d.ts.map +1 -1
- package/dist/commands/form-list-search-group.js +66 -3
- package/dist/commands/form-list-search-group.js.map +1 -1
- package/dist/commands/form-list-utils.d.ts +14 -0
- package/dist/commands/form-list-utils.d.ts.map +1 -1
- package/dist/commands/form-list-utils.js +65 -4
- package/dist/commands/form-list-utils.js.map +1 -1
- package/dist/commands/form-message.d.ts.map +1 -1
- package/dist/commands/form-message.js +16 -4
- package/dist/commands/form-message.js.map +1 -1
- package/dist/commands/form-obj-meta.d.ts +12 -0
- package/dist/commands/form-obj-meta.d.ts.map +1 -0
- package/dist/commands/form-obj-meta.js +116 -0
- package/dist/commands/form-obj-meta.js.map +1 -0
- package/dist/commands/form-permission.d.ts +20 -0
- package/dist/commands/form-permission.d.ts.map +1 -1
- package/dist/commands/form-permission.js +69 -11
- package/dist/commands/form-permission.js.map +1 -1
- package/dist/commands/form-validate.d.ts.map +1 -1
- package/dist/commands/form-validate.js +167 -35
- package/dist/commands/form-validate.js.map +1 -1
- package/dist/commands/form.d.ts.map +1 -1
- package/dist/commands/form.js +26 -2
- package/dist/commands/form.js.map +1 -1
- package/dist/commands/menu-permission.d.ts.map +1 -1
- package/dist/commands/menu-permission.js +6 -7
- package/dist/commands/menu-permission.js.map +1 -1
- package/dist/commands/menu.d.ts.map +1 -1
- package/dist/commands/menu.js +68 -43
- package/dist/commands/menu.js.map +1 -1
- package/dist/commands/wf-form.d.ts.map +1 -1
- package/dist/commands/wf-form.js +269 -47
- package/dist/commands/wf-form.js.map +1 -1
- package/dist/commands/workflow-function-management.d.ts +5 -0
- package/dist/commands/workflow-function-management.d.ts.map +1 -0
- package/dist/commands/workflow-function-management.js +91 -0
- package/dist/commands/workflow-function-management.js.map +1 -0
- package/dist/commands/workflow-node-assign-flow.d.ts.map +1 -1
- package/dist/commands/workflow-node-assign-flow.js +1 -0
- package/dist/commands/workflow-node-assign-flow.js.map +1 -1
- package/dist/commands/workflow-node-sign.d.ts +0 -12
- package/dist/commands/workflow-node-sign.d.ts.map +1 -1
- package/dist/commands/workflow-node-sign.js +31 -102
- package/dist/commands/workflow-node-sign.js.map +1 -1
- package/dist/commands/workflow-opinion-settings.d.ts +5 -0
- package/dist/commands/workflow-opinion-settings.d.ts.map +1 -0
- package/dist/commands/workflow-opinion-settings.js +51 -0
- package/dist/commands/workflow-opinion-settings.js.map +1 -0
- package/dist/commands/workflow-subprocess.d.ts.map +1 -1
- package/dist/commands/workflow-subprocess.js +370 -20
- package/dist/commands/workflow-subprocess.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +35 -61
- package/dist/commands/workflow.js.map +1 -1
- package/dist/core/client.d.ts +2 -1
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +4 -2
- package/dist/core/client.js.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/services/actionflow/calendar_mapper.d.ts.map +1 -1
- package/dist/services/actionflow/calendar_mapper.js +64 -18
- package/dist/services/actionflow/calendar_mapper.js.map +1 -1
- package/dist/services/actionflow/component_registry.d.ts.map +1 -1
- package/dist/services/actionflow/component_registry.js +6 -0
- package/dist/services/actionflow/component_registry.js.map +1 -1
- package/dist/services/actionflow/components/document_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/document_actions.js +113 -4
- 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 +18 -1
- package/dist/services/actionflow/components/eb_get_data_by_id.js.map +1 -1
- package/dist/services/actionflow/components/index.d.ts.map +1 -1
- package/dist/services/actionflow/components/index.js +2 -1
- package/dist/services/actionflow/components/index.js.map +1 -1
- package/dist/services/actionflow/components/meeting_create.d.ts.map +1 -1
- package/dist/services/actionflow/components/meeting_create.js +5 -1
- package/dist/services/actionflow/components/meeting_create.js.map +1 -1
- package/dist/services/actionflow/components/schedule_create.d.ts.map +1 -1
- package/dist/services/actionflow/components/schedule_create.js +22 -6
- package/dist/services/actionflow/components/schedule_create.js.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.d.ts +1 -0
- package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.js +44 -7
- package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
- package/dist/services/actionflow/document_source.d.ts +5 -0
- package/dist/services/actionflow/document_source.d.ts.map +1 -1
- package/dist/services/actionflow/document_source.js +16 -0
- package/dist/services/actionflow/document_source.js.map +1 -1
- package/dist/services/actionflow/formula_service.d.ts +7 -0
- package/dist/services/actionflow/formula_service.d.ts.map +1 -1
- package/dist/services/actionflow/formula_service.js +44 -8
- package/dist/services/actionflow/formula_service.js.map +1 -1
- package/dist/services/actionflow/preflight_service.d.ts +5 -0
- package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
- package/dist/services/actionflow/preflight_service.js +127 -2
- package/dist/services/actionflow/preflight_service.js.map +1 -1
- package/dist/services/actionflow/save_workflow_draft.d.ts +7 -0
- package/dist/services/actionflow/save_workflow_draft.d.ts.map +1 -1
- package/dist/services/actionflow/save_workflow_draft.js +1 -1
- package/dist/services/actionflow/save_workflow_draft.js.map +1 -1
- package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/workflow_compiler.js +26 -0
- package/dist/services/actionflow/workflow_compiler.js.map +1 -1
- package/dist/services/app-publish.d.ts +25 -0
- package/dist/services/app-publish.d.ts.map +1 -1
- package/dist/services/app-publish.js +38 -0
- package/dist/services/app-publish.js.map +1 -1
- package/dist/services/app-range.d.ts +66 -0
- package/dist/services/app-range.d.ts.map +1 -0
- package/dist/services/app-range.js +137 -0
- package/dist/services/app-range.js.map +1 -0
- package/dist/services/form-association.d.ts +13 -0
- package/dist/services/form-association.d.ts.map +1 -1
- package/dist/services/form-association.js +42 -0
- package/dist/services/form-association.js.map +1 -1
- package/dist/services/form-button-action.d.ts +82 -0
- package/dist/services/form-button-action.d.ts.map +1 -1
- package/dist/services/form-button-action.js +194 -2
- package/dist/services/form-button-action.js.map +1 -1
- package/dist/services/form-button-condition.d.ts +45 -0
- package/dist/services/form-button-condition.d.ts.map +1 -0
- package/dist/services/form-button-condition.js +106 -0
- package/dist/services/form-button-condition.js.map +1 -0
- package/dist/services/form-button-context.d.ts +41 -0
- package/dist/services/form-button-context.d.ts.map +1 -0
- package/dist/services/form-button-context.js +54 -0
- package/dist/services/form-button-context.js.map +1 -0
- package/dist/services/form-button-logicflow.d.ts +30 -0
- package/dist/services/form-button-logicflow.d.ts.map +1 -0
- package/dist/services/form-button-logicflow.js +59 -0
- package/dist/services/form-button-logicflow.js.map +1 -0
- package/dist/services/form-button-org.d.ts +30 -0
- package/dist/services/form-button-org.d.ts.map +1 -0
- package/dist/services/form-button-org.js +80 -0
- package/dist/services/form-button-org.js.map +1 -0
- package/dist/services/form-button-permission.d.ts +65 -0
- package/dist/services/form-button-permission.d.ts.map +1 -0
- package/dist/services/form-button-permission.js +113 -0
- package/dist/services/form-button-permission.js.map +1 -0
- package/dist/services/form-button-position.d.ts +4 -18
- package/dist/services/form-button-position.d.ts.map +1 -1
- package/dist/services/form-button-position.js +4 -36
- package/dist/services/form-button-position.js.map +1 -1
- package/dist/services/form-button-props.d.ts +55 -0
- package/dist/services/form-button-props.d.ts.map +1 -0
- package/dist/services/form-button-props.js +90 -0
- package/dist/services/form-button-props.js.map +1 -0
- package/dist/services/form-button-save.d.ts +49 -0
- package/dist/services/form-button-save.d.ts.map +1 -0
- package/dist/services/form-button-save.js +54 -0
- package/dist/services/form-button-save.js.map +1 -0
- package/dist/services/form-formula-linkage.d.ts +120 -20
- package/dist/services/form-formula-linkage.d.ts.map +1 -1
- package/dist/services/form-formula-linkage.js +253 -39
- package/dist/services/form-formula-linkage.js.map +1 -1
- package/dist/services/form-layout-io.d.ts +18 -0
- package/dist/services/form-layout-io.d.ts.map +1 -0
- package/dist/services/form-layout-io.js +89 -0
- package/dist/services/form-layout-io.js.map +1 -0
- package/dist/services/form-layout-source/artifact.d.ts +8 -0
- package/dist/services/form-layout-source/artifact.d.ts.map +1 -0
- package/dist/services/form-layout-source/artifact.js +52 -0
- package/dist/services/form-layout-source/artifact.js.map +1 -0
- package/dist/services/form-layout-source/binding.d.ts +10 -0
- package/dist/services/form-layout-source/binding.d.ts.map +1 -0
- package/dist/services/form-layout-source/binding.js +43 -0
- package/dist/services/form-layout-source/binding.js.map +1 -0
- package/dist/services/form-layout-source/compile.d.ts +7 -0
- package/dist/services/form-layout-source/compile.d.ts.map +1 -0
- package/dist/services/form-layout-source/compile.js +262 -0
- package/dist/services/form-layout-source/compile.js.map +1 -0
- package/dist/services/form-layout-source/creation.d.ts +18 -0
- package/dist/services/form-layout-source/creation.d.ts.map +1 -0
- package/dist/services/form-layout-source/creation.js +42 -0
- package/dist/services/form-layout-source/creation.js.map +1 -0
- package/dist/services/form-layout-source/excel-extractor.d.ts +7 -0
- package/dist/services/form-layout-source/excel-extractor.d.ts.map +1 -0
- package/dist/services/form-layout-source/excel-extractor.js +342 -0
- package/dist/services/form-layout-source/excel-extractor.js.map +1 -0
- package/dist/services/form-layout-source/image-border.d.ts +9 -0
- package/dist/services/form-layout-source/image-border.d.ts.map +1 -0
- package/dist/services/form-layout-source/image-border.js +128 -0
- package/dist/services/form-layout-source/image-border.js.map +1 -0
- package/dist/services/form-layout-source/image-observation.d.ts +14 -0
- package/dist/services/form-layout-source/image-observation.d.ts.map +1 -0
- package/dist/services/form-layout-source/image-observation.js +90 -0
- package/dist/services/form-layout-source/image-observation.js.map +1 -0
- package/dist/services/form-layout-source/image-review.d.ts +32 -0
- package/dist/services/form-layout-source/image-review.d.ts.map +1 -0
- package/dist/services/form-layout-source/image-review.js +266 -0
- package/dist/services/form-layout-source/image-review.js.map +1 -0
- package/dist/services/form-layout-source/image-style.d.ts +16 -0
- package/dist/services/form-layout-source/image-style.d.ts.map +1 -0
- package/dist/services/form-layout-source/image-style.js +539 -0
- package/dist/services/form-layout-source/image-style.js.map +1 -0
- package/dist/services/form-layout-source/json.d.ts +3 -0
- package/dist/services/form-layout-source/json.d.ts.map +1 -0
- package/dist/services/form-layout-source/json.js +33 -0
- package/dist/services/form-layout-source/json.js.map +1 -0
- package/dist/services/form-layout-source/presentation.d.ts +23 -0
- package/dist/services/form-layout-source/presentation.d.ts.map +1 -0
- package/dist/services/form-layout-source/presentation.js +174 -0
- package/dist/services/form-layout-source/presentation.js.map +1 -0
- package/dist/services/form-layout-source/preview.d.ts +4 -0
- package/dist/services/form-layout-source/preview.d.ts.map +1 -0
- package/dist/services/form-layout-source/preview.js +49 -0
- package/dist/services/form-layout-source/preview.js.map +1 -0
- package/dist/services/form-layout-source/schema.d.ts +20 -0
- package/dist/services/form-layout-source/schema.d.ts.map +1 -0
- package/dist/services/form-layout-source/schema.js +149 -0
- package/dist/services/form-layout-source/schema.js.map +1 -0
- package/dist/services/form-layout-source/source-grid.d.ts +8 -0
- package/dist/services/form-layout-source/source-grid.d.ts.map +1 -0
- package/dist/services/form-layout-source/source-grid.js +61 -0
- package/dist/services/form-layout-source/source-grid.js.map +1 -0
- package/dist/services/form-layout-source/types.d.ts +242 -0
- package/dist/services/form-layout-source/types.d.ts.map +1 -0
- package/dist/services/form-layout-source/types.js +2 -0
- package/dist/services/form-layout-source/types.js.map +1 -0
- package/dist/services/form-layout-source/verify.d.ts +14 -0
- package/dist/services/form-layout-source/verify.d.ts.map +1 -0
- package/dist/services/form-layout-source/verify.js +226 -0
- package/dist/services/form-layout-source/verify.js.map +1 -0
- package/dist/services/form-list-search-group.d.ts +17 -2
- package/dist/services/form-list-search-group.d.ts.map +1 -1
- package/dist/services/form-list-search-group.js +29 -12
- package/dist/services/form-list-search-group.js.map +1 -1
- package/dist/services/form-list-search.d.ts.map +1 -1
- package/dist/services/form-list-search.js +4 -0
- package/dist/services/form-list-search.js.map +1 -1
- package/dist/services/form-list-stats.d.ts.map +1 -1
- package/dist/services/form-list-stats.js +9 -2
- package/dist/services/form-list-stats.js.map +1 -1
- package/dist/services/form-message.d.ts +26 -7
- package/dist/services/form-message.d.ts.map +1 -1
- package/dist/services/form-message.js +52 -5
- package/dist/services/form-message.js.map +1 -1
- package/dist/services/form-obj-meta.d.ts +72 -0
- package/dist/services/form-obj-meta.d.ts.map +1 -0
- package/dist/services/form-obj-meta.js +103 -0
- package/dist/services/form-obj-meta.js.map +1 -0
- package/dist/services/form-permission-archive.d.ts +9 -1
- package/dist/services/form-permission-archive.d.ts.map +1 -1
- package/dist/services/form-permission-archive.js +38 -22
- package/dist/services/form-permission-archive.js.map +1 -1
- package/dist/services/form-view-populate.d.ts.map +1 -1
- package/dist/services/form-view-populate.js +7 -0
- package/dist/services/form-view-populate.js.map +1 -1
- package/dist/services/icon-path.d.ts +70 -0
- package/dist/services/icon-path.d.ts.map +1 -0
- package/dist/services/icon-path.js +80 -0
- package/dist/services/icon-path.js.map +1 -0
- package/dist/services/matrix-condition.d.ts +161 -0
- package/dist/services/matrix-condition.d.ts.map +1 -0
- package/dist/services/matrix-condition.js +403 -0
- package/dist/services/matrix-condition.js.map +1 -0
- package/dist/services/menu-catalog.d.ts +33 -0
- package/dist/services/menu-catalog.d.ts.map +1 -1
- package/dist/services/menu-catalog.js +56 -0
- package/dist/services/menu-catalog.js.map +1 -1
- package/dist/services/permission-entity.d.ts +55 -0
- package/dist/services/permission-entity.d.ts.map +1 -0
- package/dist/services/permission-entity.js +79 -0
- package/dist/services/permission-entity.js.map +1 -0
- package/dist/services/validate-help.d.ts +25 -0
- package/dist/services/validate-help.d.ts.map +1 -0
- package/dist/services/validate-help.js +29 -0
- package/dist/services/validate-help.js.map +1 -0
- package/dist/services/workflow-assign-flow.d.ts.map +1 -1
- package/dist/services/workflow-assign-flow.js.map +1 -1
- package/dist/services/workflow-function-management.d.ts +123 -0
- package/dist/services/workflow-function-management.d.ts.map +1 -0
- package/dist/services/workflow-function-management.js +425 -0
- package/dist/services/workflow-function-management.js.map +1 -0
- package/dist/services/workflow-matrix-rule.d.ts +34 -0
- package/dist/services/workflow-matrix-rule.d.ts.map +1 -0
- package/dist/services/workflow-matrix-rule.js +94 -0
- package/dist/services/workflow-matrix-rule.js.map +1 -0
- package/dist/services/workflow-opinion-settings.d.ts +67 -0
- package/dist/services/workflow-opinion-settings.d.ts.map +1 -0
- package/dist/services/workflow-opinion-settings.js +328 -0
- package/dist/services/workflow-opinion-settings.js.map +1 -0
- package/package.json +3 -1
- package/skill-docs/SKILL.md +15 -6
- package/skill-docs/_catalog.md +4 -0
- package/skill-docs/actionflows/references/components/calendar/MeetingCreate.md +2 -0
- package/skill-docs/actionflows/references/components/document/DocumentSave.md +17 -17
- package/skill-docs/actionflows/references/components/workflow/ApproveCompletelyDelete.md +29 -0
- package/skill-docs/actionflows/references/components/workflow/ApproveDelete.md +2 -2
- package/skill-docs/assets/schemas/image-style-observation.schema.json +1355 -0
- package/skill-docs/references/common/guide-plan-template.md +3 -0
- package/skill-docs/references/common/ref-cli-commands.md +77 -26
- package/skill-docs/references/ebuilder-designer/guide-designer-components.md +9 -0
- package/skill-docs/references/form/guide-create-form.md +2 -0
- package/skill-docs/references/form/guide-field-linkage.md +140 -55
- package/skill-docs/references/form/guide-form-archive-permission.md +55 -2
- package/skill-docs/references/form/guide-form-association.md +13 -0
- package/skill-docs/references/form/guide-form-button.md +87 -0
- package/skill-docs/references/form/guide-form-layout-planning.md +6 -0
- package/skill-docs/references/form/guide-form-layout-source.md +366 -0
- package/skill-docs/references/form/guide-form-message.md +19 -2
- package/skill-docs/references/form/guide-form-view.md +24 -4
- package/skill-docs/references/form/guide-formula-linkage.md +86 -12
- package/skill-docs/references/workflow/guide-function-management.md +154 -0
- package/skill-docs/references/workflow/guide-opinion-settings.md +126 -0
- package/skill-docs/references/workflow/guide-workflow.md +22 -6
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 逻辑流(前端逻辑编排)按名字解析 —— 给按钮的「触发逻辑流」动作找 `id`。
|
|
3
|
+
*
|
|
4
|
+
* 端点:`POST /api/bs/component/logic/flow/page`,body `{current, size, appId, type:'FRONTEND'}`,
|
|
5
|
+
* 返回 `data.records[]`(`id` / `name` / `scene` / `isEnable` …)。
|
|
6
|
+
*
|
|
7
|
+
* ⚠ **流的 `ecodeId` 这里查不到** —— 它只在逻辑流 `create` 返回里。
|
|
8
|
+
* 好在运行时不消费它(`ExecLogicFlow.ts` 只读 `data[0].id`),绑定时留空即可,
|
|
9
|
+
* 已经绑过的可以沿用旧 action 里的值。这一条是同事 `logic-flow-composer` skill 的实测结论。
|
|
10
|
+
*/
|
|
11
|
+
import type { ApiClient } from '../core/client.js';
|
|
12
|
+
type Client = Pick<ApiClient, 'get' | 'post'>;
|
|
13
|
+
/** 列表里的一行(只取绑定用得到的字段)。 */
|
|
14
|
+
export interface LogicFlowOption {
|
|
15
|
+
id: string;
|
|
16
|
+
name: string;
|
|
17
|
+
scene: string;
|
|
18
|
+
isEnable: number;
|
|
19
|
+
}
|
|
20
|
+
/** 拉全量前端逻辑流(分页翻完;`page` 上限兜底防死循环)。 */
|
|
21
|
+
export declare function listLogicFlows(client: Client, base: string, appId: string, pageSize?: number): Promise<LogicFlowOption[]>;
|
|
22
|
+
/**
|
|
23
|
+
* 按 **id 或名字** 解析出一条逻辑流。
|
|
24
|
+
*
|
|
25
|
+
* 名字必须**精确同名**:撞名不取首条(取错流等于把按钮绑到别的流程上,事后很难查),
|
|
26
|
+
* 报错时并列候选 id;找不到时列出该应用现有的流名,省一次来回。
|
|
27
|
+
*/
|
|
28
|
+
export declare function resolveLogicFlow(client: Client, base: string, appId: string, nameOrId: string): Promise<LogicFlowOption>;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=form-button-logicflow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-button-logicflow.d.ts","sourceRoot":"","sources":["../../src/services/form-button-logicflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;AAE9C,0BAA0B;AAC1B,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID,sCAAsC;AACtC,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAkB5H;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAgB9H"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 逻辑流(前端逻辑编排)按名字解析 —— 给按钮的「触发逻辑流」动作找 `id`。
|
|
3
|
+
*
|
|
4
|
+
* 端点:`POST /api/bs/component/logic/flow/page`,body `{current, size, appId, type:'FRONTEND'}`,
|
|
5
|
+
* 返回 `data.records[]`(`id` / `name` / `scene` / `isEnable` …)。
|
|
6
|
+
*
|
|
7
|
+
* ⚠ **流的 `ecodeId` 这里查不到** —— 它只在逻辑流 `create` 返回里。
|
|
8
|
+
* 好在运行时不消费它(`ExecLogicFlow.ts` 只读 `data[0].id`),绑定时留空即可,
|
|
9
|
+
* 已经绑过的可以沿用旧 action 里的值。这一条是同事 `logic-flow-composer` skill 的实测结论。
|
|
10
|
+
*/
|
|
11
|
+
const LOGIC_FLOW_PAGE = '/api/bs/component/logic/flow/page';
|
|
12
|
+
/** 拉全量前端逻辑流(分页翻完;`page` 上限兜底防死循环)。 */
|
|
13
|
+
export async function listLogicFlows(client, base, appId, pageSize = 100) {
|
|
14
|
+
const all = [];
|
|
15
|
+
for (let current = 1; current <= 100; current += 1) {
|
|
16
|
+
const response = await client.post(`${base}${LOGIC_FLOW_PAGE}`, {
|
|
17
|
+
current, size: pageSize, appId, type: 'FRONTEND',
|
|
18
|
+
});
|
|
19
|
+
if (response?.code !== 200)
|
|
20
|
+
throw new Error(`读取逻辑流列表失败: ${response?.msg || '未知错误'}`);
|
|
21
|
+
const records = Array.isArray(response?.data?.records) ? response.data.records : [];
|
|
22
|
+
all.push(...records.map((r) => ({
|
|
23
|
+
id: String(r?.id ?? ''),
|
|
24
|
+
name: String(r?.name ?? ''),
|
|
25
|
+
scene: String(r?.scene ?? ''),
|
|
26
|
+
isEnable: Number(r?.isEnable ?? 0),
|
|
27
|
+
})));
|
|
28
|
+
const pages = Number(response?.data?.pages ?? 1);
|
|
29
|
+
if (!records.length || current >= pages)
|
|
30
|
+
break;
|
|
31
|
+
}
|
|
32
|
+
return all.filter((f) => f.id);
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 按 **id 或名字** 解析出一条逻辑流。
|
|
36
|
+
*
|
|
37
|
+
* 名字必须**精确同名**:撞名不取首条(取错流等于把按钮绑到别的流程上,事后很难查),
|
|
38
|
+
* 报错时并列候选 id;找不到时列出该应用现有的流名,省一次来回。
|
|
39
|
+
*/
|
|
40
|
+
export async function resolveLogicFlow(client, base, appId, nameOrId) {
|
|
41
|
+
const value = String(nameOrId ?? '').trim();
|
|
42
|
+
if (!value)
|
|
43
|
+
throw new Error('逻辑流不能为空');
|
|
44
|
+
const flows = await listLogicFlows(client, base, appId);
|
|
45
|
+
const byId = flows.filter((f) => f.id === value);
|
|
46
|
+
if (byId.length === 1)
|
|
47
|
+
return byId[0];
|
|
48
|
+
const exact = flows.filter((f) => f.name === value);
|
|
49
|
+
if (exact.length === 1)
|
|
50
|
+
return exact[0];
|
|
51
|
+
if (exact.length > 1) {
|
|
52
|
+
throw new Error(`逻辑流「${value}」匹配到 ${exact.length} 条同名记录,无法确定是哪一个:`
|
|
53
|
+
+ `${exact.map((f) => f.id).join('、')}。改用 --logic-id 指定`);
|
|
54
|
+
}
|
|
55
|
+
if (!flows.length)
|
|
56
|
+
throw new Error(`应用 ${appId} 下没有任何前端逻辑流`);
|
|
57
|
+
throw new Error(`未找到逻辑流「${value}」。应用下现有:${flows.map((f) => f.name).join('、')}`);
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=form-button-logicflow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-button-logicflow.js","sourceRoot":"","sources":["../../src/services/form-button-logicflow.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 按钮权限的「授权对象」解析:名字或 ID → `content`(id) + `contentSpan`(显示名)。
|
|
3
|
+
*
|
|
4
|
+
* 按钮权限条目里主体是**两个键**:`content` 存 id、`contentSpan` 存显示名,
|
|
5
|
+
* 少了 `contentSpan` 界面上那行就是空的。所以**不能只写 id**,必须把名字也取回来。
|
|
6
|
+
*
|
|
7
|
+
* 复用两条既有入口(同 `role add-member`):
|
|
8
|
+
* - **按名字**:人员走 `getEmployeeByKeyWords`;部门/分部走 `browser/data/{kind}`。都过 `pickExact`
|
|
9
|
+
* (精确同名优先,撞名报错并列候选)—— 绝不取首条,否则同名时静默配错对象。
|
|
10
|
+
* - **按 ID**:走 `browser/destData/{kind}` 把对象取回来(`destData` 对不存在的 id
|
|
11
|
+
* **一声不吭地丢掉**,所以必须 `assertAllIdsResolved` 核对)。
|
|
12
|
+
*/
|
|
13
|
+
import type { ApiClient } from '../core/client.js';
|
|
14
|
+
type Client = Pick<ApiClient, 'get' | 'post'>;
|
|
15
|
+
/** 按钮权限里认得的三类「具体对象」(不含「全体」,全体没有主体)。 */
|
|
16
|
+
export type PermissionSubjectKind = 'company' | 'department' | 'resource';
|
|
17
|
+
/** 按关键词搜人员。 */
|
|
18
|
+
export declare function searchEmployees(client: Client, base: string, keyword: string): Promise<any[]>;
|
|
19
|
+
/**
|
|
20
|
+
* 解析一个授权对象。
|
|
21
|
+
*
|
|
22
|
+
* 入参是**很长的纯数字**就按 ID 走 `destData`,否则按名字搜。两条路都必须拿到显示名 ——
|
|
23
|
+
* 拿不到就报错,绝不用 id 冒充 `contentSpan`(那样界面上是一行空白,事后没法查)。
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolvePermissionSubject(client: Client, base: string, kind: PermissionSubjectKind, nameOrId: string): Promise<{
|
|
26
|
+
id: string;
|
|
27
|
+
name: string;
|
|
28
|
+
}>;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=form-button-org.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-button-org.d.ts","sourceRoot":"","sources":["../../src/services/form-button-org.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAOnD,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;AAE9C,uCAAuC;AACvC,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,CAAC;AAc1E,eAAe;AACf,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAOnG;AAsBD;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,GAC1E,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAoBvC"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 按钮权限的「授权对象」解析:名字或 ID → `content`(id) + `contentSpan`(显示名)。
|
|
3
|
+
*
|
|
4
|
+
* 按钮权限条目里主体是**两个键**:`content` 存 id、`contentSpan` 存显示名,
|
|
5
|
+
* 少了 `contentSpan` 界面上那行就是空的。所以**不能只写 id**,必须把名字也取回来。
|
|
6
|
+
*
|
|
7
|
+
* 复用两条既有入口(同 `role add-member`):
|
|
8
|
+
* - **按名字**:人员走 `getEmployeeByKeyWords`;部门/分部走 `browser/data/{kind}`。都过 `pickExact`
|
|
9
|
+
* (精确同名优先,撞名报错并列候选)—— 绝不取首条,否则同名时静默配错对象。
|
|
10
|
+
* - **按 ID**:走 `browser/destData/{kind}` 把对象取回来(`destData` 对不存在的 id
|
|
11
|
+
* **一声不吭地丢掉**,所以必须 `assertAllIdsResolved` 核对)。
|
|
12
|
+
*/
|
|
13
|
+
import { ORG_BROWSER_BASE, ORG_BROWSE_LABEL, buildOrgListPayload, extractOrgList } from './org-browser.js';
|
|
14
|
+
import { DEST_DATA_BASE, MEMBER_KIND_LABEL, buildDestDataPayload, extractDestDataItems, assertAllIdsResolved, pickExact, } from './role-member.js';
|
|
15
|
+
/** 按钮权限的 `permissionType` → 组织接口的 `kind`。 */
|
|
16
|
+
const ORG_KIND_OF = {
|
|
17
|
+
company: 'subcompany',
|
|
18
|
+
department: 'department',
|
|
19
|
+
resource: 'resource',
|
|
20
|
+
};
|
|
21
|
+
/** 平台 id 的形态(19 位数字)。够长的纯数字就当 ID,否则当名字。 */
|
|
22
|
+
function looksLikeId(value) {
|
|
23
|
+
return /^\d{10,}$/.test(value);
|
|
24
|
+
}
|
|
25
|
+
/** 按关键词搜人员。 */
|
|
26
|
+
export async function searchEmployees(client, base, keyword) {
|
|
27
|
+
const res = await client.post(`${base}/api/hrm/common/getEmployeeByKeyWords`, {
|
|
28
|
+
keyword, searchType: 1, searchCount: 20, appDetachModule: 'EM',
|
|
29
|
+
disableAppDetach: 0, pageNo: 1, pageSize: 20,
|
|
30
|
+
});
|
|
31
|
+
if (res?.code !== 200)
|
|
32
|
+
throw new Error(`搜索人员「${keyword}」失败: ${res?.msg || '未知错误'}`);
|
|
33
|
+
return res?.data?.userList || [];
|
|
34
|
+
}
|
|
35
|
+
/** 按关键词搜部门/分部。 */
|
|
36
|
+
async function searchOrgs(client, base, kind, keyword) {
|
|
37
|
+
const res = await client.post(`${base}${ORG_BROWSER_BASE}/${kind}`, buildOrgListPayload(kind, { name: keyword, pageSize: 50 }));
|
|
38
|
+
if (res?.code !== 200)
|
|
39
|
+
throw new Error(`搜索${ORG_BROWSE_LABEL[kind]}「${keyword}」失败: ${res?.msg || '未知错误'}`);
|
|
40
|
+
return extractOrgList(res).rows;
|
|
41
|
+
}
|
|
42
|
+
/** 按 ID 取对象(第二条入口)。 */
|
|
43
|
+
async function readByIds(client, base, kind, ids) {
|
|
44
|
+
const label = MEMBER_KIND_LABEL[kind];
|
|
45
|
+
const res = await client.post(`${base}${DEST_DATA_BASE}/${kind}`, buildDestDataPayload(kind, ids));
|
|
46
|
+
if (res?.code !== 200)
|
|
47
|
+
throw new Error(`按 ID 取${label}失败: ${res?.msg || '未知错误'}`);
|
|
48
|
+
const items = extractDestDataItems(res);
|
|
49
|
+
assertAllIdsResolved(ids, items, label);
|
|
50
|
+
return items;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* 解析一个授权对象。
|
|
54
|
+
*
|
|
55
|
+
* 入参是**很长的纯数字**就按 ID 走 `destData`,否则按名字搜。两条路都必须拿到显示名 ——
|
|
56
|
+
* 拿不到就报错,绝不用 id 冒充 `contentSpan`(那样界面上是一行空白,事后没法查)。
|
|
57
|
+
*/
|
|
58
|
+
export async function resolvePermissionSubject(client, base, kind, nameOrId) {
|
|
59
|
+
const value = String(nameOrId ?? '').trim();
|
|
60
|
+
if (!value)
|
|
61
|
+
throw new Error('授权对象不能为空');
|
|
62
|
+
const orgKind = ORG_KIND_OF[kind];
|
|
63
|
+
const label = MEMBER_KIND_LABEL[orgKind];
|
|
64
|
+
if (looksLikeId(value)) {
|
|
65
|
+
const item = (await readByIds(client, base, orgKind, [value]))[0];
|
|
66
|
+
const name = String(item?.name ?? item?.content ?? '').trim();
|
|
67
|
+
if (!name)
|
|
68
|
+
throw new Error(`${label} ${value} 取回来了但拿不到名称,无法写入按钮权限`);
|
|
69
|
+
return { id: String(item?.id ?? value), name };
|
|
70
|
+
}
|
|
71
|
+
const rows = orgKind === 'resource'
|
|
72
|
+
? await searchEmployees(client, base, value)
|
|
73
|
+
: await searchOrgs(client, base, orgKind, value);
|
|
74
|
+
const picked = pickExact(rows, value, label, (x) => x?.name);
|
|
75
|
+
const name = String(picked?.name ?? '').trim();
|
|
76
|
+
if (!name)
|
|
77
|
+
throw new Error(`${label}「${value}」搜索到了但没有名称,无法写入按钮权限`);
|
|
78
|
+
return { id: String(picked?.id ?? ''), name };
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=form-button-org.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-button-org.js","sourceRoot":"","sources":["../../src/services/form-button-org.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAsB,MAAM,kBAAkB,CAAC;AAC/H,OAAO,EACL,cAAc,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,oBAAoB,EAC7E,oBAAoB,EAAE,SAAS,GAChC,MAAM,kBAAkB,CAAC;AAO1B,6CAA6C;AAC7C,MAAM,WAAW,GAA8C;IAC7D,OAAO,EAAE,YAAY;IACrB,UAAU,EAAE,YAAY;IACxB,QAAQ,EAAE,UAAU;CACrB,CAAC;AAEF,2CAA2C;AAC3C,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,eAAe;AACf,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAc,EAAE,IAAY,EAAE,OAAe;IACjF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,uCAAuC,EAAE;QAC5E,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI;QAC9D,gBAAgB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;KAC7C,CAAC,CAAC;IACH,IAAI,GAAG,EAAE,IAAI,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,OAAO,QAAQ,GAAG,EAAE,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC;IACpF,OAAO,GAAG,EAAE,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,kBAAkB;AAClB,KAAK,UAAU,UAAU,CAAC,MAAc,EAAE,IAAY,EAAE,IAAmB,EAAE,OAAe;IAC1F,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAC3B,GAAG,IAAI,GAAG,gBAAgB,IAAI,IAAI,EAAE,EACpC,mBAAmB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAC3D,CAAC;IACF,IAAI,GAAG,EAAE,IAAI,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,KAAK,gBAAgB,CAAC,IAAI,CAAC,IAAI,OAAO,QAAQ,GAAG,EAAE,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC;IAC3G,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAClC,CAAC;AAED,uBAAuB;AACvB,KAAK,UAAU,SAAS,CAAC,MAAc,EAAE,IAAY,EAAE,IAAgB,EAAE,GAAa;IACpF,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,cAAc,IAAI,IAAI,EAAE,EAAE,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACnG,IAAI,GAAG,EAAE,IAAI,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO,GAAG,EAAE,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC;IAClF,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACxC,oBAAoB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,MAAc,EAAE,IAAY,EAAE,IAA2B,EAAE,QAAgB;IAE3E,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAEzC,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,MAAM,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9D,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,KAAK,sBAAsB,CAAC,CAAC;QACpE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACjD,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,KAAK,UAAU;QACjC,CAAC,CAAC,MAAM,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;QAC5C,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,OAAwB,EAAE,KAAK,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,KAAK,qBAAqB,CAAC,CAAC;IACnE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 按钮权限(`permissionDatas[]`)的构造与识别(纯函数)。
|
|
3
|
+
*
|
|
4
|
+
* ⚠ **这不是表单数据权限那套。** 表单/台账/归档权限走 `permission/addRight`,
|
|
5
|
+
* 对象形状是 `orgType` / `codeType` / `rightType`(见 `src/commands/form-permission.ts`)。
|
|
6
|
+
* 按钮权限是**另一套**:判别键叫 `permissionType`,值形如 `all` / `company` / `department` / `resource`,
|
|
7
|
+
* 主体直接写 `content`(id) + `contentSpan`(显示名),**和 `saveOrUpdate` 一起提交**,没有独立端点。
|
|
8
|
+
*
|
|
9
|
+
* 形状来自真机抓包(设计器往按钮上挂 分部/部门/人员 各一条):
|
|
10
|
+
* 分部 `permissionType:"company"`、部门 `"department"`、人员 `"resource"` + `fieldType:"employee"`。
|
|
11
|
+
* 「全体」的默认行是平台**自己建**的(创建按钮时 `permissionDatas:[]` 也会落一条 `all`)。
|
|
12
|
+
*
|
|
13
|
+
* 条目里那些空键(`jobLevel` / `excludeObj` / `condition` …)都是平台自己的占位,必须原样带上。
|
|
14
|
+
*/
|
|
15
|
+
/** 目前支持的授权对象类型(其余类型形状未知,遇到就报错,不猜着写)。 */
|
|
16
|
+
export declare const BUTTON_PERMISSION_TYPES: readonly ["all", "company", "department", "resource"];
|
|
17
|
+
export type ButtonPermissionType = (typeof BUTTON_PERMISSION_TYPES)[number];
|
|
18
|
+
/** 类型的中文名。 */
|
|
19
|
+
export declare const BUTTON_PERMISSION_LABEL: Record<ButtonPermissionType, string>;
|
|
20
|
+
/** 认得出的 `permissionType` 才能继续;其余一律抛错并列出可用的。 */
|
|
21
|
+
export declare function assertKnownPermissionType(value: string): asserts value is ButtonPermissionType;
|
|
22
|
+
export interface PermissionEntryInput {
|
|
23
|
+
permissionType: ButtonPermissionType;
|
|
24
|
+
/** 授权对象的 id(全体为空)。 */
|
|
25
|
+
content?: string;
|
|
26
|
+
/** 授权对象的显示名(全体为空)。 */
|
|
27
|
+
contentSpan?: string;
|
|
28
|
+
/** 是否含下级(部门/分部常见)。 */
|
|
29
|
+
containExtra?: boolean;
|
|
30
|
+
/** 更新既有条目时带上原 id;新增留空串。 */
|
|
31
|
+
id?: string;
|
|
32
|
+
/** 1 总部 / 2 分部 / 3 部门;缺省 `'1'`。 */
|
|
33
|
+
roleLevel?: string;
|
|
34
|
+
/** 「是否启用该行」;抓包里设计器新建的条目是 0,平台自建的 `all` 是 1。 */
|
|
35
|
+
opened?: number;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* 造一条按钮权限。
|
|
39
|
+
*
|
|
40
|
+
* 逐键对齐抓包:分部/部门带 `fieldType:''` + `creatorType:'0'` + `fieldtype:''`,
|
|
41
|
+
* 人员则是 `fieldType:'employee'` 且**不带** `creatorType`/`fieldtype`(设计器就是这么发的,照抄)。
|
|
42
|
+
*/
|
|
43
|
+
export declare function buildPermissionEntry(input: PermissionEntryInput): Record<string, unknown>;
|
|
44
|
+
/** 「全体」条目 —— 平台自建的那条长这样(`opened:1`)。 */
|
|
45
|
+
export declare function allPermissionEntry(): Record<string, unknown>;
|
|
46
|
+
/** 条目的可读标签,如「分部:泛微北京」。 */
|
|
47
|
+
export declare function permissionLabel(entry: any): string;
|
|
48
|
+
/**
|
|
49
|
+
* 条目的可比签名 —— 回读校验用。
|
|
50
|
+
*
|
|
51
|
+
* 只比「类型 + 主体 + 含不含下级」:平台会给新条目补 `id` / `buttonId` / `index` / `layoutNames`
|
|
52
|
+
* 之类的服务端字段,顺序也可能变,逐字比必然误报。
|
|
53
|
+
*/
|
|
54
|
+
export declare function permissionSignature(entry: any): string;
|
|
55
|
+
/** 按签名判断某条权限是否已在列表里(用于幂等去重)。 */
|
|
56
|
+
export declare function hasPermission(entries: any[], entry: any): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* 在列表里找一条权限:选择器是纯数字就当 **1-based 序号**(与 `list` 输出一致),
|
|
59
|
+
* 否则按权限 id 匹配。找不到抛错(静默不删会让人以为删掉了)。
|
|
60
|
+
*/
|
|
61
|
+
export declare function findPermission(entries: any[], selector: string): {
|
|
62
|
+
entry: any;
|
|
63
|
+
index: number;
|
|
64
|
+
};
|
|
65
|
+
//# sourceMappingURL=form-button-permission.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-button-permission.d.ts","sourceRoot":"","sources":["../../src/services/form-button-permission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,wCAAwC;AACxC,eAAO,MAAM,uBAAuB,uDAAwD,CAAC;AAE7F,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,cAAc;AACd,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAKxE,CAAC;AAEF,+CAA+C;AAC/C,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,oBAAoB,CAO9F;AAED,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,oBAAoB,CAAC;IACrC,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2BAA2B;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0BzF;AAED,wCAAwC;AACxC,wBAAgB,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE5D;AAED,0BAA0B;AAC1B,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAKlD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAMtD;AAED,gCAAgC;AAChC,wBAAgB,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAGjE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAa9F"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 按钮权限(`permissionDatas[]`)的构造与识别(纯函数)。
|
|
3
|
+
*
|
|
4
|
+
* ⚠ **这不是表单数据权限那套。** 表单/台账/归档权限走 `permission/addRight`,
|
|
5
|
+
* 对象形状是 `orgType` / `codeType` / `rightType`(见 `src/commands/form-permission.ts`)。
|
|
6
|
+
* 按钮权限是**另一套**:判别键叫 `permissionType`,值形如 `all` / `company` / `department` / `resource`,
|
|
7
|
+
* 主体直接写 `content`(id) + `contentSpan`(显示名),**和 `saveOrUpdate` 一起提交**,没有独立端点。
|
|
8
|
+
*
|
|
9
|
+
* 形状来自真机抓包(设计器往按钮上挂 分部/部门/人员 各一条):
|
|
10
|
+
* 分部 `permissionType:"company"`、部门 `"department"`、人员 `"resource"` + `fieldType:"employee"`。
|
|
11
|
+
* 「全体」的默认行是平台**自己建**的(创建按钮时 `permissionDatas:[]` 也会落一条 `all`)。
|
|
12
|
+
*
|
|
13
|
+
* 条目里那些空键(`jobLevel` / `excludeObj` / `condition` …)都是平台自己的占位,必须原样带上。
|
|
14
|
+
*/
|
|
15
|
+
/** 目前支持的授权对象类型(其余类型形状未知,遇到就报错,不猜着写)。 */
|
|
16
|
+
export const BUTTON_PERMISSION_TYPES = ['all', 'company', 'department', 'resource'];
|
|
17
|
+
/** 类型的中文名。 */
|
|
18
|
+
export const BUTTON_PERMISSION_LABEL = {
|
|
19
|
+
all: '全体',
|
|
20
|
+
company: '分部',
|
|
21
|
+
department: '部门',
|
|
22
|
+
resource: '人员',
|
|
23
|
+
};
|
|
24
|
+
/** 认得出的 `permissionType` 才能继续;其余一律抛错并列出可用的。 */
|
|
25
|
+
export function assertKnownPermissionType(value) {
|
|
26
|
+
if (!BUTTON_PERMISSION_TYPES.includes(value)) {
|
|
27
|
+
throw new Error(`不认识的按钮权限类型「${value}」;可用:`
|
|
28
|
+
+ BUTTON_PERMISSION_TYPES.map((t) => `${BUTTON_PERMISSION_LABEL[t]} ${t}`).join(' / '));
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* 造一条按钮权限。
|
|
33
|
+
*
|
|
34
|
+
* 逐键对齐抓包:分部/部门带 `fieldType:''` + `creatorType:'0'` + `fieldtype:''`,
|
|
35
|
+
* 人员则是 `fieldType:'employee'` 且**不带** `creatorType`/`fieldtype`(设计器就是这么发的,照抄)。
|
|
36
|
+
*/
|
|
37
|
+
export function buildPermissionEntry(input) {
|
|
38
|
+
const { permissionType } = input;
|
|
39
|
+
const entry = {
|
|
40
|
+
roleLevel: input.roleLevel ?? '1',
|
|
41
|
+
};
|
|
42
|
+
if (permissionType === 'resource') {
|
|
43
|
+
entry.fieldType = 'employee';
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
entry.fieldType = '';
|
|
47
|
+
entry.creatorType = '0';
|
|
48
|
+
entry.fieldtype = '';
|
|
49
|
+
}
|
|
50
|
+
entry.id = input.id ?? '';
|
|
51
|
+
entry.permissionType = permissionType;
|
|
52
|
+
entry.contentSpan = input.contentSpan ?? '';
|
|
53
|
+
entry.content = input.content ?? '';
|
|
54
|
+
entry.levelScope = { minShowlevel: '', maxShowlevel: '' };
|
|
55
|
+
entry.relation = '0';
|
|
56
|
+
entry.jobLevel = '';
|
|
57
|
+
entry.jobLevelText = '';
|
|
58
|
+
entry.jobLevelTextSpan = '';
|
|
59
|
+
entry.excludeObj = '';
|
|
60
|
+
entry.containExtra = input.containExtra ? '1' : '0';
|
|
61
|
+
entry.opened = input.opened ?? (permissionType === 'all' ? 1 : 0);
|
|
62
|
+
entry.condition = { conditionsql: '', rootdata: '' };
|
|
63
|
+
return entry;
|
|
64
|
+
}
|
|
65
|
+
/** 「全体」条目 —— 平台自建的那条长这样(`opened:1`)。 */
|
|
66
|
+
export function allPermissionEntry() {
|
|
67
|
+
return buildPermissionEntry({ permissionType: 'all' });
|
|
68
|
+
}
|
|
69
|
+
/** 条目的可读标签,如「分部:泛微北京」。 */
|
|
70
|
+
export function permissionLabel(entry) {
|
|
71
|
+
const type = String(entry?.permissionType ?? '');
|
|
72
|
+
const label = BUTTON_PERMISSION_LABEL[type] ?? (type || '未知');
|
|
73
|
+
const span = String(entry?.contentSpan ?? '').trim();
|
|
74
|
+
return span ? `${label}:${span}` : label;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* 条目的可比签名 —— 回读校验用。
|
|
78
|
+
*
|
|
79
|
+
* 只比「类型 + 主体 + 含不含下级」:平台会给新条目补 `id` / `buttonId` / `index` / `layoutNames`
|
|
80
|
+
* 之类的服务端字段,顺序也可能变,逐字比必然误报。
|
|
81
|
+
*/
|
|
82
|
+
export function permissionSignature(entry) {
|
|
83
|
+
return JSON.stringify([
|
|
84
|
+
String(entry?.permissionType ?? ''),
|
|
85
|
+
String(entry?.content ?? ''),
|
|
86
|
+
String(entry?.containExtra ?? ''),
|
|
87
|
+
]);
|
|
88
|
+
}
|
|
89
|
+
/** 按签名判断某条权限是否已在列表里(用于幂等去重)。 */
|
|
90
|
+
export function hasPermission(entries, entry) {
|
|
91
|
+
const target = permissionSignature(entry);
|
|
92
|
+
return (entries ?? []).some((item) => permissionSignature(item) === target);
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* 在列表里找一条权限:选择器是纯数字就当 **1-based 序号**(与 `list` 输出一致),
|
|
96
|
+
* 否则按权限 id 匹配。找不到抛错(静默不删会让人以为删掉了)。
|
|
97
|
+
*/
|
|
98
|
+
export function findPermission(entries, selector) {
|
|
99
|
+
const all = entries ?? [];
|
|
100
|
+
const raw = String(selector).trim();
|
|
101
|
+
if (/^\d+$/.test(raw)) {
|
|
102
|
+
const index = Number(raw) - 1;
|
|
103
|
+
if (index < 0 || index >= all.length) {
|
|
104
|
+
throw new Error(`序号 ${raw} 越界(当前 ${all.length} 条,序号从 1 起)`);
|
|
105
|
+
}
|
|
106
|
+
return { entry: all[index], index };
|
|
107
|
+
}
|
|
108
|
+
const index = all.findIndex((item) => String(item?.id ?? '') === raw);
|
|
109
|
+
if (index < 0)
|
|
110
|
+
throw new Error(`找不到按钮权限 ${raw}(用 form button permission 看现有列表)`);
|
|
111
|
+
return { entry: all[index], index };
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=form-button-permission.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-button-permission.js","sourceRoot":"","sources":["../../src/services/form-button-permission.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,35 +1,21 @@
|
|
|
1
1
|
import type { ApiClient } from '../core/client.js';
|
|
2
|
+
import { readButton, readButtonContext, type ButtonContext, type ButtonViews } from './form-button-context.js';
|
|
3
|
+
export { readButton, readButtonContext };
|
|
4
|
+
export type { ButtonContext, ButtonViews };
|
|
2
5
|
type Client = Pick<ApiClient, 'get' | 'post'>;
|
|
3
6
|
export type Positions = Record<string, string[]>;
|
|
4
|
-
export interface ButtonViews {
|
|
5
|
-
table?: Array<{
|
|
6
|
-
id: string;
|
|
7
|
-
name: string;
|
|
8
|
-
}>;
|
|
9
|
-
form?: Array<{
|
|
10
|
-
id: string;
|
|
11
|
-
name: string;
|
|
12
|
-
}>;
|
|
13
|
-
}
|
|
14
7
|
export declare function parsePositions(value: unknown): Positions;
|
|
15
8
|
export declare function resolveButtonView(view: string, catalog: ButtonViews): string;
|
|
16
9
|
export declare function buildButtonPosition(existing: unknown, patch: Positions, catalog: ButtonViews, replace?: boolean): {
|
|
17
10
|
showPosition: string;
|
|
18
11
|
showPositionSpan: any;
|
|
19
12
|
};
|
|
20
|
-
export declare function readButton(client: Client, base: string, appId: string, objId: string, buttonId: string): Promise<any>;
|
|
21
|
-
export declare function readButtonContext(client: Client, base: string, appId: string, objId: string, buttonId: string): Promise<{
|
|
22
|
-
button: any;
|
|
23
|
-
details: any;
|
|
24
|
-
views: ButtonViews;
|
|
25
|
-
}>;
|
|
26
13
|
export declare function samePositions(a: unknown, b: unknown): boolean;
|
|
27
|
-
export declare function saveButtonPosition(client: Client, base: string, appId: string, objId: string, context:
|
|
14
|
+
export declare function saveButtonPosition(client: Client, base: string, appId: string, objId: string, context: ButtonContext, config: ReturnType<typeof buildButtonPosition>): Promise<{
|
|
28
15
|
showPosition: string;
|
|
29
16
|
showPositionSpan: any;
|
|
30
17
|
success: boolean;
|
|
31
18
|
verified: boolean;
|
|
32
19
|
buttonId: any;
|
|
33
20
|
}>;
|
|
34
|
-
export {};
|
|
35
21
|
//# sourceMappingURL=form-button-position.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-button-position.d.ts","sourceRoot":"","sources":["../../src/services/form-button-position.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"form-button-position.d.ts","sourceRoot":"","sources":["../../src/services/form-button-position.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAW,UAAU,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAIxH,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;AAE3C,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;AAC9C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAQjD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAaxD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM,CAS5E;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,UAAQ;;;EAmB7G;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAG7D;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC;;;;;;GAY1K"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
import { checked, readButton, readButtonContext } from './form-button-context.js';
|
|
2
|
+
// 读上下文的两个函数住在 `form-button-context.ts`(公共保存链路也要用),这里原样转出去:
|
|
3
|
+
// 既保持既有 import 路径不变,也避免两个 service 互相 import 成环。
|
|
4
|
+
export { readButton, readButtonContext };
|
|
1
5
|
const aliases = {
|
|
2
6
|
'右上': 'rightTop', '右上角': 'rightTop', righttop: 'rightTop',
|
|
3
7
|
'右上下拉': 'rightTopDropDown', righttopdropdown: 'rightTopDropDown',
|
|
@@ -55,42 +59,6 @@ export function buildButtonPosition(existing, patch, catalog, replace = false) {
|
|
|
55
59
|
}
|
|
56
60
|
return { showPosition: JSON.stringify(merged), showPositionSpan: span };
|
|
57
61
|
}
|
|
58
|
-
function checked(result, operation) {
|
|
59
|
-
if (result?.code !== 200 || result?.status === false || result?.data == null)
|
|
60
|
-
throw new Error(`${operation}失败: ${result?.msg || '返回结构无效'}`);
|
|
61
|
-
return result.data;
|
|
62
|
-
}
|
|
63
|
-
export async function readButton(client, base, appId, objId, buttonId) {
|
|
64
|
-
for (let current = 1;; current++) {
|
|
65
|
-
const data = checked(await client.post(`${base}/api/bs/ebuilder/form/button/getButtonList?apid=${appId}&objId=${objId}`, { objId, searchVal: '', current, pageSize: 50, searchParamData: {} }, { ebBusinessId: appId }), '读取按钮');
|
|
66
|
-
if (!Array.isArray(data.datas))
|
|
67
|
-
throw new Error('按钮列表返回结构无效');
|
|
68
|
-
const button = data.datas.find((b) => String(b.id) === buttonId);
|
|
69
|
-
if (button)
|
|
70
|
-
return button;
|
|
71
|
-
if (!data.datas.length || current * 50 >= Number(data.total))
|
|
72
|
-
break;
|
|
73
|
-
if (current >= 1000)
|
|
74
|
-
throw new Error('按钮分页超出上限');
|
|
75
|
-
}
|
|
76
|
-
throw new Error(`按钮 ${buttonId} 不存在`);
|
|
77
|
-
}
|
|
78
|
-
export async function readButtonContext(client, base, appId, objId, buttonId) {
|
|
79
|
-
const button = await readButton(client, base, appId, objId, buttonId);
|
|
80
|
-
// `buttonKey` 只在按钮**有**这个键时才带 —— 界面自己建的自定义按钮记录里根本没有它,
|
|
81
|
-
// 硬拼会发一个 `buttonKey=undefined`。
|
|
82
|
-
const query = new URLSearchParams({
|
|
83
|
-
apid: appId, objId, tpaid: objId, buttonId, buttonType: button.buttonType,
|
|
84
|
-
thirdPartyFlag: String(button.thirdPartyFlag || 0),
|
|
85
|
-
...(button.buttonKey ? { buttonKey: String(button.buttonKey) } : {}),
|
|
86
|
-
});
|
|
87
|
-
const headers = { ebBusinessId: appId };
|
|
88
|
-
const details = checked(await client.get(`${base}/api/bs/ebuilder/form/button/getActionAndPermission?${query}`, headers), '读取动作权限');
|
|
89
|
-
if (!Array.isArray(details.actions) || !Array.isArray(details.permissions))
|
|
90
|
-
throw new Error('动作/权限返回不完整,停止保存');
|
|
91
|
-
const views = checked(await client.get(`${base}/api/bs/ebuilder/form/button/getViewDatas?${query}`, headers), '读取可选视图');
|
|
92
|
-
return { button, details, views };
|
|
93
|
-
}
|
|
94
62
|
export function samePositions(a, b) {
|
|
95
63
|
const canonical = (v) => JSON.stringify(Object.entries(parsePositions(v)).sort(([a], [b]) => a.localeCompare(b)).map(([k, p]) => [k, [...p].sort()]));
|
|
96
64
|
return canonical(a) === canonical(b);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-button-position.js","sourceRoot":"","sources":["../../src/services/form-button-position.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"form-button-position.js","sourceRoot":"","sources":["../../src/services/form-button-position.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 按钮「基础属性」的构造/解析(纯函数)。
|
|
3
|
+
*
|
|
4
|
+
* 平台侧这些值都挂在 `button` 记录上,`saveOrUpdate` 时整个 `button` 一起提交:
|
|
5
|
+
* - `iconPath` 图标 —— **存的是 JSON 字符串**,不是对象(`{"path":"#Icon-xxx","style":{...}}`)
|
|
6
|
+
* - `onlyIcon` 只显示图标(0/1)
|
|
7
|
+
* - `tipsMessage` 提示内容(纯文本;与 `customTips` 那套「动态提示」不是一回事)
|
|
8
|
+
* - `buttonDescription` 备注(纯文本)
|
|
9
|
+
* - `logMessage` 点击日志 `{ enableLog, message }`
|
|
10
|
+
*
|
|
11
|
+
* 读回的形状与写入一致(`iconPath` 也是字符串),所以这一层只做「对象 ⇄ 字符串」的搬运。
|
|
12
|
+
*/
|
|
13
|
+
/** 图标的描述(对应 `iconPath` JSON 串里的三个键)。 */
|
|
14
|
+
export interface IconSpec {
|
|
15
|
+
/** 图标名,如 `Icon-N-Authorized-Administrator`;不带 `#` 会自动补。 */
|
|
16
|
+
path: string;
|
|
17
|
+
/** 线条/文字颜色,缺省 `#999`(平台自己给系统图标用的就是这个)。 */
|
|
18
|
+
color?: string;
|
|
19
|
+
/** 背景色;空串表示无背景。 */
|
|
20
|
+
bgColor?: string;
|
|
21
|
+
/** `line` 描边 / `fill` 填充。不传就不写这个键(系统图标存的也没有它)。 */
|
|
22
|
+
display?: 'line' | 'fill';
|
|
23
|
+
}
|
|
24
|
+
/** 平台给图标描边的缺省色,与系统按钮一致。 */
|
|
25
|
+
export declare const DEFAULT_ICON_COLOR = "#999";
|
|
26
|
+
/**
|
|
27
|
+
* 组装 `iconPath`。
|
|
28
|
+
*
|
|
29
|
+
* ⚠ 那是**字符串**:直接发对象会被平台按空图标存下(按钮上什么都不显示)。
|
|
30
|
+
* 设计器发的是 `{"path":"#Icon-N-Authorized-Administrator","style":{"color":"#999","bgColor":""},"iconDisplayType":"line"}` ——
|
|
31
|
+
* `iconDisplayType` 只在选过描边/填充时才出现,没选就没有这个键。
|
|
32
|
+
*/
|
|
33
|
+
export declare function buildIconPath(spec: IconSpec): string;
|
|
34
|
+
/** 解析 `iconPath`(读回也是字符串)。空/坏串一律回 `null` —— 读侧不该因为历史脏数据让整条命令失败。 */
|
|
35
|
+
export declare function parseIconPath(raw?: string): IconSpec | null;
|
|
36
|
+
/** 图标的可比签名 —— 回读校验用(平台可能补 `style.fillType` 之类的键,只比我们给过的几样)。 */
|
|
37
|
+
export declare function iconSignature(raw?: string): string;
|
|
38
|
+
/** 默认日志文案 —— 平台自己建按钮时用的就是这个格式(中文引号,别换成英文引号)。 */
|
|
39
|
+
export declare function defaultLogMessage(buttonName: string): {
|
|
40
|
+
enableLog: number;
|
|
41
|
+
message: string;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* 组装 `logMessage`。
|
|
45
|
+
*
|
|
46
|
+
* 关掉日志时**文案照样保留**(读回里 `enableLog:0` 的记录仍带着 message),
|
|
47
|
+
* 所以 `message` 优先用传进来的,其次沿用旧值,最后才回落默认文案。
|
|
48
|
+
*/
|
|
49
|
+
export declare function buildLogMessage(enable: 0 | 1, buttonName: string, message?: string, previous?: string): {
|
|
50
|
+
enableLog: number;
|
|
51
|
+
message: string;
|
|
52
|
+
};
|
|
53
|
+
/** 布尔 → 平台的 0/1。 */
|
|
54
|
+
export declare function toFlag(value: boolean | undefined): 0 | 1;
|
|
55
|
+
//# sourceMappingURL=form-button-props.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-button-props.d.ts","sourceRoot":"","sources":["../../src/services/form-button-props.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,wCAAwC;AACxC,MAAM,WAAW,QAAQ;IACvB,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B;AAED,2BAA2B;AAC3B,eAAO,MAAM,kBAAkB,SAAS,CAAC;AAEzC;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAWpD;AAED,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAiB3D;AAED,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CASlD;AAED,gDAAgD;AAChD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAE5F;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GACrE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAGxC;AAED,oBAAoB;AACpB,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,CAExD"}
|