weaver-e10-builder 1.5.13 → 1.5.15
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-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 +53 -7
- 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 +7 -19
- 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 +143 -5
- 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-command.d.ts +4 -0
- package/dist/commands/workflow-base-command.d.ts.map +1 -0
- package/dist/commands/workflow-base-command.js +6 -0
- package/dist/commands/workflow-base-command.js.map +1 -0
- 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 +76 -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-function-settings.d.ts +3 -0
- package/dist/commands/workflow-function-settings.d.ts.map +1 -0
- package/dist/commands/workflow-function-settings.js +47 -0
- package/dist/commands/workflow-function-settings.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-setting.d.ts.map +1 -1
- package/dist/commands/workflow-setting.js +137 -406
- package/dist/commands/workflow-setting.js.map +1 -1
- 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 +18 -33
- 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.map +1 -1
- package/dist/services/actionflow/context_preflight.js +103 -6
- package/dist/services/actionflow/context_preflight.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.map +1 -1
- package/dist/services/actionflow/formula_service.js +35 -19
- 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 +558 -26
- 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 +50 -10
- 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-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-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-function-settings.d.ts +31 -0
- package/dist/services/workflow-function-settings.d.ts.map +1 -0
- package/dist/services/workflow-function-settings.js +191 -0
- package/dist/services/workflow-function-settings.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-sign-file-settings.d.ts +16 -0
- package/dist/services/workflow-sign-file-settings.d.ts.map +1 -0
- package/dist/services/workflow-sign-file-settings.js +80 -0
- package/dist/services/workflow-sign-file-settings.js.map +1 -0
- package/dist/services/workflow-submit-confirm.d.ts +14 -0
- package/dist/services/workflow-submit-confirm.d.ts.map +1 -0
- package/dist/services/workflow-submit-confirm.js +29 -0
- package/dist/services/workflow-submit-confirm.js.map +1 -0
- package/dist/services/workflow-tab-config.d.ts +3 -3
- package/dist/services/workflow-tab-config.d.ts.map +1 -1
- package/dist/services/workflow-tab-config.js +14 -12
- package/dist/services/workflow-tab-config.js.map +1 -1
- package/dist/services/workflow-tabs-editor.d.ts +28 -0
- package/dist/services/workflow-tabs-editor.d.ts.map +1 -0
- package/dist/services/workflow-tabs-editor.js +130 -0
- package/dist/services/workflow-tabs-editor.js.map +1 -0
- package/package.json +1 -1
- package/skill-docs/SKILL.md +155 -154
- package/skill-docs/_catalog.md +106 -97
- 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/common/guide-plan-template.md +168 -167
- package/skill-docs/references/common/map.md +2 -1
- package/skill-docs/references/common/ref-cli-commands.md +67 -22
- 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-form-archive-permission.md +29 -6
- package/skill-docs/references/form/guide-form-formula-functions.md +354 -354
- 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 -259
- 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-function-settings.md +55 -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 +630 -527
- package/skill-docs/references/form/style-templates.md +0 -97
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
# 按效果查代码模式
|
|
2
|
+
|
|
3
|
+
本页覆盖原案例中的独立做法。字段 Key、接口和字段对象均需替换为目标表单真实数据;示例中出现的模拟接口、固定附件对象和测试 ID 不能作为正式值。
|
|
4
|
+
|
|
5
|
+
| 想要的效果 | 组合方法 | 关键检查 |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| 保存前汇总明细人员到主表并去重 | `registerCheckEvent(OPER_SAVE)` → `getDetailAllRowIndexStr` → 逐行 `getBrowserOptionEntity` → 按 id 去重 → `changeFieldValue(...,{specialObj})` → `successFn` | 空行、重复人员、失败回调;仅拦表单保存 |
|
|
8
|
+
| 附件字段回填且可预览 | 从附件模块/现有字段取完整对象 → `changeFieldValue(...,{specialObj:[{id,name,data,type:'file'}]})` | 文件权限、预览/下载入口;不可只传 id/name |
|
|
9
|
+
| 多级选项等复杂值赋值 | 先 `getFieldObj` 观察已有对象 → 按 `data.content` 或 `data.dataOptions` 等原结构写 `specialObj` | 选项模板、次级选项正确显示 |
|
|
10
|
+
| 将明细富文本显示为按钮或链接 | `getDetailAllRowIndexStr` 遍历每行 → `proxyFieldComp` 替换该行内容;添加行事件补新行 | 点击跳转地址与作用范围 |
|
|
11
|
+
| 按两个维度分类、累加到另一明细表 | `getDetailData` 建组合 Key → 对目标行更新/新增/删除 → 监听来源值变化和增删行 | 组合 Key 唯一、消失分组删除、重复事件 |
|
|
12
|
+
| 全表单跨模块识别字段并回填外部数据 | 全局 ecode `onFormReady` 取当前实例并限制 module/formId → 字段事件 → 调受支持接口 → `changeMoreField` | 权限、数据范围、主表/明细位置、失败与清空逻辑 |
|
|
13
|
+
| 明细数字合计并算各行占比 | 读取明细每行数值 → `reduce` 求和 → 主表回写 → 逐行占比赋值;监听值变化及增删行 | 空值、非数字、总额 0、精度 |
|
|
14
|
+
| 联动带出后再汇总并触发后续联动 | 对带出字段监听联动 scope → 汇总 → 写主表 → 必要时 `triggerFieldAllLinkage` | 避免循环;确认事件是否实际触发 |
|
|
15
|
+
| 合并多个主表浏览/选项字段 | 多字段 `getBrowserOptionEntity` → 合并或按 id 去重 → 主表 `specialObj` 赋值 | 是否保留重复项、空字段 |
|
|
16
|
+
| 按同行条件选择明细人员合并到主表 | `getDetailData` → 判断同行选项值 → 取人员对象 → 去重 → `changeFieldValue` | 条件变化、增删行后重算 |
|
|
17
|
+
| 子明细按父行汇总金额 | 父、子关系字段匹配 → 筛子表数据 → 合计 → 回写父表指定 `rowId` | 父标识唯一、子行归属、父行删除后的处理 |
|
|
18
|
+
| 按显示序号生成明细值 | 明细行数组按显示顺序 `map((row,index)=>...)` → `changeDetailData`;监听增删行 | 排序后重新计算,避免把序号当 rowId |
|
|
19
|
+
| 某字段为空时触发另一字段联动 | `getFieldValue` 判空 → `triggerFieldAllLinkage(target)`;载入与源字段变化均执行 | 空字符串、0 与未选择的判定 |
|
|
20
|
+
| 自定义页面参数传递/组件换肤 | 全局 ecode `regOvProps` 或表单字段 `proxyFieldContentComp`,按生效范围选择 | 组件名/props 契约、编译入口 |
|
|
21
|
+
|
|
22
|
+
上述模式涉及的完整 API、参数与风险分别见 [事件](ref-events-validation.md)、[字段](ref-foundations-fields.md)、[明细](ref-details.md)、[控件](ref-controls.md) 和 [组件交互](ref-ui-global.md)。原案例存在重复与少量不完整代码:例如重复的“保存前汇总人员”,附件数据依赖文档模块,组件 props 示例有语法笔误,数字合计示例用 `eval`,全局回填示例包含模拟数据。这里保留其实现思路,代码应按专题中可运行的结构重新组装。
|
|
23
|
+
|
|
24
|
+
## 保存前汇总明细人员并去重
|
|
25
|
+
|
|
26
|
+
先定位明细、明细人员字段和主表目标字段;仅在表单数据保存前执行。需要流程“提交”时改用流程 SDK 的节点提交事件。
|
|
27
|
+
|
|
28
|
+
```js
|
|
29
|
+
const table = formSdk.convertFieldNameToId('people_detail', 'main');
|
|
30
|
+
const detailPerson = formSdk.convertFieldNameToId('person', table);
|
|
31
|
+
const mainPeople = formSdk.convertFieldNameToId('all_people', 'main');
|
|
32
|
+
formSdk.registerCheckEvent(window.WeFormSDK.OPER_SAVE, (ok, stop) => {
|
|
33
|
+
try {
|
|
34
|
+
const rowIds = (formSdk.getDetailAllRowIndexStr(table) || '').split(',').filter(Boolean);
|
|
35
|
+
const unique = new Map();
|
|
36
|
+
for (const rowId of rowIds) {
|
|
37
|
+
for (const item of formSdk.getBrowserOptionEntity(`${detailPerson}_${rowId}`) || []) {
|
|
38
|
+
if (item?.id) unique.set(String(item.id), item);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
formSdk.changeFieldValue(mainPeople, {specialObj: [...unique.values()]});
|
|
42
|
+
ok();
|
|
43
|
+
} catch (error) {
|
|
44
|
+
stop({msg: '人员汇总失败,请检查明细数据'});
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## 明细数值汇总并计算占比
|
|
50
|
+
|
|
51
|
+
值变化、增行、删行和初次载入都要重新计算;`getDetailData` 的每行包含 `rowId`。示例以数值 0 处理空值,业务若要求空值报错,应另作校验。
|
|
52
|
+
|
|
53
|
+
```js
|
|
54
|
+
const table = formSdk.convertFieldNameToId('cost_detail', 'main');
|
|
55
|
+
const detailAmount = formSdk.convertFieldNameToId('amount', table);
|
|
56
|
+
const detailShare = formSdk.convertFieldNameToId('share', table);
|
|
57
|
+
const mainTotal = formSdk.convertFieldNameToId('total', 'main');
|
|
58
|
+
function recalculate() {
|
|
59
|
+
const rows = formSdk.getDetailData(table) || [];
|
|
60
|
+
const total = rows.reduce((sum, row) => sum + Number(row[detailAmount]?.value || 0), 0);
|
|
61
|
+
formSdk.changeFieldValue(mainTotal, {value: String(total)}, {jsApiChange: false});
|
|
62
|
+
for (const row of rows) {
|
|
63
|
+
const amount = Number(row[detailAmount]?.value || 0);
|
|
64
|
+
formSdk.changeFieldValue(`${detailShare}_${row.rowId}`, {value: String(total ? amount / total : 0)}, {jsApiChange: false});
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
formSdk.bindFieldChangeEvent(detailAmount, recalculate);
|
|
68
|
+
formSdk.registerAction(`${window.WeFormSDK.ACTION_ADDROW}${table}`, recalculate);
|
|
69
|
+
formSdk.registerAction(`${window.WeFormSDK.ACTION_DELROW}${table}`, recalculate);
|
|
70
|
+
recalculate();
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
如汇总源值本身来自字段联动,普通字段变化事件可能不触发;依目标基线使用 `scope: window.WeFormSDK.CHANGE_EVENT_LINKAGE` 或监听 `ACTION_DATA_LINKAGE`。占比输出为 0~1 还是 0~100,须按目标字段的百分比显示方式确定。不要直接打开全局联动事件开关而不检查既有监听是否形成循环。
|
|
74
|
+
|
|
75
|
+
## 父子明细按关系字段回写
|
|
76
|
+
|
|
77
|
+
父、子明细的关系字段值相同才能归属同一父行。先配置真实二级明细关系,再对每个父行筛选对应子行。这里的业务主键与 `rowId` 分开。
|
|
78
|
+
|
|
79
|
+
```js
|
|
80
|
+
const parentTable = formSdk.convertFieldNameToId('parent_detail', 'main');
|
|
81
|
+
const childTable = formSdk.convertFieldNameToId('child_detail', 'main');
|
|
82
|
+
const parentKey = formSdk.convertFieldNameToId('parent_key', parentTable);
|
|
83
|
+
const parentTotal = formSdk.convertFieldNameToId('parent_total', parentTable);
|
|
84
|
+
const childKey = formSdk.convertFieldNameToId('child_parent_key', childTable);
|
|
85
|
+
const childAmount = formSdk.convertFieldNameToId('child_amount', childTable);
|
|
86
|
+
function recalculateParents() {
|
|
87
|
+
const children = formSdk.getDetailData(childTable) || [];
|
|
88
|
+
for (const parent of formSdk.getDetailData(parentTable) || []) {
|
|
89
|
+
const key = parent[parentKey]?.value;
|
|
90
|
+
const total = children.filter(row => row[childKey]?.value === key)
|
|
91
|
+
.reduce((sum, row) => sum + Number(row[childAmount]?.value || 0), 0);
|
|
92
|
+
formSdk.changeFieldValue(`${parentTotal}_${parent.rowId}`, {value: String(total)}, {jsApiChange: false});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
formSdk.bindFieldChangeEvent(childAmount, recalculateParents);
|
|
96
|
+
formSdk.registerAction(`${window.WeFormSDK.ACTION_ADDROW}${childTable}`, recalculateParents);
|
|
97
|
+
formSdk.registerAction(`${window.WeFormSDK.ACTION_DELROW}${childTable}`, recalculateParents);
|
|
98
|
+
recalculateParents();
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
关系字段若为选项而非文本,按 `getFieldObj` 的 `specialObj` 比较 ID。父行标识必须唯一;删除父行后的子行处置应由业务规则明确。用 `getDetailData` 复制子行时不要复制旧 `rowId`。
|
|
102
|
+
|
|
103
|
+
## 来源明细按两列分组,同步到目标明细
|
|
104
|
+
|
|
105
|
+
来源中按“部门 ID + 类型 ID”分组求和;目标中已有分组更新、缺失分组新增、来源已消失的分组删除。监听来源的两列条件字段、数值字段与增删行事件。下面只展示同步函数,绑定方式同上方汇总案例。
|
|
106
|
+
|
|
107
|
+
```js
|
|
108
|
+
function syncGroups(sourceTable, targetTable, sourceDept, sourceType, sourceAmount,
|
|
109
|
+
targetDept, targetType, targetAmount) {
|
|
110
|
+
const groups = new Map();
|
|
111
|
+
for (const row of formSdk.getDetailData(sourceTable) || []) {
|
|
112
|
+
const dept = row[sourceDept]?.specialObj?.[0];
|
|
113
|
+
const type = row[sourceType]?.specialObj?.[0];
|
|
114
|
+
if (!dept?.id || !type?.id) continue;
|
|
115
|
+
const key = `${dept.id}:${type.id}`;
|
|
116
|
+
const item = groups.get(key) || {dept, type, total: 0};
|
|
117
|
+
item.total += Number(row[sourceAmount]?.value || 0);
|
|
118
|
+
groups.set(key, item);
|
|
119
|
+
}
|
|
120
|
+
const existing = new Map();
|
|
121
|
+
for (const row of formSdk.getDetailData(targetTable) || []) {
|
|
122
|
+
const deptId = row[targetDept]?.specialObj?.[0]?.id;
|
|
123
|
+
const typeId = row[targetType]?.specialObj?.[0]?.id;
|
|
124
|
+
if (!deptId || !typeId || !groups.has(`${deptId}:${typeId}`)) {
|
|
125
|
+
formSdk.delDetailRow(targetTable, row.rowId);
|
|
126
|
+
} else {
|
|
127
|
+
existing.set(`${deptId}:${typeId}`, row.rowId);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
for (const [key, item] of groups) {
|
|
131
|
+
const rowId = existing.get(key);
|
|
132
|
+
if (rowId) {
|
|
133
|
+
formSdk.changeFieldValue(`${targetAmount}_${rowId}`, {value: String(item.total)}, {jsApiChange: false});
|
|
134
|
+
} else {
|
|
135
|
+
formSdk.addDetailRow(targetTable, {
|
|
136
|
+
[targetDept]: {specialObj: [item.dept]},
|
|
137
|
+
[targetType]: {specialObj: [item.type]},
|
|
138
|
+
[targetAmount]: {value: String(item.total)}
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
这种同步会删除目标中无来源的行,只有目标表完全由来源派生时才适用;若允许用户手工维护目标行,应改为保留手工行并有明确的来源标识。跨字段 `id` 类型与数值精度须按实际表单处理。
|
|
146
|
+
|
|
147
|
+
## 根据明细同行条件筛人员,合并到主表
|
|
148
|
+
|
|
149
|
+
对每行读取条件选项,按不同条件分别取对应人员字段,再按人员 ID 去重并写入主表。初次载入、条件/人员字段变化、明细增删行均重新执行。
|
|
150
|
+
|
|
151
|
+
```js
|
|
152
|
+
function syncPeople(table, conditionField, firstPeopleField, secondPeopleField, mainPeopleField) {
|
|
153
|
+
const people = new Map();
|
|
154
|
+
for (const row of formSdk.getDetailData(table) || []) {
|
|
155
|
+
const choice = row[conditionField]?.specialObj?.[0]?.id;
|
|
156
|
+
const selected = choice === '0' ? row[firstPeopleField]?.specialObj :
|
|
157
|
+
choice === '1' ? row[secondPeopleField]?.specialObj : [];
|
|
158
|
+
for (const person of selected || []) if (person?.id) people.set(String(person.id), person);
|
|
159
|
+
}
|
|
160
|
+
formSdk.changeFieldValue(mainPeopleField, {specialObj: [...people.values()]}, {jsApiChange: false});
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
条件选项 ID `'0'/'1'` 是示例占位,须读取真实选项 ID。若人员字段由系统联动带出,还要按[事件指南](ref-events-validation.md)监听联动完成事件。
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# JSSDK 排查、版本与边界
|
|
2
|
+
|
|
3
|
+
## 代码不生效时
|
|
4
|
+
|
|
5
|
+
1. 确认保存的是目标表单的目标布局及目标终端,或正确的表单级/全局 ecode;JS 编译通过且代码已启用,CSS 单独保存。浏览器打开的是最新布局而非另一设备布局。
|
|
6
|
+
2. 确认 `formSdk` 取自当前表单实例;全局 ecode 用 `onFormReady` 的事件实例并限定 formId/module。较早基线的 `pageSdk.on('formReady')` 与新基线闭包方式不要混用到未支持的入口。
|
|
7
|
+
3. 用 `getBaseInfo`、`convertFieldNameToId`、`getFieldInfo` 检查当前表单和字段;数据 Key 不是字段名或物理表名。明细字段要指定明细表位置,行操作要取得真实 `rowId`。
|
|
8
|
+
4. 用 `getFieldObj` 对照目标类型的数据形状。文本/数字/日期常用 `{value}`;浏览/动态选项/附件常用 `{specialObj}`。附件预览还依赖完整 `data`。
|
|
9
|
+
5. 检查事件是否属于“表单保存”“流程提交”“用户改变”“联动改变”中的哪一种;必要时分开绑定。拦截回调必须调用通过或阻断函数;异步超时约 25 秒。
|
|
10
|
+
6. 检查权限和组件边界。流程节点默认只读或权限锁定的字段,不能仅靠 `changeFieldAttr(2)` 放开;JS 渲染也不改变后端权限。
|
|
11
|
+
|
|
12
|
+
开发调试时可按环境入口临时屏蔽不同层级二开:ecode 平台、全局初始化代码、布局源码对应不同入口。调试开关仅用于定位,不作为正式配置。对含多表单、父子页面、明细新行的场景,还要检查实例、`postMessage` 来源与渲染时机。
|
|
13
|
+
|
|
14
|
+
## 设计器源码面板为空 / ECode decode failed
|
|
15
|
+
|
|
16
|
+
- **症状**:打开布局源码时控制台报 `ECode decode failed, SyntaxError: Expected ':' after property name in JSON at position 5`,源码面板为空,预览按钮失效。
|
|
17
|
+
- **原因**:`sourceCode.ecode` 被 `encodeURIComponent` 写入。设计器用 `JSON.parse(decodeURI(ecode))` 读取,而 `decodeURI` 不还原 `%3A`(冒号),JSON 变成 `{"js"%3A...}`。
|
|
18
|
+
- **处理**:用 `form code layout set` / `wf-form code layout set` 重新写入(CLI 已使用 `encodeURI`,并在写入前、回读后按设计器路径自检)。临时恢复可把 `sourceCode.ecode` 置为空字符串,再用空 JS/CSS 文件重写。
|
|
19
|
+
- **手工调接口**:必须用 `encodeURI(JSON.stringify({js, css}))`,不要用 `encodeURIComponent`。
|
|
20
|
+
|
|
21
|
+
## 基线速查
|
|
22
|
+
|
|
23
|
+
| 功能 | 原技术资料标注的最低基线 |
|
|
24
|
+
|---|---|
|
|
25
|
+
| `changeFieldValue` 的联动控制参数 | 241001 |
|
|
26
|
+
| `valueInfo.type/contentObj` 特殊字段 | 241201 |
|
|
27
|
+
| 字段联动拦截及联动动作的 `runData` | 240601 |
|
|
28
|
+
| 字段变化事件的联动 `scope` | 250401;明细专用事件的扩展参数 250901 |
|
|
29
|
+
| 明细批量添加 `addDetailData` | 241201 |
|
|
30
|
+
| 布局/表单代码直接取得当前 `formSdk` | 主体说明标注 250101;另有一处写 241201,稳妥按 250101 判断 |
|
|
31
|
+
| 明细批量更新 `changeDetailData` | 250101 |
|
|
32
|
+
| `changeTabItemAttr` | 20250501 |
|
|
33
|
+
| `controlOptionDisable` | 20250501 |
|
|
34
|
+
| `convertFieldNameToId` 用明细表数据 Key 定位明细字段 | 260601 |
|
|
35
|
+
| `getDetailData` 按当前明细筛选条件取数 | 260401 |
|
|
36
|
+
| `triggerFieldAllLinkage(...).then(...)` | 250901 |
|
|
37
|
+
| 联动赋值导致的明细行变化事件扩展 | 251101 |
|
|
38
|
+
| `pluginGet/pluginExecute` | 260201 |
|
|
39
|
+
|
|
40
|
+
先确认目标环境版本和实际 API 可用性;未达到基线时不要假设同名功能可用。
|
|
41
|
+
|
|
42
|
+
## 原案例中需纠正的写法
|
|
43
|
+
|
|
44
|
+
- 字段赋值示例声明 `textFieldMark` 后却调用 `fieldMark`,日期示例声明 `dateFieldMark` 后调用 `selectFieldMark`;按真正声明的目标字段写。
|
|
45
|
+
- 字段属性示例的明细行模板字符串缺少引号闭合;正确形式为 `` `${detailField}_${rowId}` ``。
|
|
46
|
+
- `getFieldCom` 章节示例调用了 `getFieldInfo`;两者用途不同,前者为组件引用,后者为字段信息。
|
|
47
|
+
- 明细“默认使用末行”章节的示例实际调用 `setDetailAddUseCopy`;先确认所需是复制末行,而非仅控制默认光标或位置。
|
|
48
|
+
- 案例中的 `eval(numbers.join('+'))`、测试 URL、固定附件元数据、模拟外部查询结果不能直接用于业务配置。数值合计用显式转换与 `reduce`,外部接口须有真实契约。
|
|
49
|
+
- 全局 ecode 的 `import`、JSX、`regOvProps` 示例不要直接粘入布局源码;按目标编辑器支持的语法重写。布局源码中的局部字段组件复写则按其 API 单独处理。
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# 组件渲染、全局交互与扩展
|
|
2
|
+
|
|
3
|
+
## 当前表单与全局操作
|
|
4
|
+
|
|
5
|
+
`formSdk.getBaseInfo()` 读取当前表单基本信息;`formSdk.isMobile()` 判断移动端。布局级代码优先使用当前作用域 `formSdk`;提示、弹窗由全局 `window.WeFormSDK` 提供。
|
|
6
|
+
|
|
7
|
+
| 效果 | API 与要点 |
|
|
8
|
+
|---|---|
|
|
9
|
+
| 提示 | `window.WeFormSDK.showMessage(message, type?, duration?)`;type 为 `1` 警告、`2` 错误、`3` 成功;时长单位秒 |
|
|
10
|
+
| 确认 | `window.WeFormSDK.showConfirm(content, onOk, onCancel?, {title,okText,cancelText}?)`;title 仅 PC 有效 |
|
|
11
|
+
| 自定义弹窗 | `window.WeFormSDK.openCustomDialog({content,width,height,onOk,onCancel,footer?,...})`;返回对象可 `destroy()` |
|
|
12
|
+
| 页面刷新 | `formSdk.reloadPage(params?)` |
|
|
13
|
+
| 提交附加参数 | `formSdk.appendSubmitParam({customParam:{...}})`;接收端仍须能处理该参数 |
|
|
14
|
+
| 主动做必填检查 | `formSdk.verifyFormRequired(mustAddDetail?,fieldRequired?)` |
|
|
15
|
+
| 全局加载 | `window.WeFormSDK.getLoadingGlobal()` 取加载控件,调用 `start()`、`end()`、`destroy()` |
|
|
16
|
+
| 关闭页面提示 | `formSdk.setFormTipCloseStatus(true/false)`;只控制提示状态,不执行保存 |
|
|
17
|
+
|
|
18
|
+
自定义 footer 使用 `@weapp/ui` 的 import/JSX 是 ecode 构建环境示例;布局源码只允许其编辑器可编译的语法和已暴露对象,不能直接套用 ecode 依赖。
|
|
19
|
+
|
|
20
|
+
## 字段区域事件和局部渲染
|
|
21
|
+
|
|
22
|
+
`bindFieldAction(type, fields, handler)` 绑定失焦、聚焦、点击、双击、移入/移出;事件类型为 `onblur/onfocus/onclick/ondbclick/mouseover/mouseout`。
|
|
23
|
+
|
|
24
|
+
| 需求 | API |
|
|
25
|
+
|---|---|
|
|
26
|
+
| 将当前字段内容替换为自定义内容 | `proxyFieldComp(fieldMark, reactNode或文本, range?)` |
|
|
27
|
+
| 在字段后追加内容 | `afterFieldComp(fieldMark, reactNode或文本, range?)` |
|
|
28
|
+
| 用函数包装原字段内容并利用 props 决定样式 | `proxyFieldContentComp(fieldMark, (props, componentFn) => React.createElement(..., componentFn()))` |
|
|
29
|
+
|
|
30
|
+
`range` 省略时作用于全部读写状态;`'1'` 只读、`'2'` 可编辑、`'3'` 必填,多个值以逗号分隔。`proxyFieldContentComp` 的回调必须返回组件,第二参数 `componentFn` 可生成原字段内容。`React` 可用性和编译语法要以目标代码入口为准。明细字段不加行 ID 可作用于整列,指定行则加 `_rowId`;新添行的专门逻辑应在添加行事件后检查是否生效。此能力是当前表单字段的局部渲染,不等于发布平台级新组件,也不等于改写后端接口。
|
|
31
|
+
|
|
32
|
+
```js
|
|
33
|
+
const field = formSdk.convertFieldNameToId('status', 'main');
|
|
34
|
+
formSdk.proxyFieldContentComp(field, (props, original) =>
|
|
35
|
+
React.createElement('div', {style: {backgroundColor: props?.widgetValue?.content === '1' ? '#e3f2fd' : ''}}, original())
|
|
36
|
+
);
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## 插件与页面间通信
|
|
40
|
+
|
|
41
|
+
260201 及以后基线提供 `formSdk.pluginGet(fieldMark, property)` 和 `formSdk.pluginExecute(fieldMark, method, ...args)`;只能操作该插件实际公开的属性/方法。具体 WPS 或其他插件须取得该插件契约,不能从 JSSDK 通用接口推断方法名。
|
|
42
|
+
|
|
43
|
+
`window.open` 打开的子页面可通过 `window.opener` 访问父窗口;同源时可操作父页面的表单实例。跨源时用 `postMessage`,接收方检查 `event.origin` 和 `event.data.type`,发送方指定目标 origin;只发送必要数据,不传鉴权信息。
|
|
44
|
+
|
|
45
|
+
子表控件数据变化后,如需刷新相关显示,布局源码中可调用 `pageSdk.events.emit('field.change', '纯数字字段ID')`;ecode 中可调用 `window.ebuilderSDK.getPageSDK().events.emit('field.change', '纯数字字段ID')`。原资料还提到可附第三个字段数据参数:文本传文本,浏览型传以逗号分隔的 ID;按实际刷新需求决定是否传值。此处第二参数是纯数字字段 ID,不是带 `field` 前缀的标识。
|
|
46
|
+
|
|
47
|
+
全局 ecode 的 `regOvProps` 可复写特定组件 props,但其包名与目标组件名是项目级契约;它和布局内 `proxyFieldContentComp` 是不同层级。采用哪一层,应以所需生效范围为准。
|