weaver-e10-builder 1.5.12 → 1.5.14
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/commands/actionflow.d.ts.map +1 -1
- package/dist/commands/actionflow.js +1 -0
- package/dist/commands/actionflow.js.map +1 -1
- package/dist/commands/designer-common.d.ts.map +1 -1
- package/dist/commands/designer-common.js +91 -0
- package/dist/commands/designer-common.js.map +1 -1
- package/dist/commands/designer-setters.d.ts.map +1 -1
- package/dist/commands/designer-setters.js +148 -47
- package/dist/commands/designer-setters.js.map +1 -1
- package/dist/commands/form-add-detail-table.d.ts.map +1 -1
- package/dist/commands/form-add-detail-table.js +150 -8
- package/dist/commands/form-add-detail-table.js.map +1 -1
- package/dist/commands/form-browser-definition.d.ts +14 -0
- package/dist/commands/form-browser-definition.d.ts.map +1 -0
- package/dist/commands/form-browser-definition.js +493 -0
- package/dist/commands/form-browser-definition.js.map +1 -0
- package/dist/commands/form-code.d.ts +5 -0
- package/dist/commands/form-code.d.ts.map +1 -0
- package/dist/commands/form-code.js +276 -0
- package/dist/commands/form-code.js.map +1 -0
- package/dist/commands/form-engine-linkage.d.ts +3 -0
- package/dist/commands/form-engine-linkage.d.ts.map +1 -0
- package/dist/commands/form-engine-linkage.js +199 -0
- package/dist/commands/form-engine-linkage.js.map +1 -0
- package/dist/commands/form-formula.d.ts.map +1 -1
- package/dist/commands/form-formula.js +11 -6
- package/dist/commands/form-formula.js.map +1 -1
- package/dist/commands/form-layout-template-advanced.d.ts +3 -0
- package/dist/commands/form-layout-template-advanced.d.ts.map +1 -0
- package/dist/commands/form-layout-template-advanced.js +115 -0
- package/dist/commands/form-layout-template-advanced.js.map +1 -0
- package/dist/commands/form-layout-template-easy.d.ts +3 -0
- package/dist/commands/form-layout-template-easy.d.ts.map +1 -0
- package/dist/commands/form-layout-template-easy.js +59 -0
- package/dist/commands/form-layout-template-easy.js.map +1 -0
- package/dist/commands/form-layout.d.ts.map +1 -1
- package/dist/commands/form-layout.js +77 -0
- package/dist/commands/form-layout.js.map +1 -1
- package/dist/commands/form-list-filter.js +1 -1
- package/dist/commands/form-list-filter.js.map +1 -1
- package/dist/commands/form-list-utils.d.ts +5 -0
- package/dist/commands/form-list-utils.d.ts.map +1 -1
- package/dist/commands/form-list-utils.js +23 -3
- package/dist/commands/form-list-utils.js.map +1 -1
- package/dist/commands/form-permission.d.ts.map +1 -1
- package/dist/commands/form-permission.js +55 -19
- package/dist/commands/form-permission.js.map +1 -1
- package/dist/commands/form-physical-table.d.ts.map +1 -1
- package/dist/commands/form-physical-table.js +8 -2
- package/dist/commands/form-physical-table.js.map +1 -1
- package/dist/commands/form.d.ts.map +1 -1
- package/dist/commands/form.js +476 -30
- package/dist/commands/form.js.map +1 -1
- package/dist/commands/menu.d.ts +68 -2
- package/dist/commands/menu.d.ts.map +1 -1
- package/dist/commands/menu.js +186 -41
- package/dist/commands/menu.js.map +1 -1
- package/dist/commands/page.d.ts.map +1 -1
- package/dist/commands/page.js +29 -6
- package/dist/commands/page.js.map +1 -1
- package/dist/commands/special.d.ts.map +1 -1
- package/dist/commands/special.js +3 -2
- package/dist/commands/special.js.map +1 -1
- package/dist/commands/wf-form.d.ts.map +1 -1
- package/dist/commands/wf-form.js +76 -31
- package/dist/commands/wf-form.js.map +1 -1
- package/dist/commands/workflow-auth-resp.js +2 -2
- package/dist/commands/workflow-auth-resp.js.map +1 -1
- package/dist/commands/workflow-base-settings.d.ts +3 -0
- package/dist/commands/workflow-base-settings.d.ts.map +1 -0
- package/dist/commands/workflow-base-settings.js +73 -0
- package/dist/commands/workflow-base-settings.js.map +1 -0
- package/dist/commands/workflow-condition.d.ts.map +1 -1
- package/dist/commands/workflow-condition.js +59 -450
- package/dist/commands/workflow-condition.js.map +1 -1
- package/dist/commands/workflow-export.d.ts +9 -0
- package/dist/commands/workflow-export.d.ts.map +1 -0
- package/dist/commands/workflow-export.js +121 -0
- package/dist/commands/workflow-export.js.map +1 -0
- package/dist/commands/workflow-node.d.ts.map +1 -1
- package/dist/commands/workflow-node.js +28 -53
- package/dist/commands/workflow-node.js.map +1 -1
- package/dist/commands/workflow-operator-batch.d.ts +3 -0
- package/dist/commands/workflow-operator-batch.d.ts.map +1 -0
- package/dist/commands/workflow-operator-batch.js +35 -0
- package/dist/commands/workflow-operator-batch.js.map +1 -0
- package/dist/commands/workflow-subprocess.d.ts.map +1 -1
- package/dist/commands/workflow-subprocess.js +21 -33
- package/dist/commands/workflow-subprocess.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +36 -37
- package/dist/commands/workflow.js.map +1 -1
- package/dist/index.js +18 -1
- package/dist/index.js.map +1 -1
- package/dist/services/actionflow/browser_source.d.ts +9 -0
- package/dist/services/actionflow/browser_source.d.ts.map +1 -0
- package/dist/services/actionflow/browser_source.js +12 -0
- package/dist/services/actionflow/browser_source.js.map +1 -0
- package/dist/services/actionflow/components/date_trigger.js +1 -1
- package/dist/services/actionflow/components/date_trigger.js.map +1 -1
- package/dist/services/actionflow/components/document_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/document_actions.js +178 -25
- package/dist/services/actionflow/components/document_actions.js.map +1 -1
- package/dist/services/actionflow/components/enquiry_form.js +1 -1
- package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
- package/dist/services/actionflow/components/logic_flow_set.d.ts.map +1 -1
- package/dist/services/actionflow/components/logic_flow_set.js +80 -8
- package/dist/services/actionflow/components/logic_flow_set.js.map +1 -1
- package/dist/services/actionflow/components/meeting_create.d.ts.map +1 -1
- package/dist/services/actionflow/components/meeting_create.js +1 -0
- 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 +2 -0
- package/dist/services/actionflow/components/schedule_create.js.map +1 -1
- package/dist/services/actionflow/components/time_batch_trigger.js +1 -1
- package/dist/services/actionflow/components/time_batch_trigger.js.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.js +6 -2
- package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
- package/dist/services/actionflow/context_preflight.d.ts +5 -0
- package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
- package/dist/services/actionflow/context_preflight.js +186 -35
- package/dist/services/actionflow/context_preflight.js.map +1 -1
- package/dist/services/actionflow/filter_rules.d.ts.map +1 -1
- package/dist/services/actionflow/filter_rules.js +9 -8
- package/dist/services/actionflow/filter_rules.js.map +1 -1
- package/dist/services/actionflow/form_source.d.ts +2 -0
- package/dist/services/actionflow/form_source.d.ts.map +1 -1
- package/dist/services/actionflow/form_source.js +8 -0
- package/dist/services/actionflow/form_source.js.map +1 -1
- package/dist/services/actionflow/formula_service.d.ts +2 -1
- package/dist/services/actionflow/formula_service.d.ts.map +1 -1
- package/dist/services/actionflow/formula_service.js +69 -34
- package/dist/services/actionflow/formula_service.js.map +1 -1
- package/dist/services/actionflow/logicflow_source.d.ts +5 -0
- package/dist/services/actionflow/logicflow_source.d.ts.map +1 -0
- package/dist/services/actionflow/logicflow_source.js +15 -0
- package/dist/services/actionflow/logicflow_source.js.map +1 -0
- package/dist/services/actionflow/preflight_service.d.ts +15 -0
- package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
- package/dist/services/actionflow/preflight_service.js +561 -29
- package/dist/services/actionflow/preflight_service.js.map +1 -1
- package/dist/services/actionflow/runtime_metadata.d.ts +8 -0
- package/dist/services/actionflow/runtime_metadata.d.ts.map +1 -1
- package/dist/services/actionflow/runtime_metadata.js +25 -0
- package/dist/services/actionflow/runtime_metadata.js.map +1 -1
- package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/workflow_compiler.js +75 -23
- package/dist/services/actionflow/workflow_compiler.js.map +1 -1
- package/dist/services/actionflow/workflow_source.d.ts +2 -0
- package/dist/services/actionflow/workflow_source.d.ts.map +1 -1
- package/dist/services/actionflow/workflow_source.js +7 -0
- package/dist/services/actionflow/workflow_source.js.map +1 -1
- package/dist/services/auth-resp-condition.d.ts +7 -3
- package/dist/services/auth-resp-condition.d.ts.map +1 -1
- package/dist/services/auth-resp-condition.js +58 -63
- package/dist/services/auth-resp-condition.js.map +1 -1
- package/dist/services/browser.d.ts +5 -0
- package/dist/services/browser.d.ts.map +1 -1
- package/dist/services/browser.js +16 -4
- package/dist/services/browser.js.map +1 -1
- package/dist/services/condition-rules.d.ts +2 -30
- package/dist/services/condition-rules.d.ts.map +1 -1
- package/dist/services/condition-rules.js +3 -219
- package/dist/services/condition-rules.js.map +1 -1
- package/dist/services/designer-dataset.d.ts +45 -0
- package/dist/services/designer-dataset.d.ts.map +1 -0
- package/dist/services/designer-dataset.js +156 -0
- package/dist/services/designer-dataset.js.map +1 -0
- package/dist/services/form-association.d.ts +7 -0
- package/dist/services/form-association.d.ts.map +1 -1
- package/dist/services/form-association.js +22 -1
- package/dist/services/form-association.js.map +1 -1
- package/dist/services/form-code.d.ts +53 -0
- package/dist/services/form-code.d.ts.map +1 -0
- package/dist/services/form-code.js +370 -0
- package/dist/services/form-code.js.map +1 -0
- package/dist/services/form-create.d.ts +20 -0
- package/dist/services/form-create.d.ts.map +1 -1
- package/dist/services/form-create.js +73 -1
- package/dist/services/form-create.js.map +1 -1
- package/dist/services/form-field-build.d.ts +1 -1
- package/dist/services/form-field-build.d.ts.map +1 -1
- package/dist/services/form-field-build.js +20 -1
- package/dist/services/form-field-build.js.map +1 -1
- package/dist/services/form-field-drop.d.ts +2 -0
- package/dist/services/form-field-drop.d.ts.map +1 -1
- package/dist/services/form-field-drop.js +2 -0
- package/dist/services/form-field-drop.js.map +1 -1
- package/dist/services/form-layout-detail-insert.d.ts +58 -0
- package/dist/services/form-layout-detail-insert.d.ts.map +1 -0
- package/dist/services/form-layout-detail-insert.js +293 -0
- package/dist/services/form-layout-detail-insert.js.map +1 -0
- package/dist/services/form-layout-insert.d.ts.map +1 -1
- package/dist/services/form-layout-insert.js +34 -2
- package/dist/services/form-layout-insert.js.map +1 -1
- package/dist/services/form-layout-source/compile.d.ts.map +1 -1
- package/dist/services/form-layout-source/compile.js +11 -4
- package/dist/services/form-layout-source/compile.js.map +1 -1
- package/dist/services/form-layout-template-advanced.d.ts +330 -0
- package/dist/services/form-layout-template-advanced.d.ts.map +1 -0
- package/dist/services/form-layout-template-advanced.js +1437 -0
- package/dist/services/form-layout-template-advanced.js.map +1 -0
- package/dist/services/form-layout-template-easy.d.ts +34 -0
- package/dist/services/form-layout-template-easy.d.ts.map +1 -0
- package/dist/services/form-layout-template-easy.js +159 -0
- package/dist/services/form-layout-template-easy.js.map +1 -0
- package/dist/services/form-layout-template-flow.d.ts +23 -0
- package/dist/services/form-layout-template-flow.d.ts.map +1 -0
- package/dist/services/form-layout-template-flow.js +99 -0
- package/dist/services/form-layout-template-flow.js.map +1 -0
- package/dist/services/form-linkage-condition.d.ts +15 -0
- package/dist/services/form-linkage-condition.d.ts.map +1 -1
- package/dist/services/form-linkage-condition.js +19 -10
- package/dist/services/form-linkage-condition.js.map +1 -1
- package/dist/services/form-permission-archive.d.ts +23 -1
- package/dist/services/form-permission-archive.d.ts.map +1 -1
- package/dist/services/form-permission-archive.js +54 -2
- package/dist/services/form-permission-archive.js.map +1 -1
- package/dist/services/form-physical-table.d.ts +10 -0
- package/dist/services/form-physical-table.d.ts.map +1 -1
- package/dist/services/form-physical-table.js +20 -0
- package/dist/services/form-physical-table.js.map +1 -1
- package/dist/services/form-sub-detail.d.ts +25 -0
- package/dist/services/form-sub-detail.d.ts.map +1 -1
- package/dist/services/form-sub-detail.js +64 -0
- package/dist/services/form-sub-detail.js.map +1 -1
- package/dist/services/form-view-linkage-functions.d.ts +19 -0
- package/dist/services/form-view-linkage-functions.d.ts.map +1 -0
- package/dist/services/form-view-linkage-functions.js +90 -0
- package/dist/services/form-view-linkage-functions.js.map +1 -0
- package/dist/services/matrix-condition.d.ts +32 -1
- package/dist/services/matrix-condition.d.ts.map +1 -1
- package/dist/services/matrix-condition.js +169 -6
- package/dist/services/matrix-condition.js.map +1 -1
- package/dist/services/menu-catalog.d.ts +24 -1
- package/dist/services/menu-catalog.d.ts.map +1 -1
- package/dist/services/menu-catalog.js +49 -2
- package/dist/services/menu-catalog.js.map +1 -1
- package/dist/services/workflow-base-settings.d.ts +117 -0
- package/dist/services/workflow-base-settings.d.ts.map +1 -0
- package/dist/services/workflow-base-settings.js +504 -0
- package/dist/services/workflow-base-settings.js.map +1 -0
- package/dist/services/workflow-condition-core.d.ts +48 -0
- package/dist/services/workflow-condition-core.d.ts.map +1 -0
- package/dist/services/workflow-condition-core.js +316 -0
- package/dist/services/workflow-condition-core.js.map +1 -0
- package/dist/services/workflow-context.d.ts +10 -0
- package/dist/services/workflow-context.d.ts.map +1 -0
- package/dist/services/workflow-context.js +15 -0
- package/dist/services/workflow-context.js.map +1 -0
- package/dist/services/workflow-export.d.ts +80 -0
- package/dist/services/workflow-export.d.ts.map +1 -0
- package/dist/services/workflow-export.js +150 -0
- package/dist/services/workflow-export.js.map +1 -0
- package/dist/services/workflow-field-permission-route.d.ts +75 -0
- package/dist/services/workflow-field-permission-route.d.ts.map +1 -0
- package/dist/services/workflow-field-permission-route.js +52 -0
- package/dist/services/workflow-field-permission-route.js.map +1 -0
- package/dist/services/workflow-field-permission.d.ts +18 -0
- package/dist/services/workflow-field-permission.d.ts.map +1 -0
- package/dist/services/workflow-field-permission.js +40 -0
- package/dist/services/workflow-field-permission.js.map +1 -0
- package/dist/services/workflow-node-layout.d.ts +11 -10
- package/dist/services/workflow-node-layout.d.ts.map +1 -1
- package/dist/services/workflow-node-layout.js +24 -62
- package/dist/services/workflow-node-layout.js.map +1 -1
- package/dist/services/workflow-operator-batch-condition.d.ts +23 -0
- package/dist/services/workflow-operator-batch-condition.d.ts.map +1 -0
- package/dist/services/workflow-operator-batch-condition.js +56 -0
- package/dist/services/workflow-operator-batch-condition.js.map +1 -0
- package/dist/services/workflow-operator.d.ts +12 -5
- package/dist/services/workflow-operator.d.ts.map +1 -1
- package/dist/services/workflow-operator.js +41 -16
- package/dist/services/workflow-operator.js.map +1 -1
- package/package.json +1 -1
- package/skill-docs/SKILL.md +155 -290
- package/skill-docs/_catalog.md +12 -3
- package/skill-docs/actionflows/references/components/document/GetDocumentInfo.md +17 -17
- package/skill-docs/actionflows/references/components/logic/LogicFlowSet.md +23 -17
- package/skill-docs/assets/form-template/style-templates-advanced-base-example.json +1420 -0
- package/skill-docs/assets/form-template/style-templates-advanced-base.css +33 -0
- package/skill-docs/assets/form-template/style-templates-advanced-blue-crystal-example.json +1094 -0
- package/skill-docs/assets/form-template/style-templates-advanced-document-example.json +1251 -0
- package/skill-docs/assets/form-template/style-templates-advanced-grid-example.json +39 -0
- package/skill-docs/assets/form-template/style-templates-advanced-page-example.json +38 -0
- package/skill-docs/assets/form-template/style-templates-advanced-placements-example.json +30 -0
- package/skill-docs/assets/form-template/style-templates-advanced-standard-example.json +53 -0
- package/skill-docs/assets/form-template/style-templates-advanced-structure-example.json +25 -0
- package/skill-docs/assets/form-template/style-templates-advanced-table-example.json +1420 -0
- package/skill-docs/references/code-block/guide-code-block.md +141 -0
- package/skill-docs/references/code-block/guide-layout-css.md +107 -0
- package/skill-docs/references/code-block/ref-controls.md +60 -0
- package/skill-docs/references/code-block/ref-coverage.md +32 -0
- package/skill-docs/references/code-block/ref-details.md +57 -0
- package/skill-docs/references/code-block/ref-events-validation.md +42 -0
- package/skill-docs/references/code-block/ref-foundations-fields.md +56 -0
- package/skill-docs/references/code-block/ref-recipes.md +164 -0
- package/skill-docs/references/code-block/ref-troubleshooting.md +49 -0
- package/skill-docs/references/code-block/ref-ui-global.md +47 -0
- package/skill-docs/references/coding/guide-page-code.md +2 -0
- package/skill-docs/references/coding/ref-compile-rules.md +2 -0
- package/skill-docs/references/common/capability-boundaries.md +15 -0
- package/skill-docs/references/common/guide-install.md +44 -0
- package/skill-docs/references/common/guide-plan-template.md +2 -1
- package/skill-docs/references/common/map.md +11 -1
- package/skill-docs/references/common/ref-cli-commands.md +689 -648
- package/skill-docs/references/ebuilder-designer/guide-designer-factory.md +8 -4
- package/skill-docs/references/form/form-template/style-templates-advanced-css-guide.md +167 -0
- package/skill-docs/references/form/form-template/style-templates-advanced.md +315 -0
- package/skill-docs/references/form/form-template/style-templates-easy.md +55 -0
- package/skill-docs/references/form/form-template/style-templates-flow.md +27 -0
- package/skill-docs/references/form/form-template/style-templates.md +29 -0
- package/skill-docs/references/form/guide-browser-definition.md +148 -0
- package/skill-docs/references/form/guide-create-form.md +258 -250
- package/skill-docs/references/form/guide-field-linkage.md +56 -14
- package/skill-docs/references/form/guide-form-archive-permission.md +29 -6
- package/skill-docs/references/form/guide-form-formula-functions.md +11 -0
- package/skill-docs/references/form/guide-form-layout-incremental.md +28 -0
- package/skill-docs/references/form/guide-form-layout-planning.md +11 -0
- package/skill-docs/references/form/guide-form-layout-source.md +4 -0
- package/skill-docs/references/form/guide-form-linkage.md +295 -269
- package/skill-docs/references/form/guide-form-physical-table.md +2 -0
- package/skill-docs/references/form/guide-form-view.md +3 -0
- package/skill-docs/references/form/ref-form-fields.md +301 -293
- package/skill-docs/references/form/ref-list-filter-date-params.md +83 -0
- package/skill-docs/references/menu/system-menus.md +12 -0
- package/skill-docs/references/workflow/condition-core-contract.md +63 -0
- package/skill-docs/references/workflow/guide-base-auth-share-remind.md +126 -0
- package/skill-docs/references/workflow/guide-workflow-condition.md +476 -447
- package/skill-docs/references/workflow/guide-workflow-node-layout.md +6 -0
- package/skill-docs/references/workflow/guide-workflow.md +29 -3
- package/skill-docs/references/form/style-templates.md +0 -97
|
@@ -0,0 +1,504 @@
|
|
|
1
|
+
import { resolveFieldPermissionRoute } from './workflow-field-permission-route.js';
|
|
2
|
+
import { compileWorkflowCondition, persistWorkflowCondition } from './workflow-condition-core.js';
|
|
3
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
4
|
+
import { id } from './workflow-function-management.js';
|
|
5
|
+
import { OpinionSettings, booleanValue } from './workflow-opinion-settings.js';
|
|
6
|
+
export const P = '/api/bs/workflow/pathdef';
|
|
7
|
+
export const fields = {
|
|
8
|
+
authset: ['maintenance', 'statistics', 'statisticsExport', 'containSubDept'],
|
|
9
|
+
shareset: ['defSharerCanViewComment', 'allowAddNoDefShare', 'sendRemindTiming'],
|
|
10
|
+
remind: ['remindType', 'isCustomContent', 'forceEndReceiver', 'errRemindCustom', 'errReminder'],
|
|
11
|
+
sharing: ['defaultShareType', 'commonTiming', 'commonMultiNode', 'shareUsers'],
|
|
12
|
+
sysRemind: ['sysRemindScope', 'sysArchiveNoRemind', 'sysCcNoRemind', 'messageSenderCustom', 'messageSenderType'],
|
|
13
|
+
emailAndSmsRemind: ['remindScope', 'defaultRemindType', 'archiveNoRemind', 'ccNoRemind', 'chooseReminder', 'alterNodesType', 'alterNodesBrowser'],
|
|
14
|
+
};
|
|
15
|
+
const routes = { authset: ['authSet/getEditForm', 'authSet/editForm'], shareset: ['ShareConfig/getForm', 'ShareConfig/saveConfig'], remind: ['baseSet/getRemindConfigForm', 'baseSet/saveRemindConfigForm'] };
|
|
16
|
+
export function keys(p, allowed) {
|
|
17
|
+
if (!p || typeof p !== 'object' || Array.isArray(p))
|
|
18
|
+
throw Error('设置必须为 JSON 对象');
|
|
19
|
+
for (const k of Object.keys(p))
|
|
20
|
+
if (!allowed.includes(k))
|
|
21
|
+
throw Error(`未知设置项 ${k};允许:${allowed.join(', ')}`);
|
|
22
|
+
}
|
|
23
|
+
export function formOf(v) { if (!v?.data || !v?.items)
|
|
24
|
+
throw Error('服务端没有返回配置表单/默认值,停止写入'); return v; }
|
|
25
|
+
export function channel(v) { if (v !== 'sysRemind' && v !== 'emailAndSmsRemind')
|
|
26
|
+
throw Error('渠道必须为 sysRemind 或 emailAndSmsRemind'); return v; }
|
|
27
|
+
const scalar = (v) => String(Array.isArray(v) ? v[0] ?? '' : v ?? '');
|
|
28
|
+
export function enumeration(v, item, k) {
|
|
29
|
+
if (Array.isArray(v) || v === null || typeof v === 'object')
|
|
30
|
+
throw Error(`${k} 必须为单个选项`);
|
|
31
|
+
const opts = item.options ?? item.data;
|
|
32
|
+
if (!Array.isArray(opts) || !opts.length)
|
|
33
|
+
throw Error(`${k} 缺少服务端选项`);
|
|
34
|
+
const found = opts.filter(o => !o.disabled && (String(o.id) === String(v) || o.content === v));
|
|
35
|
+
if (found.length !== 1)
|
|
36
|
+
throw Error(`${k} 无效;允许:${opts.filter(o => !o.disabled).map(o => `${o.id}=${o.content}`).join(', ')}`);
|
|
37
|
+
return String(found[0].id);
|
|
38
|
+
}
|
|
39
|
+
/** Compare editable semantics without dropping typed organization identities or nested values. */
|
|
40
|
+
function comparable(v) {
|
|
41
|
+
if (Array.isArray(v))
|
|
42
|
+
return v.map(comparable).sort((a, b) => JSON.stringify(a).localeCompare(JSON.stringify(b)));
|
|
43
|
+
if (v && typeof v === 'object') {
|
|
44
|
+
if (v._entityType)
|
|
45
|
+
return { type: v._entityType, id: String(v.bizId ?? v.id), ...(v.virtualType !== undefined ? { virtualType: v.virtualType } : {}) };
|
|
46
|
+
if (v.id !== undefined && (v.content !== undefined || v.name !== undefined))
|
|
47
|
+
return String(v.id);
|
|
48
|
+
return Object.fromEntries(Object.keys(v).sort().map(k => [k, comparable(v[k])]));
|
|
49
|
+
}
|
|
50
|
+
if (typeof v === 'boolean')
|
|
51
|
+
return v ? '1' : '0';
|
|
52
|
+
return v == null ? v : String(v);
|
|
53
|
+
}
|
|
54
|
+
export function verify(expected, actual, ks) {
|
|
55
|
+
const bad = ks.filter(k => k in expected && !isDeepStrictEqual(comparable(expected[k]), comparable(actual[k])));
|
|
56
|
+
if (bad.length)
|
|
57
|
+
throw Error(`保存已发出,回读不一致:${bad.join(', ')};请查询当前状态,勿直接重试`);
|
|
58
|
+
}
|
|
59
|
+
export function normalized(f) {
|
|
60
|
+
const d = structuredClone(f.data);
|
|
61
|
+
for (const [k, i] of Object.entries(f.items))
|
|
62
|
+
if (k in d) {
|
|
63
|
+
if (i.itemType === 'SWITCH')
|
|
64
|
+
d[k] = booleanValue(d[k]);
|
|
65
|
+
else if (['SELECT', 'RADIO'].includes(i.itemType) && !i.multiple)
|
|
66
|
+
d[k] = scalar(d[k]);
|
|
67
|
+
}
|
|
68
|
+
return d;
|
|
69
|
+
}
|
|
70
|
+
export function wire(f, d) {
|
|
71
|
+
const out = structuredClone(d);
|
|
72
|
+
for (const [k, i] of Object.entries(f.items))
|
|
73
|
+
if (k in out && i.itemType === 'SWITCH')
|
|
74
|
+
out[k] = booleanValue(out[k]) ? 1 : 0;
|
|
75
|
+
return out;
|
|
76
|
+
}
|
|
77
|
+
export class BaseSettings extends OpinionSettings {
|
|
78
|
+
constructor(client, base) { super(client, base); }
|
|
79
|
+
async post(path, payload) { const d = await super.post(path, payload); if (d?.success === false || d?.hasAuth === false || d?.result === false)
|
|
80
|
+
throw Error(`${path} 业务失败`); return d; }
|
|
81
|
+
async form(kind, w) {
|
|
82
|
+
const f = formOf(await this.get(`${P}/${routes[kind][0]}`, { workflowId: id(w), ...(kind === 'authset' ? { src: 'baseSet' } : kind === 'shareset' ? { belongType: 1 } : {}) }));
|
|
83
|
+
if (kind === 'authset') {
|
|
84
|
+
if (f.customParameters?.containSubDept === undefined)
|
|
85
|
+
throw Error('缺少包含下级部门配置');
|
|
86
|
+
f.data.containSubDept = f.customParameters.containSubDept;
|
|
87
|
+
f.items.containSubDept = { itemType: 'SWITCH' };
|
|
88
|
+
}
|
|
89
|
+
if (kind === 'remind' && 'isCustomContent' in f.data)
|
|
90
|
+
f.items.isCustomContent = { itemType: 'SWITCH' };
|
|
91
|
+
return f;
|
|
92
|
+
}
|
|
93
|
+
async orgValues(item, input, k) {
|
|
94
|
+
if (!Array.isArray(input))
|
|
95
|
+
throw Error(`${k} 必须为组织对象数组;清空用 []`);
|
|
96
|
+
const bean = item.typesBrowserBean ?? item.commonParams;
|
|
97
|
+
if (bean?.type !== 'multiOrgTypesBrowser')
|
|
98
|
+
throw Error(`${k} 不支持的组织浏览器`);
|
|
99
|
+
const allowed = bean.combinationParams?.fromRemindSet ? ['user', 'role', 'employeeManager'] : ['user', 'dept', 'subcompany', 'group', 'role', 'all'];
|
|
100
|
+
const seen = new Set(), out = [];
|
|
101
|
+
for (const v of input) {
|
|
102
|
+
if (!v || typeof v !== 'object' || !allowed.includes(v._entityType))
|
|
103
|
+
throw Error(`${k} 每项需有 _entityType 和字符串 id;类型:${allowed.join(', ')}`);
|
|
104
|
+
const type = v._entityType, key = type === 'all' ? '0' : id(v.bizId ?? v.id);
|
|
105
|
+
if (seen.has(`${type}:${key}`))
|
|
106
|
+
throw Error(`${k} 组织对象重复`);
|
|
107
|
+
seen.add(`${type}:${key}`);
|
|
108
|
+
if (type === 'all') {
|
|
109
|
+
out.push({ id: '0', bizId: '0', name: '所有人', _entityType: 'all' });
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
const browserType = { user: 'resource', dept: 'department', subcompany: 'subcompany', group: 'channel', role: 'role', employeeManager: 'employeeManager' };
|
|
113
|
+
const mod = type === 'employeeManager' ? 'auth' : 'workflow/pathdef';
|
|
114
|
+
const d = await this.post(`/api/${mod}/common/browser/destData/${browserType[type]}`, { ...bean.combinationParams, selectIds: key, browserMultiple: true });
|
|
115
|
+
const rows = Array.isArray(d) ? d : d?.data;
|
|
116
|
+
const matches = Array.isArray(rows) ? rows.filter(r => String(r.id ?? r.bizId) === key && !r.isDelete) : [];
|
|
117
|
+
if (matches.length !== 1)
|
|
118
|
+
throw Error(`${k} 无法验证组织对象 ${type}:${key}`);
|
|
119
|
+
out.push({ ...matches[0], ...v, id: key, bizId: key, _entityType: type, name: matches[0].name ?? matches[0].content });
|
|
120
|
+
}
|
|
121
|
+
return out;
|
|
122
|
+
}
|
|
123
|
+
async patch(f, p, allowed) {
|
|
124
|
+
keys(p, allowed);
|
|
125
|
+
const next = normalized(f);
|
|
126
|
+
for (const [k, v] of Object.entries(p)) {
|
|
127
|
+
const item = f.items[k];
|
|
128
|
+
if (!item || item.disable || item.disabled || item.readOnly)
|
|
129
|
+
throw Error(`${k} 当前环境不可编辑`);
|
|
130
|
+
if (item.itemType === 'SWITCH')
|
|
131
|
+
next[k] = booleanValue(v);
|
|
132
|
+
else if (item.itemType === 'BROWSER')
|
|
133
|
+
next[k] = await this.browserValues(f, k, v);
|
|
134
|
+
else if (item.itemType === 'TYPESBROWSER')
|
|
135
|
+
next[k] = await this.orgValues(item, v, k);
|
|
136
|
+
else if (item.itemType === 'CHECKBOX' || (['SELECT', 'RADIO'].includes(item.itemType) && item.multiple)) {
|
|
137
|
+
if (!Array.isArray(v))
|
|
138
|
+
throw Error(`${k} 必须为数组`);
|
|
139
|
+
next[k] = v.map(x => enumeration(x, item, k));
|
|
140
|
+
if (new Set(next[k]).size !== next[k].length)
|
|
141
|
+
throw Error(`${k} 选项重复`);
|
|
142
|
+
}
|
|
143
|
+
else if (['SELECT', 'RADIO'].includes(item.itemType))
|
|
144
|
+
next[k] = enumeration(v, item, k);
|
|
145
|
+
else
|
|
146
|
+
throw Error(`${k} 请使用对应子配置命令`);
|
|
147
|
+
}
|
|
148
|
+
return next;
|
|
149
|
+
}
|
|
150
|
+
async save(kind, w, p) {
|
|
151
|
+
keys(p, fields[kind]);
|
|
152
|
+
const f = await this.form(kind, w), before = normalized(f), next = await this.patch(f, p, fields[kind]);
|
|
153
|
+
const payload = { ...wire(f, next), workflowId: w, ...(kind === 'authset' ? { src: 'baseSet' } : {}) };
|
|
154
|
+
if (kind === 'remind') {
|
|
155
|
+
payload.errRemindType = scalar(next.errRemindType);
|
|
156
|
+
payload.isCustomContent = booleanValue(next.isCustomContent);
|
|
157
|
+
payload.errRemindCustom = booleanValue(next.errRemindCustom);
|
|
158
|
+
}
|
|
159
|
+
await this.post(`${P}/${routes[kind][1]}`, payload);
|
|
160
|
+
const after = normalized(await this.form(kind, w));
|
|
161
|
+
verify(next, after, fields[kind]);
|
|
162
|
+
return { workflowId: w, before, after, verified: true };
|
|
163
|
+
}
|
|
164
|
+
async sharing(w) {
|
|
165
|
+
const d = await this.get(`${P}/ShareConfig/getConditionForm`, { workflowId: id(w), belongType: 1 });
|
|
166
|
+
formOf(d?.form);
|
|
167
|
+
if (!Array.isArray(d.shareConditionTable?.data))
|
|
168
|
+
throw Error('条件共享列表结构异常');
|
|
169
|
+
if (d.shareConditionTable.total !== undefined && Number(d.shareConditionTable.total) > d.shareConditionTable.data.length)
|
|
170
|
+
throw Error('条件共享列表不完整,停止整表保存');
|
|
171
|
+
return d;
|
|
172
|
+
}
|
|
173
|
+
async saveSharing(w, p) {
|
|
174
|
+
keys(p, fields.sharing);
|
|
175
|
+
const before = await this.sharing(w), next = await this.patch(before.form, p, fields.sharing);
|
|
176
|
+
if (next.defaultShareType === '0' && next.commonTiming !== '0' && !next.commonMultiNode?.length)
|
|
177
|
+
throw Error('到达/离开节点共享须指定 commonMultiNode');
|
|
178
|
+
await this.post(`${P}/ShareConfig/saveConfigCondition`, { ...wire(before.form, next), workflowId: w, conditions: before.shareConditionTable.data, deleteRows: [] });
|
|
179
|
+
const after = await this.sharing(w);
|
|
180
|
+
verify(next, normalized(after.form), fields.sharing);
|
|
181
|
+
verify({ rows: before.shareConditionTable.data }, { rows: after.shareConditionTable.data }, ['rows']);
|
|
182
|
+
return { workflowId: w, before: normalized(before.form), after: normalized(after.form), verified: true };
|
|
183
|
+
}
|
|
184
|
+
async saveShareRow(w, p, rowId) {
|
|
185
|
+
const allowed = ['condition', 'shareCondition', 'shareConditionUsers', 'shareTiming', 'shareMultiNode', 'isEnable'];
|
|
186
|
+
keys(p, allowed);
|
|
187
|
+
const before = await this.sharing(w), rows = before.shareConditionTable.data, items = before.shareConditionTable.formItemProps;
|
|
188
|
+
if (String(before.form.data.defaultShareType) !== '1')
|
|
189
|
+
throw Error('请先显式设置 defaultShareType:"1",再编辑条件共享行');
|
|
190
|
+
const old = rowId ? rows.find(r => String(r.id) === id(rowId)) : undefined;
|
|
191
|
+
if (rowId && !old)
|
|
192
|
+
throw Error('共享规则不属于此流程');
|
|
193
|
+
// Empty controls follow the frontend add-row model; scalar defaults come from the live column schema.
|
|
194
|
+
// pathset-base-shareset/store.ts:newAddTableList supplies isEnable=true when the server omits it.
|
|
195
|
+
const initial = { id: '-1', shareCondition: {}, shareConditionUsers: [], shareMultiNode: [], isEnable: true };
|
|
196
|
+
for (const [k, i] of Object.entries(items))
|
|
197
|
+
if (i.defaultValue !== undefined)
|
|
198
|
+
initial[k] = i.defaultValue?.id ?? i.defaultValue;
|
|
199
|
+
const { shareCondition, condition, ...rest } = p;
|
|
200
|
+
if (condition !== undefined && shareCondition !== undefined)
|
|
201
|
+
throw Error('condition 与 shareCondition 不能同时传入');
|
|
202
|
+
const next = await this.patch({ data: old ?? initial, items }, rest, allowed);
|
|
203
|
+
if (shareCondition !== undefined) {
|
|
204
|
+
keys(shareCondition, ['conditionKey', 'conditionCn', 'source']);
|
|
205
|
+
if (Object.keys(shareCondition).length) {
|
|
206
|
+
const key = id(shareCondition.conditionKey);
|
|
207
|
+
if (!rows.some(r => String(r.shareCondition?.conditionKey) === key))
|
|
208
|
+
throw Error('只能复用本流程已有共享条件;新表达式请使用 condition.rules');
|
|
209
|
+
next.shareCondition = { ...shareCondition, conditionKey: key, source: 24 };
|
|
210
|
+
}
|
|
211
|
+
else
|
|
212
|
+
next.shareCondition = {};
|
|
213
|
+
}
|
|
214
|
+
if (!next.shareConditionUsers?.length || !next.shareMultiNode?.length)
|
|
215
|
+
throw Error('条件共享必须指定共享人和节点');
|
|
216
|
+
if (condition !== undefined)
|
|
217
|
+
next.shareCondition = await this.createShareCondition(w, condition, before.workflowName);
|
|
218
|
+
const updated = rowId ? rows.map(r => String(r.id) === rowId ? next : r) : [...rows, next];
|
|
219
|
+
await this.post(`${P}/ShareConfig/saveConfigCondition`, { ...before.form.data, workflowId: w, conditions: updated, deleteRows: [] });
|
|
220
|
+
const after = await this.sharing(w), list = after.shareConditionTable.data;
|
|
221
|
+
const added = rowId ? list.filter(r => String(r.id) === rowId) : list.filter(r => !rows.some(o => String(o.id) === String(r.id)));
|
|
222
|
+
if (added.length !== 1)
|
|
223
|
+
throw Error('保存后无法唯一定位共享行,请查询,勿重复新增');
|
|
224
|
+
verify(next, added[0], allowed.filter(k => k !== 'condition' && k !== 'shareCondition'));
|
|
225
|
+
if (String(next.shareCondition?.conditionKey ?? '0') !== String(added[0].shareCondition?.conditionKey ?? '0'))
|
|
226
|
+
throw Error('共享条件引用回读不一致');
|
|
227
|
+
verify(normalized(before.form), normalized(after.form), fields.sharing);
|
|
228
|
+
for (const r of rows)
|
|
229
|
+
if (String(r.id) !== rowId) {
|
|
230
|
+
const a = list.find(x => String(x.id) === String(r.id));
|
|
231
|
+
if (!a)
|
|
232
|
+
throw Error('原共享行丢失');
|
|
233
|
+
verify(r, a, allowed);
|
|
234
|
+
}
|
|
235
|
+
return { workflowId: w, ruleId: String(added[0].id), before: old, after: added[0], verified: true };
|
|
236
|
+
}
|
|
237
|
+
async shareCondition(w, rowId) {
|
|
238
|
+
const d = await this.sharing(w), row = d.shareConditionTable.data.find((r) => String(r.id) === id(rowId));
|
|
239
|
+
if (!row)
|
|
240
|
+
throw Error('共享行不属于此流程');
|
|
241
|
+
if (!row.shareCondition?.conditionKey)
|
|
242
|
+
return { condition: null, rules: [] };
|
|
243
|
+
const context = await this.post('/api/workflow/pathdef/rule/condition/getConditionSet', { ...row.shareCondition, source: 24, workflowId: w, needFormfield: true, readOnly: true });
|
|
244
|
+
const list = await this.post('/api/workflow/pathdef/rule/condition/getConditionList', { ...context, source: 24, workflowId: w, needFormfield: true, readOnly: true, current: 1, pageSize: 1000 });
|
|
245
|
+
if (!Array.isArray(list?.data) || Number(list.total ?? list.data.length) > list.data.length)
|
|
246
|
+
throw Error('条件列表不完整');
|
|
247
|
+
return { context, rules: list.data };
|
|
248
|
+
}
|
|
249
|
+
async createShareCondition(w, p, name) {
|
|
250
|
+
keys(p, ['rules', 'relation']);
|
|
251
|
+
const compiled = await compileWorkflowCondition(this.client, this.base, { workflowId: w, source: 24, sourceId: '-1' }, p.rules, p.relation ?? 'AND');
|
|
252
|
+
const saved = await persistWorkflowCondition(this.client, this.base, { workflowId: w, source: 24, conditionName: `默认共享条件 (${name})`, inheritRelation: p.relation === undefined }, compiled);
|
|
253
|
+
return { conditionKey: saved.conditionKey, conditionCn: saved.conditionCn, source: 24 };
|
|
254
|
+
}
|
|
255
|
+
async shareFields(w) {
|
|
256
|
+
const info = await this.get(`${P}/ShareConfig/getFieldPermissionInfo`, { workflowId: id(w) });
|
|
257
|
+
const route = await resolveFieldPermissionRoute(this.client, this.base, w, String(info.formId));
|
|
258
|
+
const endpoint = route.kind === 'ebuilder' ? '/api/ebuilder/flow/core/bridgeform/getFieldPermissionViewDataById' : '/api/workflow/core/bridgeform/getFieldPermissionViewDataById';
|
|
259
|
+
const d = await this.get(endpoint, { workflowId: w, formId: id(info.formId), permissionId: info.permissionId, nodeFormRelateId: '-1' });
|
|
260
|
+
if (!Array.isArray(d?.allFieldIds) || !Array.isArray(d?.fieldList))
|
|
261
|
+
throw Error('Incomplete legacy permission defaults/details');
|
|
262
|
+
let details = d.initPermissionDetails;
|
|
263
|
+
if (!Array.isArray(details)) {
|
|
264
|
+
if (!Array.isArray(d.readFieldIds) || !Array.isArray(d.writeFieldIds))
|
|
265
|
+
throw Error('Incomplete legacy read/write permissions');
|
|
266
|
+
const read = new Set(d.readFieldIds.map(String)), write = new Set(d.writeFieldIds.map(String));
|
|
267
|
+
details = [];
|
|
268
|
+
// Match the legacy WeaFieldPermission component's getPermissionDataCommon.
|
|
269
|
+
for (const field of d.fieldList) {
|
|
270
|
+
const fieldRead = read.has(String(field.id));
|
|
271
|
+
const fieldWrite = !['Paragraph', 'SubTableControl'].includes(field.componentKey) && write.has(String(field.id));
|
|
272
|
+
details.push({ fieldId: field.id, fieldRead, fieldWrite, delete: false });
|
|
273
|
+
if (['ComboSelect', 'DateInterval', 'MatrixComponent'].includes(field.componentKey) && Array.isArray(field.fields)) {
|
|
274
|
+
for (const child of field.fields)
|
|
275
|
+
details.push({ fieldId: child.id, fieldRead, fieldWrite, delete: false });
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
const configs = details.map((r) => ({ ...r, id: String(r.fieldId), name: d.fieldList.find((f) => String(f.id) === String(r.fieldId))?.title, display: r.fieldRead }));
|
|
280
|
+
if (d.allFieldIds.some((key) => !configs.some((r) => r.id === String(key))))
|
|
281
|
+
throw Error('Incomplete field permission details');
|
|
282
|
+
return { payload: { formId: String(info.formId), permissionId: String(info.permissionId) }, configs, renderer: 'legacy', route };
|
|
283
|
+
}
|
|
284
|
+
async saveShareFields(w, p) {
|
|
285
|
+
keys(p, ['fields']);
|
|
286
|
+
if (!Array.isArray(p.fields) || !p.fields.length)
|
|
287
|
+
throw Error('fields 必须为非空数组,每项为 {id或name,display}');
|
|
288
|
+
const before = await this.shareFields(w), configs = structuredClone(before.configs), flat = [];
|
|
289
|
+
const walk = (a) => { for (const r of a) {
|
|
290
|
+
flat.push(r);
|
|
291
|
+
if (r.children)
|
|
292
|
+
walk(r.children);
|
|
293
|
+
} };
|
|
294
|
+
walk(configs);
|
|
295
|
+
const seen = new Set();
|
|
296
|
+
for (const v of p.fields) {
|
|
297
|
+
keys(v, ['id', 'name', 'display']);
|
|
298
|
+
if (v.display === undefined)
|
|
299
|
+
throw Error('必须明确指定 display');
|
|
300
|
+
const matches = flat.filter(r => v.id !== undefined ? String(r.id) === String(v.id) : r.name === v.name);
|
|
301
|
+
if (matches.length !== 1 || matches[0].isDelete || matches[0].disabled?.display)
|
|
302
|
+
throw Error('字段不存在、名称不唯一或不可修改');
|
|
303
|
+
const row = matches[0];
|
|
304
|
+
if (seen.has(String(row.id)))
|
|
305
|
+
throw Error('重复字段');
|
|
306
|
+
seen.add(String(row.id));
|
|
307
|
+
row.display = booleanValue(v.display);
|
|
308
|
+
}
|
|
309
|
+
const permissionDetails = configs.map((r) => { const { display, id, name, ...rest } = r; return { ...rest, fieldRead: display }; });
|
|
310
|
+
await this.post('/api/workflow/core/form/formFieldPermission/saveNodeExtSet', { formId: before.payload.formId, share: true, nodeFormRelate: { workflowId: w }, fieldPermission: { id: before.payload.permissionId, formId: before.payload.formId, module: 'newworkflow', permissionDetails } });
|
|
311
|
+
const after = await this.shareFields(w), afterFlat = [];
|
|
312
|
+
const flatten = (a) => { for (const r of a) {
|
|
313
|
+
afterFlat.push(r);
|
|
314
|
+
if (r.children)
|
|
315
|
+
flatten(r.children);
|
|
316
|
+
} };
|
|
317
|
+
flatten(after.configs);
|
|
318
|
+
for (const r of flat) {
|
|
319
|
+
const a = afterFlat.find(x => String(x.id) === String(r.id));
|
|
320
|
+
if (!a)
|
|
321
|
+
throw Error('保存后缺少字段');
|
|
322
|
+
verify(r, a, ['display', 'readOnly', 'fieldWrite', 'required', 'disableEdit', 'singleRow']);
|
|
323
|
+
}
|
|
324
|
+
return { workflowId: w, permissionId: after.payload.permissionId, before: before.configs, after: after.configs, verified: true };
|
|
325
|
+
}
|
|
326
|
+
async shareSystemFields(w) {
|
|
327
|
+
const d = await this.get(`${P}/sysfield/getSysFieldPermission`, { workflowId: id(w), targetId: '-1', scene: 1, requestId: '-1' });
|
|
328
|
+
if (!Array.isArray(d?.data))
|
|
329
|
+
throw Error('系统字段权限列表格式异常');
|
|
330
|
+
return d;
|
|
331
|
+
}
|
|
332
|
+
async saveShareSystemFields(w, p) {
|
|
333
|
+
keys(p, ['fields']);
|
|
334
|
+
if (!Array.isArray(p.fields) || !p.fields.length)
|
|
335
|
+
throw Error('fields 必须为非空数组');
|
|
336
|
+
const before = await this.shareSystemFields(w), rows = structuredClone(before.data), seen = new Set();
|
|
337
|
+
for (const v of p.fields) {
|
|
338
|
+
keys(v, ['fieldType', 'isview']);
|
|
339
|
+
if (v.fieldType === undefined || v.isview === undefined)
|
|
340
|
+
throw Error('请指定 fieldType 与 isview');
|
|
341
|
+
const matches = rows.filter((r) => String(r.fieldType) === String(v.fieldType));
|
|
342
|
+
if (matches.length !== 1 || seen.has(String(v.fieldType)))
|
|
343
|
+
throw Error('系统字段不存在或重复');
|
|
344
|
+
seen.add(String(v.fieldType));
|
|
345
|
+
matches[0].isview = booleanValue(v.isview) ? 1 : 0;
|
|
346
|
+
}
|
|
347
|
+
await this.post(`${P}/sysfield/saveSysFieldPermission`, { workflowId: w, targetId: '-1', scene: 1, isSync: false, data: JSON.stringify(rows) });
|
|
348
|
+
const after = await this.shareSystemFields(w);
|
|
349
|
+
for (const r of rows) {
|
|
350
|
+
const a = after.data.find((x) => String(x.fieldType) === String(r.fieldType));
|
|
351
|
+
if (!a)
|
|
352
|
+
throw Error('系统字段丢失');
|
|
353
|
+
verify(r, a, ['isview', 'isedit', 'ismandatory']);
|
|
354
|
+
}
|
|
355
|
+
return { workflowId: w, before: before.data, after: after.data, verified: true };
|
|
356
|
+
}
|
|
357
|
+
async detail(w, src) { channel(src); const f = await this.form('remind', w); return formOf(f.customParameters?.[src === 'sysRemind' ? 'sysRemindForm' : 'emailAndSmsRemindForm']); }
|
|
358
|
+
async saveDetail(w, src, p) {
|
|
359
|
+
channel(src);
|
|
360
|
+
keys(p, fields[src]);
|
|
361
|
+
const main = await this.form('remind', w), custom = main.customParameters;
|
|
362
|
+
const f = formOf(custom[src === 'sysRemind' ? 'sysRemindForm' : 'emailAndSmsRemindForm']), next = await this.patch(f, p, fields[src]);
|
|
363
|
+
if ((next.sysRemindScope ?? next.remindScope) === '1' && !(await this.remindNodes(w, src)).length)
|
|
364
|
+
throw Error('指定节点模式须先新增节点提醒规则');
|
|
365
|
+
if (src === 'emailAndSmsRemind' && next.defaultRemindType?.some((x) => !main.data.remindType.includes(x)))
|
|
366
|
+
throw Error('默认提醒渠道超出已启用渠道');
|
|
367
|
+
const payload = { workflowId: w };
|
|
368
|
+
// The server can initialize both details together. Preserve the companion group explicitly.
|
|
369
|
+
for (const [key, val] of Object.entries(custom))
|
|
370
|
+
if (['sysRemindForm', 'emailAndSmsRemindForm'].includes(key))
|
|
371
|
+
payload[key] = wire(val, normalized(val));
|
|
372
|
+
payload[src === 'sysRemind' ? 'sysRemindForm' : 'emailAndSmsRemindForm'] = wire(f, next);
|
|
373
|
+
await this.post(`${P}/baseSet/saveRemindSetDetail`, payload);
|
|
374
|
+
const afterMain = await this.form('remind', w);
|
|
375
|
+
verify(normalized(main), normalized(afterMain), fields.remind);
|
|
376
|
+
for (const ch of ['sysRemind', 'emailAndSmsRemind']) {
|
|
377
|
+
const key = ch === 'sysRemind' ? 'sysRemindForm' : 'emailAndSmsRemindForm';
|
|
378
|
+
verify(ch === src ? next : normalized(custom[key]), normalized(afterMain.customParameters[key]), fields[ch]);
|
|
379
|
+
}
|
|
380
|
+
return { workflowId: w, src, before: normalized(f), after: normalized(afterMain.customParameters[src === 'sysRemind' ? 'sysRemindForm' : 'emailAndSmsRemindForm']), verified: true };
|
|
381
|
+
}
|
|
382
|
+
async remindNodes(w, src) {
|
|
383
|
+
channel(src);
|
|
384
|
+
const d = await this.get(`${P}/baseSet/remindNodeSet/getRemindNodeSetConfig`, { workflowId: id(w), src });
|
|
385
|
+
if (!Array.isArray(d?.datas))
|
|
386
|
+
throw Error('节点提醒列表结构异常');
|
|
387
|
+
return d.datas;
|
|
388
|
+
}
|
|
389
|
+
async nodeDefaults(w, src) {
|
|
390
|
+
const main = await this.form('remind', w);
|
|
391
|
+
channel(src);
|
|
392
|
+
return formOf(await this.get(`${P}/baseSet/remindNodeSet/getAddRemindNodeSetForm`, { workflowId: w, src, remindType: main.data.remindType.join(',') }));
|
|
393
|
+
}
|
|
394
|
+
async saveRemindNode(w, src, p, rowId) {
|
|
395
|
+
channel(src);
|
|
396
|
+
keys(p, rowId ? ['reminders', 'ccNoRemind', 'remindContentType'] : ['alterNodesBrowser', 'remindType', 'ccNoRemind']);
|
|
397
|
+
const before = await this.remindNodes(w, src);
|
|
398
|
+
let next, wanted;
|
|
399
|
+
if (rowId) {
|
|
400
|
+
const old = before.find(r => String(r.id) === id(rowId));
|
|
401
|
+
if (!old)
|
|
402
|
+
throw Error('节点提醒规则不属于当前流程/渠道');
|
|
403
|
+
next = structuredClone(old);
|
|
404
|
+
wanted = [String(old.nodeId)];
|
|
405
|
+
if ('reminders' in p) {
|
|
406
|
+
if (!Array.isArray(p.reminders) || p.reminders.some((x) => !(src === 'sysRemind' ? ['2'] : ['0', '1']).includes(x)))
|
|
407
|
+
throw Error('reminders 渠道无效');
|
|
408
|
+
next.reminders = p.reminders;
|
|
409
|
+
}
|
|
410
|
+
if ('ccNoRemind' in p)
|
|
411
|
+
next.ccNoRemind = booleanValue(p.ccNoRemind) ? 1 : 0;
|
|
412
|
+
if ('remindContentType' in p) {
|
|
413
|
+
if (!['0', '1'].includes(String(p.remindContentType)))
|
|
414
|
+
throw Error('remindContentType 必须为 0默认/1自定义');
|
|
415
|
+
next.remindContentType = String(p.remindContentType);
|
|
416
|
+
}
|
|
417
|
+
await this.post(`${P}/baseSet/remindNodeSet/updateRemindNodeSetConfig`, { workflowId: w, src, wfpRemindNodeSetEntityList: [next] });
|
|
418
|
+
}
|
|
419
|
+
else {
|
|
420
|
+
const f = await this.nodeDefaults(w, src);
|
|
421
|
+
next = await this.patch(f, p, ['alterNodesBrowser', 'remindType', 'ccNoRemind']);
|
|
422
|
+
wanted = next.alterNodesBrowser.map((r) => String(r.id));
|
|
423
|
+
if (!wanted.length)
|
|
424
|
+
throw Error('须指定 alterNodesBrowser 节点');
|
|
425
|
+
if (before.some(r => wanted.includes(String(r.nodeId))))
|
|
426
|
+
throw Error('节点提醒已存在,请按规则ID更新');
|
|
427
|
+
await this.post(`${P}/baseSet/remindNodeSet/batchAddRemindNodeSet`, { ...wire(f, next), workflowId: w, src, nodeId: wanted.join(','), remindType: next.remindType.join(',') });
|
|
428
|
+
}
|
|
429
|
+
const after = await this.remindNodes(w, src);
|
|
430
|
+
const targets = after.filter(r => wanted.includes(String(r.nodeId)));
|
|
431
|
+
if (targets.length !== wanted.length)
|
|
432
|
+
throw Error('节点提醒保存后数量不一致');
|
|
433
|
+
for (const r of targets)
|
|
434
|
+
verify(rowId ? next : { reminders: next.remindType, ccNoRemind: next.ccNoRemind }, r, ['reminders', 'ccNoRemind', 'remindContentType']);
|
|
435
|
+
for (const r of before)
|
|
436
|
+
if (String(r.id) !== rowId) {
|
|
437
|
+
const a = after.find(x => String(x.id) === String(r.id));
|
|
438
|
+
if (!a)
|
|
439
|
+
throw Error('原节点提醒丢失');
|
|
440
|
+
verify(r, a, ['nodeId', 'reminders', 'ccNoRemind', 'remindContentType']);
|
|
441
|
+
}
|
|
442
|
+
return { workflowId: w, src, before, after, verified: true };
|
|
443
|
+
}
|
|
444
|
+
async smsTemplateAudit() {
|
|
445
|
+
const r = await this.client.get(this.base + `${P}/applyRemindset/needCheckSmsTemplate`);
|
|
446
|
+
// false is a valid capability response, unlike false from configuration save endpoints.
|
|
447
|
+
if (r?.code !== 200 || r.status === false || typeof r.data !== 'boolean')
|
|
448
|
+
throw Error('无法读取短信模板审核能力');
|
|
449
|
+
return r.data;
|
|
450
|
+
}
|
|
451
|
+
async templates(w, type, nodeId) {
|
|
452
|
+
id(w);
|
|
453
|
+
if (!['0', '1', '2'].includes(type))
|
|
454
|
+
throw Error('contentType 必须为 0短信/1邮件/2系统');
|
|
455
|
+
if (nodeId && !(await this.remindNodes(w, type === '2' ? 'sysRemind' : 'emailAndSmsRemind')).some(r => String(r.nodeId) === id(nodeId)))
|
|
456
|
+
throw Error('节点没有此渠道的提醒规则');
|
|
457
|
+
if (type === '0' && await this.smsTemplateAudit())
|
|
458
|
+
return { editable: false, effectiveScope: 'application', reason: '当前短信通道需审核,产品不支持工作流/节点自定义短信内容;请到应用设置-提醒内容设置-提醒内容默认设置配置全局模板', tableData: [], fields: [] };
|
|
459
|
+
const d = await this.post(`${P}/baseSet/getNodesRemindConfig`, { workflowId: w, contentType: type, scence: nodeId ? '1' : '0', nodeId: nodeId ?? '-1' });
|
|
460
|
+
if (!Array.isArray(d?.tableData) || !Array.isArray(d?.fields))
|
|
461
|
+
throw Error('模板响应结构异常');
|
|
462
|
+
return d;
|
|
463
|
+
}
|
|
464
|
+
async saveTemplate(w, type, event, p, nodeId) {
|
|
465
|
+
const allowed = type === '1' ? ['title', 'content', 'isFormData', 'isSignData', 'isAttachmentData'] : ['content'];
|
|
466
|
+
keys(p, allowed);
|
|
467
|
+
if (type === '0' && await this.smsTemplateAudit())
|
|
468
|
+
throw Error('当前租户使用需审核的短信服务;产品仅支持全局默认短信模板,不支持工作流或节点自定义');
|
|
469
|
+
const main = await this.form('remind', w);
|
|
470
|
+
if (!nodeId && !booleanValue(main.data.isCustomContent))
|
|
471
|
+
throw Error('保存流程模板会自动开启自定义内容,请先显式设置 remind update --data \'{"isCustomContent":true}\'');
|
|
472
|
+
const before = await this.templates(w, type, nodeId), rows = structuredClone(before.tableData), matches = rows.filter(r => String(r.remindType) === event);
|
|
473
|
+
if (matches.length !== 1)
|
|
474
|
+
throw Error('提醒事件不存在或不唯一,请 templates get 获取 remindType');
|
|
475
|
+
const row = matches[0];
|
|
476
|
+
for (const [k, v] of Object.entries(p)) {
|
|
477
|
+
if (k.startsWith('is')) {
|
|
478
|
+
if (!before['show' + k[0].toUpperCase() + k.slice(1)])
|
|
479
|
+
throw Error(`${k} 当前环境不可用`);
|
|
480
|
+
row[k] = booleanValue(v) ? 1 : 0;
|
|
481
|
+
}
|
|
482
|
+
else {
|
|
483
|
+
if (typeof v !== 'string')
|
|
484
|
+
throw Error(`${k} 必须为字符串`);
|
|
485
|
+
const codes = new Set(before.fields.map((f) => String(f.code)));
|
|
486
|
+
for (const m of v.matchAll(/\[(-?\d+)\]/g))
|
|
487
|
+
if (!codes.has(m[1]) || (before.hideSysFields?.[event] ?? []).includes(m[1]))
|
|
488
|
+
throw Error(`${k} 包含当前事件不允许的字段 ${m[1]}`);
|
|
489
|
+
row[k] = v;
|
|
490
|
+
}
|
|
491
|
+
}
|
|
492
|
+
await this.post(`${P}/baseSet/updateDefRemindConfig`, { workflowId: w, contentType: type, scence: nodeId ? '1' : '0', nodeId: nodeId ?? '-1', wfpRemindContents: rows, wfpRemindContentLog: before.tableData });
|
|
493
|
+
const after = await this.templates(w, type, nodeId);
|
|
494
|
+
for (const r of rows) {
|
|
495
|
+
const a = after.tableData.find((x) => String(x.remindType) === String(r.remindType));
|
|
496
|
+
if (!a)
|
|
497
|
+
throw Error('模板回读缺少事件');
|
|
498
|
+
verify(r, a, allowed);
|
|
499
|
+
}
|
|
500
|
+
verify(normalized(main), normalized(await this.form('remind', w)), fields.remind);
|
|
501
|
+
return { workflowId: w, contentType: type, nodeId, before: before.tableData, after: after.tableData, verified: true };
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
//# sourceMappingURL=workflow-base-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-base-settings.js","sourceRoot":"","sources":["../../src/services/workflow-base-settings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export type ConditionClient = {
|
|
2
|
+
post(url: string, body: any): Promise<any>;
|
|
3
|
+
};
|
|
4
|
+
export type ConditionContext = {
|
|
5
|
+
workflowId: string;
|
|
6
|
+
source: number;
|
|
7
|
+
sourceId: string;
|
|
8
|
+
fields?: any[];
|
|
9
|
+
fieldParams?: Record<string, any>;
|
|
10
|
+
};
|
|
11
|
+
export type ConditionLeaf = {
|
|
12
|
+
source: 'form' | 'system' | 'variable';
|
|
13
|
+
field: string;
|
|
14
|
+
op: string;
|
|
15
|
+
value?: any;
|
|
16
|
+
upper?: any;
|
|
17
|
+
detail?: '任一' | '所有';
|
|
18
|
+
};
|
|
19
|
+
export type ConditionTree = ConditionLeaf | {
|
|
20
|
+
relation: 'AND' | 'OR';
|
|
21
|
+
rules: ConditionTree[];
|
|
22
|
+
};
|
|
23
|
+
export declare function conditionFamily(f: any): string;
|
|
24
|
+
export declare function parseConditionInput(input: any, relation?: string): ConditionTree;
|
|
25
|
+
export declare function compileWorkflowCondition(client: ConditionClient, base: string, ctx: ConditionContext, input: any, relation?: string): Promise<{
|
|
26
|
+
relation: any;
|
|
27
|
+
childrens: any;
|
|
28
|
+
}>;
|
|
29
|
+
/** Allocate a fresh condition set, then persist. Business adapters bind only after success.
|
|
30
|
+
* Never delete the previously bound condition before the replacement has been saved.
|
|
31
|
+
* sourceId=-1 is the platform's new/unbound context; discovery still uses the real business ID.
|
|
32
|
+
*/
|
|
33
|
+
export declare function persistWorkflowCondition(client: ConditionClient, base: string, ctx: {
|
|
34
|
+
workflowId: string;
|
|
35
|
+
source: number;
|
|
36
|
+
conditionName: string;
|
|
37
|
+
extra?: Record<string, any>;
|
|
38
|
+
inheritRelation?: boolean;
|
|
39
|
+
}, compiled: {
|
|
40
|
+
relation: number;
|
|
41
|
+
childrens: any[];
|
|
42
|
+
}): Promise<{
|
|
43
|
+
conditionKey: string;
|
|
44
|
+
conditionCn: any;
|
|
45
|
+
conditionId: any;
|
|
46
|
+
mapId: any;
|
|
47
|
+
}>;
|
|
48
|
+
//# sourceMappingURL=workflow-condition-core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-condition-core.d.ts","sourceRoot":"","sources":["../../src/services/workflow-condition-core.ts"],"names":[],"mappings":"AACA,MAAM,MAAM,eAAe,GAAG;IAC1B,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;CAC9C,CAAC;AACF,MAAM,MAAM,gBAAgB,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACrC,CAAC;AACF,MAAM,MAAM,aAAa,GAAG;IACxB,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,KAAK,CAAC,EAAE,GAAG,CAAC;IACZ,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACxB,CAAC;AACF,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG;IACxC,QAAQ,EAAE,KAAK,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,aAAa,EAAE,CAAC;CAC1B,CAAC;AASF,wBAAgB,eAAe,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,CAa9C;AAyBD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,SAAQ,GAAG,aAAa,CAqC/E;AACD,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,SAAQ;;;GA6LxI;AACD;;;GAGG;AACH,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;IACvF,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC5B,eAAe,CAAC,EAAE,OAAO,CAAC;CAC7B,EAAE,QAAQ,EAAE;IACT,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,GAAG,EAAE,CAAC;CACpB;;;;;GAWA"}
|