weaver-e10-builder 1.5.13 → 1.5.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commands/actionflow.d.ts.map +1 -1
- package/dist/commands/actionflow.js +1 -0
- package/dist/commands/actionflow.js.map +1 -1
- package/dist/commands/designer-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-settings.d.ts +3 -0
- package/dist/commands/workflow-base-settings.d.ts.map +1 -0
- package/dist/commands/workflow-base-settings.js +73 -0
- package/dist/commands/workflow-base-settings.js.map +1 -0
- package/dist/commands/workflow-condition.d.ts.map +1 -1
- package/dist/commands/workflow-condition.js +59 -450
- package/dist/commands/workflow-condition.js.map +1 -1
- package/dist/commands/workflow-export.d.ts +9 -0
- package/dist/commands/workflow-export.d.ts.map +1 -0
- package/dist/commands/workflow-export.js +121 -0
- package/dist/commands/workflow-export.js.map +1 -0
- package/dist/commands/workflow-node.d.ts.map +1 -1
- package/dist/commands/workflow-node.js +28 -53
- package/dist/commands/workflow-node.js.map +1 -1
- package/dist/commands/workflow-operator-batch.d.ts +3 -0
- package/dist/commands/workflow-operator-batch.d.ts.map +1 -0
- package/dist/commands/workflow-operator-batch.js +35 -0
- package/dist/commands/workflow-operator-batch.js.map +1 -0
- package/dist/commands/workflow-subprocess.d.ts.map +1 -1
- package/dist/commands/workflow-subprocess.js +21 -33
- package/dist/commands/workflow-subprocess.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +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-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/package.json +1 -1
- package/skill-docs/SKILL.md +155 -154
- package/skill-docs/_catalog.md +9 -2
- 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 +54 -15
- 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-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 +28 -2
- package/skill-docs/references/form/style-templates.md +0 -97
package/dist/commands/form.js
CHANGED
|
@@ -3,8 +3,9 @@ import { AuthSession } from '../core/auth.js';
|
|
|
3
3
|
import { ApiClient } from '../core/client.js';
|
|
4
4
|
import { parseLayoutJson } from '../services/form-layout-source/json.js';
|
|
5
5
|
import { toColumnName, toTableName, resolveFieldKeys } from '../utils/column-name.js';
|
|
6
|
-
import { createCustomPhysicalForm, applyInitialFieldsToNewForm, placeholderFromFormat, reapplyGroupLayout, queryFormStorageSetting } from '../services/form-create.js';
|
|
6
|
+
import { createCustomPhysicalForm, applyInitialFieldsToNewForm, collectDetailEBuilderFields, defaultSwitchOptions, placeholderFromFormat, reapplyGroupLayout, queryFormStorageSetting } from '../services/form-create.js';
|
|
7
7
|
import { getRichType, richIdUnits, BROWSER_KINDS } from '../services/rich-types.js';
|
|
8
|
+
import { BROWSER_BEAN_SEARCH, browserBeanRows, resolveBrowserByName } from '../services/browser.js';
|
|
8
9
|
import { dropFieldComponents, prepareLayoutForSave } from '../services/form-field-drop.js';
|
|
9
10
|
import { describeEditBaseFailure, resolveEditBase as resolveEditBasePure } from '../services/form-edit-base.js';
|
|
10
11
|
import { applyFieldPatches, platformFieldShape } from '../services/form-field-patch.js';
|
|
@@ -22,6 +23,7 @@ import { resolveFormRecord, resolveFormId, appendThirdPartyForms, resolveObjIdBy
|
|
|
22
23
|
import { FIELD_TYPE_CHOICES, canonComponentKey, assertFieldType, normalizeFieldDef } from '../services/form-field-validate.js';
|
|
23
24
|
import { listFormTables, readFieldRecords, mapFieldsToTables } from '../services/form-physical-table.js';
|
|
24
25
|
import { buildFormulaParameters, defaultReturnType } from '../services/formula-detail.js';
|
|
26
|
+
import { assertViewLinkageFormulaFunctions, loadViewLinkageFunctions } from '../services/form-view-linkage-functions.js';
|
|
25
27
|
import { registerOptionTemplateCommand } from './form-option-template.js';
|
|
26
28
|
import { registerFormObjMetaCommands } from './form-obj-meta.js';
|
|
27
29
|
import { prepareSourceLayoutInputs, restoreSourceLayoutAfterCreate } from '../services/form-layout-source/creation.js';
|
|
@@ -310,6 +312,19 @@ export function registerFormCommands(program) {
|
|
|
310
312
|
}
|
|
311
313
|
}
|
|
312
314
|
});
|
|
315
|
+
form.command('browser-source')
|
|
316
|
+
.description('检索当前环境可用的关联浏览数据源(含自定义浏览框)')
|
|
317
|
+
.option('--keyword <name>', '按名称关键词检索', '')
|
|
318
|
+
.action(async (o) => {
|
|
319
|
+
const auth = await AuthSession.fromOptions(program.opts());
|
|
320
|
+
if (!auth)
|
|
321
|
+
throw new Error('无法加载认证');
|
|
322
|
+
const client = new ApiClient(auth);
|
|
323
|
+
const res = await client.get(`${auth.getBaseUrl()}${BROWSER_BEAN_SEARCH}?searchValue=${encodeURIComponent(o.keyword)}`);
|
|
324
|
+
if (res?.code !== 200 || res?.status === false)
|
|
325
|
+
throw new Error(res?.msg || '浏览数据源检索失败');
|
|
326
|
+
console.log(JSON.stringify(browserBeanRows(res).map((b) => ({ id: b.id, name: b.name, module: b.module, type: b.type })), null, 2));
|
|
327
|
+
});
|
|
313
328
|
form.command('create')
|
|
314
329
|
.description('创建表单')
|
|
315
330
|
.argument('<appId>', '应用 ID')
|
|
@@ -571,6 +586,8 @@ export function registerFormCommands(program) {
|
|
|
571
586
|
let objId = '';
|
|
572
587
|
let formId = '';
|
|
573
588
|
let fieldGroups = [];
|
|
589
|
+
/** 明细表定义 → 建出来的 subFormId(明细 EBuilder 关联绑定要用)。 */
|
|
590
|
+
let detailTables = [];
|
|
574
591
|
try {
|
|
575
592
|
const result = await createCustomPhysicalForm(client, baseUrl, appId, name, requestedTableName, false, layoutType);
|
|
576
593
|
objId = result.objId;
|
|
@@ -586,6 +603,7 @@ export function registerFormCommands(program) {
|
|
|
586
603
|
// services/form-create.ts 的 applyInitialFieldsToNewForm,「专项建表」共用同一条链。
|
|
587
604
|
const fieldResult = await applyInitialFieldsToNewForm(client, baseUrl, appId, objId, formId, fieldDefs, { tenantKey: auth.tenantKey, layoutType, systemOverrides });
|
|
588
605
|
fieldGroups = fieldResult.fieldGroups;
|
|
606
|
+
detailTables = fieldResult.detailTables || [];
|
|
589
607
|
}
|
|
590
608
|
catch (e) {
|
|
591
609
|
console.error(`创建失败: ${e.message}`);
|
|
@@ -637,15 +655,22 @@ export function registerFormCommands(program) {
|
|
|
637
655
|
// Step 2: EBuilder fields need follow-up binding to target forms.
|
|
638
656
|
// 无 sformId 的 EBuilder 会被建成裸关联字段(isAddForRelation=false,无目标表),
|
|
639
657
|
// 这是"关联ebuilder不对"的常见来源,明确警告避免静默。
|
|
640
|
-
|
|
658
|
+
// 明细表里的 EBuilder 子字段也要绑定 —— 它们不在 fieldDefs 顶层,必须从 DetailTable.formFields 里取。
|
|
659
|
+
// 只靠下面的顶层循环,明细 EBuilder 会建成`isAddForRelation=false`、没有 sformId/formName 的裸字段。
|
|
660
|
+
const detailEbDefs = collectDetailEBuilderFields(fieldDefs);
|
|
661
|
+
const ebNoTarget = [
|
|
662
|
+
...fieldDefs.filter(f => f.componentKey === 'EBuilder' && !f.sformId),
|
|
663
|
+
...detailEbDefs.filter((f) => !f.sformId).map((f) => ({ ...f, fieldName: `${f.detailName}.${f.fieldName}` })),
|
|
664
|
+
];
|
|
641
665
|
if (ebNoTarget.length > 0) {
|
|
642
666
|
console.error(` ⚠ ${ebNoTarget.length} 个 EBuilder 字段缺少 sformId,将建成无关联裸字段:`);
|
|
643
667
|
for (const f of ebNoTarget)
|
|
644
668
|
console.error(` - ${f.fieldName}(需在 fields.json 指定 sformId=<目标表单objId> 与 dataTitle=<显示字段>)`);
|
|
645
669
|
}
|
|
646
670
|
const ebFields = fieldDefs.filter(f => f.componentKey === 'EBuilder' && f.sformId);
|
|
647
|
-
|
|
648
|
-
|
|
671
|
+
const detailEbFields = detailEbDefs.filter((f) => f.sformId);
|
|
672
|
+
if (ebFields.length > 0 || detailEbFields.length > 0) {
|
|
673
|
+
console.error(` 绑定 ${ebFields.length + detailEbFields.length} 个 EBuilder 关联字段...`);
|
|
649
674
|
// Resolve target form names and field IDs from sformId
|
|
650
675
|
const formList = await client.get(`${baseUrl}/api/bs/ebuilder/form/obj/getList/${appId}?apid=${appId}`, { ebbusinessid: appId });
|
|
651
676
|
const allForms = formList?.data || [];
|
|
@@ -807,6 +832,81 @@ export function registerFormCommands(program) {
|
|
|
807
832
|
console.error(` 关联失败: ${ef.fieldName} — ${updateRes?.msg || '未知错误'}`);
|
|
808
833
|
}
|
|
809
834
|
}
|
|
835
|
+
// 明细表子字段:创建时不在主表字段记录里,按 subFormId 单独读回再补关联。
|
|
836
|
+
// 用 getFormField 的完整记录做底保存 —— 只发少数字段会把 subFormId / formTableId 等冲掉。
|
|
837
|
+
if (detailEbFields.length > 0) {
|
|
838
|
+
const subFormIdByDetail = new Map(detailTables.map((dt) => [String(dt.definition?.fieldName ?? ''), String(dt.subFormId ?? '')]));
|
|
839
|
+
const childRowsCache = new Map();
|
|
840
|
+
const childRowsOf = async (subFormId) => {
|
|
841
|
+
if (!childRowsCache.has(subFormId)) {
|
|
842
|
+
const r = await client.post(`${baseUrl}/api/ebuilder/form/form/field/manage/getFormFieldPage?apid=${appId}`, {
|
|
843
|
+
pageNo: 1, pageSize: 500, module: 'ebuilderform',
|
|
844
|
+
customParam: { appId, objId },
|
|
845
|
+
formFieldSearchEntity: { isDelete: 0, status: 'enable', formId: resolvedFormId, subFormId },
|
|
846
|
+
}, { ebbusinessid: resolvedFormId });
|
|
847
|
+
childRowsCache.set(subFormId, r?.data?.pageDatas?.result || r?.data?.data?.records || r?.data?.data || []);
|
|
848
|
+
}
|
|
849
|
+
return childRowsCache.get(subFormId);
|
|
850
|
+
};
|
|
851
|
+
for (const ef of detailEbFields) {
|
|
852
|
+
const subFormId = subFormIdByDetail.get(String(ef.detailName)) || '';
|
|
853
|
+
if (!subFormId) {
|
|
854
|
+
console.error(` 警告: 找不到明细表「${ef.detailName}」的 subFormId,跳过 ${ef.fieldName}`);
|
|
855
|
+
continue;
|
|
856
|
+
}
|
|
857
|
+
const rows = await childRowsOf(subFormId);
|
|
858
|
+
const hits = rows.filter((r) => String(r.title ?? r.fieldName ?? '') === String(ef.fieldName));
|
|
859
|
+
if (hits.length !== 1) {
|
|
860
|
+
console.error(` 警告: 明细表「${ef.detailName}」里${hits.length ? '有多个' : '找不到'}「${ef.fieldName}」,无法绑定,跳过`);
|
|
861
|
+
continue;
|
|
862
|
+
}
|
|
863
|
+
const child = hits[0];
|
|
864
|
+
const gf = await client.post(`${baseUrl}/api/ebuilder/form/form/field/manage/getFormField`, { module: 'ebuilderform', formTableField: { formField: { id: child.fieldId, form: { id: resolvedFormId } } } }, { ebbusinessid: resolvedFormId });
|
|
865
|
+
const full = gf?.data || child;
|
|
866
|
+
let targetBizFields = [];
|
|
867
|
+
try {
|
|
868
|
+
const tfd = await client.post(`${baseUrl}/api/ebuilder/form/dataset/v1/getFields`, {
|
|
869
|
+
objId: ef.sformId, userid: auth.userId, tenantKey: auth.tenantKey,
|
|
870
|
+
});
|
|
871
|
+
targetBizFields = (tfd?.data?.mainFields || [])
|
|
872
|
+
.filter((f) => /^\d+$/.test(String(f.fieldId)))
|
|
873
|
+
.map((f) => ({ id: String(f.fieldId), name: String(f.fieldName || f.title || '') }))
|
|
874
|
+
.slice(0, 5);
|
|
875
|
+
}
|
|
876
|
+
catch { /* 目标表查询失败则显示列留空 */ }
|
|
877
|
+
const jsonObj = {
|
|
878
|
+
...full,
|
|
879
|
+
formId: resolvedFormId,
|
|
880
|
+
sformId: ef.sformId,
|
|
881
|
+
formName: ef.formName || formNameById.get(ef.sformId || '') || ef.sformId || '',
|
|
882
|
+
dataTitle: await resolveDataTitle(ef.sformId || '', ef.dataTitle || 'name'),
|
|
883
|
+
appId,
|
|
884
|
+
isAddForRelation: true,
|
|
885
|
+
displayType: 'line',
|
|
886
|
+
viewDataDetail: true,
|
|
887
|
+
quickAddParams: [],
|
|
888
|
+
relateViewData: [],
|
|
889
|
+
relateField: null,
|
|
890
|
+
virtualForm: false,
|
|
891
|
+
virtualTable: false,
|
|
892
|
+
type: 'EBuilder',
|
|
893
|
+
componentKey: 'Ebuilder',
|
|
894
|
+
isSingle: ef.multiple ? false : true,
|
|
895
|
+
ffDisplayColumns: Array.isArray(ef.displayColumns) && ef.displayColumns.length
|
|
896
|
+
? ef.displayColumns
|
|
897
|
+
.map((name) => targetBizFields.find((f) => f.name === name))
|
|
898
|
+
.filter((f) => !!f)
|
|
899
|
+
: targetBizFields,
|
|
900
|
+
};
|
|
901
|
+
const res = await client.post(`${baseUrl}/api/ebuilder/form/form/field/manage/saveFormFieldNew?apid=${appId}`, { formId: resolvedFormId, module: 'ebuilderform', customParam: { appId, objId }, jsonObj: JSON.stringify(jsonObj) }, { ebbusinessid: resolvedFormId });
|
|
902
|
+
if (res?.code === 200 && res?.status) {
|
|
903
|
+
console.error(` 已关联: ${ef.detailName}.${ef.fieldName} → ${ef.sformId}`);
|
|
904
|
+
}
|
|
905
|
+
else {
|
|
906
|
+
console.error(` 关联失败: ${ef.detailName}.${ef.fieldName} — ${res?.msg || '未知错误'}`);
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
}
|
|
810
910
|
}
|
|
811
911
|
// Step 2a: Select 绑定选项预设模板(fields.json optionTemplate 属性)。
|
|
812
912
|
// 建表时字段已建成裸 Select(无选项),此处补 templateId/templateName/publicTemplate:false/options:[]。
|
|
@@ -1838,11 +1938,19 @@ export function registerFormCommands(program) {
|
|
|
1838
1938
|
if (config.formulaId) {
|
|
1839
1939
|
if (!config.formulaName)
|
|
1840
1940
|
throw new Error('引用已有公式需同时提供 formulaName');
|
|
1941
|
+
const detail = await client.post(`${baseUrl}/api/excel/formula/detail`, { formulaId: config.formulaId });
|
|
1942
|
+
const existing = detail?.resultJson?.data;
|
|
1943
|
+
if (!detail?.resultJson?.excute || !existing?.expressSql)
|
|
1944
|
+
throw new Error('无法读取已有公式表达式,已停止绑定显示属性联动');
|
|
1945
|
+
if (String(existing.returnType || '').toLowerCase() !== 'boolean')
|
|
1946
|
+
throw new Error('显示属性联动引用的已有公式必须返回 Boolean');
|
|
1947
|
+
assertViewLinkageFormulaFunctions(String(existing.expressSql), await loadViewLinkageFunctions(client, baseUrl));
|
|
1841
1948
|
return { id: String(config.formulaId), name: String(config.formulaName) };
|
|
1842
1949
|
}
|
|
1843
1950
|
if (!config.formula)
|
|
1844
1951
|
return undefined;
|
|
1845
1952
|
const expression = String(config.formula).trim();
|
|
1953
|
+
assertViewLinkageFormulaFunctions(expression, await loadViewLinkageFunctions(client, baseUrl));
|
|
1846
1954
|
const parsed = await buildFormulaParameters(client, baseUrl, objId, appId, formId, expression);
|
|
1847
1955
|
if (parsed.errors.length)
|
|
1848
1956
|
throw new Error(`公式引用无效: ${parsed.errors.join('; ')}`);
|
|
@@ -2359,6 +2467,7 @@ export function registerFormCommands(program) {
|
|
|
2359
2467
|
.option('--data-title <field>', '目标表单的显示字段名(仅 EBuilder;缺省 name=目标表含"名称"的字段,无则第一个业务字段)')
|
|
2360
2468
|
.option('--form-name <name>', '目标表单名称(仅 EBuilder 类型,可选)')
|
|
2361
2469
|
.option('--browser-type <type>', `通用浏览类型:${BROWSER_KINDS.join('、')}`)
|
|
2470
|
+
.option('--browser-name <name>', '按名称精确指定浏览数据源(含自定义浏览框);优先于 --browser-type')
|
|
2362
2471
|
.option('--browser-form-source <source>', '表单浏览数据源:business 或 ebuilder(仅 --browser-type form)')
|
|
2363
2472
|
.option('--format <fmt>', '日期精度格式(Date/DateTime/DateRange),如 yyyy-MM-dd、yyyy-MM-dd HH:mm')
|
|
2364
2473
|
.option('--min-field <field>', 'Date/DateTime 日期限制:最早不得早于该字段(字段名,min.dateField)')
|
|
@@ -2413,6 +2522,12 @@ export function registerFormCommands(program) {
|
|
|
2413
2522
|
const endId = genIds[2] || '';
|
|
2414
2523
|
const labelFieldId = genIds[idCount] || String(Date.now());
|
|
2415
2524
|
const cmdOpts = cmdOptsRaw || {};
|
|
2525
|
+
if (cmdOpts.browserName) {
|
|
2526
|
+
if (fieldType !== 'Browser' && fieldType !== 'RelateBrowser') {
|
|
2527
|
+
throw new Error('--browser-name 仅适用于 Browser/RelateBrowser 字段');
|
|
2528
|
+
}
|
|
2529
|
+
cmdOpts.browserType = await resolveBrowserByName(client, baseUrl, cmdOpts.browserName, { ebbusinessid: formId });
|
|
2530
|
+
}
|
|
2416
2531
|
const sformId = cmdOpts.sformId || '';
|
|
2417
2532
|
const dataTitle = cmdOpts.dataTitle || '';
|
|
2418
2533
|
const formName = cmdOpts.formName || '';
|
|
@@ -2499,7 +2614,7 @@ export function registerFormCommands(program) {
|
|
|
2499
2614
|
console.error(' 本表还没有这个类型,改用平台给的字段模板合成组件...');
|
|
2500
2615
|
placed = await insertFieldIntoLayout(client, baseUrl, formId, { ...insertArgs, fieldTypeTemplate: tpl });
|
|
2501
2616
|
}
|
|
2502
|
-
console.error(` 布局已更新: excel[${placed.row},${placed.col}](增量插入,未重建)`);
|
|
2617
|
+
console.error(` 布局已更新: ${placed.row ? `excel[${placed.row},${placed.col}]` : 'FLOW'}(增量插入,未重建)`);
|
|
2503
2618
|
// 网格补格这类「改成功了但不干净」的情况要让人看见,不能闷掉。
|
|
2504
2619
|
for (const w of placed.warnings)
|
|
2505
2620
|
console.error(` ⚠ ${w}`);
|
|
@@ -2593,6 +2708,29 @@ export function registerFormCommands(program) {
|
|
|
2593
2708
|
console.error(` 布局更新失败: ${e.message}`);
|
|
2594
2709
|
}
|
|
2595
2710
|
}
|
|
2711
|
+
// 开关:布局写入会把字段 options 冲回空(模板 comp 里没有选项),
|
|
2712
|
+
// 必须在布局之后按完整记录补一次 开启=1 / 关闭=0。
|
|
2713
|
+
if (fieldType === 'Switch') {
|
|
2714
|
+
try {
|
|
2715
|
+
const gf = await client.post(`${baseUrl}/api/ebuilder/form/form/field/manage/getFormField`, { module: 'ebuilderform', formTableField: { formField: { id: fieldId, form: { id: formId } } } }, { ebbusinessid: formId });
|
|
2716
|
+
const full = gf?.data || {};
|
|
2717
|
+
if (full.fieldId) {
|
|
2718
|
+
const ogen = await client.post(`${baseUrl}/api/form/local/generatorIds?size=2&apid=${appId}`, {});
|
|
2719
|
+
const optionIds = (ogen?.data?.generatorIds || []).map(String);
|
|
2720
|
+
const ores = await client.post(`${baseUrl}/api/ebuilder/form/form/field/manage/saveFormFieldNew?apid=${appId}`, {
|
|
2721
|
+
formId, module: 'ebuilderform', customParam: { appId, objId },
|
|
2722
|
+
jsonObj: JSON.stringify({ ...full, options: defaultSwitchOptions(fieldId, optionIds) }),
|
|
2723
|
+
}, { ebbusinessid: formId });
|
|
2724
|
+
if (ores?.code === 200 && ores?.status)
|
|
2725
|
+
console.error(' 开关默认选项已配置: 开启=1 / 关闭=0');
|
|
2726
|
+
else
|
|
2727
|
+
console.error(` ⚠ 开关默认选项未确认保存: ${ores?.msg || '未知错误'}`);
|
|
2728
|
+
}
|
|
2729
|
+
}
|
|
2730
|
+
catch (e) {
|
|
2731
|
+
console.error(` ⚠ 开关默认选项配置失败: ${e.message}`);
|
|
2732
|
+
}
|
|
2733
|
+
}
|
|
2596
2734
|
}
|
|
2597
2735
|
else {
|
|
2598
2736
|
console.error(`添加失败: ${data?.msg || JSON.stringify(data) || '未知错误'}`);
|