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
|
@@ -0,0 +1,370 @@
|
|
|
1
|
+
import { createRequire } from 'node:module';
|
|
2
|
+
import { lzwCompress, lzwDecompress } from '../core/lzw.js';
|
|
3
|
+
import { losslessReviver } from '../core/client.js';
|
|
4
|
+
const require = createRequire(import.meta.url);
|
|
5
|
+
const { compileJsE10 } = require('../../ecodecmd/src/lib/exec.js');
|
|
6
|
+
export function decodeLayoutCode(encoded) {
|
|
7
|
+
if (!encoded)
|
|
8
|
+
return { js: { content: '', compiledContent: '' }, css: { content: '', compiledContent: '' } };
|
|
9
|
+
const value = JSON.parse(decodeURIComponent(encoded), losslessReviver);
|
|
10
|
+
return {
|
|
11
|
+
js: { content: '', compiledContent: '', ...(value.js || {}) },
|
|
12
|
+
css: { content: '', compiledContent: '', ...(value.css || {}) },
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export function decodeFormEcode(encoded) {
|
|
16
|
+
if (!encoded)
|
|
17
|
+
return decodeLayoutCode(undefined);
|
|
18
|
+
const value = JSON.parse(lzwDecompress(encoded), losslessReviver);
|
|
19
|
+
return {
|
|
20
|
+
js: { content: '', compiledContent: '', ...(value.js || {}) },
|
|
21
|
+
css: { content: '', compiledContent: '', ...(value.css || {}) },
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function transpile(source) {
|
|
25
|
+
if (!source.trim())
|
|
26
|
+
return '';
|
|
27
|
+
const result = compileJsE10(source, 'index.js');
|
|
28
|
+
if (result === false)
|
|
29
|
+
throw new Error('JavaScript 编译失败,未保存配置');
|
|
30
|
+
return result;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 布局源码的 `compiledContent` 与设计器保存的产物同构:
|
|
34
|
+
* 外壳(jsonp 导出 + load(pageId) + ebSdk/pageSdk/formSdk)和用户源码一起交给 Babel,
|
|
35
|
+
* 而不是先编译用户代码再手工套壳 —— 后者会留下 `try/catch`、额外 `"use strict"`
|
|
36
|
+
* 以及未转译的可选链,和设计器写出的代码不一致。
|
|
37
|
+
*
|
|
38
|
+
* 对照样本:设计器保存 `saveFormAndLayout` 时 formLayout.pageLayoutEncodes 内
|
|
39
|
+
* `sourceCode.ecode` 的 `js.compiledContent`。
|
|
40
|
+
*/
|
|
41
|
+
function compileLayoutJs(source) {
|
|
42
|
+
const compiled = transpile(`(function () {
|
|
43
|
+
"use strict";
|
|
44
|
+
window.weappEcodesdk.jsonp.export("\${appId}", "index.js", function () {
|
|
45
|
+
var exports = {};
|
|
46
|
+
var require = window.weappEcodesdk.jsonp.require.bind(null, "\${appId}", "index.js");
|
|
47
|
+
|
|
48
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
49
|
+
|
|
50
|
+
exports.load = void 0;
|
|
51
|
+
|
|
52
|
+
var load = function(pageId) {
|
|
53
|
+
var ebSdk = window.ebuilderSDK; //全局SDK
|
|
54
|
+
var pageSdk = window.ebuilderSDK?.getPageSDK?.(pageId); //当前页面SDK
|
|
55
|
+
|
|
56
|
+
var formSdk = arguments[0];
|
|
57
|
+
${source}
|
|
58
|
+
};
|
|
59
|
+
|
|
60
|
+
exports.load = load;
|
|
61
|
+
|
|
62
|
+
return exports;
|
|
63
|
+
})
|
|
64
|
+
})();`);
|
|
65
|
+
// Babel 会在 IIFE 外补一条 "use strict";设计器产物里只有外壳内部那一条。
|
|
66
|
+
// 同时去掉 Babel 的函数名推断(function load),保持与设计器一致的外壳形态。
|
|
67
|
+
return compiled
|
|
68
|
+
.replace(/^"use strict";\s*/, '')
|
|
69
|
+
.replace('var load = function load(pageId)', 'var load = function(pageId)');
|
|
70
|
+
}
|
|
71
|
+
function wrapJs(source, layer) {
|
|
72
|
+
if (!source.trim())
|
|
73
|
+
return '';
|
|
74
|
+
if (layer === 'layout')
|
|
75
|
+
return compileLayoutJs(source);
|
|
76
|
+
// 表单级 ecode 仍沿用原有外壳(本次抓包只覆盖布局源码,不做无依据改动)。
|
|
77
|
+
const body = transpile(source);
|
|
78
|
+
return `(function () {\n "use strict";\n window.weappEcodesdk.jsonp.export("\${appId}", "index.js", function () {\n var exports = {};\n var require = window.weappEcodesdk.jsonp.require.bind(null, "\${appId}", "index.js");\n Object.defineProperty(exports, "__esModule", { value: true });\n exports.load = void 0;\n var load = function(formSdk) {\n try {\n${body}\n } catch(e) {\n window.weappUtils?.handleEcodeErrorData?.(e);\n console?.error?.(e);\n }\n };\n exports.load = load;\n return exports;\n });\n})();`;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* CSS 里需要继续作用域到子规则的 at-rule。
|
|
82
|
+
* 其余 at-rule(@keyframes/@font-face/@import…)整块原样保留,不能把 at-rule 前导当成选择器。
|
|
83
|
+
*/
|
|
84
|
+
const NESTED_AT_RULES = new Set(['media', 'supports', 'container', 'layer', 'document', 'scope', 'starting-style']);
|
|
85
|
+
/** 跳过块注释,返回注释后的下标;未闭合则到结尾。 */
|
|
86
|
+
function skipComment(source, start) {
|
|
87
|
+
const end = source.indexOf('*/', start + 2);
|
|
88
|
+
return end < 0 ? source.length : end + 2;
|
|
89
|
+
}
|
|
90
|
+
/** 跳过引号字符串(含转义),返回字符串后的下标;未闭合则到结尾。 */
|
|
91
|
+
function skipString(source, start) {
|
|
92
|
+
const quote = source[start];
|
|
93
|
+
let i = start + 1;
|
|
94
|
+
while (i < source.length) {
|
|
95
|
+
if (source[i] === '\\') {
|
|
96
|
+
i += 2;
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
if (source[i] === quote)
|
|
100
|
+
return i + 1;
|
|
101
|
+
i += 1;
|
|
102
|
+
}
|
|
103
|
+
return source.length;
|
|
104
|
+
}
|
|
105
|
+
/** 找规则前导的结束位置:顶层 `{`(块)或 `;`(at-rule 语句)。 */
|
|
106
|
+
function scanPreludeEnd(source, start) {
|
|
107
|
+
let i = start;
|
|
108
|
+
let paren = 0;
|
|
109
|
+
let bracket = 0;
|
|
110
|
+
while (i < source.length) {
|
|
111
|
+
const c = source[i];
|
|
112
|
+
if (c === '/' && source[i + 1] === '*') {
|
|
113
|
+
i = skipComment(source, i);
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
116
|
+
if (c === '"' || c === "'") {
|
|
117
|
+
i = skipString(source, i);
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
if (c === '(')
|
|
121
|
+
paren += 1;
|
|
122
|
+
else if (c === ')')
|
|
123
|
+
paren = Math.max(0, paren - 1);
|
|
124
|
+
else if (c === '[')
|
|
125
|
+
bracket += 1;
|
|
126
|
+
else if (c === ']')
|
|
127
|
+
bracket = Math.max(0, bracket - 1);
|
|
128
|
+
else if (c === '{' && paren === 0 && bracket === 0)
|
|
129
|
+
return { end: i, kind: 'block' };
|
|
130
|
+
else if (c === ';' && paren === 0 && bracket === 0)
|
|
131
|
+
return { end: i, kind: 'semicolon' };
|
|
132
|
+
i += 1;
|
|
133
|
+
}
|
|
134
|
+
return { end: source.length, kind: 'eof' };
|
|
135
|
+
}
|
|
136
|
+
/** 从 `{` 开始找配对的 `}`,跳过注释、字符串和嵌套块。 */
|
|
137
|
+
function findMatchingBrace(source, open) {
|
|
138
|
+
let i = open + 1;
|
|
139
|
+
let depth = 1;
|
|
140
|
+
while (i < source.length) {
|
|
141
|
+
const c = source[i];
|
|
142
|
+
if (c === '/' && source[i + 1] === '*') {
|
|
143
|
+
i = skipComment(source, i);
|
|
144
|
+
continue;
|
|
145
|
+
}
|
|
146
|
+
if (c === '"' || c === "'") {
|
|
147
|
+
i = skipString(source, i);
|
|
148
|
+
continue;
|
|
149
|
+
}
|
|
150
|
+
if (c === '{')
|
|
151
|
+
depth += 1;
|
|
152
|
+
else if (c === '}') {
|
|
153
|
+
depth -= 1;
|
|
154
|
+
if (depth === 0)
|
|
155
|
+
return i;
|
|
156
|
+
}
|
|
157
|
+
i += 1;
|
|
158
|
+
}
|
|
159
|
+
return -1;
|
|
160
|
+
}
|
|
161
|
+
/** 按顶层逗号拆选择器(跳过 `:is(...)`、属性选择器里的逗号)。 */
|
|
162
|
+
function splitSelectors(selector) {
|
|
163
|
+
const parts = [];
|
|
164
|
+
let start = 0;
|
|
165
|
+
let paren = 0;
|
|
166
|
+
let bracket = 0;
|
|
167
|
+
for (let i = 0; i < selector.length; i += 1) {
|
|
168
|
+
const c = selector[i];
|
|
169
|
+
if (c === '/' && selector[i + 1] === '*') {
|
|
170
|
+
i = skipComment(selector, i) - 1;
|
|
171
|
+
continue;
|
|
172
|
+
}
|
|
173
|
+
if (c === '"' || c === "'") {
|
|
174
|
+
i = skipString(selector, i) - 1;
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
if (c === '(')
|
|
178
|
+
paren += 1;
|
|
179
|
+
else if (c === ')')
|
|
180
|
+
paren = Math.max(0, paren - 1);
|
|
181
|
+
else if (c === '[')
|
|
182
|
+
bracket += 1;
|
|
183
|
+
else if (c === ']')
|
|
184
|
+
bracket = Math.max(0, bracket - 1);
|
|
185
|
+
else if (c === ',' && paren === 0 && bracket === 0) {
|
|
186
|
+
parts.push(selector.slice(start, i));
|
|
187
|
+
start = i + 1;
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
parts.push(selector.slice(start));
|
|
191
|
+
return parts;
|
|
192
|
+
}
|
|
193
|
+
function applyRule(prelude, inner, prefix) {
|
|
194
|
+
const trimmed = prelude.trim();
|
|
195
|
+
if (!trimmed)
|
|
196
|
+
return `${prelude}{${inner}}`;
|
|
197
|
+
if (trimmed.startsWith('@')) {
|
|
198
|
+
const name = (trimmed.match(/^@([\w-]+)/)?.[1] || '').toLowerCase();
|
|
199
|
+
// 容器型 at-rule 递归作用域;keyframes/font-face/import 等整块保留。
|
|
200
|
+
return NESTED_AT_RULES.has(name)
|
|
201
|
+
? `${prelude}{${scopeCssInternal(inner, prefix)}}`
|
|
202
|
+
: `${prelude}{${inner}}`;
|
|
203
|
+
}
|
|
204
|
+
const selectors = splitSelectors(prelude)
|
|
205
|
+
.map((part) => part.trim())
|
|
206
|
+
.filter(Boolean)
|
|
207
|
+
.map((part) => `${prefix} ${part}`)
|
|
208
|
+
.join(',');
|
|
209
|
+
return `${selectors}{${inner}}`;
|
|
210
|
+
}
|
|
211
|
+
/** 递归作用域实现;尾部空白由导出的 `scopeCss` 在最外层统一裁掉。 */
|
|
212
|
+
function scopeCssInternal(source, prefix) {
|
|
213
|
+
if (!source.trim())
|
|
214
|
+
return '';
|
|
215
|
+
const out = [];
|
|
216
|
+
let i = 0;
|
|
217
|
+
while (i < source.length) {
|
|
218
|
+
const triviaStart = i;
|
|
219
|
+
// 规则之间的空白和注释原样保留。
|
|
220
|
+
while (i < source.length) {
|
|
221
|
+
if (source[i] === '/' && source[i + 1] === '*') {
|
|
222
|
+
i = skipComment(source, i);
|
|
223
|
+
continue;
|
|
224
|
+
}
|
|
225
|
+
if (/\s/.test(source[i])) {
|
|
226
|
+
i += 1;
|
|
227
|
+
continue;
|
|
228
|
+
}
|
|
229
|
+
break;
|
|
230
|
+
}
|
|
231
|
+
out.push(source.slice(triviaStart, i));
|
|
232
|
+
if (i >= source.length)
|
|
233
|
+
break;
|
|
234
|
+
const { end, kind } = scanPreludeEnd(source, i);
|
|
235
|
+
if (kind === 'eof') {
|
|
236
|
+
out.push(source.slice(i));
|
|
237
|
+
break;
|
|
238
|
+
}
|
|
239
|
+
if (kind === 'semicolon') {
|
|
240
|
+
out.push(source.slice(i, end + 1));
|
|
241
|
+
i = end + 1;
|
|
242
|
+
continue;
|
|
243
|
+
}
|
|
244
|
+
const close = findMatchingBrace(source, end);
|
|
245
|
+
if (close < 0) {
|
|
246
|
+
out.push(source.slice(i));
|
|
247
|
+
break;
|
|
248
|
+
}
|
|
249
|
+
out.push(applyRule(source.slice(i, end), source.slice(end + 1, close), prefix));
|
|
250
|
+
i = close + 1;
|
|
251
|
+
}
|
|
252
|
+
return out.join('');
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* 与表单源码编辑器一致:普通规则逐条加作用域前缀。
|
|
256
|
+
* 支持 @media/@supports 等容器 at-rule 递归处理,@keyframes 等整块保留;
|
|
257
|
+
* 注释、字符串和嵌套括号不会被误拆。
|
|
258
|
+
*/
|
|
259
|
+
export function scopeCss(source, prefix) {
|
|
260
|
+
// 只在最外层去掉尾部空白(设计器编译产物没有尾随换行);
|
|
261
|
+
// 递归进 @media 时不能裁,否则会吃掉右花括号前的换行。
|
|
262
|
+
return scopeCssInternal(source, prefix).replace(/\s+$/, '');
|
|
263
|
+
}
|
|
264
|
+
export function updateCode(previous, change, layer, scopeId) {
|
|
265
|
+
if (layer === 'layout' && !scopeId)
|
|
266
|
+
throw new Error('布局源码缺少 pageId');
|
|
267
|
+
const next = {
|
|
268
|
+
js: { ...previous.js }, css: { ...previous.css },
|
|
269
|
+
};
|
|
270
|
+
if (change.js !== undefined) {
|
|
271
|
+
next.js.content = change.js;
|
|
272
|
+
next.js.compiledContent = wrapJs(change.js, layer);
|
|
273
|
+
if (layer === 'layout')
|
|
274
|
+
next.js.pageId = `if (${scopeId} == String(props.pageId))`;
|
|
275
|
+
next.js.name = 'index';
|
|
276
|
+
next.js.state = 'n';
|
|
277
|
+
}
|
|
278
|
+
if (change.css !== undefined) {
|
|
279
|
+
next.css.content = change.css;
|
|
280
|
+
next.css.compiledContent = scopeCss(change.css, layer === 'layout' ? `#ebpage_${scopeId}` : `#form_${scopeId}`);
|
|
281
|
+
next.css.name = 'index';
|
|
282
|
+
next.css.state = 'n';
|
|
283
|
+
}
|
|
284
|
+
return next;
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* 构造布局源码的保存报文。设计器真实入参是 pageLayoutEncodes/formStyleEncodes,
|
|
288
|
+
* 不是裸 pageLayouts/formStyle;后者会被服务端重新序列化并丢失 sourceCode 的附加字段。
|
|
289
|
+
*/
|
|
290
|
+
export function buildLayoutSaveRequest(snapshot, target, formId, layoutId) {
|
|
291
|
+
const pageLayouts = snapshot?.formLayout?.pageLayouts;
|
|
292
|
+
if (!Array.isArray(pageLayouts))
|
|
293
|
+
throw new Error('布局快照缺少 pageLayouts');
|
|
294
|
+
const formLayout = {
|
|
295
|
+
...snapshot.formLayout,
|
|
296
|
+
formId,
|
|
297
|
+
pageLayoutEncodes: lzwCompress(JSON.stringify(pageLayouts)),
|
|
298
|
+
formStyleEncodes: lzwCompress(JSON.stringify(snapshot.formLayout.formStyle || {})),
|
|
299
|
+
};
|
|
300
|
+
delete formLayout.pageLayouts;
|
|
301
|
+
delete formLayout.formStyle;
|
|
302
|
+
return {
|
|
303
|
+
module: target,
|
|
304
|
+
customParam: target === 'workflow'
|
|
305
|
+
? { workflowId: '-1', layoutMultiId: layoutId }
|
|
306
|
+
: { terminal: '', objId: formId },
|
|
307
|
+
designerParam: { onlyLayout: false, convert: false },
|
|
308
|
+
form: snapshot.form,
|
|
309
|
+
formLayout,
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
const normalizeText = (value) => String(value ?? '').replace(/\r\n?/g, '\n');
|
|
313
|
+
/**
|
|
314
|
+
* 保存后的独立回读校验。设计器抓包确认服务端会原样保留 content/compiledContent/pageId,
|
|
315
|
+
* 所以按“发送值 vs 回读值”比较;换行差异归一化,其余差异视为失败。
|
|
316
|
+
*/
|
|
317
|
+
export function assertLayoutReadback(expected, readback, pageId, changed) {
|
|
318
|
+
if (changed.js) {
|
|
319
|
+
if (normalizeText(readback.js.content) !== normalizeText(expected.js.content)) {
|
|
320
|
+
throw new Error('保存后布局 JS 源码读回不一致');
|
|
321
|
+
}
|
|
322
|
+
if (readback.js.pageId !== `if (${pageId} == String(props.pageId))`) {
|
|
323
|
+
throw new Error('保存后布局 JS 生效条件读回不一致');
|
|
324
|
+
}
|
|
325
|
+
if (normalizeText(readback.js.compiledContent) !== normalizeText(expected.js.compiledContent)) {
|
|
326
|
+
throw new Error('保存后布局 JS 编译结果读回不一致');
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
if (changed.css) {
|
|
330
|
+
if (normalizeText(readback.css.content) !== normalizeText(expected.css.content)) {
|
|
331
|
+
throw new Error('保存后布局 CSS 源码读回不一致');
|
|
332
|
+
}
|
|
333
|
+
if (normalizeText(readback.css.compiledContent) !== normalizeText(expected.css.compiledContent)) {
|
|
334
|
+
throw new Error('保存后布局 CSS 编译结果读回不一致');
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
/**
|
|
339
|
+
* 设计器读取布局源码 ecode 的路径是 JSON.parse(decodeURI(ecode))。
|
|
340
|
+
* 写入前和回读后都按同一路径校验,避免 encodeURIComponent 等编码让
|
|
341
|
+
* 源码面板显示为空、预览失效。
|
|
342
|
+
*/
|
|
343
|
+
export function assertDesignerReadableLayoutCode(encoded) {
|
|
344
|
+
if (!encoded)
|
|
345
|
+
return;
|
|
346
|
+
let value;
|
|
347
|
+
try {
|
|
348
|
+
value = JSON.parse(decodeURI(encoded));
|
|
349
|
+
}
|
|
350
|
+
catch (error) {
|
|
351
|
+
throw new Error(`设计器无法解码布局源码:${error.message}`);
|
|
352
|
+
}
|
|
353
|
+
if (!value || typeof value !== 'object' || value.js == null || value.css == null) {
|
|
354
|
+
throw new Error('设计器无法解码布局源码:缺少 js/css 结构');
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
/**
|
|
358
|
+
* 布局源码 ecode 必须用 encodeURI,不能用 encodeURIComponent。
|
|
359
|
+
* 设计器读取时是 JSON.parse(decodeURI(ecode));decodeURI 不会还原 `%3A`(冒号),
|
|
360
|
+
* 用 encodeURIComponent 写出的 `"js"%3A{...}` 会直接报
|
|
361
|
+
* `Expected ':' after property name in JSON`。
|
|
362
|
+
* encodeURI 保留冒号/逗号原样,decodeURI 和 decodeURIComponent 都能正确解析。
|
|
363
|
+
*/
|
|
364
|
+
export const encodeLayoutCode = (code) => {
|
|
365
|
+
const encoded = encodeURI(JSON.stringify(code));
|
|
366
|
+
assertDesignerReadableLayoutCode(encoded);
|
|
367
|
+
return encoded;
|
|
368
|
+
};
|
|
369
|
+
export const encodeFormEcode = (code) => lzwCompress(JSON.stringify(code));
|
|
370
|
+
//# sourceMappingURL=form-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"form-code.js","sourceRoot":"","sources":["../../src/services/form-code.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,10 +32,16 @@ export interface InitialFieldDefinition {
|
|
|
32
32
|
/** 多选:人员/部门/EBuilder/Browser 默认单选,multiple:true 改多选。
|
|
33
33
|
* Browser(RelateBrowser) 由 rich-types browserBuild 读 def.multiple 定 isSingle。 */
|
|
34
34
|
multiple?: boolean;
|
|
35
|
+
/** 通用关联浏览:按浏览数据源名称精确检索,优先于 browserType。 */
|
|
36
|
+
browserName?: string;
|
|
37
|
+
browserType?: string | Record<string, unknown>;
|
|
38
|
+
browserFormSource?: string;
|
|
35
39
|
/** 独占一行:该字段布局 singleRow:true(整行显示,其余字段仍两列)。
|
|
36
40
|
* 对齐平台 layout config 的 singleRow 属性(明细表/落单字段/分组内字段本来就独占)。 */
|
|
37
41
|
singleRow?: boolean;
|
|
38
42
|
formFields?: InitialFieldDefinition[];
|
|
43
|
+
/** DetailTable 的描述(设计器里明细标题旁的说明);**缺省为空**,不自动用明细名填充。 */
|
|
44
|
+
describe?: string;
|
|
39
45
|
/** DetailTable 二级明细:关联同一主表下的另一张明细表及其字段。 */
|
|
40
46
|
enableSubDetail?: boolean;
|
|
41
47
|
defaultExpandRow?: boolean;
|
|
@@ -78,6 +84,20 @@ export declare function placeholderFromFormat(format: string): string;
|
|
|
78
84
|
* 直接发给 initLayout 会被当作"隐藏且只读"而不生成列 → 明细表空。
|
|
79
85
|
* 对齐浏览器 payload:子字段强制 可见 + 可编辑(保留 getConfig 原始 showOrder)。
|
|
80
86
|
*/
|
|
87
|
+
/**
|
|
88
|
+
* 开关字段的固定默认选项:开启=1 / 关闭=0。
|
|
89
|
+
*
|
|
90
|
+
* 平台把 Switch 的取值语义放在 `options` 里(与 Select 同一套 `Option` 结构);
|
|
91
|
+
* 不配时开关没有 1/0 映射,下游取值/条件容易对不上。所有创建入口都用这一份。
|
|
92
|
+
*/
|
|
93
|
+
export declare function defaultSwitchOptions(fieldId: string, selectionIds?: string[]): any[];
|
|
94
|
+
/**
|
|
95
|
+
* 从 fields.json 的字段定义里收集**明细表内的 EBuilder 子字段**(带 `detailName` 标明属于哪张明细)。
|
|
96
|
+
*
|
|
97
|
+
* 明细子字段不在顶层 `fieldDefs` 里,建表时的 EBuilder 关联绑定如果只遍历顶层,
|
|
98
|
+
* 这些字段会建成 `isAddForRelation=false`、没有 `sformId`/`formName` 的裸关联字段。
|
|
99
|
+
*/
|
|
100
|
+
export declare function collectDetailEBuilderFields(defs: any[]): any[];
|
|
81
101
|
export declare function normalizeDetailTableChildren(configs: any[]): any[];
|
|
82
102
|
export declare function queryFormStorageSetting(client: FormCreateClient, baseUrl: string, appId: string): Promise<FormStorageSetting>;
|
|
83
103
|
export declare function resolveCustomPhysicalTableName(requested: string, setting: FormStorageSetting): CustomPhysicalTableName;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"form-create.d.ts","sourceRoot":"","sources":["../../src/services/form-create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"form-create.d.ts","sourceRoot":"","sources":["../../src/services/form-create.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
|
+
import { randomUUID } from 'node:crypto';
|
|
1
2
|
import { pinyinInitials, toSubTableName, resolveFieldKeys } from '../utils/column-name.js';
|
|
2
3
|
import { getRichType, richIdUnits } from './rich-types.js';
|
|
4
|
+
import { resolveBrowserByName } from './browser.js';
|
|
3
5
|
// 路由切换(标准 bs / 专项 fs)。默认 bs —— 传 DEFAULT_EBUILDER_ROUTE 的调用方行为一字不变。
|
|
4
6
|
import { ebuilderFormUrl, flattenFormList, DEFAULT_EBUILDER_ROUTE } from './special-route.js';
|
|
5
7
|
import { FormSubDetailService } from './form-sub-detail.js';
|
|
@@ -23,6 +25,52 @@ export function placeholderFromFormat(format) {
|
|
|
23
25
|
* 直接发给 initLayout 会被当作"隐藏且只读"而不生成列 → 明细表空。
|
|
24
26
|
* 对齐浏览器 payload:子字段强制 可见 + 可编辑(保留 getConfig 原始 showOrder)。
|
|
25
27
|
*/
|
|
28
|
+
/**
|
|
29
|
+
* 开关字段的固定默认选项:开启=1 / 关闭=0。
|
|
30
|
+
*
|
|
31
|
+
* 平台把 Switch 的取值语义放在 `options` 里(与 Select 同一套 `Option` 结构);
|
|
32
|
+
* 不配时开关没有 1/0 映射,下游取值/条件容易对不上。所有创建入口都用这一份。
|
|
33
|
+
*/
|
|
34
|
+
export function defaultSwitchOptions(fieldId, selectionIds = []) {
|
|
35
|
+
return [
|
|
36
|
+
{ name: '开启', valueKey: '1' },
|
|
37
|
+
{ name: '关闭', valueKey: '0' },
|
|
38
|
+
].map((o, i) => ({
|
|
39
|
+
other: false,
|
|
40
|
+
// `saveFormFieldNew` 不像批量建表那样替空 selectionId 发号,单字段入口要自己传。
|
|
41
|
+
selectionId: selectionIds[i] || '',
|
|
42
|
+
defOption: false,
|
|
43
|
+
styleConfig: {},
|
|
44
|
+
archive: false,
|
|
45
|
+
divisionBranch: false,
|
|
46
|
+
subCompanyCatalogues: [],
|
|
47
|
+
// 不带 dataCount:平台会据此触发「选项是否已被数据使用」的 uf_ 表校验,
|
|
48
|
+
// 新建字段时那条 SQL 会失败(缺租户 key),导致 options 保存不下去。
|
|
49
|
+
optionNum: '1000000',
|
|
50
|
+
score: '0',
|
|
51
|
+
uid: randomUUID(),
|
|
52
|
+
children: [],
|
|
53
|
+
name: o.name,
|
|
54
|
+
isLimit: false,
|
|
55
|
+
valueKey: o.valueKey,
|
|
56
|
+
componentKey: 'Option',
|
|
57
|
+
order: i,
|
|
58
|
+
fieldId,
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* 从 fields.json 的字段定义里收集**明细表内的 EBuilder 子字段**(带 `detailName` 标明属于哪张明细)。
|
|
63
|
+
*
|
|
64
|
+
* 明细子字段不在顶层 `fieldDefs` 里,建表时的 EBuilder 关联绑定如果只遍历顶层,
|
|
65
|
+
* 这些字段会建成 `isAddForRelation=false`、没有 `sformId`/`formName` 的裸关联字段。
|
|
66
|
+
*/
|
|
67
|
+
export function collectDetailEBuilderFields(defs) {
|
|
68
|
+
return (defs || [])
|
|
69
|
+
.filter((d) => d?.componentKey === 'DetailTable')
|
|
70
|
+
.flatMap((dt) => (dt.formFields || [])
|
|
71
|
+
.filter((sf) => sf?.componentKey === 'EBuilder')
|
|
72
|
+
.map((sf) => ({ ...sf, detailName: dt.fieldName })));
|
|
73
|
+
}
|
|
26
74
|
export function normalizeDetailTableChildren(configs) {
|
|
27
75
|
for (const c of configs) {
|
|
28
76
|
if (String(c.type) === 'DetailTable' && Array.isArray(c.children)) {
|
|
@@ -299,11 +347,14 @@ export function toInitialFieldDefinitions(fieldDefs) {
|
|
|
299
347
|
componentKey: f.componentKey, fieldName: f.fieldName,
|
|
300
348
|
required: f.required, readOnly: f.readOnly, unique: f.unique,
|
|
301
349
|
hidden: f.hidden, formFields: f.formFields,
|
|
350
|
+
// DetailTable 描述:不写时为空;写了才透传。
|
|
351
|
+
describe: f.describe,
|
|
302
352
|
enableSubDetail: f.enableSubDetail, defaultExpandRow: f.defaultExpandRow,
|
|
303
353
|
subDetailConfig: f.subDetailConfig,
|
|
304
354
|
precision: f.precision, pointSize: f.pointSize,
|
|
305
355
|
percent: f.percent, defaultValue: f.defaultValue,
|
|
306
356
|
group: f.group, multiple: f.multiple,
|
|
357
|
+
browserName: f.browserName, browserType: f.browserType, browserFormSource: f.browserFormSource,
|
|
307
358
|
singleRow: f.singleRow,
|
|
308
359
|
// 文本最大长度(Text 缺省 100、TextArea 缺省 4000)+ 日期精度 format(Date/DateTime)需透传。
|
|
309
360
|
maxLen: f.maxLen, format: f.format,
|
|
@@ -320,6 +371,14 @@ export function toInitialFieldDefinitions(fieldDefs) {
|
|
|
320
371
|
export async function applyInitialFieldsToNewForm(client, baseUrl, appId, objId, formId, fieldDefs, opts = {}) {
|
|
321
372
|
const log = opts.log ?? ((m) => console.error(m));
|
|
322
373
|
const defs = toInitialFieldDefinitions(fieldDefs);
|
|
374
|
+
for (const def of defs) {
|
|
375
|
+
if (!def.browserName)
|
|
376
|
+
continue;
|
|
377
|
+
if (def.componentKey !== 'Browser' && def.componentKey !== 'RelateBrowser') {
|
|
378
|
+
throw new Error(`字段「${def.fieldName}」的 browserName 仅适用于 Browser/RelateBrowser`);
|
|
379
|
+
}
|
|
380
|
+
def.browserType = await resolveBrowserByName(client, baseUrl, def.browserName, { ebbusinessid: formId });
|
|
381
|
+
}
|
|
323
382
|
const fieldResult = await addInitialFieldsToCustomPhysicalForm(client, baseUrl, appId, objId, formId, defs, opts.tenantKey ?? '', opts.layoutType, opts.systemOverrides ?? []);
|
|
324
383
|
log(` 字段+布局已写入: ${defs.length} 个字段`);
|
|
325
384
|
const detailTables = fieldResult.detailTables || [];
|
|
@@ -497,6 +556,12 @@ export async function addInitialFieldsToCustomPhysicalForm(client, baseUrl, appI
|
|
|
497
556
|
mode: 'region',
|
|
498
557
|
});
|
|
499
558
|
}
|
|
559
|
+
if (def.componentKey === 'Switch') {
|
|
560
|
+
Object.assign(baseField, {
|
|
561
|
+
switchType: 'switch', hasChild: false, childName: '',
|
|
562
|
+
options: defaultSwitchOptions(fieldId),
|
|
563
|
+
});
|
|
564
|
+
}
|
|
500
565
|
mainFieldObjects.push(baseField);
|
|
501
566
|
}
|
|
502
567
|
// Date/DateTime 日期限制:minField 最早不得早于 / maxField 最晚不得晚于另一字段。
|
|
@@ -543,7 +608,8 @@ export async function addInitialFieldsToCustomPhysicalForm(client, baseUrl, appI
|
|
|
543
608
|
id: subFormId,
|
|
544
609
|
tableName: subTableName,
|
|
545
610
|
name: dtDef.fieldName,
|
|
546
|
-
|
|
611
|
+
// 描述缺省为空:之前用明细名填充,设计器里每个明细都顶着一行和标题重复的说明。
|
|
612
|
+
describe: dtDef.describe ?? '',
|
|
547
613
|
dataKey: subKeys.dataKey,
|
|
548
614
|
...(subKeys.explicitColumnName ? { columnName: subKeys.columnName } : {}),
|
|
549
615
|
dataCount: 0,
|
|
@@ -600,6 +666,12 @@ export async function addInitialFieldsToCustomPhysicalForm(client, baseUrl, appI
|
|
|
600
666
|
dataKey: sfKeys.dataKey,
|
|
601
667
|
columnName: sfKeys.columnName,
|
|
602
668
|
};
|
|
669
|
+
if (sf.componentKey === 'Switch') {
|
|
670
|
+
Object.assign(sfObj, {
|
|
671
|
+
switchType: 'switch', hasChild: false, childName: '',
|
|
672
|
+
options: defaultSwitchOptions(sfObj.fieldId),
|
|
673
|
+
});
|
|
674
|
+
}
|
|
603
675
|
// Field-type-specific attributes (matching browser-observed payload)
|
|
604
676
|
if (sf.componentKey === 'Number') {
|
|
605
677
|
const sfDef = sf;
|