weaver-work-cli 0.1.24 → 0.1.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -21
- package/dist/cmd/root.js +1 -0
- package/dist/core/output.js +53 -1
- package/dist/core/runtime-agent.js +19 -0
- package/dist/internal/e10/auth/commands.js +58 -23
- package/dist/internal/e10/auth/crypto.js +52 -12
- package/dist/internal/e10/auth/xiaoe.js +145 -53
- package/dist/internal/e10/context.js +5 -27
- package/dist/shortcuts/archive-oa/constants.js +66 -0
- package/dist/shortcuts/archive-oa/continuation.js +70 -0
- package/dist/shortcuts/archive-oa/errors.js +53 -0
- package/dist/shortcuts/archive-oa/host.js +157 -0
- package/dist/shortcuts/archive-oa/index.js +225 -0
- package/dist/shortcuts/archive-oa/manifest.js +62 -0
- package/dist/shortcuts/archive-oa/operations/borrow-car.js +159 -0
- package/dist/shortcuts/archive-oa/operations/borrow-url.js +108 -0
- package/dist/shortcuts/archive-oa/operations/confirm.js +48 -0
- package/dist/shortcuts/archive-oa/operations/contract.js +120 -0
- package/dist/shortcuts/archive-oa/operations/locate.js +50 -0
- package/dist/shortcuts/archive-oa/operations/registry.js +40 -0
- package/dist/shortcuts/archive-oa/operations/shared.js +181 -0
- package/dist/shortcuts/archive-oa/operations/types.js +45 -0
- package/dist/shortcuts/archive-oa/operations.js +13 -0
- package/dist/shortcuts/caizhilian/operations/handlers/fileops.js +67 -1
- package/dist/shortcuts/caizhilian/operations/handlers/setting-attach.js +198 -0
- package/dist/shortcuts/caizhilian/operations/shared.js +32 -0
- package/dist/shortcuts/caizhilian/operations/specs.js +15 -0
- package/dist/shortcuts/index.js +2 -0
- package/dist/shortcuts/invoice/host.js +2 -1
- package/dist/shortcuts/invoice/manifest.js +111 -0
- package/dist/shortcuts/invoice/operations/issuing-qys.js +361 -0
- package/dist/shortcuts/invoice/operations/issuing.js +5 -5
- package/dist/shortcuts/invoice/operations/registry.js +4 -0
- package/dist/shortcuts/workflow/endpoints.js +11 -0
- package/dist/shortcuts/workflow/host.js +2 -2
- package/dist/shortcuts/workflow/index.js +25 -1
- package/dist/shortcuts/workflow/operations/chatscene.js +270 -0
- package/dist/shortcuts/workflow/operations/form.js +2128 -244
- package/dist/shortcuts/workflow/operations/read.js +186 -41
- package/dist/shortcuts/workflow/operations/shared.js +25 -0
- package/dist/shortcuts/workflow/operations/sign-input.js +106 -0
- package/dist/shortcuts/workflow/operations/write.js +9 -1
- package/dist/shortcuts/workflow/stdout-compact.js +41 -0
- package/docs/archive-oa.md +79 -0
- package/docs/caizhilian.md +4 -3
- package/docs/e10-auth.md +13 -5
- package/node_modules/@napi-rs/keyring/LICENSE +21 -0
- package/node_modules/@napi-rs/keyring/README.md +19 -0
- package/node_modules/@napi-rs/keyring/index.d.ts +166 -0
- package/node_modules/@napi-rs/keyring/index.js +514 -0
- package/node_modules/@napi-rs/keyring/keytar.d.ts +53 -0
- package/node_modules/@napi-rs/keyring/keytar.js +26 -0
- package/node_modules/@napi-rs/keyring/package.json +125 -0
- package/node_modules/@napi-rs/keyring-darwin-arm64/README.md +3 -0
- package/node_modules/@napi-rs/keyring-darwin-arm64/keyring.darwin-arm64.node +0 -0
- package/node_modules/@napi-rs/keyring-darwin-arm64/package.json +32 -0
- package/node_modules/commander/LICENSE +22 -0
- package/node_modules/commander/Readme.md +1149 -0
- package/node_modules/commander/esm.mjs +16 -0
- package/node_modules/commander/index.js +24 -0
- package/node_modules/commander/lib/argument.js +149 -0
- package/node_modules/commander/lib/command.js +2662 -0
- package/node_modules/commander/lib/error.js +39 -0
- package/node_modules/commander/lib/help.js +709 -0
- package/node_modules/commander/lib/option.js +367 -0
- package/node_modules/commander/lib/suggestSimilar.js +101 -0
- package/node_modules/commander/package-support.json +16 -0
- package/node_modules/commander/package.json +82 -0
- package/node_modules/commander/typings/esm.d.mts +3 -0
- package/node_modules/commander/typings/index.d.ts +1045 -0
- package/package.json +5 -1
- package/skill-template/business-info.json +16 -0
- package/skill-template/domains/archive-oa.md +19 -0
- package/skill-template/domains/yepiaotong.md +2 -2
- package/skills/weaver-e10-archive-oa/SKILL.md +159 -0
- package/skills/weaver-e10-archive-oa/references/archive-locate.md +49 -0
- package/skills/weaver-e10-archive-oa/references/borrow-car.md +76 -0
- package/skills/weaver-e10-archive-oa/references/borrow-flow.md +53 -0
- package/skills/weaver-e10-archive-oa/references/contract-search.md +63 -0
- package/skills/weaver-e10-archive-oa/references/disabled-capabilities.md +29 -0
- package/skills/weaver-e10-archive-oa/references/qys-contract-search.md +47 -0
- package/skills/weaver-e10-archive-oa/references/source-manifest.json +400 -0
- package/skills/weaver-e10-builder/SKILL.md +303 -0
- package/skills/weaver-e10-builder/_catalog.md +94 -0
- package/skills/weaver-e10-builder/actionflows/CONTEXT.md +71 -0
- package/skills/weaver-e10-builder/actionflows/SKILL.md +176 -0
- package/skills/weaver-e10-builder/actionflows/docs/adr/0001-generated-actionflow-cleanup-identity.md +5 -0
- package/skills/weaver-e10-builder/actionflows/docs/adr/0002-preserve-existing-actionflow-on-update.md +36 -0
- package/skills/weaver-e10-builder/actionflows/references/components/calendar/MeetingCreate.md +19 -0
- package/skills/weaver-e10-builder/actionflows/references/components/calendar/ScheduleCreate.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/database/DMLExecute.md +38 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/AttachmentCopy.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/AttachmentMove.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentCopy.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentDelete.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentEdit.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentMove.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentPermissionChange.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentRenewal.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentRevert.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSave.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscription.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionApprove.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionSendBack.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/DocumentSubscriptionWithdraw.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/FileFolderSave.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/GetAttachmentInfo.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/GetDocumentInfo.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/ModifyDocumentStatus.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/ReplaceAttachment.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/document/UpdatePrintNum.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbAdd.md +100 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbDelete.md +23 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbRecover.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbSaveVersion.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/ActionEbUpdate.md +67 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/DateTrigger.md +32 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EbGetDataById.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EnquiryForm.md +107 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EventButton.md +33 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/EventFormData.md +19 -0
- package/skills/weaver-e10-builder/actionflows/references/components/ebuilder/TimeBatchTrigger.md +19 -0
- package/skills/weaver-e10-builder/actionflows/references/components/http/Http.md +77 -0
- package/skills/weaver-e10-builder/actionflows/references/components/logic/Condition.md +23 -0
- package/skills/weaver-e10-builder/actionflows/references/components/logic/LogicFlowSet.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/logic/MultipleExecution.md +38 -0
- package/skills/weaver-e10-builder/actionflows/references/components/logic/Output.md +37 -0
- package/skills/weaver-e10-builder/actionflows/references/components/message/InnerMQSend.md +50 -0
- package/skills/weaver-e10-builder/actionflows/references/components/message/SendMessage.md +30 -0
- package/skills/weaver-e10-builder/actionflows/references/components/personnel/AlterPersonStatus.md +30 -0
- package/skills/weaver-e10-builder/actionflows/references/components/personnel/HrmEmployeeUpdate.md +34 -0
- package/skills/weaver-e10-builder/actionflows/references/components/personnel/PersonnelAlterType.md +38 -0
- package/skills/weaver-e10-builder/actionflows/references/components/personnel/PersonnelOnboarding.md +36 -0
- package/skills/weaver-e10-builder/actionflows/references/components/serverless/ServerlessAction.md +42 -0
- package/skills/weaver-e10-builder/actionflows/references/components/trigger/CustomTrigger.md +82 -0
- package/skills/weaver-e10-builder/actionflows/references/components/trigger/InnerMQListener.md +41 -0
- package/skills/weaver-e10-builder/actionflows/references/components/trigger/SimpleScheduler.md +19 -0
- package/skills/weaver-e10-builder/actionflows/references/components/trigger/WebHookTrigger.md +91 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveAddSign.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveAgreeRejectApply.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveCommit.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveConsulTurnTodo.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveCreate.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDelete.md +19 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoCirculate.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoForward.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveDoTurnTodo.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveEntrust.md +19 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveIntervention.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveMandatoryArchiving.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveManualCC.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveRefuseRejectApply.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveRejectApply.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveSave.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveSendBack.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveShareEntry.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveTrigger.md +99 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/ApproveWithdraw.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/WorkFlowDocEmpowerment.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/components/workflow/WorkflowToDoc.md +17 -0
- package/skills/weaver-e10-builder/actionflows/references/condition_rules.md +100 -0
- package/skills/weaver-e10-builder/actionflows/references/dynamic_capability_matrix.md +39 -0
- package/skills/weaver-e10-builder/actionflows/references/dynamic_resources.md +41 -0
- package/skills/weaver-e10-builder/actionflows/references/examples/enquiry-form-batch-insert-scene2.json +1043 -0
- package/skills/weaver-e10-builder/actionflows/references/function_rules.md +15 -0
- package/skills/weaver-e10-builder/actionflows/references/trigger_runtime_notes.md +53 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Bar.json +341 -0
- package/skills/weaver-e10-builder/assets/dom-structure/BarStack.json +341 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Bubble.json +323 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Calendar.json +515 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Circular.json +337 -0
- package/skills/weaver-e10-builder/assets/dom-structure/CollapsePanel.json +289 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Comment.json +617 -0
- package/skills/weaver-e10-builder/assets/dom-structure/CountDown.json +755 -0
- package/skills/weaver-e10-builder/assets/dom-structure/DigitalPanel.json +191 -0
- package/skills/weaver-e10-builder/assets/dom-structure/EbButton.json +387 -0
- package/skills/weaver-e10-builder/assets/dom-structure/FastCreate.json +242 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Gauge.json +282 -0
- package/skills/weaver-e10-builder/assets/dom-structure/HBar.json +336 -0
- package/skills/weaver-e10-builder/assets/dom-structure/HBarStack.json +337 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Line.json +341 -0
- package/skills/weaver-e10-builder/assets/dom-structure/NList.json +712 -0
- package/skills/weaver-e10-builder/assets/dom-structure/NavBar.json +274 -0
- package/skills/weaver-e10-builder/assets/dom-structure/NavPanel.json +390 -0
- package/skills/weaver-e10-builder/assets/dom-structure/NewTab.json +606 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Nightingale.json +336 -0
- package/skills/weaver-e10-builder/assets/dom-structure/PageHeader.json +205 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Picture.json +209 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Pie.json +338 -0
- package/skills/weaver-e10-builder/assets/dom-structure/ProgressChart.json +299 -0
- package/skills/weaver-e10-builder/assets/dom-structure/SearchGlobal.json +628 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Slide.json +489 -0
- package/skills/weaver-e10-builder/assets/dom-structure/Treemap.json +324 -0
- package/skills/weaver-e10-builder/assets/factory/chart-dimensions.json +536 -0
- package/skills/weaver-e10-builder/assets/factory/example-btn-progress-collapse-configured.json +2515 -0
- package/skills/weaver-e10-builder/assets/factory/example-configured-2.json +13805 -0
- package/skills/weaver-e10-builder/assets/factory/example-configured.json +6735 -0
- package/skills/weaver-e10-builder/assets/factory/factory-bar-stack.json +326 -0
- package/skills/weaver-e10-builder/assets/factory/factory-bar.json +222 -0
- package/skills/weaver-e10-builder/assets/factory/factory-bubble.json +322 -0
- package/skills/weaver-e10-builder/assets/factory/factory-calendar.json +325 -0
- package/skills/weaver-e10-builder/assets/factory/factory-circular.json +320 -0
- package/skills/weaver-e10-builder/assets/factory/factory-collapse-panel.json +132 -0
- package/skills/weaver-e10-builder/assets/factory/factory-comment.json +388 -0
- package/skills/weaver-e10-builder/assets/factory/factory-count-down.json +198 -0
- package/skills/weaver-e10-builder/assets/factory/factory-digital-panel.json +108 -0
- package/skills/weaver-e10-builder/assets/factory/factory-eb-button.json +150 -0
- package/skills/weaver-e10-builder/assets/factory/factory-fast-create.json +62 -0
- package/skills/weaver-e10-builder/assets/factory/factory-gauge.json +312 -0
- package/skills/weaver-e10-builder/assets/factory/factory-h-bar-stack.json +328 -0
- package/skills/weaver-e10-builder/assets/factory/factory-h-bar.json +326 -0
- package/skills/weaver-e10-builder/assets/factory/factory-line.json +212 -0
- package/skills/weaver-e10-builder/assets/factory/factory-nav-bar.json +167 -0
- package/skills/weaver-e10-builder/assets/factory/factory-nav-menu.json +144 -0
- package/skills/weaver-e10-builder/assets/factory/factory-nav-panel.json +338 -0
- package/skills/weaver-e10-builder/assets/factory/factory-new-tab.json +163 -0
- package/skills/weaver-e10-builder/assets/factory/factory-nightingale.json +312 -0
- package/skills/weaver-e10-builder/assets/factory/factory-nlist.json +112 -0
- package/skills/weaver-e10-builder/assets/factory/factory-page-header.json +171 -0
- package/skills/weaver-e10-builder/assets/factory/factory-picture.json +169 -0
- package/skills/weaver-e10-builder/assets/factory/factory-pie.json +212 -0
- package/skills/weaver-e10-builder/assets/factory/factory-progress-chart.json +162 -0
- package/skills/weaver-e10-builder/assets/factory/factory-search-global.json +104 -0
- package/skills/weaver-e10-builder/assets/factory/factory-slide.json +164 -0
- package/skills/weaver-e10-builder/assets/factory/factory-treemap.json +322 -0
- package/skills/weaver-e10-builder/assets/icons.db +0 -0
- package/skills/weaver-e10-builder/assets/sample/.claude/settings.local.json +8 -0
- package/skills/weaver-e10-builder/assets/sample/api/formApi.js +510 -0
- package/skills/weaver-e10-builder/assets/sample/config/config.js +0 -0
- package/skills/weaver-e10-builder/assets/sample/config/configLoad.js +0 -0
- package/skills/weaver-e10-builder/assets/sample/config/configLoad_default.js +0 -0
- package/skills/weaver-e10-builder/assets/sample/config/config_default.js +0 -0
- package/skills/weaver-e10-builder/assets/sample/entry.js +22 -0
- package/skills/weaver-e10-builder/assets/sample/eslint.config.cjs +48 -0
- package/skills/weaver-e10-builder/assets/sample/memo.md +0 -0
- package/skills/weaver-e10-builder/assets/sample/readme.js +8 -0
- package/skills/weaver-e10-builder/references/app/guide-app-publish.md +92 -0
- package/skills/weaver-e10-builder/references/auth/guide-auth.md +88 -0
- package/skills/weaver-e10-builder/references/coding/guide-edit-backfill.md +189 -0
- package/skills/weaver-e10-builder/references/coding/guide-form-crud.md +262 -0
- package/skills/weaver-e10-builder/references/coding/guide-page-code.md +244 -0
- package/skills/weaver-e10-builder/references/coding/guide-page-export.md +119 -0
- package/skills/weaver-e10-builder/references/coding/ref-compile-rules.md +130 -0
- package/skills/weaver-e10-builder/references/common/guide-plan-template.md +164 -0
- package/skills/weaver-e10-builder/references/common/map.md +153 -0
- package/skills/weaver-e10-builder/references/common/ref-cli-commands.md +635 -0
- package/skills/weaver-e10-builder/references/components/@weapp-Button.md +104 -0
- package/skills/weaver-e10-builder/references/components/base-Badge.md +100 -0
- package/skills/weaver-e10-builder/references/components/base-Dialog.md +358 -0
- package/skills/weaver-e10-builder/references/components/base-Empty.md +58 -0
- package/skills/weaver-e10-builder/references/components/base-Tag.md +112 -0
- package/skills/weaver-e10-builder/references/components/display-Alert.md +64 -0
- package/skills/weaver-e10-builder/references/components/display-Avatar.md +150 -0
- package/skills/weaver-e10-builder/references/components/display-Calendar.md +263 -0
- package/skills/weaver-e10-builder/references/components/display-Carousel.md +115 -0
- package/skills/weaver-e10-builder/references/components/display-Collapse.md +299 -0
- package/skills/weaver-e10-builder/references/components/display-FilePreview.md +49 -0
- package/skills/weaver-e10-builder/references/components/display-Icon.md +66 -0
- package/skills/weaver-e10-builder/references/components/display-List.md +320 -0
- package/skills/weaver-e10-builder/references/components/display-Pagination.md +41 -0
- package/skills/weaver-e10-builder/references/components/display-Spin.md +34 -0
- package/skills/weaver-e10-builder/references/components/display-Steps.md +89 -0
- package/skills/weaver-e10-builder/references/components/display-Table.md +160 -0
- package/skills/weaver-e10-builder/references/components/display-Title.md +117 -0
- package/skills/weaver-e10-builder/references/components/form-Checkbox.md +161 -0
- package/skills/weaver-e10-builder/references/components/form-DepartmentBrowser-api.md +52 -0
- package/skills/weaver-e10-builder/references/components/form-EmployeeBrowser-api.md +51 -0
- package/skills/weaver-e10-builder/references/components/form-EmployeeBrowser.md +51 -0
- package/skills/weaver-e10-builder/references/components/form-Input.md +123 -0
- package/skills/weaver-e10-builder/references/components/form-Radio.md +145 -0
- package/skills/weaver-e10-builder/references/components/form-Select.md +191 -0
- package/skills/weaver-e10-builder/references/components/form-Switch.md +46 -0
- package/skills/weaver-e10-builder/references/components/form-Upload.md +53 -0
- package/skills/weaver-e10-builder/references/components/generic-Echarts.md +102 -0
- package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-components.md +130 -0
- package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-css.md +127 -0
- package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-factory.md +460 -0
- package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer-version.md +111 -0
- package/skills/weaver-e10-builder/references/ebuilder-designer/guide-designer.md +288 -0
- package/skills/weaver-e10-builder/references/esb-interface/guide-import.md +34 -0
- package/skills/weaver-e10-builder/references/form/guide-create-form.md +248 -0
- package/skills/weaver-e10-builder/references/form/guide-ebuilder-filter.md +73 -0
- package/skills/weaver-e10-builder/references/form/guide-ebuilder-scope.md +82 -0
- package/skills/weaver-e10-builder/references/form/guide-field-linkage.md +123 -0
- package/skills/weaver-e10-builder/references/form/guide-form-archive-permission.md +175 -0
- package/skills/weaver-e10-builder/references/form/guide-form-association.md +124 -0
- package/skills/weaver-e10-builder/references/form/guide-form-button.md +169 -0
- package/skills/weaver-e10-builder/references/form/guide-form-data.md +78 -0
- package/skills/weaver-e10-builder/references/form/guide-form-formula-functions.md +343 -0
- package/skills/weaver-e10-builder/references/form/guide-form-layout-incremental.md +90 -0
- package/skills/weaver-e10-builder/references/form/guide-form-layout-planning.md +68 -0
- package/skills/weaver-e10-builder/references/form/guide-form-linkage.md +269 -0
- package/skills/weaver-e10-builder/references/form/guide-form-message.md +74 -0
- package/skills/weaver-e10-builder/references/form/guide-form-physical-table.md +146 -0
- package/skills/weaver-e10-builder/references/form/guide-form-serial-mark.md +47 -0
- package/skills/weaver-e10-builder/references/form/guide-form-sub-detail.md +82 -0
- package/skills/weaver-e10-builder/references/form/guide-form-view-permission.md +38 -0
- package/skills/weaver-e10-builder/references/form/guide-form-view.md +371 -0
- package/skills/weaver-e10-builder/references/form/guide-formula-linkage.md +281 -0
- package/skills/weaver-e10-builder/references/form/guide-list-columns.md +52 -0
- package/skills/weaver-e10-builder/references/form/guide-list-custom-text.md +52 -0
- package/skills/weaver-e10-builder/references/form/guide-list-stats.md +136 -0
- package/skills/weaver-e10-builder/references/form/guide-virtual-form.md +156 -0
- package/skills/weaver-e10-builder/references/form/ref-form-fields.md +293 -0
- package/skills/weaver-e10-builder/references/form/style-templates.md +97 -0
- package/skills/weaver-e10-builder/references/hrm/guide-matrix.md +245 -0
- package/skills/weaver-e10-builder/references/hrm/guide-org-employee.md +155 -0
- package/skills/weaver-e10-builder/references/menu/system-menus.md +75 -0
- package/skills/weaver-e10-builder/references/report/add-dataset-registration-guide.md +139 -0
- package/skills/weaver-e10-builder/references/report/ai-report-workflow.md +412 -0
- package/skills/weaver-e10-builder/references/report/api-report-build-fast-path.md +275 -0
- package/skills/weaver-e10-builder/references/report/app-datasource-lookup-guide.md +230 -0
- package/skills/weaver-e10-builder/references/report/cell-config-echo-guide.md +163 -0
- package/skills/weaver-e10-builder/references/report/cell-transform-guide.md +147 -0
- package/skills/weaver-e10-builder/references/report/condition-format-guide.md +140 -0
- package/skills/weaver-e10-builder/references/report/cross-dataset-filter-guide.md +304 -0
- package/skills/weaver-e10-builder/references/report/dataset-query-filter-guide.md +235 -0
- package/skills/weaver-e10-builder/references/report/dataset-sidebar-ops-guide.md +280 -0
- package/skills/weaver-e10-builder/references/report/dataset-table-field-contract-guide.md +339 -0
- package/skills/weaver-e10-builder/references/report/datasource-metadata-guide.md +365 -0
- package/skills/weaver-e10-builder/references/report/datasource-selection-and-parent-filter-guide.md +148 -0
- package/skills/weaver-e10-builder/references/report/date-range-query-reference.md +102 -0
- package/skills/weaver-e10-builder/references/report/default-header-style-guide.md +70 -0
- package/skills/weaver-e10-builder/references/report/designer-blank-prevention-guide.md +111 -0
- package/skills/weaver-e10-builder/references/report/event-hreflink-guide.md +184 -0
- package/skills/weaver-e10-builder/references/report/field-bind-exact-match-guide.md +208 -0
- package/skills/weaver-e10-builder/references/report/formula-cell-api-guide.md +258 -0
- package/skills/weaver-e10-builder/references/report/guide-report-build.md +131 -0
- package/skills/weaver-e10-builder/references/report/guide-report-modify.md +100 -0
- package/skills/weaver-e10-builder/references/report/guide-report-multisource.md +143 -0
- package/skills/weaver-e10-builder/references/report/guide-report-query.md +98 -0
- package/skills/weaver-e10-builder/references/report/hidden-row-and-header-merge-guide.md +100 -0
- package/skills/weaver-e10-builder/references/report/layout-showlocation-freeze-guide.md +167 -0
- package/skills/weaver-e10-builder/references/report/preaggregate-auto-disable-guide.md +107 -0
- package/skills/weaver-e10-builder/references/report/query-condition-api-guide.md +890 -0
- package/skills/weaver-e10-builder/references/report/ref-report-commands.md +122 -0
- package/skills/weaver-e10-builder/references/report/ref-report-pitfalls.md +226 -0
- package/skills/weaver-e10-builder/references/report/report-baseinfo-defaults-guide.md +117 -0
- package/skills/weaver-e10-builder/references/report/report-building-guide.md +511 -0
- package/skills/weaver-e10-builder/references/report/report-config-schema.md +445 -0
- package/skills/weaver-e10-builder/references/report/report-create-modes-guide.md +182 -0
- package/skills/weaver-e10-builder/references/report/report-data-model.md +447 -0
- package/skills/weaver-e10-builder/references/report/report-delivery-contract.md +101 -0
- package/skills/weaver-e10-builder/references/report/report-designer-feature-map.md +500 -0
- package/skills/weaver-e10-builder/references/report/report-internal-error-guide.md +78 -0
- package/skills/weaver-e10-builder/references/report/report-knowledge-base.md +389 -0
- package/skills/weaver-e10-builder/references/report/report-lifecycle-api-guide.md +392 -0
- package/skills/weaver-e10-builder/references/report/report-list-page-ops-guide.md +191 -0
- package/skills/weaver-e10-builder/references/report/report-permission-guide.md +365 -0
- package/skills/weaver-e10-builder/references/report/report-requirement-analysis-template.md +202 -0
- package/skills/weaver-e10-builder/references/report/report-self-check-guide.md +164 -0
- package/skills/weaver-e10-builder/references/report/safe-partial-save-guide.md +151 -0
- package/skills/weaver-e10-builder/references/report/snowflake-id-precision-guide.md +84 -0
- package/skills/weaver-e10-builder/references/report/spec-build-schema.md +294 -0
- package/skills/weaver-e10-builder/references/report/targeted-fix-guide.md +97 -0
- package/skills/weaver-e10-builder/references/report/user-request-scope-only-guide.md +82 -0
- package/skills/weaver-e10-builder/references/workflow/guide-function-management.md +154 -0
- package/skills/weaver-e10-builder/references/workflow/guide-opinion-settings.md +126 -0
- package/skills/weaver-e10-builder/references/workflow/guide-workflow-action.md +174 -0
- package/skills/weaver-e10-builder/references/workflow/guide-workflow-auth-resp.md +224 -0
- package/skills/weaver-e10-builder/references/workflow/guide-workflow-condition.md +447 -0
- package/skills/weaver-e10-builder/references/workflow/guide-workflow-node-layout.md +181 -0
- package/skills/weaver-e10-builder/references/workflow/guide-workflow-odoc-setting.md +248 -0
- package/skills/weaver-e10-builder/references/workflow/guide-workflow-odoc.md +68 -0
- package/skills/weaver-e10-builder/references/workflow/guide-workflow.md +527 -0
- package/skills/weaver-e10-builder/references/workflow/operator-matrix.md +76 -0
- package/skills/weaver-e10-caizhilian/SKILL.md +43 -16
- package/skills/weaver-e10-caizhilian/references/agent-entry.md +7 -3
- package/skills/weaver-e10-caizhilian/references/collaboration.md +5 -3
- package/skills/weaver-e10-caizhilian/references/document.md +33 -11
- package/skills/weaver-e10-caizhilian/references/file-collection.md +4 -3
- package/skills/weaver-e10-caizhilian/references/file-upload.md +2 -3
- package/skills/weaver-e10-caizhilian/references/files.md +23 -2
- package/skills/weaver-e10-caizhilian/references/folder.md +48 -16
- package/skills/weaver-e10-caizhilian/references/setting-attach.md +61 -42
- package/skills/weaver-e10-caizhilian/references/setting-backup.md +13 -51
- package/skills/weaver-e10-caizhilian/references/setting-encrypt.md +20 -51
- package/skills/weaver-e10-caizhilian/references/setting-storage.md +82 -147
- package/skills/weaver-e10-caizhilian/references/source-manifest.json +99 -1
- package/skills/weaver-e10-caizhilian/references/withheld.md +20 -44
- package/skills/weaver-e10-shared/SKILL.md +24 -18
- package/skills/weaver-e10-shared/references/e10-auth-and-session.md +16 -15
- package/skills/weaver-e10-shared/references/non-interactive-environment.md +10 -10
- package/skills/weaver-e10-workflow/SKILL.md +23 -44
- package/skills/weaver-e10-workflow/references/source-manifest.json +40 -25
- package/skills/weaver-e10-workflow/references/workflow-create.md +278 -85
- package/skills/weaver-e10-workflow/references/workflow-edit.md +1 -1
- package/skills/weaver-e10-workflow/references/workflow-memory.md +1 -4
- package/skills/weaver-e10-workflow/references/workflow-query.md +2 -2
- package/skills/weaver-e10-yepiaotong/SKILL.md +10 -7
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing-examples.md +49 -1
- package/skills/weaver-e10-yepiaotong/references/invoice-issuing-qys-ledger.md +66 -0
- package/skills/weaver-e10-yepiaotong/references/invoice-reim.md +59 -36
- package/skills/weaver-e10-yepiaotong/references/reim-api-reference.md +54 -509
- package/skills/weaver-e10-yepiaotong/references/reim-examples.md +182 -345
- package/skills/weaver-e10-yepiaotong/references/reim-expense-subject-rules.md +4 -5
- package/skills/weaver-e10-yepiaotong/references/reim-form-fill-rules.md +153 -345
- package/skills/weaver-e10-yepiaotong/references/reim-phone-subsidy-rules.md +5 -5
- package/skills/weaver-e10-yepiaotong/references/reim-workflow.md +182 -154
- package/skills/weaver-e10-yepiaotong/references/source-manifest.json +96 -0
- package/skills/weaver-e10-yepiaotong/references/reim-fast-path.md +0 -119
|
@@ -0,0 +1,460 @@
|
|
|
1
|
+
# 设计器工厂模板指南
|
|
2
|
+
|
|
3
|
+
> 本文件为 `SKILL.md` 的子模块,在用户用 `designer comp-add --template` 加组件、或需要参考"如何配置组件"时加载。
|
|
4
|
+
>
|
|
5
|
+
> 本 skill **自带打包**两类资产(`assets/factory/`),全部封装、自包含:
|
|
6
|
+
> - **factory 模板**(`factory-*.json`):从【纯拖拽未配置】的初始态样本抽取——平台真实初始结构/默认值/字段类型,comp.config 原样保留(无业务数据、无配置期多余字段)。源页对个别组件若非纯初始态(Comment 已绑 `targetId`/`moduleValue`、Picture/CountDown 的 `styles[]` 携源页 `themeId`/样式记录 ID),打包时已把源页残留长 ID 剥掉 → 置空,对齐原 8「`styles:[]` 无长 ID 无绑定」的干净初始态。**greenfield 用户开箱即用 `comp-add --template`**,不依赖已有页面。
|
|
7
|
+
> - **example-configured(-N).json**:从【已配置】的真实页面 genericize——**领域无关**:含 CJK 字符的串视为业务值 → `<value>`(平台结构/枚举/CSS/图标路径均为 ASCII,业务内容必含中文,故对任何业务域通用,无需维护业务词表);`fieldId`/`objId/业务值`→`<id>`/`<value>`、`field_<n>`→`<field_name>`、`ft_<n>`→`<form_table>`、UUID→`<uid>`,留结构与枚举——一份"配置范例页",**供学习完整配置方式**(tableField 列项、measures/dimensions 度量维度、menuConfig 菜单项、panels 指标卡、pics 图片等的填充结构),以后遇到用户需求不至于配置错误。
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 工厂模板概念
|
|
12
|
+
|
|
13
|
+
factory 模板 = 平台纯拖拽初始态的 comp(PC+MOBILE 对,config 字段完整、绑定全空)。`designer comp-add <type> --template @<file>` 时作为新 comp 的**复制源**:替换 `id`(生成新 32 位 UUID)+ 重连 `refCompId`(PC/MOBILE 互指)→ push 进对应 `terminalType` 的 `comps[]` → `designer save`。
|
|
14
|
+
|
|
15
|
+
**为什么用 factory(初始态)而不是凭空构造**:
|
|
16
|
+
- 接口(layout-save §4.3/§6.1)要求 comps 的 `config` 字段**完整**,缺字段崩页(ERR-007/008)。
|
|
17
|
+
- 接口只给 Slide 一例完整 config;其余组件 config 字段集未给,无法凭契约拼装。
|
|
18
|
+
- factory 取自平台真实拖拽初始态(字段名/类型/默认值都是平台原样),克隆即得干净可用的 comp,再按 `example-configured.json` 的范例填数据绑定。
|
|
19
|
+
|
|
20
|
+
**filter 形态跟平台真实**:factory 的 filter 是平台拖拽初始值(Slide=`[]` 数组、Calendar=`{commonFilters:[]}`、NList/图表无 filter 键)——跟 `/layout/list` 返回一致,往返 save 不冲突。(注:layout-save.md 契约表写 filter=Object,与平台 Slide 实际返回的 `[]` 不一致,以平台真实为准。)
|
|
21
|
+
|
|
22
|
+
> **机制依据**:`designer save` 入参铁律——layouts 取自 `/layout/list`、只构造 `comps`(见 `guide-designer.md`)。comp-add 的 factory 模式即"提供一份完整 comps 元素供复制"。
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## 打包的资产清单
|
|
27
|
+
|
|
28
|
+
路径前缀 = 本 skill 的 `assets/factory/`。
|
|
29
|
+
|
|
30
|
+
**克隆起点(factory 模板,平台初始态,绑定空)**:
|
|
31
|
+
|
|
32
|
+
原有 8 组件(源 2ganjing):
|
|
33
|
+
|
|
34
|
+
| 文件 | 组件 type | 用途 |
|
|
35
|
+
|---|---|---|
|
|
36
|
+
| `factory-slide.json` | `Slide` | 幻灯片轮播 |
|
|
37
|
+
| `factory-digital-panel.json` | `DigitalPanel` | 数字面板(指标卡) |
|
|
38
|
+
| `factory-nav-panel.json` | `NavPanel` | 导航面板 |
|
|
39
|
+
| `factory-pie.json` | `Pie` | 饼图 |
|
|
40
|
+
| `factory-bar.json` | `Bar` | 柱状图 |
|
|
41
|
+
| `factory-line.json` | `Line` | 折线图 |
|
|
42
|
+
| `factory-nlist.json` | `NList` | 数据列表 |
|
|
43
|
+
| `factory-calendar.json` | `Calendar` | 日历 |
|
|
44
|
+
|
|
45
|
+
新增 20 组件(源 0805yuanshi):
|
|
46
|
+
|
|
47
|
+
| 文件 | 组件 type | 用途 | h(算出) |
|
|
48
|
+
|---|---|---|---|
|
|
49
|
+
| `factory-circular.json` | `Circular` | 环形图 | 34 |
|
|
50
|
+
| `factory-bar-stack.json` | `BarStack` | 堆叠柱图 | 34 |
|
|
51
|
+
| `factory-h-bar.json` | `HBar` | 横向柱图 | 34 |
|
|
52
|
+
| `factory-h-bar-stack.json` | `HBarStack` | 横向堆叠柱图 | 34 |
|
|
53
|
+
| `factory-nightingale.json` | `Nightingale` | 南丁格尔玫瑰图 | 34 |
|
|
54
|
+
| `factory-gauge.json` | `Gauge` | 仪表盘 | 34 |
|
|
55
|
+
| `factory-treemap.json` | `Treemap` | 矩形树图 | 34 |
|
|
56
|
+
| `factory-bubble.json` | `Bubble` | 气泡图 | 34 |
|
|
57
|
+
| `factory-picture.json` | `Picture` | 图片 | 24 |
|
|
58
|
+
| `factory-progress-chart.json` | `ProgressChart` | 进度条 | 15 |
|
|
59
|
+
| `factory-collapse-panel.json` | `CollapsePanel` | 折叠面板 | 21 |
|
|
60
|
+
| `factory-new-tab.json` | `NewTab` | 标签页 | 24 |
|
|
61
|
+
| `factory-nav-bar.json` | `NavBar` | 导航栏 | 6 |
|
|
62
|
+
| `factory-nav-menu.json` | `NavMenu` | 导航菜单 | 6 |
|
|
63
|
+
| `factory-page-header.json` | `PageHeader` | 页头 | 8 |
|
|
64
|
+
| `factory-count-down.json` | `CountDown` | 倒计时 | 15 |
|
|
65
|
+
| `factory-search-global.json` | `SearchGlobal` | 搜索框 | 8 |
|
|
66
|
+
| `factory-eb-button.json` | `EbButton` | 按钮 | 5 |
|
|
67
|
+
| `factory-fast-create.json` | `FastCreate` | 快速新建 | 13 |
|
|
68
|
+
| `factory-comment.json` | `Comment` | 评论 | 29 |
|
|
69
|
+
| `chart-dimensions.json` | — | 图表维度样本(Employee/Date/Select/String,`chart dimension-add --template` 用) | — |
|
|
70
|
+
|
|
71
|
+
**配置范例(学习如何填数据绑定)**:
|
|
72
|
+
|
|
73
|
+
| 文件 | 用途 |
|
|
74
|
+
|---|---|
|
|
75
|
+
| `example-configured.json` | 原 8 组件【已配置】整页(源 0804111),genericize 占位,留结构与枚举。学习 tableField/measures/dimensions/menuConfig/panels/pics 等填充结构 |
|
|
76
|
+
| `example-configured-2.json` | 新增 20 组件【已配置】整页(源 0805peizhi),同 genericize。学习 Circular/BarStack/HBar/HBarStack/Nightingale/Gauge/Treemap/Bubble/Picture/NewTab/CollapsePanel/NavBar/NavMenu/CountDown/SearchGlobal/EbButton/FastCreate/PageHeader/Comment 的配置结构。 |
|
|
77
|
+
| `example-btn-progress-collapse-configured.json` | **按钮/进度条/折叠面板【已配置】范例**(源 333anniu4,genericize:19 位 ID→`<id>`、中文→`<value>`、保留 `{username}/{userid}` 平台变量)。学习:EbButton 两种 btnKind(`levelBtnGroup`/`tileBtnGroup`)+ btnGroup[].eventGroup NewPage 跳页 + children 子菜单;ProgressChart 数据驱动(dataset/denominator `80{pay.field_<id>}`/`100{all.field_<id>}` + rangeColor + molecularName/denominatorName.nameAlias);CollapsePanel 2 panel + flow.linkedNodes 映射 InternalContainer 子件 + panel content `{username}{userid}` 变量。**填补 example-2 缺 ProgressChart 的空缺**。 |
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## comp-add --template 命令
|
|
82
|
+
|
|
83
|
+
| 命令 | 说明 |
|
|
84
|
+
|------|------|
|
|
85
|
+
| `e10-cli designer comp-add <pageId> --template <名\|@file> [--type <Type>] [--x --y --w --h]` | 从 factory 模板读 comp(**模板名直传**:`pie`/`bar`/`nlist`/`slide`… 28 个内置;也可 `@<文件路径>` 或 `designer layout --json` 导出的布局),生成新 32 位 UUID + refCompId 互连,push 到对应 terminalType comps,save。`--type` 与模板 type 不一致会拒绝;`--h` 按下方「组件高度判断」自行算 |
|
|
86
|
+
|
|
87
|
+
> **坑**:
|
|
88
|
+
> - factory 模板名直接传:`comp-add --template pie`(CLI 内置发现,28 组件全有);也可传 `@<文件路径>` 或任意布局 JSON 路径。`designer factory-list` 列出全部内置模板名↔type 对照。
|
|
89
|
+
> - `designer layout <pageId> --json` 输出完整布局 JSON,可作 `comp-add` 的 `--template`。`--json` 是**全局选项**(`--help` 在全局有列),普通 `designer layout` 输出是格式化摘要,不能当模板。
|
|
90
|
+
> - **免登录页(EB_ANONYMOUS_PAGE)不支持需登录态的组件**——`Comment`/`SearchGlobal`/`FastCreate` 在 EB_ANONYMOUS_PAGE 报错(要当前用户上下文)。须建普通 `EB_PAGE` 页承载(`page create <name> <appId> --module EB_PAGE`,默认即 EB_PAGE;参数顺序:名称在前)。
|
|
91
|
+
> - factory 模板的 `measures`/`dimensions` 已清空成 `[]`(初始态,绑定全空)。克隆后用 `chart measure-add`/`dimension-add` 加。
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## 组件高度判断(自行算,不预设)
|
|
96
|
+
|
|
97
|
+
`comp-add`/`designer position` 的 `--h` 是**栅格行数**,**实际像素 = h × 行高(px)**。高度过低 → 内容被裁切显示不完全。**不要套预设值,按组件内容 + 页行高自行算 h**:
|
|
98
|
+
|
|
99
|
+
**铁律**:组件内容高度 ≤ h × 行高,否则裁切。拿不准就**慷慨给 h**(多留白别裁切),加完浏览器打开页面核对,裁切就 `designer position <pageId> <compId> --h <更大值> --yes` 往上调。
|
|
100
|
+
|
|
101
|
+
> **配置完字段后必回核高度宽度(2026-08-06 验证)**:comp-add 时给的 h 是初始值,**配置完字段(绑数据/嵌套子组件/事件/添加内容项)后要按内容项数 + 宽度回核 `layout.h/w`**——**高度是内容驱动 + 宽度感知的**:NavBar/NavMenu 有 N 个导航项→`h = 8 + ceil(N / floor(w/3)) × 8`(**w6→4项2行≈h24-25,w12→1行≈h16**,半宽时项换行要更高);DigitalPanel N 张卡→`h = 8 + ceil(N/floor(w/3))×8`(w6 2×2≈h24);CollapsePanel N 面板+1 展开→`4N+12`(4面板≈h28-30);NavPanel N 菜单同公式;NList 按 pageSize;图表按 config.height÷行高(≈34);FastCreate/SearchGlobal≈h15(1.5×初始h10)。尤其 NewTab/CollapsePanel:`autoHeight:true` 在嵌套内容未注册时缩到仅壳(如 4.8)→ 设计页不显示嵌套。
|
|
102
|
+
|
|
103
|
+
> **美观布局:多列栅格(别全 w12 纵堆)**——28 组件全 w12 纵堆成超长列不美观。推荐多列栅格分组:
|
|
104
|
+
> ```
|
|
105
|
+
> [PageHeader w12]
|
|
106
|
+
> [NavBar w6][NavMenu w6]
|
|
107
|
+
> [SearchGlobal w4][EbButton w4][FastCreate w4]
|
|
108
|
+
> [DigitalPanel w12][Slide w12]
|
|
109
|
+
> [Pie w4][Bar w4][Line w4] ← 图表3列网格(w4 h34)
|
|
110
|
+
> [Circular w4][HBar w4][Nightingale w4]
|
|
111
|
+
> [BarStack w4][HBarStack w4][Treemap w4]
|
|
112
|
+
> [Gauge w4][Bubble w4][ProgressChart w4]
|
|
113
|
+
> [CountDown w6][Picture w6]
|
|
114
|
+
> [NewTab w12][CollapsePanel w12]
|
|
115
|
+
> [NList w8][NavPanel w4]
|
|
116
|
+
> [Calendar w12][Comment w12]
|
|
117
|
+
> ```
|
|
118
|
+
> 多列栅格用 `designer position` 手设 x/y/w/h(按分组),**不跑 `designer auto-height`**(auto-height 是单列 w12 纵堆模式,会覆盖多列 w)。两种模式:① 单列快速定高→`designer auto-height <pageId>`(w12,按内容算 h+纵堆 y,改后自动保存);② 多列美观栅格→手设 x/y/w/h(按上面分组,同行同高,y 按 max(行内高) 累加)。**w6 的 NavBar 4 项要 h24-25**(半宽换行),不是单列的 h16。
|
|
119
|
+
>
|
|
120
|
+
> **自动化:跑 `designer auto-height <pageId>` 一键按内容定高 + 重排 y**(不用手算,改后自动保存):
|
|
121
|
+
> ```bash
|
|
122
|
+
> e10-cli designer auto-height <pageId> # 按 navMenus/panels/pageSize/newButtons/config.height 等内容算 h + 重排 y + autoHeight=false,保存
|
|
123
|
+
> e10-cli designer unlock <pageId> # 收尾解锁
|
|
124
|
+
> ```
|
|
125
|
+
> 规则:顶层组件(无 flow.parent)按原 y 顺序重排 y=累加 h、`autoHeight=false` 防缩;嵌套子组件(IC/子按钮 flow.parent 有值)不动(IC 内相对坐标,IC autoHeight 自撑高)。公式(CLI 内置):PageHeader=8+按钮行、NavBar/NavMenu=8+ceil(项数/floor(w/3))×8、NavPanel/DigitalPanel=8+ceil(项数/column)×8、CollapsePanel=4×面板数+12、NList=8+ceil(pageSize×1.5)、图表=ceil(height/10.7)。**配完所有组件字段后必跑一次**,省手算且不漏。
|
|
126
|
+
|
|
127
|
+
**行高怎么取**(每页不同,必须查):
|
|
128
|
+
- `designer layout <pageId> --json`,看页面 `config.style.layout.rowHeight`(若有直接用)。
|
|
129
|
+
- 没标 rowHeight 的,按经验区间 **10.7~16.4px/行**估算;**未知时取安全下界 10.7px/行**算(保证最坏情况不裁切)。
|
|
130
|
+
|
|
131
|
+
**按组件内容算 h**(内容高度 ÷ 行高,向上取整):
|
|
132
|
+
|
|
133
|
+
| 组件 | 内容高度依据 | 算法 |
|
|
134
|
+
|---|---|---|
|
|
135
|
+
| 图表(Pie/Bar/Line + 新增 Circular/BarStack/HBar/HBarStack/Nightingale/Gauge/Treemap/Bubble) | `config.height`(px,默认 360) | `h = ceil(config.height / 行高)`;360px ÷10.7 ≈ 34 |
|
|
136
|
+
| 图片 Picture | 图片显示高度(height=100% 填满 comp) | `h = ceil(250 / 行高)` ≈ 24(按图高调) |
|
|
137
|
+
| 进度条 ProgressChart | 进度条 ~150px | `h = ceil(150 / 行高)` ≈ 15 |
|
|
138
|
+
| 折叠面板 CollapsePanel | 面板内容 ~220px | `h = ceil(220 / 行高)` ≈ 21 |
|
|
139
|
+
| 标签页 NewTab | 标签栏+内容区 ~250px | `h = ceil(250 / 行高)` ≈ 24 |
|
|
140
|
+
| 导航栏 NavBar / 导航菜单 NavMenu | ~60px | `h = ceil(60 / 行高)` ≈ 6 |
|
|
141
|
+
| 页头 PageHeader | ~80px | `h = ceil(80 / 行高)` ≈ 8 |
|
|
142
|
+
| 倒计时 CountDown | ~150px | `h = ceil(150 / 行高)` ≈ 15 |
|
|
143
|
+
| 搜索框 SearchGlobal | ~80px | `h = ceil(80 / 行高)` ≈ 8 |
|
|
144
|
+
| 按钮 EbButton | ~50px | `h = ceil(50 / 行高)` ≈ 5 |
|
|
145
|
+
| 快速新建 FastCreate | ~130px | `h = ceil(130 / 行高)` ≈ 13 |
|
|
146
|
+
| 评论 Comment | 评论列表 ~300px(可滚轮) | `h = ceil(300 / 行高)` ≈ 29 |
|
|
147
|
+
| 数字面板 DigitalPanel | 卡片高(单行约 100-130px)× 卡片行数(`panels` 数 ÷ `columns`) | `h = ceil(卡片行数 × 单卡高 / 行高)` |
|
|
148
|
+
| 列表 NList | `pageSize` × 列表行高(约 32-40px/行) | `h = ceil(pageSize × 列表行高 / 行高)`;**列表可滚轮控制上下**,h 不必塞下全部行——给能显示 pageSize 行的值即可,更小也行(滚轮补) |
|
|
149
|
+
| 幻灯片 Slide | banner 内容,约 250-410px | `h = ceil(内容高度 / 行高)` |
|
|
150
|
+
| 导航面板 NavPanel | 菜单项数 ÷ 每行列数(`column`) = 菜单行数 × 单行高 | `h = ceil(菜单行数 × 单行高 / 行高)`;菜单可分页,h 适中 |
|
|
151
|
+
| 日历 Calendar | 月视图约 6 行 day-cell,约 360-400px | `h = ceil(月视图高度 / 行高)` |
|
|
152
|
+
|
|
153
|
+
> **堆叠**:多个组件上下排时 `--y` = 上一个 y + 上一个 h。列表可滚轮所以 h 适中;其余组件**一开始就给够高度**,别裁切。
|
|
154
|
+
>
|
|
155
|
+
> factory 模板里的 `layout.h` 已按各组件内容 + 安全行高 10.7px/行**自行算好**(图表/日历 h=34、列表 h=30、幻灯片 h=29、数字面板 h=13、导航 h=15)——是合适默认,克隆即不裁切(按最坏行高 10.7 算,实际页行高更高则更宽裕)。**但若该页行高 < 10.7 仍可能裁切**:comp-add 后浏览器打开核对,裁切就 `designer position <pageId> <compId> --h <更大值> --yes` 往上调。仍按上方方法自行判断,别死套 factory 的 h。
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## 克隆后必做:重绑数据到自己的表单
|
|
160
|
+
|
|
161
|
+
factory 模板是平台初始态(绑定全空),克隆后须把数据绑到**你自己的表单**。**下列 6 类组件有 setter 子命令,全部 CLI 直配**(2026-09-07 验证全通;绑定条目由 CLI 从 `/api/ebuilder/common/ds/fields` 取平台原样字段对象自动构造,physicalField/browserParams/formInfo 填齐,**不会出现维度错填/幽灵空槽**;`--field-id` 传字段名或 fieldId 均可):
|
|
162
|
+
|
|
163
|
+
- **数字面板(DigitalPanel)**:`designer digital-panel panel-add <pageId> <compId> --obj-id --app-id --field-id <数字字段id|名> --aggregator <SUM|COUNT|AVG|MAX|MIN> --label "<标题>"`。每项聚合一个字段。
|
|
164
|
+
- **图表(全 11 种)**:`designer chart dataset-set <pageId> <compId> --obj-id --app-id --text "<表单名>"` → `chart measure-add`(SUM/AVG/MAX/MIN 用 `--field-id`;COUNT 用 `--count-records`)→ `chart dimension-add --field-id <id|名> --text`(**不再需要 --type/--template**)→ `chart title --text`。Date 维度自动按月。像素高度 `chart height --px <n>`。
|
|
165
|
+
|
|
166
|
+
> **组件标题用业务名(必做)**:comp-add 出来的 title 是 factory 默认占位("标题"/"饼图"/"折线图"/"柱状图"/"图片"/"按钮"/"导航面板"等),**配完每个组件必须设业务标题**——图表 `designer chart title <pageId> <compId> --text "<业务名>" --enabled on --yes`(标题=维度+度量描述:饼图→分布占比如"订单状态分布"、柱图→对比如"客户等级消费对比"、折线→趋势如"月度销售趋势"、堆积→构成分解如"各月订单金额与运费");非图表脚本改 `config.title/titleEnabled`(NavPanel→"业务导航"、DigitalPanel→"销售KPI指标"、NList→"销售订单明细"、CollapsePanel→"业务模块"等)。**别留 factory 默认占位名**,不美观也不专业。
|
|
167
|
+
|
|
168
|
+
- **数字面板(DigitalPanel)**:`designer digital-panel panel-add <pageId> <compId> --obj-id --app-id --field-id <Number字段fieldId> --aggregator <SUM|COUNT|AVG|MAX|MIN> --label "<标题>"`。每项聚合一个 Number 字段;fieldId 一次写对并核对(手误少几位会取数错)。
|
|
169
|
+
- **图表(Pie/Bar/Line + 新增 Circular/BarStack/HBar/HBarStack/Nightingale/Gauge/Treemap/Bubble)**:同用 `designer chart dataset-set <pageId> <compId> --obj-id --app-id --text "<表单名>"` 绑顶层 dataset;`designer chart measure-add` 加度量(COUNT 用 `--count-records` 按数据id;SUM/AVG/MAX/MIN 用 `--field-id` 指 Number 字段);`designer chart dimension-add <pageId> <compId> --type <Employee|Date|Select> --template @<skill>/assets/factory/chart-dimensions.json --obj-id --app-id --field-id --text`(`--type` + `--template` 都必填,template 是含该 type 维度的图表布局文件)。factory 模板的 `measures`/`dimensions` 已清空(初始态),必须用上面 setter 加。
|
|
170
|
+
|
|
171
|
+
> **factory 图表模板字段完整性(2026-08-05 已修)**:8 个新增图表(Circular/BarStack/HBar/HBarStack/Nightingale/Gauge/Treemap/Bubble)的 factory 模板曾**缺 22 个 config 字段**(`xAxis`/`yAxis`/`scatterColor`/`scatterSize`/`dataset`/`filter`/`markLine`/`dataListDisplay`/`eventGroup`/`nodesShowRange`/`measureName`/`yoyDimensions` 等)→ 平台崩页「设计页/预览页不显示」(尤以 Bubble 明显,旧记 Circular/Nightingale/Gauge 预览不显示同因)+ `measure-add` 后出现幽灵空 measure 槽 `{format:NONEFORMAT}`(须运行时 node 删)。**已修**:factory 模板按 `example-configured-2.json` 同类型 comp 补全这 22 字段(绑定类 `dataset.id/text/appId`、`eventGroup`、`dataListDisplay.fieldList` 留空,结构类 `xAxis`/`markLine` 等照范例默认值),comp-add 出来即结构完整、`measure-add` 不再产生空槽。**维护者换样本时务必保留这 22 字段**(别在清洗时剥掉它们),否则回归崩页+空槽。
|
|
172
|
+
|
|
173
|
+
> **各图表类型的度量/维度配方**(源自 `example-configured-2.json` 验证,照此配不踩坑):
|
|
174
|
+
>
|
|
175
|
+
> | 图表 | 度量 measures | 维度 dimensions |
|
|
176
|
+
> |---|---|---|
|
|
177
|
+
> | Pie / Bar / Line / Circular / Nightingale / HBar / Treemap / Bubble | 1×SUM(`--field-id` 指 Number 字段) | 1(`--type` 按字段类型 Employee/Date/Select) |
|
|
178
|
+
> | **BarStack / HBarStack(堆叠)** | **2×SUM**(两个 Number 字段,各 `measure-add` 一次) | 1(堆叠按此维度分组) |
|
|
179
|
+
> | **Gauge(仪表盘)** | 1×**COUNT**(`--count-records` 按数据id,记记录数) | 0(**不配维度**) |
|
|
180
|
+
>
|
|
181
|
+
> ⚠️ 堆叠图是 **2 度量 + 1 维度**,不是「1 度量 + 2 维度」;Gauge 用 COUNT 不用 SUM 且不配维度。具体每个 measure/dimension 的字段绑定结构对照 `example-configured-2.json` 里同类型 comp 的 `config.measures`/`config.dimensions` 填。
|
|
182
|
+
- **列表(NList)**:`designer list dataset-set <pageId> <compId> --obj-id --app-id --text` 绑 dataset(factory 初始态无 dataset 也直配,无需模板克隆);`list field-add <pageId> <compId> --field-id <id|名> --obj-id --text --type <类型> --comp-type <类型>`(两处同值:Text/Select/DateComponent/Money/NumberComponent/Employee 等);`list order-add --field-id --obj-id [--desc]`。
|
|
183
|
+
- **导航面板(NavPanel)**:`designer nav-panel menu-add <pageId> <compId> --name "<菜单名>" --to-page <目标pageId>` 加跳页菜单项(双层 eventGroup 自动构造)。factory 克隆出的 NavPanel `menuSourceType=DEFAULT`(取应用默认菜单树)——**DEFAULT 下自定义菜单项正常渲染**。若要切自定义菜单来源用 `designer nav-panel menu-source-type <pageId> <compId> CUSTOM`。`groupBrowser`/`menuBrowser` 须界面配(样本为空)。
|
|
184
|
+
- **幻灯片(Slide)**:`designer slide pic-add <pageId> <compId> --url "<imgUrl>"`。**坑**:`imgUrl` 须**平台资源路径**(如 `/build/ebdcoms/images/cover/cover_1.png`),本地路径(`D:/...`)浏览器不可达显示破图;e10-cli 无图片上传命令,本地图须设计器界面上传或用平台内置 cover 资源。**Git Bash MSYS 路径转换已内置防护**(`/build/...` 被转成 `C:/Program Files/Git/...` 会自动还原)。
|
|
185
|
+
- **日历(Calendar)**:`designer calendar dataset-bind <pageId> <compId> --obj-id --app-id --text --start <开始Date字段> --end <结束Date字段> --title-field <标题字段>` 绑数据源(**内置 dataShowType 全视图数组** `["2","4","3","5"]` + baseInfo,事件直接渲染,无需再脚本补字段);`designer calendar field-map <pageId> <compId> [--start] [--end|clear] [--title-field]` 调映射(`--end clear` 做全天单日事件);`calendar title`。**坑**:日历开始/结束 Date 字段**建表单时一次建全**更稳。
|
|
186
|
+
|
|
187
|
+
> 组件标题用业务名:图表/日历/幻灯/导航面板用各自 `title` 子命令;DigitalPanel/NList 配置时传 `--label`/`--text` 即业务名。改完收尾 `designer save` + `designer unlock`。
|
|
188
|
+
|
|
189
|
+
- **新增非图表组件(Picture/ProgressChart/CollapsePanel/NewTab/NavBar/NavMenu/CountDown/SearchGlobal/EbButton/FastCreate/PageHeader/Comment)**:**这 12 个组件 CLI 无专属 setter 子命令**(`designer <comp>` 会报 unknown command,勿试)。factory 模板已自带平台初始态,克隆后配置方式 = `designer layout <pageId> --json > layouts.json` 导出 → 用脚本(node/python)改目标 comp 的 `config`(参照 `assets/factory/example-configured-2.json` 或 `example-btn-progress-collapse-configured.json` 里同类型 comp 的 `config` 结构填)→ `designer save <pageId> --layouts @layouts.json`。**图表类(全 11 种)有 setter**,统一走 `designer chart`。
|
|
190
|
+
|
|
191
|
+
> **非图表组件配置方法(2026-08-05,含范例 `example-btn-progress-collapse-configured.json`)**:
|
|
192
|
+
> - **Picture**:factory 模板 `config.path.url` 已填**平台内置 cover 图** `/build/ebdcoms/images/cover/cover_1.png`(greenfield-safe,跨租户可用),comp-add 即显示;**用户自行替换为自己的图片资源**(e10-cli 无图片上传命令,自换须设计器界面上传或用平台素材路径,见 Slide 条同款坑)。
|
|
193
|
+
> - **EbButton 事件/按钮组**:CLI 无 setter,但**可脚本配**。参照范例 EbButton(2 个,两种 btnKind):`btnKind` = `btn`(单按钮)/ `levelBtnGroup`(下拉按钮组)/ `tileBtnGroup`(平铺按钮组);`btnGroup[]` 每项可挂 `eventGroup`(NewPage 跳页:`linkInfo.page.{pageId,pageName,pageType:"PAGE",parentId:"pages",appid,openMode:"4"}`)+ `children`(子菜单,每项又可挂 eventGroup,`isSplit:true` 做分割线)。配按钮组样式另有 10 字段(`display/icon/defaultStyle/hoverStyle/groupBtnDefaultStyle/groupBtnHoverStyle/groupBtnPosition/subGroupBtnDefaultStyle/subGroupBtnHoverStyle/subGroupBtnPosition`,btnKind 非 `btn` 时出现)。配法:导出 layout → 改 comp.config.btnGroup/btnKind/eventGroup → save。
|
|
194
|
+
> - **ProgressChart 数据驱动(无需页面级数据集,CLI 可解)**:参照范例 + 收款页实践——`dataset`/`denominator` 用**直接 objId 表达式** `"{<formObjId>.field_<fieldId>}"`(如 `"{1300163811369664522.field_1300163811369664515}"`,验证收款页 `数据集:0` 照样数据驱动)。`rangeColor` 分段色(0-20 红/20-60 黄/60-100 蓝),`molecularName.nameAlias`/`denominatorName.nameAlias` 设分子/分母显示名,`valueType:"resultValue"`。factory 初始态 `dataset="80"`/`denominator="100"`(静态 80%),改成 objId 表达式即数据驱动。详见下方「深度配置踩坑」§5。
|
|
195
|
+
> - **CollapsePanel / NewTab 嵌套机制(已破解)**:容器通过 `config.flow.linkedNodes` 把每个 `panels[].id`/`tabs[].id` 映射到一个 **InternalContainer** 子件(canvas 容器),IC 的 `config.flow.parent` 反指父容器 id;`panels[].children`/`tabs[].children` 保持空 `[]`(嵌套不走 children)。**factory-collapse-panel.json / factory-new-tab.json 已把 `flow.linkedNodes`/`flow.nodes` 清空 `{}`/`[]`**——原模板带源页 IC id,comp-add 只克隆容器不克隆 IC,留悬空引用致 panel/tab 内容画板坏。清空后:comp-add 出来的容器不带悬空引用。**纯 CLI 可建嵌套**(见下方「非图表组件深度配置踩坑」§4:手加 InternalContainer comp + 双向连 `flow.linkedNodes`/`flow.parent`/`flow.nodes`,**不须开设计器 UI**);用户在浏览器开设计器时 UI 也会为缺 IC 的 panel/tab 自动建一个。panel/tab `content` 支持 `{username}`/`{userid}` 等平台变量(范例:`{username}{userid}<value>`)。
|
|
196
|
+
> - **Chart Date 维度默认按月**:`dimension-add --type Date` 后维度即 `dateGroupType=month`/`format=yyyy-MM`(已确认),`chart dimension-date-group ... month` 会报"无实际改动"——GAP-002「Date 维度默认按天需手改月」**实际不触发**,Date 维度 add 后即按月。
|
|
197
|
+
> - **脏数据/greenfield**:factory 模板与范例文件均已 genericize(19 位业务 ID→`<id>`、中文→`<value>`、保留 `{username}`/`{userid}` 平台变量与图标/颜色结构),跨租户/跨用户机器开箱即用。维护者加新样本须跑 genericize(按本节规则:19 位 ID→`<id>`、CJK→`<value>`、`field_<n>`→`field_<id>`、保留平台变量),**别把源页 pageId/appid/fieldId/中文业务名带进封装**。
|
|
198
|
+
|
|
199
|
+
> **脚本改 config 坑**:用 python/node 脚本改 `layouts.json` 时,bash 变量别直接嵌进 heredoc(`python3 <<EOF ... $VAR ... EOF` 里 $VAR 展开易出错/丢空格)——把 pageId/fieldId 等作**命令行参数或环境变量**传给脚本(`python3 edit.py "$pageId" "$fieldId"` 或 `os.environ`),脚本内 `sys.argv`/`process.argv` 取。改完 `designer save --layouts @layouts.json`。
|
|
200
|
+
|
|
201
|
+
> **能力判断铁律**:配组件前先 `e10-cli designer <comp> --help` 查全部 setter 子命令再判断能力,不能凭印象说"CLI 配不了"。**仅 6 类注册组件有子命令**(calendar/slide/digital-panel/chart/nav-panel/list,均有 setter);Picture/ProgressChart/CollapsePanel/NewTab/NavBar/NavMenu/CountDown/SearchGlobal/EbButton/FastCreate/PageHeader/Comment 等 **12 类无 setter,`designer <comp> --help` 会报 unknown command**,配置走 factory 模板 + 脚本改 `comp.config` + `designer save`。
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
## 组件业务用途与数据选取(先理解用户想看什么数据)
|
|
206
|
+
|
|
207
|
+
> 配组件前先想清楚"这块要回答什么业务问题",再选组件类型 + 选度量/维度。**别机械地"有 Money 字段就绑 SUM"**——进度条的分子分母、堆积图的各层都要业务上说得通(同量纲、能相加/相比)。用户需求模糊就反问,别上来就 comp-add。
|
|
208
|
+
|
|
209
|
+
### 图表类(数据驱动,度量/维度选取是关键)
|
|
210
|
+
|
|
211
|
+
| 组件 | 业务用途 | 度量 measures | 维度 dimensions | 举例 |
|
|
212
|
+
|---|---|---|---|---|
|
|
213
|
+
| **ProgressChart 进度条** | **完成进度** = 已完成量/总量 | 分子=已完成量(SUM)、分母=总量(SUM)(**同量纲**) | —(无维度) | 收款进度=已收款金额/合同总额;付款进度=已付/应付;采购完成率=已采购/计划 |
|
|
214
|
+
| Pie/Circular/Nightingale 饼/环/玫瑰 | **占比构成** | 1×SUM(各类的量) | 1(分类) | 采购状态分布、付款方式占比 |
|
|
215
|
+
| Bar/HBar 柱/条形 | **对比排名** | 1×SUM | 1(分类) | 各供应商采购额对比、各月销售额 |
|
|
216
|
+
| Line 折线 | **趋势** | 1×SUM | 1(时间/类别,Date 按月) | 月度采购金额趋势 |
|
|
217
|
+
| **BarStack/HBarStack 堆积柱/条** | **总量的构成分解**(看总量+各部分占比) | 2+ SUM(**各构成部分**,业务上要能相加/同量纲) | 1(主分组) | 各月采购额按付款状态(已付/未付)堆积;各供应商采购额按品类堆积 |
|
|
218
|
+
| Gauge 仪表盘 | **单一关键指标/KPI** | 1×COUNT(记录数)或 SUM | —(无维度) | 本月采购总额、订单总数、达成率 |
|
|
219
|
+
| Treemap 矩形树图 | **层级占比**(面积=大小) | 1×SUM | 1(分类,**Select 或 String 均可**——验证 Select 客户等级 + String 客户名称都能正常显示) | 各供应商采购额占比(面积大=采购多) |
|
|
220
|
+
| Bubble 气泡 | **三维关系** | **1×SUM(只能选1个指标)** | 1(Date/分类) | 订单总额 by 月(X=维度,Y=度量值,气泡大小=值) |
|
|
221
|
+
|
|
222
|
+
> **堆积图要点**:2 个度量必须是"同一总量的构成部分"(如 已付+未付=应付总额,或 各品类金额=总采购额),不是任意两个 Number 字段。若用户要"看各月采购额+按状态分解"用堆积;只要"看各月采购额对比"用普通柱图。
|
|
223
|
+
|
|
224
|
+
### 容器/导航/展示类(非数据驱动,看用途配内容)
|
|
225
|
+
|
|
226
|
+
| 组件 | 业务用途 | 配什么 |
|
|
227
|
+
|---|---|---|
|
|
228
|
+
| NewTab/CollapsePanel 标签页/折叠面板 | 信息分区/导航 | tab/panel content 用 `{username}`/`{userid}` 变量或静态文本;内嵌子组件(图表/列表)放 InternalContainer(见深度配置 §4) |
|
|
229
|
+
| NavBar/NavMenu 导航 | 跳转入口 | navMenus 挂 eventGroup NewPage 跳真实页 |
|
|
230
|
+
| PageHeader 页头 | 页面标题+新建按钮 | newButtons 挂 NewPage |
|
|
231
|
+
| EbButton 按钮 | 操作动作(新建/导出/跳转) | btnGroup 挂事件;levelBtnGroup 做下拉菜单 |
|
|
232
|
+
| DigitalPanel 数字面板 | 多 KPI 指标卡(一眼看关键指标) | 每张卡聚合一个 Number 字段(SUM/COUNT/AVG) |
|
|
233
|
+
| NList 列表 | 看每条记录(明细) | 绑表单 dataset + tableField 列 |
|
|
234
|
+
| Calendar 日历 | 事件/日程(付款日历/交付日历) | 绑 Date(start/end)+title 字段 |
|
|
235
|
+
| SearchGlobal 全局搜索 | 跨表搜索入口 | 绑一个表单的搜索字段 |
|
|
236
|
+
| CountDown 倒计时 | 截止提醒(采购年度截止/合同到期) | deadline 设目标日期 |
|
|
237
|
+
| Comment 评论 | 协作讨论 | targetId 绑业务对象(表单) |
|
|
238
|
+
| Picture 图片 | 展示图 | path 用平台素材 |
|
|
239
|
+
| FastCreate 快速新建 | 快速创建业务记录(任务/目标/日程) | moduleType 选 task/goal/schedule |
|
|
240
|
+
|
|
241
|
+
### 数据选取原则
|
|
242
|
+
1. **先问业务问题**:用户说"做个采购看板",先问想看哪些指标(总额/占比/趋势/明细/进度),别上来就 comp-add。
|
|
243
|
+
2. **度量同量纲可比较**:进度条分子分母、堆积图各层都要业务上能相加/相比(都 Money 或都 Number)——**别用 金额/数量 做比值**(无意义,本轮踩过)。
|
|
244
|
+
3. **维度选分类/时间**:饼/柱维度=分类(状态/类型),折线/气泡维度=时间(Date 按月)。
|
|
245
|
+
4. **没合适字段就先建表单**:如要做"收款进度",表单要有"已收款金额"+"合同总额"两个字段;没有就先 `form create/add-field` 补,再配图表。
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## 非图表组件深度配置踩坑(2026-08-05 实操,必读)
|
|
250
|
+
|
|
251
|
+
> 以下坑来自「分期付款管理收款页面」38 comps 实操(全 28 组件 + 5 InternalContainer + 5 内嵌子按钮)。**脚本改 config 后必须回读校验**(见 §7)——壳字段/双层结构会骗脚本"以为配了实际没生效"。
|
|
252
|
+
|
|
253
|
+
### 1. eventGroup 必须双层 `[[obj]]`
|
|
254
|
+
|
|
255
|
+
平台结构是 `Array<Array<ClickEvent>>`——外层=事件组,内层=组内 click 事件。**单层 `[{CLICK}]` 预览点击不触发 = 没配**(本轮最深的坑:PageHeader newButtons / NavBar·NavMenu navMenus / EbButton btnGroup[].eventGroup 全失效,看起来像"没配",实际是被平台吞了)。
|
|
256
|
+
|
|
257
|
+
正确结构(所有挂 eventGroup 的地方统一):
|
|
258
|
+
```json
|
|
259
|
+
"eventGroup": [[
|
|
260
|
+
{ "type":"CLICK", "name":"单击", "id":"<uid>", "disableDelete":true,
|
|
261
|
+
"events":[ { "id":"<uid>", "type":"NewPage", "linkInfo":{...} } ],
|
|
262
|
+
"actionDesc":"<描述>" }
|
|
263
|
+
]]
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
**NewPage 跳页 `linkInfo.page` 两种形态**(别混):
|
|
267
|
+
- **跳表单台账**:`pageType:"VIEWPORT"` / `pageId=<viewId>`(**viewId 非 objId**,从 `e10-cli form list-view <objId> <appId>` 取)/ `parentId:"Form_<objId>"` / `pageViewType:"NList"` / `appid` / `openMode:"4"`
|
|
268
|
+
- **跳自定义 EB 页**:`pageType:"PAGE"` / `pageId=<pageId>` / `parentId:"pages"` / `terminalScopes:"PC,MOBILE"` / `appid` / `openMode:"4"`
|
|
269
|
+
|
|
270
|
+
`linkInfo` 另含 `openMode`/`params:[]`/`name`/`flatToBottom:false`/`icon:{path:"#icon-eBuilder-o",style:{color:"#5d9cec",fillType:"borderColor",borderColor:"#5d9cec"}}`。
|
|
271
|
+
|
|
272
|
+
### 2. EbButton 下级按钮 children 子菜单
|
|
273
|
+
|
|
274
|
+
`btnKind` 三种(**均已验证可用**):`btn`(单按钮)/ `levelBtnGroup`(下拉按钮组,点开下拉)/ `tileBtnGroup`(平铺,直接触发——按钮平铺展示,点击直接执行事件,非下拉)。
|
|
275
|
+
|
|
276
|
+
> **children 规则(2026-08-06 已确认,必读)**:
|
|
277
|
+
> - **btnGroup 必须 ≥2 项**;children **只能挂在 `btnGroup[1]`+(第2个及以后)**,`btnGroup[0]` 是叶子(无 children)。只有一个按钮时设 children 无效。
|
|
278
|
+
> - **带 children 的 btn 必须含 `actions:[]` + `isSplit:false` 两字段**(叶子 btn 不需要这俩)。**缺这俩会被平台 mangle**:children 被剥掉、该 btn 退化成 factory 默认"按钮"、children 错挪到 btn[0]。
|
|
279
|
+
> - 照 `0806jindutiao.json` 结构才不坏:`btn[0]={id,text,onlyIcon,hoverTip,btnGroupDisabled,eventGroup}`(叶子,无 children/无 actions);`btn[1]={id,text,actions:[],onlyIcon,isSplit:false,hoverTip,btnGroupDisabled,children:[...],eventGroup}`(带 children + actions + isSplit)。
|
|
280
|
+
> - children 项也须含 `actions:[]`+`isSplit:false`(分割线项 `isSplit:true` 无 eventGroup);`children[].parentId` 指向所属 `btnGroup[]` 项 id。
|
|
281
|
+
|
|
282
|
+
正确结构(≥2 按钮,children 在第2个):
|
|
283
|
+
```json
|
|
284
|
+
"btnGroup":[
|
|
285
|
+
{ "id":"<b0>", "text":"新建订单", "onlyIcon":false, "hoverTip":"", "btnGroupDisabled":false,
|
|
286
|
+
"eventGroup":[[ <click> ]] }, // btn[0] 叶子,无 children
|
|
287
|
+
{ "id":"<b1>", "text":"更多操作", "actions":[], "onlyIcon":false, "isSplit":false, "hoverTip":"", "btnGroupDisabled":false,
|
|
288
|
+
"children":[
|
|
289
|
+
{ "id":"<uid>", "text":"<子项>", "actions":[], "onlyIcon":false, "isSplit":false, "hoverTip":"", "btnGroupDisabled":false, "parentId":"<b1>", "eventGroup":[[ <click> ]] },
|
|
290
|
+
{ "id":"<uid>", "text":"分割线", "actions":[], "isSplit":true },
|
|
291
|
+
...
|
|
292
|
+
],
|
|
293
|
+
"eventGroup":[[ <click> ]] } // btn[1] 带 children + actions + isSplit
|
|
294
|
+
}
|
|
295
|
+
]
|
|
296
|
+
|
|
297
|
+
### 3. CountDown 截止时间在 `countDownSettings[].deadline`,不是顶层 deadline
|
|
298
|
+
|
|
299
|
+
顶层 `deadline` 是**壳字段**(默认值 `"default"`)。只改顶层 → 倒计时不倒数(停在建组件时的默认时刻,一直"已到期")。真正生效在 `countDownSettings` 数组(支持多个倒计时):
|
|
300
|
+
```json
|
|
301
|
+
"timingType":"day-hour-minute-second", "endType":"specifiedTime",
|
|
302
|
+
"countDownSettings":[
|
|
303
|
+
{ "id":"<uid>", "name":"<倒计时名>", "timingType":"day-hour-minute-second",
|
|
304
|
+
"endType":"specifiedTime", "deadline":"2026-09-25T00:00:00", "paramName":"" }
|
|
305
|
+
]
|
|
306
|
+
```
|
|
307
|
+
`deadline` 用 **ISO** `YYYY-MM-DDTHH:mm:ss`。
|
|
308
|
+
|
|
309
|
+
### 4. NewTab / CollapsePanel 嵌套子组件(纯 CLI 可建,不须开 UI)
|
|
310
|
+
|
|
311
|
+
> **2026-08-06 从 `0806jindutiao.json` 验证**。**纠正旧说**:「CLI `designer save` 不自动建 IC,须开设计器 UI 触发」**不准确**——纯 CLI 可建嵌套,手动加 InternalContainer + 双向连 `flow`。**完全不用 `pid`**(所有 comp pid=null/"",嵌套全走 `flow.parent`/`flow.nodes`/`flow.linkedNodes`)。
|
|
312
|
+
|
|
313
|
+
**完整嵌套链(2026-08-06 从 000.json 验证,全部字段必配)**:
|
|
314
|
+
```
|
|
315
|
+
容器 (NewTab/CollapsePanel)
|
|
316
|
+
├─ flow.isCanvas = true ← 容器也要 isCanvas!
|
|
317
|
+
├─ flow.linkedNodes { <panelId/tabId>: <IC.id> } ← panel/tab → IC
|
|
318
|
+
├─ flow.nodes [ <IC.id>, ... ] ← 直接子级 IC 列表
|
|
319
|
+
└─ panels/tabs.children = [] ← 不走 children(保持空)
|
|
320
|
+
InternalContainer (IC,每个 panel/tab 一个,是 canvas)
|
|
321
|
+
├─ flow.parent = <容器.id> ← IC → 容器(反向)
|
|
322
|
+
├─ flow.nodes [ <子组件.id>, ... ] ← IC 里的子组件
|
|
323
|
+
├─ flow.isCanvas = true ← IC 必须有(画布渲染面)
|
|
324
|
+
├─ package = "" / category = "" ← 空字符串(不是 null)
|
|
325
|
+
├─ titleEnabled = false / hasCssCache = false
|
|
326
|
+
└─ layout {i,x:0,y:0,w:12,h:10,hidden:false,scope:"",selected:false} 无 autoHeight/moved
|
|
327
|
+
子组件 (factory comp-add 的图表/列表/按钮,在 IC 里)
|
|
328
|
+
└─ flow.parent = <IC.id> ← 子 → IC
|
|
329
|
+
└─ pid = "" ← 空字符串(不是 null)
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
**容器必配字段(照搬 000.json,缺一不显示)**:
|
|
333
|
+
- **NewTab**: `rerender:"on"` + `addChildAfterSelect:"notAllow"` + `topOperatBtns:{enabled:true,alignType:"CENTER",btns:[设置按钮]}` + **`autoHeight:true`**(不是 false!)+ `titleEnabled:false` + `flow.isCanvas:true` + tab ID 用 UUID
|
|
334
|
+
- **CollapsePanel**: `spreadType:"mutex"` + `expandAll:false` + **`autoHeight:true`** + `titleEnabled:false` + `flow.isCanvas:true` + panel ID 用 UUID
|
|
335
|
+
- **IC**: `flow.isCanvas:true` + `package:""` + `category:""` + `titleEnabled:false` + `hasCssCache:false` + layout 无 autoHeight/moved
|
|
336
|
+
- **子组件**: 用 **factory comp-add**(非脚本构造)——有完整 comp-level 字段(package/category/refCompId/applyStyle/prop/pid:""),脚本只改 `flow.parent=IC.id`
|
|
337
|
+
|
|
338
|
+
> **最大坑(2026-08-06 验证)**:之前设 `autoHeight:false`(防缩)是**错的**——容器要 `autoHeight:true` 才能撑开画布显示 IC 嵌套内容(false 把容器定死,设计页不渲染画布)。`autoHeight:true` + `flow.isCanvas:true`(IC+容器) + `rerender:"on"`(NewTab) + `spreadType:"mutex"`(CollapsePanel) 组合才能在设计页正常显示嵌套。
|
|
339
|
+
|
|
340
|
+
factory-collapse-panel.json / factory-new-tab.json 已清空 `flow.linkedNodes`/`flow.nodes`(去悬空源页 IC 引用)。建嵌套步骤:
|
|
341
|
+
1. comp-add NewTab/CollapsePanel(容器,flow 已空)
|
|
342
|
+
2. **InternalContainer 无 factory 模板**——用脚本在 `layouts.json` 里手加 InternalContainer comp(`type:"InternalContainer"`,`config` 含 `type/name/layout/flow:{parent:<容器id>}/displayName/titleEnabled/hasCssCache`)
|
|
343
|
+
3. 容器 `flow.linkedNodes[panelId] = IC.id` + 容器 `flow.nodes.push(IC.id)`
|
|
344
|
+
4. IC `flow.parent = 容器.id` + IC `flow.nodes` 设为子组件列表
|
|
345
|
+
5. 子组件 `flow.parent = IC.id`(**不用 pid**)+ `IC.flow.nodes.push(子组件id)` + 子组件 layout 用 IC 内坐标(如 `x:0,y:0,w:12,h:5`)
|
|
346
|
+
6. **双向校验**:`IC.flow.parent == 容器.id` 且 `容器.flow.linkedNodes[panelId] == IC.id` 且 `容器.flow.nodes 含 IC.id` 且 `IC.flow.nodes 含子组件.id` 且 `子组件.flow.parent == IC.id`
|
|
347
|
+
7. `designer save` + 回读校验(§7)
|
|
348
|
+
|
|
349
|
+
`panels[].children`/`tabs[].children` 保持空 `[]`。panel/tab `content` 支持 `{username}`/`{userid}` 平台变量。
|
|
350
|
+
|
|
351
|
+
### 5. ProgressChart 绑字段(要往 `pc.config.dataset` 加 calcFields 条目,CLI 可解)
|
|
352
|
+
|
|
353
|
+
> **2026-08-06 已确认 + 用户解答**(参照 `0806jindutiao.json` 样本 + 用户反馈)。
|
|
354
|
+
>
|
|
355
|
+
> **formId 推测**:`formId = formObjId + 1`(平台 ID 顺序约定——form 对象 objId + 1 = 表单数据表 ID;验过 3 个表单均为+1,`curl ds/fields` response 的 field.browserParams.formId 可验)。
|
|
356
|
+
>
|
|
357
|
+
> **valueType**:`"resultValue"` = **聚合计算**(SUM 把列所有值加一起,**一般场景用这个**,验证进度条正确显示百分比如 44.42%=SUM收款/SUM合同);`"originValue"` = **原始列**(原始值,也验证可用但不常用)。
|
|
358
|
+
|
|
359
|
+
**步骤**(脚本改 layouts.json 后 `designer save`):
|
|
360
|
+
|
|
361
|
+
1. 往页面 `config.dataset` 数组 push 一个 dataset 条目(分子、分母各一个独立条目,参照 0806 的 yfkje/zje):
|
|
362
|
+
```json
|
|
363
|
+
{ "id":"<gen 19位>", "name":"<别名如 cg1>", "dataType":"calc", "calcFields":[...], "fields":[],
|
|
364
|
+
"datasource":{ "id":"<formObjId>", "text":"<formName>(ft_<formId>)", "type":"LOGIC",
|
|
365
|
+
"groupId":"weaver-ebuilder-form-service", "isPhysical":true, "usage":"all", "detailTable":false,
|
|
366
|
+
"objType":"physical", "module":"ebuilder", "appId":"<appId>", "isFormModuleSelected":true },
|
|
367
|
+
"filter":[], "calcFields":[ <见下> ] }
|
|
368
|
+
```
|
|
369
|
+
2. `calcFields` 项结构(`aggregator` 是聚合方式):
|
|
370
|
+
```json
|
|
371
|
+
{ "id":"<calcFieldId,32hex uid>", "type":"Number", "compType":"<Money|NumberComponent>",
|
|
372
|
+
"text":"<显示名>", "mainPrimaryKey":false,
|
|
373
|
+
"browserParams":{ "formId":"<objId+1>", "formInfo":{"fieldId":"<fieldId>"}, "layoutId":"",
|
|
374
|
+
"serviceModule":"ebuilderform", "fieldId":"<fieldId>" },
|
|
375
|
+
"objId":"<formObjId>", "name":"field_<fieldId>", "aggregator":"SUM" }
|
|
376
|
+
```
|
|
377
|
+
3. ProgressChart comp.config:
|
|
378
|
+
```json
|
|
379
|
+
{ "dataset":"{<分子别名>.<分子calcFieldId>}", "denominator":"{<分母别名>.<分母calcFieldId>}",
|
|
380
|
+
"molecularName":{"nameAlias":"<分子名>"}, "denominatorName":{"nameAlias":"<分母名>}",
|
|
381
|
+
"valueType":"originValue", "showText":true, "showName":true, "title":"<标题>", "titleEnabled":true,
|
|
382
|
+
"rangeColor":[{"min":{"disable":false,"value":0},"max":20,"color":"#ff4d4f"},...] }
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
**要点**:
|
|
386
|
+
- `formId = formObjId + 1`(采购单 objId ...854 → formId ...855;可 `curl ds/fields` 或 `form read` 验)。
|
|
387
|
+
- 表达式 `{alias.<calcFieldId>}` 的 `<calcFieldId>` = 步骤2 里 calcField 的 `id`(自己生成的 32hex uid),**不是 fieldId**。
|
|
388
|
+
- 分子、分母各用独立 dataset 条目(不同别名),即使都指向同一表单。
|
|
389
|
+
- `objId` 从 `form list <appId>`、`fieldId` 从 `form read <objId> --app-id <appId>` 取。**不需要 UI 的 6 步浏览接口**(`ds/group`/`ds/listByPage`/`ds/fields`/`generateId`/`ebAppTagIsOpen` 是设计器选字段流程,CLI 跳过)。
|
|
390
|
+
- factory 初始 `dataset="80"`/`denominator="100"`(静态 80%);按上述改后即数据驱动。
|
|
391
|
+
|
|
392
|
+
> **业务用途**:进度条=**完成进度 = 已完成量/总量(同量纲)**。别用 金额/数量 做比值(无意义);做"收款进度"要表单有"已收款金额"+"合同总额"两 Money 字段。详见上方「组件业务用途与数据选取」节。
|
|
393
|
+
|
|
394
|
+
> **系统参数**:`{username}`/`{userid}`/`{当前日期}`/`{当前部门}` 平台变量在渲染上下文解析,可用于 panel content/CountDown paramName/过滤条件。`ebAppTagIsOpen` 是查应用功能标签开关,CLI 不需要调。
|
|
395
|
+
|
|
396
|
+
**非数据组件清单**(无数据集概念,第一轮就讲清楚,别硬配数据源):SearchGlobal、NewTab、NavBar/NavMenu、PageHeader、EbButton、Picture、CountDown、FastCreate、Comment。内容用 `{username}`/`{userid}` 变量或静态文本即可,无需数据集。
|
|
397
|
+
|
|
398
|
+
### 6. 日历事件不渲染 span / 只点天才显示 + title 单独配
|
|
399
|
+
|
|
400
|
+
- **症状**:日历事件不作为 span 渲染、只有点击某天才显示数据源。
|
|
401
|
+
- **根因(2026-08-06 验证,参照 555rilizhedie.json working 样本)**:缺**数据展示视图字段 `dataShowType`**(必须是数组 `["2","4","3","5"]`,不是字符串"0")+ `titlefieldid` 用错值。`dataset-bind` 设的初始 dataSetNodes[0].dataShowType 可能是"0"(不渲染事件)。
|
|
402
|
+
- **修复(照 working 555 结构,555 用销售订单同 objId 可直接对照)**:
|
|
403
|
+
- `config.dataSetNodes[0].dataShowType = ["2","4","3","5"]`(**数组**,视图模式集合=日/周/双周/月,**全上即可**,具体数字↔视图的映射不清楚,一般全包含);同步设顶层 `config.dataShowType`)+ `config.dataSetNodes[0].baseInfo = {titlefieldid:<**表单字段相关值**,非固定"1",表示标题取自表单的哪个字段;默认值非"1">, startTimeField:<开始Date fieldId>, endTimeField:<结束Date fieldId>, startTimeRange:9, endTimeRange:18, colorField:"", detailInfo:""}`(startTime/endTime 用 Date 字段 fieldId)。
|
|
404
|
+
- `config.calendarType="1"`、`config.defaultView="3"`(month)、`config.viewModeSelectType="tile"`、`config.showViewModeChange=true`、`config.showLunar=true`。
|
|
405
|
+
- `config.canCreateInterData=["calendar","task","contactRemind"]`、`config.canCreateDataset=true`、`config.baseInfo={use_viewModeChangeHideItem:true}`、`config.baseInfoForMulp={startTimeRange:9,endTimeRange:18}`、`config.historyData={}`、`config.notTransformField=["topOperatBtns","bottomOperatBtns"]`。
|
|
406
|
+
- `config.dataSetNodes[0].dataset.text="<formName>(ft_<formId>)"`(带 ft_前缀)+ `dataSetNodes[0].dataAction={}`、`dataSetName:"日程"`、`show:true`、`datasetType:"dataset"`。
|
|
407
|
+
- CLI 起步:`calendar dataset-bind <pageId> <compId> --obj-id --app-id --text --start --end --title-field --yes` + `calendar view <pageId> <compId] month --yes`;再脚本补上述全字段(`dataShowType` 数组 + titlefieldid:"1" + canCreateInterData 等),否则事件不渲染 span。
|
|
408
|
+
- 日历 `config.title`/`titleEnabled` **单独配**(`calendar title <pageId> <compId>` setter 或脚本改 comp.config.title/titleEnabled)。
|
|
409
|
+
|
|
410
|
+
### 7. save 后必回读校验(自检闭环,别把验证甩给用户)
|
|
411
|
+
|
|
412
|
+
`designer save` 返回 `✅ 已保存` **≠ 字段配对生效**——壳字段(如顶层 deadline)会骗脚本"以为配了",双层结构(eventGroup `[[obj]]`、countDownSettings 数组、IC.flow.nodes)尤其易错。**每次脚本改 config + save 后,必跑 `e10-cli --json designer layout <pageId> --terminal pc 2>/dev/null` 回读,校验关键字段真进了**:
|
|
413
|
+
- eventGroup 是双层 `[[...]]` 不是单层 `[{...}]`
|
|
414
|
+
- countDownSettings[].deadline 是目标 ISO 时间(不是顶层壳)
|
|
415
|
+
- IC.flow.nodes 含子组件 id、子组件.flow.parent == IC.id、容器.flow.linkedNodes[panelId] == IC.id、**每个 tab/panel 都有 IC**(不只 tab1/panel1)
|
|
416
|
+
- 图表 measures 无幽灵空槽 `{format:NONEFORMAT}`(见上方图表坑)
|
|
417
|
+
- **图表 dimensions[0].id 是数字 fieldId**(不是维度名 text)——见下方 dimension-add 坑
|
|
418
|
+
- EbButton children 在 `btnGroup[1]+`(不是 btn[0]),带 children 的 btn 含 `actions:[]`+`isSplit:false`
|
|
419
|
+
- Bubble 气泡图 measures=1(不能多)
|
|
420
|
+
- **各组件 layout.h/w 合适**:配置完字段(绑数据/嵌套/事件)后**回核高度宽度**——容器 NewTab/CollapsePanel `h≥12`(建议 24)放嵌套子组件、`autoHeight:false` 避免缩到仅壳(验证 autoHeight 在内容未注册时缩到 4.8 致设计页不显示嵌套);图表 `h≥34` 不裁切;列表 h 适中(可滚轮);autoHeight:true 的组件确认没被缩到仅壳
|
|
421
|
+
|
|
422
|
+
> **dimension-add 可能错填所有 fieldId 槽(2026-08-06 已确认,必读)**:`chart dimension-add --type Select --field-id <fid> --text "<名>"` 有时把 **--text 的值填进 dimension 的所有 fieldId 槽**(不止 id),`text` 反而空 → 图解析不出维度 → 前端显示"缺维度"。验证 Pie+HBarStack 中招,其他图(Circular/Bar/HBar/Nightingale/Treemap)正常。
|
|
423
|
+
>
|
|
424
|
+
> **回读校验**:`layout --json` 查 `dimensions[0]`,比对"能正常显示的同类图"维度。**需全字段修正(不止 id/formInfo.fieldId)**:
|
|
425
|
+
> - `id` = 数字 fieldId
|
|
426
|
+
> - `text` = 维度名
|
|
427
|
+
> - `name` = `field_<fieldId>`
|
|
428
|
+
> - `formInfo.fieldId` = fieldId
|
|
429
|
+
> - `browserParams.formInfo.fieldId` = fieldId、`browserParams.fieldId` = fieldId、`browserParams.formId` = objId+1
|
|
430
|
+
> - `physicalField` = 字段物理名(从 `curl ds/fields` 取,形如 `f_<dataKey>`)
|
|
431
|
+
> - `config.fieldId` = fieldId、`config.title` = 维度名、`config.dataKey`/`config.columnName` = physicalField
|
|
432
|
+
> - `fieldGroup.id` = form objId
|
|
433
|
+
>
|
|
434
|
+
> 物理字段名(physicalField/dataKey/columnName)取法:`curl 'https://<base>/api/ebuilder/common/ds/fields' -F groupId=weaver-ebuilder-form-service -F sourceId=<objId> -F sourceType=LOGIC -F detailFieldsGroup=false -F enableMerge=true -F params=[]`,响应 `data[0].fields[].physicalField`(也即 config.dataKey/columnName)。**别只改 id 就以为修好了**——browserParams/config/name/physicalField 全要改,否则维度仍解析不出。
|
|
435
|
+
|
|
436
|
+
把验证责任留给自己,别甩给用户反馈才暴露。
|
|
437
|
+
|
|
438
|
+
---
|
|
439
|
+
|
|
440
|
+
### 命令/参数坑(速查)
|
|
441
|
+
|
|
442
|
+
- **Windows bash 反斜杠路径被吃**:`D:\dir\x.json` → `D:dirx.json`。正解用正斜杠 `D:/dir/x.json`(node 脚本内同理)。
|
|
443
|
+
- **`layout --json` 输出混 [AUTH] 行污染 JSON**:`> file` 会把 stderr 的 `[AUTH] 认证文件:...` 混进来致解析失败。必须 `2>/dev/null` 单独重定向 stdout:`e10-cli --json designer layout <pageId> --terminal all > layouts.json 2>/dev/null`。
|
|
444
|
+
- **`measure-add` 度量显示名用 `--text` 不是 `--name`**:`--name` 选项不存在,报 `required option --text`。
|
|
445
|
+
- **`calendar dataset-bind` 必填 `--text`**(表单显示名)。
|
|
446
|
+
- **`--yes` 支持不一致**:`comp-add` / `publish-menu` / 各 setter(chart/calendar/slide 等)**需 `--yes`**(非交互不加 → 静默"已取消",compIds 一个都没加);`designer save` **无 `--yes`** 选项。非交互环境一律加 `--yes`(save 除外)。
|
|
447
|
+
|
|
448
|
+
---
|
|
449
|
+
|
|
450
|
+
## 重新生成资产(维护者)
|
|
451
|
+
|
|
452
|
+
`assets/factory/` 的模板与范例是**打包好的数据资产**(源自平台真实页面解码样本的初始态/已配置态,已 genericize 去业务值)。skill 运行时只用打包好的资产(`designer comp-add --template` 内置发现,自包含分发),不读样本路径。维护者更换样本时:替换对应 `factory-*.json`(保持 PC+MOBILE 双端对、config 完整、绑定空、genericize 规则不变),skill 与 CLI 的模板发现逻辑无需改动。
|
|
453
|
+
|
|
454
|
+
---
|
|
455
|
+
|
|
456
|
+
## 相关指南
|
|
457
|
+
|
|
458
|
+
- 布局层(info/layout/save/comp-add)→ `guide-designer.md`
|
|
459
|
+
- 组件 config 字段名 → `guide-designer-components.md`
|
|
460
|
+
- 命令速查 → `../common/ref-cli-commands.md`「designer」节
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
# 设计器版本层指南
|
|
2
|
+
|
|
3
|
+
> 本文件为 `SKILL.md` 的子模块,在用户查看页面历史版本或还原版本时加载。覆盖:版本列表(version list)、版本还原(version revert)。
|
|
4
|
+
>
|
|
5
|
+
> **契约来源**:全部字段、参数、取值枚举来自 page/version/list 与 page/version/revert 两个 HTTP 接口规约。本指南几乎完全由接口契约推导。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## designer version list — 版本列表
|
|
10
|
+
|
|
11
|
+
**接口契约**:GET `/api/bs/ebuilder/designer/page/version/list`,请求头 `ETEAMSID`,需 `ObjType.PAGE`+`OptType.READONLY` 权限。
|
|
12
|
+
|
|
13
|
+
### Query 参数
|
|
14
|
+
|
|
15
|
+
| 参数名 | 类型 | 必填 | 默认值 | 取值范围/约束 | 说明 |
|
|
16
|
+
|--------|------|------|--------|----------------|------|
|
|
17
|
+
| pageId | Long | 是 | 无 | 正整数 | 目标页面 ID |
|
|
18
|
+
| pageNo | Integer | 否 | 1 | 正整数 | 页码 |
|
|
19
|
+
| pageSize | Integer | 否 | 10 | 1-200 | 每页条数 |
|
|
20
|
+
| creator | Long | 否 | 无 | 正整数 | 创建人 ID 筛选 |
|
|
21
|
+
| startTime | String | 否 | 无 | `yyyy-MM-dd` | 起始日期(系统时区,拼 `00:00:00`) |
|
|
22
|
+
| endTime | String | 否 | 无 | `yyyy-MM-dd` | 结束日期(系统时区,拼 `23:59:59`) |
|
|
23
|
+
| remark | String | 否 | 无 | - | 版本备注筛选 |
|
|
24
|
+
| funcType | Enum | 否 | `contains` | 见下表 | remark 匹配方式 |
|
|
25
|
+
|
|
26
|
+
### funcType 取值枚举(接口文档给全,可抄)
|
|
27
|
+
|
|
28
|
+
| funcType | 含义 |
|
|
29
|
+
|----------|------|
|
|
30
|
+
| `contains` | 包含(默认) |
|
|
31
|
+
| `uncontains` | 不包含 |
|
|
32
|
+
| `empty` | 为空 |
|
|
33
|
+
| `nempty` | 不为空 |
|
|
34
|
+
| `startWith` | 开头包含 |
|
|
35
|
+
| `endWith` | 结尾包含 |
|
|
36
|
+
| `eq` | 等于 |
|
|
37
|
+
| `neq` | 不等于 |
|
|
38
|
+
|
|
39
|
+
> `funcType` 是服务端 switch-case 白名单(防 SQL 注入),传白名单外值会被拒绝。
|
|
40
|
+
|
|
41
|
+
### 返回结构
|
|
42
|
+
|
|
43
|
+
`data` = `Pagination<PageVersionEntity>`:`{ count, pageNo, pageSize, hitCache, records[] }`,按 `version` **降序**排列,只返 `deleteType=0`。
|
|
44
|
+
|
|
45
|
+
**PageVersionEntity 字段**:
|
|
46
|
+
|
|
47
|
+
| 字段 | 类型 | 说明 |
|
|
48
|
+
|------|------|------|
|
|
49
|
+
| id | Long | 版本记录 ID(**版本还原用的 versionId 取此 `id`,不是 `version` 号**) |
|
|
50
|
+
| version | Integer | 版本号,从 1 递增 |
|
|
51
|
+
| pageId | Long | 所属页面 ID |
|
|
52
|
+
| remark | String | 版本备注 |
|
|
53
|
+
| remarkLabelId | Long | 备注多语言标签 ID(`!= -1` 时按用户语言自动翻译 remark) |
|
|
54
|
+
| creator | Long | 创建人 ID |
|
|
55
|
+
| creatorName | String | 创建人姓名(来自员工缓存,**可能为 null**) |
|
|
56
|
+
| createTime | Long | 创建时间(Unix 毫秒) |
|
|
57
|
+
| updateTime | Long | 更新时间 |
|
|
58
|
+
| tenantKey | String | 租户标识 |
|
|
59
|
+
| deleteType | Integer | 删除标识(只返 `0`) |
|
|
60
|
+
|
|
61
|
+
> **坑**:
|
|
62
|
+
> - `creatorName` 来自员工缓存,员工已删除时为 `null`——别当异常。
|
|
63
|
+
> - `startTime` 系统自动拼 `00:00:00`、`endTime` 拼 `23:59:59`(系统时区)。
|
|
64
|
+
> - 默认保留最近 **20** 个版本(可通过 `weaver.ebuilder.designer.version-reserve-count` 配置);无备注的旧版本会被自动清理。
|
|
65
|
+
> - 版本由 `designer save` 自动产生(每次 save 触发 `updatePageVersion` + 历史快照)。
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
## designer version revert — 版本还原
|
|
70
|
+
|
|
71
|
+
**接口契约**:POST `/api/bs/ebuilder/designer/page/version/revert`,Query `pageId`(必填)、`versionId`(必填,取 version list 返回的 `records[].id`)、`pageName`(可选,用于日志),请求头 `ETEAMSID`,需 `ObjType.PAGE`+`OptType.EDIT` 权限。返回 `data: true`。
|
|
72
|
+
|
|
73
|
+
### 校验
|
|
74
|
+
|
|
75
|
+
- `versionId` 所属页面必须与 `pageId` 一致(跨页 versionId 被拒)。
|
|
76
|
+
|
|
77
|
+
### 连锁操作
|
|
78
|
+
|
|
79
|
+
还原会整体替换 PC + MOBILE 两端布局,并执行:更新布局(updateLayouts)→ 重新生成源码(createOrUpdateEcode)→ 更新页面版本(updatePageVersion)→ 记录操作日志(`revertPage`)。
|
|
80
|
+
|
|
81
|
+
> **坑**:
|
|
82
|
+
> - **非幂等**:重复调同一 `versionId` 会产生重复连锁操作,多次还原。别循环重试。
|
|
83
|
+
> - **不可逆**:还原后未保存的当前编辑丢失。建议还原前先 `designer lock`。
|
|
84
|
+
> - 还原**本身不自动产生新版本快照**(之前的 save 才触发快照);还原后须重新 `designer layout <pageId>` 刷新看新状态。
|
|
85
|
+
> - 兼容性:旧模块 id(`EB`→`EB_PAGE`、`PORTAL`→`PORTAL_PAGE`)与旧终端字段会被重映射。
|
|
86
|
+
>
|
|
87
|
+
> **⚠️ CLI 行为(非接口契约)**:`--yes` 非交互要求(非 TTY 自动化下不加 `--yes` 会"已取消")属 CLI 行为,非接口契约——本骨架不展开。
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## 版本管理速查
|
|
92
|
+
|
|
93
|
+
调用顺序:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
e10-cli designer info <pageId> # 看 allowEdit / isLock
|
|
97
|
+
e10-cli designer version list <pageId> --size 20 # 列历史版本(--page/--size/--since/--until/--creator/--remark/--func,非 --page-no/--page-size)
|
|
98
|
+
# (可选)e10-cli designer lock <pageId> # 还原前锁定防并发
|
|
99
|
+
e10-cli designer version revert <pageId> <versionId> --yes # 还原(versionId 取 list 返回的 id)
|
|
100
|
+
e10-cli designer layout <pageId> # 还原后刷新看新状态
|
|
101
|
+
e10-cli designer unlock <pageId> # 解锁
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
> **关键**:`versionId` 用 version list 返回的 `records[].id`(版本记录 ID),不是 `version` 号。
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## 相关指南
|
|
109
|
+
|
|
110
|
+
- 布局层(info/layout/save/lock)→ `guide-designer.md`
|
|
111
|
+
- 命令速查 → `../common/ref-cli-commands.md`「designer」节
|