weaver-e10-builder 1.6.13 → 1.6.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli-register.d.ts.map +1 -1
- package/dist/cli-register.js +14 -2
- package/dist/cli-register.js.map +1 -1
- package/dist/commands/actionflow.d.ts.map +1 -1
- package/dist/commands/actionflow.js +4 -0
- package/dist/commands/actionflow.js.map +1 -1
- package/dist/commands/designer-event.d.ts +3 -0
- package/dist/commands/designer-event.d.ts.map +1 -0
- package/dist/commands/designer-event.js +106 -0
- package/dist/commands/designer-event.js.map +1 -0
- package/dist/commands/designer-source.d.ts +3 -0
- package/dist/commands/designer-source.d.ts.map +1 -0
- package/dist/commands/designer-source.js +51 -0
- package/dist/commands/designer-source.js.map +1 -0
- package/dist/commands/form-browser-scope-rules.d.ts +2 -1
- package/dist/commands/form-browser-scope-rules.d.ts.map +1 -1
- package/dist/commands/form-browser-scope-rules.js +8 -4
- package/dist/commands/form-browser-scope-rules.js.map +1 -1
- package/dist/commands/form-browser-scope-tree.js +1 -1
- package/dist/commands/form-browser-scope-tree.js.map +1 -1
- package/dist/commands/form-field-linkage.d.ts.map +1 -1
- package/dist/commands/form-field-linkage.js +6 -11
- package/dist/commands/form-field-linkage.js.map +1 -1
- package/dist/commands/form-layout-detail-settings.d.ts +3 -0
- package/dist/commands/form-layout-detail-settings.d.ts.map +1 -0
- package/dist/commands/form-layout-detail-settings.js +36 -0
- package/dist/commands/form-layout-detail-settings.js.map +1 -0
- package/dist/commands/form-list-columns.d.ts.map +1 -1
- package/dist/commands/form-list-columns.js +178 -5
- package/dist/commands/form-list-columns.js.map +1 -1
- package/dist/commands/form-list-config.d.ts.map +1 -1
- package/dist/commands/form-list-config.js +81 -5
- package/dist/commands/form-list-config.js.map +1 -1
- package/dist/commands/form-list-event.d.ts.map +1 -1
- package/dist/commands/form-list-event.js +2 -1
- package/dist/commands/form-list-event.js.map +1 -1
- package/dist/commands/form-list-hierarchy.d.ts.map +1 -1
- package/dist/commands/form-list-hierarchy.js +2 -1
- package/dist/commands/form-list-hierarchy.js.map +1 -1
- package/dist/commands/form-list-utils.d.ts.map +1 -1
- package/dist/commands/form-list-utils.js +4 -3
- package/dist/commands/form-list-utils.js.map +1 -1
- package/dist/commands/form-list.d.ts.map +1 -1
- package/dist/commands/form-list.js +2 -1
- package/dist/commands/form-list.js.map +1 -1
- package/dist/commands/form-nlist.d.ts.map +1 -1
- package/dist/commands/form-nlist.js +77 -0
- package/dist/commands/form-nlist.js.map +1 -1
- package/dist/commands/form-permission.d.ts.map +1 -1
- package/dist/commands/form-permission.js +743 -77
- package/dist/commands/form-permission.js.map +1 -1
- package/dist/commands/page-combination.d.ts +3 -0
- package/dist/commands/page-combination.d.ts.map +1 -0
- package/dist/commands/page-combination.js +86 -0
- package/dist/commands/page-combination.js.map +1 -0
- package/dist/commands/page-permission.d.ts +3 -0
- package/dist/commands/page-permission.d.ts.map +1 -0
- package/dist/commands/page-permission.js +46 -0
- package/dist/commands/page-permission.js.map +1 -0
- package/dist/commands/role.d.ts.map +1 -1
- package/dist/commands/role.js +3 -2
- package/dist/commands/role.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_update.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_update.js +7 -0
- package/dist/services/actionflow/components/action_eb_update.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.js +4 -4
- package/dist/services/actionflow/components/action_eb_update_compiler.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/form_data_builder.d.ts.map +1 -1
- package/dist/services/actionflow/components/form_data_builder.js +131 -4
- package/dist/services/actionflow/components/form_data_builder.js.map +1 -1
- package/dist/services/actionflow/components/multiple_execution.js +7 -7
- package/dist/services/actionflow/components/multiple_execution.js.map +1 -1
- package/dist/services/actionflow/components/output.d.ts.map +1 -1
- package/dist/services/actionflow/components/output.js +4 -1
- package/dist/services/actionflow/components/output.js.map +1 -1
- package/dist/services/actionflow/components/send_message.d.ts.map +1 -1
- package/dist/services/actionflow/components/send_message.js +2 -1
- package/dist/services/actionflow/components/send_message.js.map +1 -1
- package/dist/services/actionflow/context_discovery.d.ts +2 -0
- package/dist/services/actionflow/context_discovery.d.ts.map +1 -1
- package/dist/services/actionflow/context_discovery.js +32 -4
- package/dist/services/actionflow/context_discovery.js.map +1 -1
- package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
- package/dist/services/actionflow/context_preflight.js +33 -5
- package/dist/services/actionflow/context_preflight.js.map +1 -1
- package/dist/services/actionflow/filter_rules.d.ts.map +1 -1
- package/dist/services/actionflow/filter_rules.js +3 -2
- package/dist/services/actionflow/filter_rules.js.map +1 -1
- package/dist/services/actionflow/formula_service.d.ts +2 -0
- package/dist/services/actionflow/formula_service.d.ts.map +1 -1
- package/dist/services/actionflow/formula_service.js +20 -15
- package/dist/services/actionflow/formula_service.js.map +1 -1
- package/dist/services/actionflow/preflight_service.d.ts +8 -0
- package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
- package/dist/services/actionflow/preflight_service.js +89 -15
- package/dist/services/actionflow/preflight_service.js.map +1 -1
- package/dist/services/actionflow/readback_verifier.d.ts.map +1 -1
- package/dist/services/actionflow/readback_verifier.js +115 -0
- package/dist/services/actionflow/readback_verifier.js.map +1 -1
- package/dist/services/actionflow/workflow_compiler.d.ts +1 -1
- package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/workflow_compiler.js +151 -34
- package/dist/services/actionflow/workflow_compiler.js.map +1 -1
- package/dist/services/designer-event.d.ts +54 -0
- package/dist/services/designer-event.d.ts.map +1 -0
- package/dist/services/designer-event.js +312 -0
- package/dist/services/designer-event.js.map +1 -0
- package/dist/services/designer-source.d.ts +46 -0
- package/dist/services/designer-source.d.ts.map +1 -0
- package/dist/services/designer-source.js +145 -0
- package/dist/services/designer-source.js.map +1 -0
- package/dist/services/field-identity.d.ts +3 -0
- package/dist/services/field-identity.d.ts.map +1 -0
- package/dist/services/field-identity.js +8 -0
- package/dist/services/field-identity.js.map +1 -0
- package/dist/services/form-layout-detail-advanced.d.ts +10 -0
- package/dist/services/form-layout-detail-advanced.d.ts.map +1 -0
- package/dist/services/form-layout-detail-advanced.js +134 -0
- package/dist/services/form-layout-detail-advanced.js.map +1 -0
- package/dist/services/form-layout-detail-settings.d.ts +151 -0
- package/dist/services/form-layout-detail-settings.d.ts.map +1 -0
- package/dist/services/form-layout-detail-settings.js +131 -0
- package/dist/services/form-layout-detail-settings.js.map +1 -0
- package/dist/services/form-list-columns.d.ts.map +1 -1
- package/dist/services/form-list-columns.js +2 -1
- package/dist/services/form-list-columns.js.map +1 -1
- package/dist/services/form-list-config.d.ts +36 -1
- package/dist/services/form-list-config.d.ts.map +1 -1
- package/dist/services/form-list-config.js +252 -23
- package/dist/services/form-list-config.js.map +1 -1
- package/dist/services/form-list-fields.d.ts +3 -1
- package/dist/services/form-list-fields.d.ts.map +1 -1
- package/dist/services/form-list-fields.js +95 -16
- package/dist/services/form-list-fields.js.map +1 -1
- package/dist/services/form-list-search-group.d.ts.map +1 -1
- package/dist/services/form-list-search-group.js +3 -2
- package/dist/services/form-list-search-group.js.map +1 -1
- package/dist/services/form-list-search.d.ts.map +1 -1
- package/dist/services/form-list-search.js +3 -13
- package/dist/services/form-list-search.js.map +1 -1
- package/dist/services/form-list-table-fields.d.ts +58 -0
- package/dist/services/form-list-table-fields.d.ts.map +1 -0
- package/dist/services/form-list-table-fields.js +265 -0
- package/dist/services/form-list-table-fields.js.map +1 -0
- package/dist/services/form-nlist-field-attrs.d.ts +43 -0
- package/dist/services/form-nlist-field-attrs.d.ts.map +1 -0
- package/dist/services/form-nlist-field-attrs.js +170 -0
- package/dist/services/form-nlist-field-attrs.js.map +1 -0
- package/dist/services/form-nlist.d.ts.map +1 -1
- package/dist/services/form-nlist.js +4 -3
- package/dist/services/form-nlist.js.map +1 -1
- package/dist/services/form-permission-edit.d.ts +115 -0
- package/dist/services/form-permission-edit.d.ts.map +1 -0
- package/dist/services/form-permission-edit.js +552 -0
- package/dist/services/form-permission-edit.js.map +1 -0
- package/dist/services/matrix-condition.d.ts +0 -30
- package/dist/services/matrix-condition.d.ts.map +1 -1
- package/dist/services/matrix-condition.js +3 -2
- package/dist/services/matrix-condition.js.map +1 -1
- package/dist/services/page-combination.d.ts +58 -0
- package/dist/services/page-combination.d.ts.map +1 -0
- package/dist/services/page-combination.js +296 -0
- package/dist/services/page-combination.js.map +1 -0
- package/dist/services/page-permission.d.ts +74 -0
- package/dist/services/page-permission.d.ts.map +1 -0
- package/dist/services/page-permission.js +287 -0
- package/dist/services/page-permission.js.map +1 -0
- package/dist/services/report/verify.d.ts.map +1 -1
- package/dist/services/report/verify.js +1 -7
- package/dist/services/report/verify.js.map +1 -1
- package/dist/services/role-function-permission.d.ts +8 -1
- package/dist/services/role-function-permission.d.ts.map +1 -1
- package/dist/services/role-function-permission.js +23 -8
- package/dist/services/role-function-permission.js.map +1 -1
- package/package.json +3 -3
- package/skill-docs/SKILL.md +14 -4
- package/skill-docs/_catalog.md +7 -0
- package/skill-docs/actionflows/SKILL.md +7 -3
- package/skill-docs/actionflows/references/components/ebuilder/ActionEbAdd.md +5 -1
- package/skill-docs/actionflows/references/components/ebuilder/ActionEbUpdate.md +5 -1
- package/skill-docs/actionflows/references/components/ebuilder/EnquiryForm.md +2 -0
- package/skill-docs/actionflows/references/components/personnel/HrmEmployeeUpdate.md +1 -0
- package/skill-docs/actionflows/references/components/personnel/PersonnelOnboarding.md +1 -0
- package/skill-docs/actionflows/references/trigger_runtime_notes.md +1 -1
- package/skill-docs/references/common/ref-cli-commands.md +22 -7
- package/skill-docs/references/ebuilder-designer/events/actions-integration.md +88 -0
- package/skill-docs/references/ebuilder-designer/events/actions-interaction.md +108 -0
- package/skill-docs/references/ebuilder-designer/events/guide-events.md +57 -0
- package/skill-docs/references/ebuilder-designer/guide-designer.md +296 -288
- package/skill-docs/references/ebuilder-designer/guide-page-combination.md +142 -0
- package/skill-docs/references/ebuilder-designer/guide-page-permission.md +145 -0
- package/skill-docs/references/ebuilder-designer/page-source/page-source-guide.md +129 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-chart.md +49 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-coverage.json +372 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-date.md +54 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-dialogs.md +279 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-form.md +255 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-foundations.md +401 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-index.md +34 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-list.md +297 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-native.md +193 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-navigation.md +156 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-other.md +242 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-refresh.md +132 -0
- package/skill-docs/references/ebuilder-designer/page-source/sdk-sql.md +39 -0
- package/skill-docs/references/form/guide-form-permission.md +185 -0
- package/skill-docs/references/form/guide-form-view.md +725 -624
- package/skill-docs/references/form/layout/detail-advanced.md +124 -0
- package/skill-docs/references/form/layout/detail-settings.md +106 -0
- package/skill-docs/references/form/layout/layout-overview.md +2 -0
- package/skill-docs/references/hrm/guide-role.md +4 -4
|
@@ -1,624 +1,725 @@
|
|
|
1
|
-
# 表单视图:新建与验收
|
|
2
|
-
|
|
3
|
-
表单创建后已有默认台账;只有用户明确需要额外视图时才创建。表格视图是 `nListView` 数据列表,和普通 `formView` 是两条不同链路。
|
|
4
|
-
|
|
5
|
-
## 需求判别
|
|
6
|
-
|
|
7
|
-
- “新建表单” → `form create --fields`。
|
|
8
|
-
- “客户信息表需要一个客户信息视图”等普通列表需求 → 先查询并复用该表单默认台账;“客户信息表”和“客户信息”的名称差异不构成额外新建理由。
|
|
9
|
-
- “在已有表单下明确新增一个额外表格视图” → `form table-view create`;命令必须同时保存显示列并回读。
|
|
10
|
-
- “在已有表单下新增表单视图” → `form view create --type formView`,随后必须 `form view populate`;不得新建另一张表单。
|
|
11
|
-
|
|
12
|
-
## 默认台账复用
|
|
13
|
-
|
|
14
|
-
1. 用 `form list-view <objId> <appId>` 查询已有列表,确认目标属于当前表单且用途符合需求,记录实际名称和 listId。存在多个候选时核对数据范围、权限和展示配置,不仅凭名称或第一条记录选择。
|
|
15
|
-
2. 普通列表需求直接在该 listId 上配置显示列、筛选、排序、统计和事件;需要整组配置显示列时用 `form list-columns <objId> <appId> <listId> --set @columns.json`。`table-view ensure` 只用于空列补齐,不负责视图选择或重命名。
|
|
16
|
-
3. 默认视图名称由平台随表单生成,不应机械沿用或统一去掉末尾“表”字。需求明确给出视图名称且与默认名称不一致时,使用 `form view rename` 修改已有视图并保留 ID;不要新建同用途视图代替改名。表单名、视图名和菜单名分别处理(表单名本身用 `form rename <objId> <appId> <新名称>` 改;它和视图名、菜单名互不影响)。例如表单“客户类型表”的视图要求为“客户类型”时,应把默认台账改名为“客户类型”,不能写成“同客户类型”。
|
|
17
|
-
多出来的视图用 `form view delete` 删掉(**不可逆、无回收站**),命令会在删完回读确认确实没了。
|
|
18
|
-
4. 只有明确需要“我的客户”“重点客户”等额外独立视图,或不同展示类型时,才进入新增流程。已有重复视图需先核对菜单、关联页签等引用及配置,不能自动删除。
|
|
19
|
-
|
|
20
|
-
例如:已建“客户信息表”,方案中的“客户信息视图”可由其默认台账满足,plan 标记“复用默认台账”,填写实际 listId 即可。
|
|
21
|
-
|
|
22
|
-
## 命令
|
|
23
|
-
|
|
24
|
-
```bash
|
|
25
|
-
# 查询表单下全部视图
|
|
26
|
-
e10-cli form view list <objId> <appId>
|
|
27
|
-
|
|
28
|
-
# 修改已有默认台账名称(viewId 从上一条命令取得)
|
|
29
|
-
e10-cli form view rename <objId> <appId> <viewId> "客户类型"
|
|
30
|
-
|
|
31
|
-
# 创建可用表格视图;默认放入全部已有字段
|
|
32
|
-
e10-cli form table-view create <objId> <appId> "审批数据表格" --pc-only
|
|
33
|
-
|
|
34
|
-
# 创建看板视图(默认 PC + FLOW 布局)
|
|
35
|
-
e10-cli form view create <objId> <appId> "按状态看板" --type kanbanView
|
|
36
|
-
|
|
37
|
-
# 新增表单视图——流式布局(FLOW)
|
|
38
|
-
e10-cli form view create <objId> <appId> "新增-流式视图" --type formView --layout-type FLOW
|
|
39
|
-
|
|
40
|
-
# 新增表单视图——表格式布局(EXCEL)
|
|
41
|
-
e10-cli form view create <objId> <appId> "新增-EXCEL视图" --type formView --layout-type EXCEL
|
|
42
|
-
|
|
43
|
-
# 第 2 步:把已有字段按目标布局类型填入新建 formView(流式/EXCEL 各自生成对应组件)
|
|
44
|
-
e10-cli form view populate <objId> <appId> <viewId>
|
|
45
|
-
|
|
46
|
-
# 创建移动端日历视图
|
|
47
|
-
e10-cli form view create <objId> <appId> "交付日历" \
|
|
48
|
-
--type calendarView --terminal MOBILE --layout-type FLOW
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
**给已有表单加表单视图是两步闭环**(缺一不可):
|
|
52
|
-
1. `form view create --type formView --layout-type FLOW|EXCEL` —— 建一个**空**的 formView 实体,`--layout-type` 决定流式(FLOW)还是表格式(EXCEL)。同一张表单可同时存在多个 formView,布局类型可不同(如一张表既加流式视图又加 EXCEL 视图)。
|
|
53
|
-
2. `form view populate <objId> <appId> <viewId>` —— 把已有字段按目标布局类型填进去。流式视图生成流式组件、EXCEL 视图生成表格定位,**不得把 EXCEL 定位直接复制到 FLOW 视图**。
|
|
54
|
-
|
|
55
|
-
`form view populate` 以原表单 `formId` 读取字段,以新视图 `viewId` 作为 `layoutMultiId` 读取目标布局,再按目标的 FLOW/EXCEL 类型重新生成字段组件并独立回读。不得把视图的 `versionId` 或 `pageLayoutId` 当成 `formId`。
|
|
56
|
-
|
|
57
|
-
**视图里已经有字段时,`populate` 是「只补缺」**:只把后来新增、视图里还没有的字段补进去,
|
|
58
|
-
**已有组件的排版与属性一个不动**(重跑幂等,已齐就只回一句「已有完整字段布局」)。
|
|
59
|
-
所以「表单加了字段、要让它出现在某个视图里」也走这条 —— 不必删视图重建。
|
|
60
|
-
|
|
61
|
-
字段的**物理表归属**会一并带进组件:表单在「字段管理 → 其他」里加过附属物理表(一张表单多张物理表)时,
|
|
62
|
-
字段列表会把各张物理表的字段一起返回,`populate` 按每个字段自己的物理表归属写入组件,
|
|
63
|
-
附属表的字段在视图里挂对表、不会被平台按主表校验拒掉
|
|
64
|
-
(被拒的报错就是 `此字段不属于当前物理表,不能更改位置`)。
|
|
65
|
-
|
|
66
|
-
## 复制 / 设默认 / 删除一套布局
|
|
67
|
-
|
|
68
|
-
设计器里视图卡片右键的三个动作,各有对应命令(都在 `form layout` 组下,不是 `form view`):
|
|
69
|
-
|
|
70
|
-
```bash
|
|
71
|
-
# 复制(复制出来的不是默认布局)
|
|
72
|
-
e10-cli form layout copy <objId> <appId> --from <源布局ID> [--name <新名>]
|
|
73
|
-
|
|
74
|
-
# 设为默认
|
|
75
|
-
e10-cli form layout set-default <objId> <appId> <布局ID> [--for all|add|view|edit]
|
|
76
|
-
|
|
77
|
-
# 删除(⚠ 不可逆)
|
|
78
|
-
e10-cli form layout delete <objId> <appId> <布局ID>
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
- **复制**:`--from` 传的是**视图 ID**(`form view list` 能查到)。平台**不回新布局 ID**,
|
|
82
|
-
命令靠自己复制前后各读一次列表反查,报出来的 `layoutId=` 就是新的那套。`--name` 缺省沿用源布局名。
|
|
83
|
-
- **设默认的 `--for` 是「用途档位」,不是 FLOW/EXCEL 那个布局类型**:`all` 全部布局 /
|
|
84
|
-
`add` 新建布局 / `view` 显示布局 / `edit` 编辑布局,缺省 `all`(也收中文说法)。
|
|
85
|
-
**一套布局同时只承担一个档位** —— 把同一套从 `add` 改成 `view`,`add` 就没了;
|
|
86
|
-
「新建用一套、显示用另一套」是靠**三套不同布局各占一档**。只有 `all` 会让视图的 `default` 变 `true`。
|
|
87
|
-
- **删除**:`layoutId` 传视图 ID。删完**回读确认列表里确实没了**才算成功(平台会「返回成功但没删掉」)。
|
|
88
|
-
这套布局原先占着某个档位的话,命令会一并打出来。⚠ **不可逆**;删掉正占着 `all` 的那套会怎样**未验证**,慎用。
|
|
89
|
-
|
|
90
|
-
看板、日历、思维导图目前只确认创建实体和视图列表回读,尚不能据此宣称设计器已有可用组件。
|
|
91
|
-
|
|
92
|
-
普通 `form view create --type` 只接受:
|
|
93
|
-
|
|
94
|
-
- `formView`:详情视图
|
|
95
|
-
- `kanbanView`:看板视图
|
|
96
|
-
- `calendarView`:日历视图
|
|
97
|
-
- `mindMapView`:思维导图视图
|
|
98
|
-
- `multiView`:多维表格视图(无 layoutType/terminalType,带 `extConfig:{listVersion:5}`)。**数据维度**:缺省主表(`subFormId:""/subFormMain:false`);明细表维度用 `--detail <明细名>`(按名解析明细 subFormId)或 `--sub-form-id <明细subFormId>`(直传),传值即 `subFormId:<明细subFormId>/subFormMain:true`。明细子表名/subFormId 用 `dataset/v1/getFields` detailFields 查(真 subFormId 在 `fields[].subFormId`,非 `dt.id`)。**多维表格显示列**复用台账同一套 `saveNListConfig/getNListConfig`,直接用 `form list-columns <objId> <appId> <multiView的viewId> --add <fieldId>` 加列。
|
|
99
|
-
|
|
100
|
-
`tableView`/`nListView` 不得传给普通视图命令。真实表格视图固定使用 `form table-view create`。
|
|
101
|
-
|
|
102
|
-
## 额外表格视图新建闭环
|
|
103
|
-
|
|
104
|
-
```bash
|
|
105
|
-
# 1. 已确认需要额外独立视图,再查询目标表单和已有列表
|
|
106
|
-
e10-cli form list <appId>
|
|
107
|
-
e10-cli form list-view <objId> <appId>
|
|
108
|
-
|
|
109
|
-
# 2. 创建 nListView、写入全部业务显示列和隐藏数据主键、独立回读
|
|
110
|
-
e10-cli --json form table-view create <objId> <appId> "<表格视图名>" --pc-only
|
|
111
|
-
|
|
112
|
-
# 3. 再次独立查询表单下列表
|
|
113
|
-
e10-cli --json form list-view <objId> <appId>
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
命令先用 `viewType=nListView` 创建,再以新 `listId` 读取 PC 配置;业务列必须取自 `/api/ebuilder/common/ds/fields` 的完整字段对象,不能只拼字段 ID。保存时保留服务端配置和隐藏主键 `id=5`,最后回读 `tableField` 和列表实体。命令只拦截完全同名的视图,不识别简称或业务用途;执行前必须完成复用判断,不能因名称未完全匹配就新建。已有同名视图时停止,不盲目重建。
|
|
117
|
-
|
|
118
|
-
`--pc-only` 只用于已确认本次验收为 PC 的场景。未指定时,命令必须取得真实 MOBILE 配置,禁止用 PC 配置推导移动端。
|
|
119
|
-
|
|
120
|
-
`create` / `ensure` 同样支持 `--terminal pc|mobile`(缺省 `pc`):决定显示列写进哪一端,另一端原样保留。只给某一端配显示列时用 `--terminal`,两端都要就分两次执行。
|
|
121
|
-
|
|
122
|
-
```bash
|
|
123
|
-
# 只给移动端补显示列,PC 端配置不动
|
|
124
|
-
e10-cli --json form table-view create <objId> <appId> "移动端表格" --terminal mobile
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
服务器通过必须同时满足:
|
|
128
|
-
|
|
129
|
-
- 创建后按返回 `listId` 找到同名列表。
|
|
130
|
-
- `persisted=true`。
|
|
131
|
-
- `visibleFieldCount` 等于目标业务字段数。
|
|
132
|
-
- `tableFieldCount` 还包含隐藏主键。
|
|
133
|
-
- 再查 `form list-view` 仍能按相同 ID 和名称找到。
|
|
134
|
-
|
|
135
|
-
前端无数据时可以没有数据行,但必须看见业务字段列头;否则仍是空壳,不能验收。
|
|
136
|
-
|
|
137
|
-
## 表格视图展示样式
|
|
138
|
-
|
|
139
|
-
```bash
|
|
140
|
-
e10-cli --json form table-view style <objId> <appId> <listId> <style>
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
`style` 使用前台语义,不直接让使用者猜内部 `mode`:
|
|
144
|
-
|
|
145
|
-
| style | 前台展示样式 | mode |
|
|
146
|
-
|---|---|---|
|
|
147
|
-
| `table` | 表格式 | `1` |
|
|
148
|
-
| `list` | 列表式 | `2` |
|
|
149
|
-
| `left-diagram` | 左图式 | `3` |
|
|
150
|
-
| `horizontal-list` | 横向列表式 | `4` |
|
|
151
|
-
| `above` | 上图式 | `5` |
|
|
152
|
-
| `grid` | 网格列表式 | `7` |
|
|
153
|
-
| `editable` | 可编辑表格(编辑态) | `11` |
|
|
154
|
-
|
|
155
|
-
可编辑表格内部还有数据态 `8` 和只读态 `9`;用户要求“改成可编辑表格”时必须使用编辑态 `11`,不得把只读态 `9` 当成完成。
|
|
156
|
-
|
|
157
|
-
命令先确认 `listId` 属于目标 `objId`,读取目标终端的完整配置后只修改其顶层 `mode`,保存后重新读取该终端配置核对。
|
|
158
|
-
|
|
159
|
-
PC 与移动端是**两个独立槽位**(保存接口的 `config` 落 PC、`mConfig` 落移动端),`--terminal` 决定改哪一端,缺省 `pc`:
|
|
160
|
-
|
|
161
|
-
- `--terminal pc`:只改 PC,移动端配置原样回传;
|
|
162
|
-
- `--terminal mobile`:只改移动端,PC 配置原样回传。
|
|
163
|
-
|
|
164
|
-
末尾会回显实际落点与另一端状态(`终端: 移动端(另一端配置保持原样)`)。另一端配置读取不到时,只有明确 `--pc-only` 才允许继续;`--terminal mobile` 与 `--pc-only` 互斥,同时传会直接报错——不要用 `--pc-only` 去改移动端。
|
|
165
|
-
|
|
166
|
-
```bash
|
|
167
|
-
# 只把移动端改成网格列表式,PC 展示样式保持不动
|
|
168
|
-
e10-cli --json form table-view style <objId> <appId> <listId> grid --terminal mobile
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
前端验收:重新进入“基础设置 → 展示样式”仍显示“可编辑表格”,并且列表进入可编辑状态。
|
|
172
|
-
|
|
173
|
-
## 常用搜索显示方式
|
|
174
|
-
|
|
175
|
-
```bash
|
|
176
|
-
# PC 常用搜索显示为高级搜索;filter 表示筛选
|
|
177
|
-
e10-cli --json form table-view search-style <objId> <appId> <listId> advanced
|
|
178
|
-
```
|
|
179
|
-
|
|
180
|
-
显示方式固定为 `advanced → commonSearchType="0"`、`filter → commonSearchType="1"`,不得直接猜内部值。
|
|
181
|
-
|
|
182
|
-
命令先确认 `listId` 属于目标表单,完整保留目标终端的其他配置,保存后重新读取目标属性;`--terminal` 同上(`pc` 只改 PC、`mobile` 只改移动端,另一端原样回传)。前端验收:“常用搜索 → 基础信息 → 显示方式”能正常打开,且刷新后仍为目标方式;若配置页异常,接口回读成功也不能验收。
|
|
183
|
-
|
|
184
|
-
## 常用搜索字段
|
|
185
|
-
|
|
186
|
-
```bash
|
|
187
|
-
e10-cli --json form table-view search-field add <objId> <appId> <listId> <fieldId>
|
|
188
|
-
|
|
189
|
-
# 按前端字段设置面板配置搜索项
|
|
190
|
-
e10-cli --json form table-view search-field configure \
|
|
191
|
-
<objId> <appId> <listId> <fieldId> \
|
|
192
|
-
--display-name "单据名称" \
|
|
193
|
-
--default-value "111" \
|
|
194
|
-
--required 0 \
|
|
195
|
-
--full-match 0 \
|
|
196
|
-
--condition like
|
|
197
|
-
```
|
|
198
|
-
|
|
199
|
-
命令必须从当前数据源接口取得完整字段模型,按前端最终保存结构生成搜索项:字段 `id` 与独立的 18 位 `filterId` 不得混用,字段自身 `multiSelect` 原样保留,搜索默认配置单独写入 `listFilterDefaultSets`。保存时完整保留目标终端的其他配置,再独立回读字段及条件关系;`--terminal` 同上(`pc` 只改 PC、`mobile` 只改移动端,另一端原样回传)。
|
|
200
|
-
|
|
201
|
-
具体配置固定映射:
|
|
202
|
-
|
|
203
|
-
- `--default-value`:固定默认值,写为 `defaultType="1"` 与 `startValue`;`--clear-default` 清除。`Select` 字段可传选项名称或选项 ID,CLI 必须从当前数据源解析为唯一真实 ID,并保留完整选项对象供前端回显。
|
|
204
|
-
- `--required 0|1`:条件是否必填,写为字段级 `required`。
|
|
205
|
-
- `--full-match 0|1`:搜索内容是否完整匹配,写入 `listFilterDefaultSets.searchContentFullMatches`。
|
|
206
|
-
- `--condition like|eq|...`:必须来自该字段实际允许的条件,同时更新字段层与默认设置层。
|
|
207
|
-
- `--display-name`:更新搜索项 `showName`;不得覆盖原字段名和字段 ID。
|
|
208
|
-
|
|
209
|
-
前端验收:打开“搜索配置”不报异常,目标字段出现在常用搜索字段中;刷新列表后可使用该字段发起搜索。只通过接口回读不能验收。
|
|
210
|
-
|
|
211
|
-
## 台账显示列/搜索/排序/统计/视图数据条件/行事件/分组/上下级/视图权限/分类搜索
|
|
212
|
-
|
|
213
|
-
直接改默认台账(nListView)的显示列、搜索条件、排序、顶部统计、视图数据条件。listId 取 `form list-view` 返回的列表视图 ID。默认改 PC 端;`list-columns --terminal mobile` 可改移动端显示列。**保存时先读回真实移动端 mConfig 原样回传,不会清空移动端**(`saveNListConfig` 一次请求里 `config`→PC 端、`mConfig`→移动端,两端列集合/uid 各自独立)。只有明确目标只使用 PC、移动端配置确实不存在时,才加 `--pc-only`。
|
|
214
|
-
|
|
215
|
-
```bash
|
|
216
|
-
# 查看当前显示列
|
|
217
|
-
e10-cli form list-columns <objId> <appId> <listId>
|
|
218
|
-
|
|
219
|
-
# 批量追加字段到显示列 / 移除字段
|
|
220
|
-
e10-cli form list-columns <objId> <appId> <listId> --add <fieldId1> <fieldId2>
|
|
221
|
-
e10-cli form list-columns <objId> <appId> <listId> --remove <fieldId1> <fieldId2>
|
|
222
|
-
|
|
223
|
-
# 按文件完整设置业务列顺序、宽度和格式(未列入的业务列会移除)
|
|
224
|
-
e10-cli form list-columns <objId> <appId> <listId> --set @columns.json --json
|
|
225
|
-
# 详见 references/form/guide-list-columns.md
|
|
226
|
-
|
|
227
|
-
# 列显示格式:千分位/小数位(Number/Money 列,走列对象 format/decimalLength)
|
|
228
|
-
e10-cli form list-format <objId> <appId> <listId> <fieldId> --thousandths --decimal 2
|
|
229
|
-
e10-cli form list-format <objId> <appId> <listId> <fieldId> --no-thousandths
|
|
230
|
-
# 列显示单位:后缀/前缀(走列 showTrans.ruleConfig,与千分位是两套机制)
|
|
231
|
-
e10-cli form list-unit <objId> <appId> <listId> <fieldId> "(元)"
|
|
232
|
-
|
|
233
|
-
# 配置搜索:--add 进搜索面板,--quick 加顶部快捷筛选(均支持多字段)
|
|
234
|
-
e10-cli form list-search <objId> <appId> <listId> --add <fieldId1> <fieldId2>
|
|
235
|
-
e10-cli form list-search <objId> <appId> <listId> --quick <fieldId1> <fieldId2>
|
|
236
|
-
# 主表字段直接从 ds/fields 解析;明细子字段经 getFormField 单取元数据(ds/fields 合并不展开)
|
|
237
|
-
|
|
238
|
-
# 配置排序 / 清除(--field 支持多个,按传入顺序多级排序;--order 对所有字段生效)
|
|
239
|
-
e10-cli form list-sort <objId> <appId> <listId> --field <fieldId1> <fieldId2> --order ASC
|
|
240
|
-
e10-cli form list-sort <objId> <appId> <listId> --clear
|
|
241
|
-
|
|
242
|
-
# 主表/明细统计完整指南:references/form/guide-list-stats.md
|
|
243
|
-
# 明细 count 支持只填 type/subFormId;批量入口:form list-stats detail
|
|
244
|
-
# PC/MOBILE 可能共享统计项;以保存后的 mobileStatistics 为准,不能承诺只影响 PC
|
|
245
|
-
# 顶部统计:type=sum 求和 / count 计数 / avg 平均 / max 最大 / min 最小
|
|
246
|
-
# 可选:thousandths=true 千分位 / decimalPlaces="2" 小数位 / unit="万" 单位(unitType=tenThousand)
|
|
247
|
-
e10-cli form list-stats <objId> <appId> <listId> --add '{"fieldId":"...","type":"sum","name":"合同总金额","thousandths":true,"decimalPlaces":"2","unit":"万"}'
|
|
248
|
-
|
|
249
|
-
# 条件统计:conditions 数组构造明文条件树填 rootdata(发明文保存成功、读回也是明文,无需 LZW 编码)
|
|
250
|
-
# func: eq 等于 / neq 不等于 / in 属于 / notIn 不属于 / like 包含 / notLike 不包含 / gt 大于 / lt 小于 / range 区间 / isNull 为空 / isNotNull 不为空
|
|
251
|
-
# 单选 Select 用 eq;notEq/between 为兼容别名自动归一为 neq/range;range 的 value 用数组 [起,止];value 填选项 valueKey、text 填显示名;多条件默认 AND
|
|
252
|
-
e10-cli form list-stats <objId> <appId> <listId> --add '{"fieldId":"金额fieldId","type":"sum","name":"研发合同额","thousandths":true,"unit":"万","conditions":[{"fieldId":"项目类型fieldId","func":"eq","value":"研发valueKey","text":"研发"}]}'
|
|
253
|
-
e10-cli form list-stats <objId> <appId> <listId> --remove <statId> # 平台 statisticsList 是 upsert 语义,删除靠标 operation:DELETE(splice 不删)
|
|
254
|
-
|
|
255
|
-
# 视图数据条件:台账只显示满足条件的数据(走 saveNListConfig config.filter,明文条件树,非独立接口——
|
|
256
|
-
# conditionEditor/saveOrUpdate 表单级不挂视图、saveBaseinfo 带 conditionData 都是错误端点)
|
|
257
|
-
# func 取值同条件统计(eq 等于 / neq 不等于 / in 属于 / notIn 不属于 / like 包含 / notLike 不包含 / gt 大于 / lt 小于 / range 区间 / isNull 为空 / isNotNull 不为空,单选 Select 用 eq);value 填选项 valueKey,text 填显示名
|
|
258
|
-
# --add 是**叠加**(往现有条件上加);要整体覆盖用 --replace。--relation 设顶层关系(不给=沿用现有)
|
|
259
|
-
e10-cli form list-filter <objId> <appId> <listId> --add '{"conditions":[{"fieldId":"项目类型fieldId","func":"eq","value":"研发valueKey","text":"研发"}]}'
|
|
260
|
-
# 嵌套条件组:条目里有 conditions 数组就是一层组(带 relation),可任意嵌套 → A OR (B AND C)
|
|
261
|
-
e10-cli form list-filter <objId> <appId> <listId> --replace '{"conditions":[{"fieldId":"Aid","func":"eq","value":"x"},{"relation":"and","conditions":[{"fieldId":"Bid","func":"eq","value":"y"},{"fieldId":"Cid","func":"gt","value":0}]}]}' --relation or
|
|
262
|
-
e10-cli form list-filter <objId> <appId> <listId> --remove 项目类型fieldId # 按字段摘(该字段所有条件都摘;组摘空整组拿掉)
|
|
263
|
-
e10-cli form list-filter <objId> <appId> <listId> --clear
|
|
264
|
-
# 日期字段「等于」可用系统参数占位符(动态求值,原样存储):{date} / {date:+7} / {thisyear} / {curryear} 等
|
|
265
|
-
# text 写界面显示名;占位符只用于 eq,且不要用 quick(quick 会展开成固定日期)。完整清单见 ref-list-filter-date-params.md
|
|
266
|
-
e10-cli form list-filter <objId> <appId> <listId> --add '{"conditions":[{"fieldId":"日期字段id","func":"eq","value":"{curryear}","text":"本年"}]}'
|
|
267
|
-
|
|
268
|
-
# 行事件:点击行数据 NewPage 打开(走 saveNListConfig config.eventGroup,明文 JSON,config+mConfig 都要写)
|
|
269
|
-
# --add-page 选页面:pageId 缺省 "1/<objId>"(表单新建布局),"0/<objId>"=显示布局
|
|
270
|
-
# 打开方式 openMode(linkInfo.openMode 权威,page.openMode 恒 4):
|
|
271
|
-
# 当前页面=4 / 新窗口=0 / 弹出窗口=5 / 右侧滑出=1(缺省) / 右侧推出=7
|
|
272
|
-
# 弹出/滑出/推出 带弹窗宽高(--modal-width/--modal-height,缺省 50%);滑出/推出 额外带 winSizeNew(--win-size,缺省 100%)
|
|
273
|
-
# --add-field 选字段(URL取自行内字段值,urlFieldText/Type自动补)
|
|
274
|
-
e10-cli form list-event <objId> <appId> <listId> --add-page '{"pageName":"新建数据"}'
|
|
275
|
-
e10-cli form list-event <objId> <appId> <listId> --add-page '{"pageId":"0/<objId>","pageName":"显示布局","openMode":"当前页面"}'
|
|
276
|
-
e10-cli form list-event <objId> <appId> <listId> --add-page '{"pageName":"弹窗详情","openMode":"弹出窗口"}' --modal-width 80%
|
|
277
|
-
e10-cli form list-event <objId> <appId> <listId> --add-page '{"pageName":"侧滑详情","openMode":"右侧推出"}' --win-size 60%
|
|
278
|
-
e10-cli form list-event <objId> <appId> <listId> --add-field '{"urlFieldId":"字段id"}'
|
|
279
|
-
e10-cli form list-event <objId> <appId> <listId> --clear
|
|
280
|
-
|
|
281
|
-
# 字段事件(列点击 list-click,区别于行事件 list-event):点某列数据打开该行显示布局(带数据 ID)
|
|
282
|
-
# 打开方式 --open-mode:当前页面/新窗口/弹出窗口/右侧滑出(缺省)/右侧推出;滑出/推出 --win-size 设宽度(缺省 800px)。具体数值按需求填写:百分比使用 `%`(如 `45%`、`60%`),像素使用 `px`(如 `640px`、`900px`),两种单位不可混用或省略;百分比范围为 0%~100%。
|
|
283
|
-
e10-cli form list-click <objId> <appId> <listId> <fieldId> --open-mode 右侧推出 --win-size 50%
|
|
284
|
-
e10-cli form list-click <objId> <appId> <listId> <fieldId> --open-mode 右侧推出 --win-size 800px
|
|
285
|
-
e10-cli form list-click <objId> <appId> <listId> <fieldId> --target <目标表单objId> --open-mode 弹出窗口
|
|
286
|
-
e10-cli form list-click <objId> <appId> <listId> <fieldId> --clear
|
|
287
|
-
|
|
288
|
-
# 启用分组:台账按某字段分组聚合显示(走 saveNListConfig config.enableGroup 对象 {enable,groupField,groupSize})
|
|
289
|
-
# saveNListConfig 持久化成功,不走 designer/layout/save LZW。group-field 用完整字段对象(自动从 ds/fields 取)
|
|
290
|
-
e10-cli form list-group <objId> <appId> <listId> --enable --group-field <分组字段fieldId> --group-size 100
|
|
291
|
-
e10-cli form list-group <objId> <appId> <listId> --disable # 禁用但保留 groupField/groupSize(仅 enable=false)
|
|
292
|
-
|
|
293
|
-
# 上下级树形展示:根据“上级类型”等自关联字段展示父子层级(走 config.superiorField)
|
|
294
|
-
# parent-field 支持字段名称或 ID;必须是主表、单选、关联当前表单自身的 EBuilder 字段
|
|
295
|
-
e10-cli form list-hierarchy <objId> <appId> <listId> --enable --parent-field "上级类型" --expand-level 2
|
|
296
|
-
e10-cli form list-hierarchy <objId> <appId> <listId> --disable # 关闭但保留字段及展开设置
|
|
297
|
-
|
|
298
|
-
# 台账视图权限(查阅/查看权限):谁能查看这个台账(走 list/permission/save + getList,专用端点,full-replace 语义 omit即删)
|
|
299
|
-
# selectedType: all(所有人) / user(人员,带--name) / role(角色,--name 缺省自动查) / matrix(矩阵,用 --add-raw 传整对象)
|
|
300
|
-
e10-cli form list-permission <objId> <appId> <listId> --add-all
|
|
301
|
-
e10-cli form list-permission <objId> <appId> <listId> --add-user <userId> --name <人员名>
|
|
302
|
-
e10-cli form list-permission <objId> <appId> <listId> --add-role <roleId> # --name 缺省自动从角色树查名
|
|
303
|
-
e10-cli form list-permission <objId> <appId> <listId> --add-role <roleId> --share-level 2 # 加同一角色另一个共享级别
|
|
304
|
-
e10-cli form list-permission <objId> <appId> <listId> --add-role <roleId> --seclevel 30-80 # 安全级别范围
|
|
305
|
-
e10-cli form list-permission <objId> <appId> <listId> --add-raw '{"selectedType":"matrix","name":"...","dataid":"矩阵id",...}'
|
|
306
|
-
e10-cli form list-permission <objId> <appId> <listId> --remove <权限id>
|
|
307
|
-
e10-cli form list-permission <objId> <appId> <listId> --clear
|
|
308
|
-
|
|
309
|
-
# 删除指定权限;清理重复“所有人”后保留唯一一条
|
|
310
|
-
e10-cli form list-permission <objId> <appId> <listId> --remove <permissionId>
|
|
311
|
-
e10-cli form list-permission <objId> <appId> <listId> --remove-all --add-all
|
|
312
|
-
|
|
313
|
-
# 每条授权对象的两个可配维度(样本坐实,mulinquan 2026-09-02):
|
|
314
|
-
# 安全级别 = levelScope.minShowlevel/maxShowlevel(字符串范围,--seclevel <min>-<max>,如 0-100 / 30-80;role 缺省 0-100、all 缺省空)
|
|
315
|
-
# 共享级别 = roleLevel(验证: 总部=1 分部=2 全部=3)。同一角色可按不同共享级别各存一条(同 role 两条 roleLevel 1/2 并存)→ 去重键含 roleLevel
|
|
316
|
-
# 幂等:目标(含 roleLevel)已存在时跳过保存,打印「无变化」
|
|
317
|
-
|
|
318
|
-
# 分类搜索:台账左侧的分类筛选(走 saveNListConfig config.searchConditions.groupFilters)
|
|
319
|
-
# 支持主表选项类、浏览框类、日期类与系统字段;不支持明细字段(产品边界)
|
|
320
|
-
e10-cli form list-search-group <objId> <appId> <listId> --add <字段名或fieldId>
|
|
321
|
-
e10-cli form list-search-group <objId> <appId> <listId> --add <字段> --position 0 --option-order field
|
|
322
|
-
e10-cli form list-search-group <objId> <appId> <listId> --add <字段> --default-options "选项1,选项2" # 默认选中
|
|
323
|
-
e10-cli form list-search-group <objId> <appId> <listId> --add <字段> --options "选项1,选项3" # 只让这些选项出现
|
|
324
|
-
e10-cli form list-search-group <objId> <appId> <listId> --add <字段> --count-update # 统计数字随搜索结果更新
|
|
325
|
-
e10-cli form list-search-group <objId> <appId> <listId> --add <字段> --only-with-data # 仅显示有数据的选项
|
|
326
|
-
e10-cli form list-search-group <objId> <appId> <listId> --add <日期字段> --date-granularity 月,季度 \
|
|
327
|
-
--default-group month --default-value "2024-01-01 00:00:00,2024-12-31 23:59:59" # 日期类默认区间
|
|
328
|
-
e10-cli form list-search-group <objId> <appId> <listId> --remove <fieldId>
|
|
329
|
-
e10-cli form list-search-group <objId> <appId> <listId> --clear
|
|
330
|
-
|
|
331
|
-
# 自定义分类(GroupCustom):名称、显示方式、显示封存的选项
|
|
332
|
-
e10-cli form list-search-group <objId> <appId> <listId> --add-custom "客户分类" --display 平铺 --show-archive on
|
|
333
|
-
e10-cli form list-search-group <objId> <appId> <listId> --add-custom "客户分类" --display 下拉 --show-archive off # 同名=更新,保留原 id
|
|
334
|
-
e10-cli form list-search-group <objId> <appId> <listId> --remove "客户分类" # 也可传 id / fieldId
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
`--add` 对同一个字段**重建**那条分类搜索:本次没给的选项一律回到缺省(不勾默认值、全显示、不勾统计更新、不勾仅显示有数据),所以要改其中之一就把那条要保留的选项一起给全。
|
|
338
|
-
|
|
339
|
-
**自定义分类**(`--add-custom`)是平台的 `GroupCustom` 类型:没有创建接口,id 由前端生成 18 位数字、`fieldId = GroupCustom_<id>`;分类值(`listGroupSets`)初始为空,之后在设计器里配置,CLI 只负责建分类壳并设置名称/显示方式/封存。同名再执行是更新而不是新增。
|
|
340
|
-
|
|
341
|
-
- `--display 平铺|下拉`:分类搜索的「显示方式」,落 `tabStyle`(`平铺="tab"`、`下拉="select"`,缺省下拉)。
|
|
342
|
-
- `--show-archive on|off`:落 `showArchiveOption`(`"1"`/`"0"`,缺省开)。界面上这个开关**只对选项类字段(CheckBox/Select/RadioBox/SelectMultiple)显示**,自定义分类看不到它,但报文里该键仍会写入。
|
|
343
|
-
- `--position 0|1`:0=顶部(缺省)、1=左侧 / 下拉样式(平台枚举 Top="0"、Left/DropDown="1")。
|
|
344
|
-
|
|
345
|
-
### 搜索中的自定义分类
|
|
346
|
-
|
|
347
|
-
常用搜索与分类搜索都可添加独立的自定义分类。它们分别保存在两套搜索配置中,即使名称相同也是两条不同配置;分别执行命令,不复用另一处的 ID。把配置保存为 JSON 文件,使用 `--custom @文件` 新建或按 `id`/唯一名称更新。`options` 是自定义分类的选项,不是字段原有选项;更新时应列出希望保留的全部选项,已有同名选项的 ID、条件和默认选中状态会沿用。
|
|
348
|
-
|
|
349
|
-
```json
|
|
350
|
-
{
|
|
351
|
-
"name": "分类1",
|
|
352
|
-
"selection": "single",
|
|
353
|
-
"required": true,
|
|
354
|
-
"showArchiveOption": false,
|
|
355
|
-
"options": [
|
|
356
|
-
{
|
|
357
|
-
"name": "指定时间内由我创建",
|
|
358
|
-
"conditions": [
|
|
359
|
-
{ "fieldId": "3", "func": "range", "value": ["2026-10-01 08:00:00", "2026-11-14 18:00:00"] },
|
|
360
|
-
{ "fieldId": "2", "func": "eq", "value": "{userid}", "text": "当前人员" }
|
|
361
|
-
],
|
|
362
|
-
"relation": "and"
|
|
363
|
-
},
|
|
364
|
-
{ "name": "我关注的", "systemOption": "myFollow", "default": true }
|
|
365
|
-
]
|
|
366
|
-
}
|
|
367
|
-
```
|
|
368
|
-
|
|
369
|
-
```bash
|
|
370
|
-
# 常用搜索中的自定义分类:可设必填、单选/多选、默认项及每项条件
|
|
371
|
-
e10-cli form list-search <objId> <appId> <listId> --custom @custom-search.json --archive off
|
|
372
|
-
|
|
373
|
-
# 分类搜索中的自定义分类:同一份配置可复用,但会生成独立分类与选项 ID
|
|
374
|
-
e10-cli form list-search-group <objId> <appId> <listId> --custom @custom-search.json --archive off
|
|
375
|
-
|
|
376
|
-
# 普通字段的封存选项也可关闭
|
|
377
|
-
e10-cli form list-search <objId> <appId> <listId> --field <fieldId> --archive off
|
|
378
|
-
e10-cli form list-search-group <objId> <appId> <listId> --add <字段> --archive off
|
|
379
|
-
```
|
|
380
|
-
|
|
381
|
-
`showArchiveOption: false` 或 `--archive off` 保存为 `"0"`,开启为 `"1"`;显式命令参数优先于文件。`selection` 为 `single` 或 `multiple`,`required` 仅用于常用搜索。每个普通自定义选项用与 `list-filter` 相同的 `conditions` 条件数组(可嵌套条件组),也可用 `conditionData` 传已有的完整条件树;常用搜索选项必须有条件或系统选项。当前确认可用的系统选项是 `myFollow`(我关注的),其他系统选项须先核对平台配置。分类搜索可只配置选项名称;若需按条件筛选,应给该选项配置 `conditions` 或 `conditionData`。保存后分别读取 `list-search --json` 或 `list-search-group --json`,再在实际视图核对展示与筛选结果。
|
|
382
|
-
|
|
383
|
-
两个开关的适用范围不同,用错类型会当场报错而不是写一个界面上看不见的键:
|
|
384
|
-
|
|
385
|
-
- `--count-update`(统计数字随搜索结果更新):选项 / 浏览框 / 日期类可用。缺省关,数字只在进入台账时统计一次。
|
|
386
|
-
- `--only-with-data`(仅显示有数据的选项):**只有**选项 / 浏览框类有这个键,日期与系统字段用不了。这个键**勾上才出现** —— 不勾时整个键都没有(不会写成 0)。
|
|
387
|
-
- `--no-show-count` 管的是**统计数字显不显示**,与 `--count-update` 是两回事。
|
|
388
|
-
|
|
389
|
-
`list-hierarchy` 与 `list-group` 不可混为一谈:前者按自关联字段建立父子树,后者按普通字段聚合分组。需求出现“上下级”“父级”“树形”“根据上级类型展示”时使用 `list-hierarchy`。字段名不要求固定为“上级类型”,但字段关系必须满足自关联单选。
|
|
390
|
-
|
|
391
|
-
字段 ID 来自 `form read <objId> --app-id <appId>` 或 `form list-columns` 当前列(系统列如 `2`创建者/`3`创建时间也可增删;`5`数据ID主键自动保留,禁止移除)。显示列命令保存后回读校验,`otherTerminalPreserved:true` 表示另一终端配置核对一致。
|
|
392
|
-
|
|
393
|
-
## formView 固定闭环
|
|
394
|
-
|
|
395
|
-
```bash
|
|
396
|
-
# 1. 确认目标表单与现有视图
|
|
397
|
-
e10-cli form list <appId>
|
|
398
|
-
e10-cli form view list <objId> <appId>
|
|
399
|
-
|
|
400
|
-
# 2. 创建视图并从输出取得 viewId
|
|
401
|
-
e10-cli --json form view create <objId> <appId> "<视图名>" --type formView
|
|
402
|
-
|
|
403
|
-
# 3. 填充已有字段并独立回读
|
|
404
|
-
e10-cli --json form view populate <objId> <appId> <viewId>
|
|
405
|
-
```
|
|
406
|
-
|
|
407
|
-
`populate` 只有同时满足以下条件才算服务器验证通过:
|
|
408
|
-
|
|
409
|
-
- `success=true`
|
|
410
|
-
- `componentCount > 0`
|
|
411
|
-
- `fieldComponentCount > 0`
|
|
412
|
-
- 重复执行返回 `alreadyPopulated=true`
|
|
413
|
-
|
|
414
|
-
服务器验证通过后仍需用户确认前端不是空画布、字段名称和特殊配置正确。
|
|
415
|
-
|
|
416
|
-
## 视图基础开关(表头 / check 框 / 分页 / 置顶 / 批量 / 删除)
|
|
417
|
-
|
|
418
|
-
`form list-config` 读写 `getNListConfig` 顶层的开关键。键名来自平台真实保存报文,**只改点名的键**,其余原样回写;另一端(PC / 移动)原样保留;保存后只回读被改的键。
|
|
419
|
-
|
|
420
|
-
```bash
|
|
421
|
-
# 读当前值(含操作按钮摘要:按钮 key / 启用值 / 位置,只读)
|
|
422
|
-
e10-cli form list-config get <objId> <appId> <listId> --json
|
|
423
|
-
|
|
424
|
-
# 改开关;不指定 --terminal 默认改 PC
|
|
425
|
-
e10-cli form list-config set <objId> <appId> <listId> --hide-checkbox on --page-size 20
|
|
426
|
-
e10-cli form list-config set <objId> <appId> <listId> --set-top 1 --set-top-rule @rule.json
|
|
427
|
-
```
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
|
432
|
-
|
|
433
|
-
| `--page-size`
|
|
434
|
-
| `--
|
|
435
|
-
| `--
|
|
436
|
-
| `--batch-
|
|
437
|
-
| `--
|
|
438
|
-
| `--
|
|
439
|
-
|
|
440
|
-
- `buttonConfig`(操作按钮的启用/位置)本版**只读展示、不提供写入**:样本里 `enable:0` 的极性未确认,避免写反。
|
|
441
|
-
- 已是目标值时零写入;值没变不发保存请求。
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
-
|
|
454
|
-
-
|
|
455
|
-
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
```
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
e10-cli form list-
|
|
526
|
-
--
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
`
|
|
535
|
-
|
|
536
|
-
|
|
|
537
|
-
|
|
538
|
-
| `
|
|
539
|
-
| `
|
|
540
|
-
| `
|
|
541
|
-
| `
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
}
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
560
|
-
|
|
561
|
-
|
|
562
|
-
|
|
563
|
-
|
|
564
|
-
|
|
565
|
-
|
|
566
|
-
|
|
567
|
-
|
|
568
|
-
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
|
|
576
|
-
|
|
577
|
-
```
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
```
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
1
|
+
# 表单视图:新建与验收
|
|
2
|
+
|
|
3
|
+
表单创建后已有默认台账;只有用户明确需要额外视图时才创建。表格视图是 `nListView` 数据列表,和普通 `formView` 是两条不同链路。
|
|
4
|
+
|
|
5
|
+
## 需求判别
|
|
6
|
+
|
|
7
|
+
- “新建表单” → `form create --fields`。
|
|
8
|
+
- “客户信息表需要一个客户信息视图”等普通列表需求 → 先查询并复用该表单默认台账;“客户信息表”和“客户信息”的名称差异不构成额外新建理由。
|
|
9
|
+
- “在已有表单下明确新增一个额外表格视图” → `form table-view create`;命令必须同时保存显示列并回读。
|
|
10
|
+
- “在已有表单下新增表单视图” → `form view create --type formView`,随后必须 `form view populate`;不得新建另一张表单。
|
|
11
|
+
|
|
12
|
+
## 默认台账复用
|
|
13
|
+
|
|
14
|
+
1. 用 `form list-view <objId> <appId>` 查询已有列表,确认目标属于当前表单且用途符合需求,记录实际名称和 listId。存在多个候选时核对数据范围、权限和展示配置,不仅凭名称或第一条记录选择。
|
|
15
|
+
2. 普通列表需求直接在该 listId 上配置显示列、筛选、排序、统计和事件;需要整组配置显示列时用 `form list-columns <objId> <appId> <listId> --set @columns.json`。`table-view ensure` 只用于空列补齐,不负责视图选择或重命名。
|
|
16
|
+
3. 默认视图名称由平台随表单生成,不应机械沿用或统一去掉末尾“表”字。需求明确给出视图名称且与默认名称不一致时,使用 `form view rename` 修改已有视图并保留 ID;不要新建同用途视图代替改名。表单名、视图名和菜单名分别处理(表单名本身用 `form rename <objId> <appId> <新名称>` 改;它和视图名、菜单名互不影响)。例如表单“客户类型表”的视图要求为“客户类型”时,应把默认台账改名为“客户类型”,不能写成“同客户类型”。
|
|
17
|
+
多出来的视图用 `form view delete` 删掉(**不可逆、无回收站**),命令会在删完回读确认确实没了。
|
|
18
|
+
4. 只有明确需要“我的客户”“重点客户”等额外独立视图,或不同展示类型时,才进入新增流程。已有重复视图需先核对菜单、关联页签等引用及配置,不能自动删除。
|
|
19
|
+
|
|
20
|
+
例如:已建“客户信息表”,方案中的“客户信息视图”可由其默认台账满足,plan 标记“复用默认台账”,填写实际 listId 即可。
|
|
21
|
+
|
|
22
|
+
## 命令
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
# 查询表单下全部视图
|
|
26
|
+
e10-cli form view list <objId> <appId>
|
|
27
|
+
|
|
28
|
+
# 修改已有默认台账名称(viewId 从上一条命令取得)
|
|
29
|
+
e10-cli form view rename <objId> <appId> <viewId> "客户类型"
|
|
30
|
+
|
|
31
|
+
# 创建可用表格视图;默认放入全部已有字段
|
|
32
|
+
e10-cli form table-view create <objId> <appId> "审批数据表格" --pc-only
|
|
33
|
+
|
|
34
|
+
# 创建看板视图(默认 PC + FLOW 布局)
|
|
35
|
+
e10-cli form view create <objId> <appId> "按状态看板" --type kanbanView
|
|
36
|
+
|
|
37
|
+
# 新增表单视图——流式布局(FLOW)
|
|
38
|
+
e10-cli form view create <objId> <appId> "新增-流式视图" --type formView --layout-type FLOW
|
|
39
|
+
|
|
40
|
+
# 新增表单视图——表格式布局(EXCEL)
|
|
41
|
+
e10-cli form view create <objId> <appId> "新增-EXCEL视图" --type formView --layout-type EXCEL
|
|
42
|
+
|
|
43
|
+
# 第 2 步:把已有字段按目标布局类型填入新建 formView(流式/EXCEL 各自生成对应组件)
|
|
44
|
+
e10-cli form view populate <objId> <appId> <viewId>
|
|
45
|
+
|
|
46
|
+
# 创建移动端日历视图
|
|
47
|
+
e10-cli form view create <objId> <appId> "交付日历" \
|
|
48
|
+
--type calendarView --terminal MOBILE --layout-type FLOW
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**给已有表单加表单视图是两步闭环**(缺一不可):
|
|
52
|
+
1. `form view create --type formView --layout-type FLOW|EXCEL` —— 建一个**空**的 formView 实体,`--layout-type` 决定流式(FLOW)还是表格式(EXCEL)。同一张表单可同时存在多个 formView,布局类型可不同(如一张表既加流式视图又加 EXCEL 视图)。
|
|
53
|
+
2. `form view populate <objId> <appId> <viewId>` —— 把已有字段按目标布局类型填进去。流式视图生成流式组件、EXCEL 视图生成表格定位,**不得把 EXCEL 定位直接复制到 FLOW 视图**。
|
|
54
|
+
|
|
55
|
+
`form view populate` 以原表单 `formId` 读取字段,以新视图 `viewId` 作为 `layoutMultiId` 读取目标布局,再按目标的 FLOW/EXCEL 类型重新生成字段组件并独立回读。不得把视图的 `versionId` 或 `pageLayoutId` 当成 `formId`。
|
|
56
|
+
|
|
57
|
+
**视图里已经有字段时,`populate` 是「只补缺」**:只把后来新增、视图里还没有的字段补进去,
|
|
58
|
+
**已有组件的排版与属性一个不动**(重跑幂等,已齐就只回一句「已有完整字段布局」)。
|
|
59
|
+
所以「表单加了字段、要让它出现在某个视图里」也走这条 —— 不必删视图重建。
|
|
60
|
+
|
|
61
|
+
字段的**物理表归属**会一并带进组件:表单在「字段管理 → 其他」里加过附属物理表(一张表单多张物理表)时,
|
|
62
|
+
字段列表会把各张物理表的字段一起返回,`populate` 按每个字段自己的物理表归属写入组件,
|
|
63
|
+
附属表的字段在视图里挂对表、不会被平台按主表校验拒掉
|
|
64
|
+
(被拒的报错就是 `此字段不属于当前物理表,不能更改位置`)。
|
|
65
|
+
|
|
66
|
+
## 复制 / 设默认 / 删除一套布局
|
|
67
|
+
|
|
68
|
+
设计器里视图卡片右键的三个动作,各有对应命令(都在 `form layout` 组下,不是 `form view`):
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
# 复制(复制出来的不是默认布局)
|
|
72
|
+
e10-cli form layout copy <objId> <appId> --from <源布局ID> [--name <新名>]
|
|
73
|
+
|
|
74
|
+
# 设为默认
|
|
75
|
+
e10-cli form layout set-default <objId> <appId> <布局ID> [--for all|add|view|edit]
|
|
76
|
+
|
|
77
|
+
# 删除(⚠ 不可逆)
|
|
78
|
+
e10-cli form layout delete <objId> <appId> <布局ID>
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
- **复制**:`--from` 传的是**视图 ID**(`form view list` 能查到)。平台**不回新布局 ID**,
|
|
82
|
+
命令靠自己复制前后各读一次列表反查,报出来的 `layoutId=` 就是新的那套。`--name` 缺省沿用源布局名。
|
|
83
|
+
- **设默认的 `--for` 是「用途档位」,不是 FLOW/EXCEL 那个布局类型**:`all` 全部布局 /
|
|
84
|
+
`add` 新建布局 / `view` 显示布局 / `edit` 编辑布局,缺省 `all`(也收中文说法)。
|
|
85
|
+
**一套布局同时只承担一个档位** —— 把同一套从 `add` 改成 `view`,`add` 就没了;
|
|
86
|
+
「新建用一套、显示用另一套」是靠**三套不同布局各占一档**。只有 `all` 会让视图的 `default` 变 `true`。
|
|
87
|
+
- **删除**:`layoutId` 传视图 ID。删完**回读确认列表里确实没了**才算成功(平台会「返回成功但没删掉」)。
|
|
88
|
+
这套布局原先占着某个档位的话,命令会一并打出来。⚠ **不可逆**;删掉正占着 `all` 的那套会怎样**未验证**,慎用。
|
|
89
|
+
|
|
90
|
+
看板、日历、思维导图目前只确认创建实体和视图列表回读,尚不能据此宣称设计器已有可用组件。
|
|
91
|
+
|
|
92
|
+
普通 `form view create --type` 只接受:
|
|
93
|
+
|
|
94
|
+
- `formView`:详情视图
|
|
95
|
+
- `kanbanView`:看板视图
|
|
96
|
+
- `calendarView`:日历视图
|
|
97
|
+
- `mindMapView`:思维导图视图
|
|
98
|
+
- `multiView`:多维表格视图(无 layoutType/terminalType,带 `extConfig:{listVersion:5}`)。**数据维度**:缺省主表(`subFormId:""/subFormMain:false`);明细表维度用 `--detail <明细名>`(按名解析明细 subFormId)或 `--sub-form-id <明细subFormId>`(直传),传值即 `subFormId:<明细subFormId>/subFormMain:true`。明细子表名/subFormId 用 `dataset/v1/getFields` detailFields 查(真 subFormId 在 `fields[].subFormId`,非 `dt.id`)。**多维表格显示列**复用台账同一套 `saveNListConfig/getNListConfig`,直接用 `form list-columns <objId> <appId> <multiView的viewId> --add <fieldId>` 加列。
|
|
99
|
+
|
|
100
|
+
`tableView`/`nListView` 不得传给普通视图命令。真实表格视图固定使用 `form table-view create`。
|
|
101
|
+
|
|
102
|
+
## 额外表格视图新建闭环
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# 1. 已确认需要额外独立视图,再查询目标表单和已有列表
|
|
106
|
+
e10-cli form list <appId>
|
|
107
|
+
e10-cli form list-view <objId> <appId>
|
|
108
|
+
|
|
109
|
+
# 2. 创建 nListView、写入全部业务显示列和隐藏数据主键、独立回读
|
|
110
|
+
e10-cli --json form table-view create <objId> <appId> "<表格视图名>" --pc-only
|
|
111
|
+
|
|
112
|
+
# 3. 再次独立查询表单下列表
|
|
113
|
+
e10-cli --json form list-view <objId> <appId>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
命令先用 `viewType=nListView` 创建,再以新 `listId` 读取 PC 配置;业务列必须取自 `/api/ebuilder/common/ds/fields` 的完整字段对象,不能只拼字段 ID。保存时保留服务端配置和隐藏主键 `id=5`,最后回读 `tableField` 和列表实体。命令只拦截完全同名的视图,不识别简称或业务用途;执行前必须完成复用判断,不能因名称未完全匹配就新建。已有同名视图时停止,不盲目重建。
|
|
117
|
+
|
|
118
|
+
`--pc-only` 只用于已确认本次验收为 PC 的场景。未指定时,命令必须取得真实 MOBILE 配置,禁止用 PC 配置推导移动端。
|
|
119
|
+
|
|
120
|
+
`create` / `ensure` 同样支持 `--terminal pc|mobile`(缺省 `pc`):决定显示列写进哪一端,另一端原样保留。只给某一端配显示列时用 `--terminal`,两端都要就分两次执行。
|
|
121
|
+
|
|
122
|
+
```bash
|
|
123
|
+
# 只给移动端补显示列,PC 端配置不动
|
|
124
|
+
e10-cli --json form table-view create <objId> <appId> "移动端表格" --terminal mobile
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
服务器通过必须同时满足:
|
|
128
|
+
|
|
129
|
+
- 创建后按返回 `listId` 找到同名列表。
|
|
130
|
+
- `persisted=true`。
|
|
131
|
+
- `visibleFieldCount` 等于目标业务字段数。
|
|
132
|
+
- `tableFieldCount` 还包含隐藏主键。
|
|
133
|
+
- 再查 `form list-view` 仍能按相同 ID 和名称找到。
|
|
134
|
+
|
|
135
|
+
前端无数据时可以没有数据行,但必须看见业务字段列头;否则仍是空壳,不能验收。
|
|
136
|
+
|
|
137
|
+
## 表格视图展示样式
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
e10-cli --json form table-view style <objId> <appId> <listId> <style>
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
`style` 使用前台语义,不直接让使用者猜内部 `mode`:
|
|
144
|
+
|
|
145
|
+
| style | 前台展示样式 | mode |
|
|
146
|
+
|---|---|---|
|
|
147
|
+
| `table` | 表格式 | `1` |
|
|
148
|
+
| `list` | 列表式 | `2` |
|
|
149
|
+
| `left-diagram` | 左图式 | `3` |
|
|
150
|
+
| `horizontal-list` | 横向列表式 | `4` |
|
|
151
|
+
| `above` | 上图式 | `5` |
|
|
152
|
+
| `grid` | 网格列表式 | `7` |
|
|
153
|
+
| `editable` | 可编辑表格(编辑态) | `11` |
|
|
154
|
+
|
|
155
|
+
可编辑表格内部还有数据态 `8` 和只读态 `9`;用户要求“改成可编辑表格”时必须使用编辑态 `11`,不得把只读态 `9` 当成完成。
|
|
156
|
+
|
|
157
|
+
命令先确认 `listId` 属于目标 `objId`,读取目标终端的完整配置后只修改其顶层 `mode`,保存后重新读取该终端配置核对。
|
|
158
|
+
|
|
159
|
+
PC 与移动端是**两个独立槽位**(保存接口的 `config` 落 PC、`mConfig` 落移动端),`--terminal` 决定改哪一端,缺省 `pc`:
|
|
160
|
+
|
|
161
|
+
- `--terminal pc`:只改 PC,移动端配置原样回传;
|
|
162
|
+
- `--terminal mobile`:只改移动端,PC 配置原样回传。
|
|
163
|
+
|
|
164
|
+
末尾会回显实际落点与另一端状态(`终端: 移动端(另一端配置保持原样)`)。另一端配置读取不到时,只有明确 `--pc-only` 才允许继续;`--terminal mobile` 与 `--pc-only` 互斥,同时传会直接报错——不要用 `--pc-only` 去改移动端。
|
|
165
|
+
|
|
166
|
+
```bash
|
|
167
|
+
# 只把移动端改成网格列表式,PC 展示样式保持不动
|
|
168
|
+
e10-cli --json form table-view style <objId> <appId> <listId> grid --terminal mobile
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
前端验收:重新进入“基础设置 → 展示样式”仍显示“可编辑表格”,并且列表进入可编辑状态。
|
|
172
|
+
|
|
173
|
+
## 常用搜索显示方式
|
|
174
|
+
|
|
175
|
+
```bash
|
|
176
|
+
# PC 常用搜索显示为高级搜索;filter 表示筛选
|
|
177
|
+
e10-cli --json form table-view search-style <objId> <appId> <listId> advanced
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
显示方式固定为 `advanced → commonSearchType="0"`、`filter → commonSearchType="1"`,不得直接猜内部值。
|
|
181
|
+
|
|
182
|
+
命令先确认 `listId` 属于目标表单,完整保留目标终端的其他配置,保存后重新读取目标属性;`--terminal` 同上(`pc` 只改 PC、`mobile` 只改移动端,另一端原样回传)。前端验收:“常用搜索 → 基础信息 → 显示方式”能正常打开,且刷新后仍为目标方式;若配置页异常,接口回读成功也不能验收。
|
|
183
|
+
|
|
184
|
+
## 常用搜索字段
|
|
185
|
+
|
|
186
|
+
```bash
|
|
187
|
+
e10-cli --json form table-view search-field add <objId> <appId> <listId> <fieldId>
|
|
188
|
+
|
|
189
|
+
# 按前端字段设置面板配置搜索项
|
|
190
|
+
e10-cli --json form table-view search-field configure \
|
|
191
|
+
<objId> <appId> <listId> <fieldId> \
|
|
192
|
+
--display-name "单据名称" \
|
|
193
|
+
--default-value "111" \
|
|
194
|
+
--required 0 \
|
|
195
|
+
--full-match 0 \
|
|
196
|
+
--condition like
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
命令必须从当前数据源接口取得完整字段模型,按前端最终保存结构生成搜索项:字段 `id` 与独立的 18 位 `filterId` 不得混用,字段自身 `multiSelect` 原样保留,搜索默认配置单独写入 `listFilterDefaultSets`。保存时完整保留目标终端的其他配置,再独立回读字段及条件关系;`--terminal` 同上(`pc` 只改 PC、`mobile` 只改移动端,另一端原样回传)。
|
|
200
|
+
|
|
201
|
+
具体配置固定映射:
|
|
202
|
+
|
|
203
|
+
- `--default-value`:固定默认值,写为 `defaultType="1"` 与 `startValue`;`--clear-default` 清除。`Select` 字段可传选项名称或选项 ID,CLI 必须从当前数据源解析为唯一真实 ID,并保留完整选项对象供前端回显。
|
|
204
|
+
- `--required 0|1`:条件是否必填,写为字段级 `required`。
|
|
205
|
+
- `--full-match 0|1`:搜索内容是否完整匹配,写入 `listFilterDefaultSets.searchContentFullMatches`。
|
|
206
|
+
- `--condition like|eq|...`:必须来自该字段实际允许的条件,同时更新字段层与默认设置层。
|
|
207
|
+
- `--display-name`:更新搜索项 `showName`;不得覆盖原字段名和字段 ID。
|
|
208
|
+
|
|
209
|
+
前端验收:打开“搜索配置”不报异常,目标字段出现在常用搜索字段中;刷新列表后可使用该字段发起搜索。只通过接口回读不能验收。
|
|
210
|
+
|
|
211
|
+
## 台账显示列/搜索/排序/统计/视图数据条件/行事件/分组/上下级/视图权限/分类搜索
|
|
212
|
+
|
|
213
|
+
直接改默认台账(nListView)的显示列、搜索条件、排序、顶部统计、视图数据条件。listId 取 `form list-view` 返回的列表视图 ID。默认改 PC 端;`list-columns --terminal mobile` 可改移动端显示列。**保存时先读回真实移动端 mConfig 原样回传,不会清空移动端**(`saveNListConfig` 一次请求里 `config`→PC 端、`mConfig`→移动端,两端列集合/uid 各自独立)。只有明确目标只使用 PC、移动端配置确实不存在时,才加 `--pc-only`。
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
# 查看当前显示列
|
|
217
|
+
e10-cli form list-columns <objId> <appId> <listId>
|
|
218
|
+
|
|
219
|
+
# 批量追加字段到显示列 / 移除字段
|
|
220
|
+
e10-cli form list-columns <objId> <appId> <listId> --add <fieldId1> <fieldId2>
|
|
221
|
+
e10-cli form list-columns <objId> <appId> <listId> --remove <fieldId1> <fieldId2>
|
|
222
|
+
|
|
223
|
+
# 按文件完整设置业务列顺序、宽度和格式(未列入的业务列会移除)
|
|
224
|
+
e10-cli form list-columns <objId> <appId> <listId> --set @columns.json --json
|
|
225
|
+
# 详见 references/form/guide-list-columns.md
|
|
226
|
+
|
|
227
|
+
# 列显示格式:千分位/小数位(Number/Money 列,走列对象 format/decimalLength)
|
|
228
|
+
e10-cli form list-format <objId> <appId> <listId> <fieldId> --thousandths --decimal 2
|
|
229
|
+
e10-cli form list-format <objId> <appId> <listId> <fieldId> --no-thousandths
|
|
230
|
+
# 列显示单位:后缀/前缀(走列 showTrans.ruleConfig,与千分位是两套机制)
|
|
231
|
+
e10-cli form list-unit <objId> <appId> <listId> <fieldId> "(元)"
|
|
232
|
+
|
|
233
|
+
# 配置搜索:--add 进搜索面板,--quick 加顶部快捷筛选(均支持多字段)
|
|
234
|
+
e10-cli form list-search <objId> <appId> <listId> --add <fieldId1> <fieldId2>
|
|
235
|
+
e10-cli form list-search <objId> <appId> <listId> --quick <fieldId1> <fieldId2>
|
|
236
|
+
# 主表字段直接从 ds/fields 解析;明细子字段经 getFormField 单取元数据(ds/fields 合并不展开)
|
|
237
|
+
|
|
238
|
+
# 配置排序 / 清除(--field 支持多个,按传入顺序多级排序;--order 对所有字段生效)
|
|
239
|
+
e10-cli form list-sort <objId> <appId> <listId> --field <fieldId1> <fieldId2> --order ASC
|
|
240
|
+
e10-cli form list-sort <objId> <appId> <listId> --clear
|
|
241
|
+
|
|
242
|
+
# 主表/明细统计完整指南:references/form/guide-list-stats.md
|
|
243
|
+
# 明细 count 支持只填 type/subFormId;批量入口:form list-stats detail
|
|
244
|
+
# PC/MOBILE 可能共享统计项;以保存后的 mobileStatistics 为准,不能承诺只影响 PC
|
|
245
|
+
# 顶部统计:type=sum 求和 / count 计数 / avg 平均 / max 最大 / min 最小
|
|
246
|
+
# 可选:thousandths=true 千分位 / decimalPlaces="2" 小数位 / unit="万" 单位(unitType=tenThousand)
|
|
247
|
+
e10-cli form list-stats <objId> <appId> <listId> --add '{"fieldId":"...","type":"sum","name":"合同总金额","thousandths":true,"decimalPlaces":"2","unit":"万"}'
|
|
248
|
+
|
|
249
|
+
# 条件统计:conditions 数组构造明文条件树填 rootdata(发明文保存成功、读回也是明文,无需 LZW 编码)
|
|
250
|
+
# func: eq 等于 / neq 不等于 / in 属于 / notIn 不属于 / like 包含 / notLike 不包含 / gt 大于 / lt 小于 / range 区间 / isNull 为空 / isNotNull 不为空
|
|
251
|
+
# 单选 Select 用 eq;notEq/between 为兼容别名自动归一为 neq/range;range 的 value 用数组 [起,止];value 填选项 valueKey、text 填显示名;多条件默认 AND
|
|
252
|
+
e10-cli form list-stats <objId> <appId> <listId> --add '{"fieldId":"金额fieldId","type":"sum","name":"研发合同额","thousandths":true,"unit":"万","conditions":[{"fieldId":"项目类型fieldId","func":"eq","value":"研发valueKey","text":"研发"}]}'
|
|
253
|
+
e10-cli form list-stats <objId> <appId> <listId> --remove <statId> # 平台 statisticsList 是 upsert 语义,删除靠标 operation:DELETE(splice 不删)
|
|
254
|
+
|
|
255
|
+
# 视图数据条件:台账只显示满足条件的数据(走 saveNListConfig config.filter,明文条件树,非独立接口——
|
|
256
|
+
# conditionEditor/saveOrUpdate 表单级不挂视图、saveBaseinfo 带 conditionData 都是错误端点)
|
|
257
|
+
# func 取值同条件统计(eq 等于 / neq 不等于 / in 属于 / notIn 不属于 / like 包含 / notLike 不包含 / gt 大于 / lt 小于 / range 区间 / isNull 为空 / isNotNull 不为空,单选 Select 用 eq);value 填选项 valueKey,text 填显示名
|
|
258
|
+
# --add 是**叠加**(往现有条件上加);要整体覆盖用 --replace。--relation 设顶层关系(不给=沿用现有)
|
|
259
|
+
e10-cli form list-filter <objId> <appId> <listId> --add '{"conditions":[{"fieldId":"项目类型fieldId","func":"eq","value":"研发valueKey","text":"研发"}]}'
|
|
260
|
+
# 嵌套条件组:条目里有 conditions 数组就是一层组(带 relation),可任意嵌套 → A OR (B AND C)
|
|
261
|
+
e10-cli form list-filter <objId> <appId> <listId> --replace '{"conditions":[{"fieldId":"Aid","func":"eq","value":"x"},{"relation":"and","conditions":[{"fieldId":"Bid","func":"eq","value":"y"},{"fieldId":"Cid","func":"gt","value":0}]}]}' --relation or
|
|
262
|
+
e10-cli form list-filter <objId> <appId> <listId> --remove 项目类型fieldId # 按字段摘(该字段所有条件都摘;组摘空整组拿掉)
|
|
263
|
+
e10-cli form list-filter <objId> <appId> <listId> --clear
|
|
264
|
+
# 日期字段「等于」可用系统参数占位符(动态求值,原样存储):{date} / {date:+7} / {thisyear} / {curryear} 等
|
|
265
|
+
# text 写界面显示名;占位符只用于 eq,且不要用 quick(quick 会展开成固定日期)。完整清单见 ref-list-filter-date-params.md
|
|
266
|
+
e10-cli form list-filter <objId> <appId> <listId> --add '{"conditions":[{"fieldId":"日期字段id","func":"eq","value":"{curryear}","text":"本年"}]}'
|
|
267
|
+
|
|
268
|
+
# 行事件:点击行数据 NewPage 打开(走 saveNListConfig config.eventGroup,明文 JSON,config+mConfig 都要写)
|
|
269
|
+
# --add-page 选页面:pageId 缺省 "1/<objId>"(表单新建布局),"0/<objId>"=显示布局
|
|
270
|
+
# 打开方式 openMode(linkInfo.openMode 权威,page.openMode 恒 4):
|
|
271
|
+
# 当前页面=4 / 新窗口=0 / 弹出窗口=5 / 右侧滑出=1(缺省) / 右侧推出=7
|
|
272
|
+
# 弹出/滑出/推出 带弹窗宽高(--modal-width/--modal-height,缺省 50%);滑出/推出 额外带 winSizeNew(--win-size,缺省 100%)
|
|
273
|
+
# --add-field 选字段(URL取自行内字段值,urlFieldText/Type自动补)
|
|
274
|
+
e10-cli form list-event <objId> <appId> <listId> --add-page '{"pageName":"新建数据"}'
|
|
275
|
+
e10-cli form list-event <objId> <appId> <listId> --add-page '{"pageId":"0/<objId>","pageName":"显示布局","openMode":"当前页面"}'
|
|
276
|
+
e10-cli form list-event <objId> <appId> <listId> --add-page '{"pageName":"弹窗详情","openMode":"弹出窗口"}' --modal-width 80%
|
|
277
|
+
e10-cli form list-event <objId> <appId> <listId> --add-page '{"pageName":"侧滑详情","openMode":"右侧推出"}' --win-size 60%
|
|
278
|
+
e10-cli form list-event <objId> <appId> <listId> --add-field '{"urlFieldId":"字段id"}'
|
|
279
|
+
e10-cli form list-event <objId> <appId> <listId> --clear
|
|
280
|
+
|
|
281
|
+
# 字段事件(列点击 list-click,区别于行事件 list-event):点某列数据打开该行显示布局(带数据 ID)
|
|
282
|
+
# 打开方式 --open-mode:当前页面/新窗口/弹出窗口/右侧滑出(缺省)/右侧推出;滑出/推出 --win-size 设宽度(缺省 800px)。具体数值按需求填写:百分比使用 `%`(如 `45%`、`60%`),像素使用 `px`(如 `640px`、`900px`),两种单位不可混用或省略;百分比范围为 0%~100%。
|
|
283
|
+
e10-cli form list-click <objId> <appId> <listId> <fieldId> --open-mode 右侧推出 --win-size 50%
|
|
284
|
+
e10-cli form list-click <objId> <appId> <listId> <fieldId> --open-mode 右侧推出 --win-size 800px
|
|
285
|
+
e10-cli form list-click <objId> <appId> <listId> <fieldId> --target <目标表单objId> --open-mode 弹出窗口
|
|
286
|
+
e10-cli form list-click <objId> <appId> <listId> <fieldId> --clear
|
|
287
|
+
|
|
288
|
+
# 启用分组:台账按某字段分组聚合显示(走 saveNListConfig config.enableGroup 对象 {enable,groupField,groupSize})
|
|
289
|
+
# saveNListConfig 持久化成功,不走 designer/layout/save LZW。group-field 用完整字段对象(自动从 ds/fields 取)
|
|
290
|
+
e10-cli form list-group <objId> <appId> <listId> --enable --group-field <分组字段fieldId> --group-size 100
|
|
291
|
+
e10-cli form list-group <objId> <appId> <listId> --disable # 禁用但保留 groupField/groupSize(仅 enable=false)
|
|
292
|
+
|
|
293
|
+
# 上下级树形展示:根据“上级类型”等自关联字段展示父子层级(走 config.superiorField)
|
|
294
|
+
# parent-field 支持字段名称或 ID;必须是主表、单选、关联当前表单自身的 EBuilder 字段
|
|
295
|
+
e10-cli form list-hierarchy <objId> <appId> <listId> --enable --parent-field "上级类型" --expand-level 2
|
|
296
|
+
e10-cli form list-hierarchy <objId> <appId> <listId> --disable # 关闭但保留字段及展开设置
|
|
297
|
+
|
|
298
|
+
# 台账视图权限(查阅/查看权限):谁能查看这个台账(走 list/permission/save + getList,专用端点,full-replace 语义 omit即删)
|
|
299
|
+
# selectedType: all(所有人) / user(人员,带--name) / role(角色,--name 缺省自动查) / matrix(矩阵,用 --add-raw 传整对象)
|
|
300
|
+
e10-cli form list-permission <objId> <appId> <listId> --add-all
|
|
301
|
+
e10-cli form list-permission <objId> <appId> <listId> --add-user <userId> --name <人员名>
|
|
302
|
+
e10-cli form list-permission <objId> <appId> <listId> --add-role <roleId> # --name 缺省自动从角色树查名
|
|
303
|
+
e10-cli form list-permission <objId> <appId> <listId> --add-role <roleId> --share-level 2 # 加同一角色另一个共享级别
|
|
304
|
+
e10-cli form list-permission <objId> <appId> <listId> --add-role <roleId> --seclevel 30-80 # 安全级别范围
|
|
305
|
+
e10-cli form list-permission <objId> <appId> <listId> --add-raw '{"selectedType":"matrix","name":"...","dataid":"矩阵id",...}'
|
|
306
|
+
e10-cli form list-permission <objId> <appId> <listId> --remove <权限id>
|
|
307
|
+
e10-cli form list-permission <objId> <appId> <listId> --clear
|
|
308
|
+
|
|
309
|
+
# 删除指定权限;清理重复“所有人”后保留唯一一条
|
|
310
|
+
e10-cli form list-permission <objId> <appId> <listId> --remove <permissionId>
|
|
311
|
+
e10-cli form list-permission <objId> <appId> <listId> --remove-all --add-all
|
|
312
|
+
|
|
313
|
+
# 每条授权对象的两个可配维度(样本坐实,mulinquan 2026-09-02):
|
|
314
|
+
# 安全级别 = levelScope.minShowlevel/maxShowlevel(字符串范围,--seclevel <min>-<max>,如 0-100 / 30-80;role 缺省 0-100、all 缺省空)
|
|
315
|
+
# 共享级别 = roleLevel(验证: 总部=1 分部=2 全部=3)。同一角色可按不同共享级别各存一条(同 role 两条 roleLevel 1/2 并存)→ 去重键含 roleLevel
|
|
316
|
+
# 幂等:目标(含 roleLevel)已存在时跳过保存,打印「无变化」
|
|
317
|
+
|
|
318
|
+
# 分类搜索:台账左侧的分类筛选(走 saveNListConfig config.searchConditions.groupFilters)
|
|
319
|
+
# 支持主表选项类、浏览框类、日期类与系统字段;不支持明细字段(产品边界)
|
|
320
|
+
e10-cli form list-search-group <objId> <appId> <listId> --add <字段名或fieldId>
|
|
321
|
+
e10-cli form list-search-group <objId> <appId> <listId> --add <字段> --position 0 --option-order field
|
|
322
|
+
e10-cli form list-search-group <objId> <appId> <listId> --add <字段> --default-options "选项1,选项2" # 默认选中
|
|
323
|
+
e10-cli form list-search-group <objId> <appId> <listId> --add <字段> --options "选项1,选项3" # 只让这些选项出现
|
|
324
|
+
e10-cli form list-search-group <objId> <appId> <listId> --add <字段> --count-update # 统计数字随搜索结果更新
|
|
325
|
+
e10-cli form list-search-group <objId> <appId> <listId> --add <字段> --only-with-data # 仅显示有数据的选项
|
|
326
|
+
e10-cli form list-search-group <objId> <appId> <listId> --add <日期字段> --date-granularity 月,季度 \
|
|
327
|
+
--default-group month --default-value "2024-01-01 00:00:00,2024-12-31 23:59:59" # 日期类默认区间
|
|
328
|
+
e10-cli form list-search-group <objId> <appId> <listId> --remove <fieldId>
|
|
329
|
+
e10-cli form list-search-group <objId> <appId> <listId> --clear
|
|
330
|
+
|
|
331
|
+
# 自定义分类(GroupCustom):名称、显示方式、显示封存的选项
|
|
332
|
+
e10-cli form list-search-group <objId> <appId> <listId> --add-custom "客户分类" --display 平铺 --show-archive on
|
|
333
|
+
e10-cli form list-search-group <objId> <appId> <listId> --add-custom "客户分类" --display 下拉 --show-archive off # 同名=更新,保留原 id
|
|
334
|
+
e10-cli form list-search-group <objId> <appId> <listId> --remove "客户分类" # 也可传 id / fieldId
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
`--add` 对同一个字段**重建**那条分类搜索:本次没给的选项一律回到缺省(不勾默认值、全显示、不勾统计更新、不勾仅显示有数据),所以要改其中之一就把那条要保留的选项一起给全。
|
|
338
|
+
|
|
339
|
+
**自定义分类**(`--add-custom`)是平台的 `GroupCustom` 类型:没有创建接口,id 由前端生成 18 位数字、`fieldId = GroupCustom_<id>`;分类值(`listGroupSets`)初始为空,之后在设计器里配置,CLI 只负责建分类壳并设置名称/显示方式/封存。同名再执行是更新而不是新增。
|
|
340
|
+
|
|
341
|
+
- `--display 平铺|下拉`:分类搜索的「显示方式」,落 `tabStyle`(`平铺="tab"`、`下拉="select"`,缺省下拉)。
|
|
342
|
+
- `--show-archive on|off`:落 `showArchiveOption`(`"1"`/`"0"`,缺省开)。界面上这个开关**只对选项类字段(CheckBox/Select/RadioBox/SelectMultiple)显示**,自定义分类看不到它,但报文里该键仍会写入。
|
|
343
|
+
- `--position 0|1`:0=顶部(缺省)、1=左侧 / 下拉样式(平台枚举 Top="0"、Left/DropDown="1")。
|
|
344
|
+
|
|
345
|
+
### 搜索中的自定义分类
|
|
346
|
+
|
|
347
|
+
常用搜索与分类搜索都可添加独立的自定义分类。它们分别保存在两套搜索配置中,即使名称相同也是两条不同配置;分别执行命令,不复用另一处的 ID。把配置保存为 JSON 文件,使用 `--custom @文件` 新建或按 `id`/唯一名称更新。`options` 是自定义分类的选项,不是字段原有选项;更新时应列出希望保留的全部选项,已有同名选项的 ID、条件和默认选中状态会沿用。
|
|
348
|
+
|
|
349
|
+
```json
|
|
350
|
+
{
|
|
351
|
+
"name": "分类1",
|
|
352
|
+
"selection": "single",
|
|
353
|
+
"required": true,
|
|
354
|
+
"showArchiveOption": false,
|
|
355
|
+
"options": [
|
|
356
|
+
{
|
|
357
|
+
"name": "指定时间内由我创建",
|
|
358
|
+
"conditions": [
|
|
359
|
+
{ "fieldId": "3", "func": "range", "value": ["2026-10-01 08:00:00", "2026-11-14 18:00:00"] },
|
|
360
|
+
{ "fieldId": "2", "func": "eq", "value": "{userid}", "text": "当前人员" }
|
|
361
|
+
],
|
|
362
|
+
"relation": "and"
|
|
363
|
+
},
|
|
364
|
+
{ "name": "我关注的", "systemOption": "myFollow", "default": true }
|
|
365
|
+
]
|
|
366
|
+
}
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
```bash
|
|
370
|
+
# 常用搜索中的自定义分类:可设必填、单选/多选、默认项及每项条件
|
|
371
|
+
e10-cli form list-search <objId> <appId> <listId> --custom @custom-search.json --archive off
|
|
372
|
+
|
|
373
|
+
# 分类搜索中的自定义分类:同一份配置可复用,但会生成独立分类与选项 ID
|
|
374
|
+
e10-cli form list-search-group <objId> <appId> <listId> --custom @custom-search.json --archive off
|
|
375
|
+
|
|
376
|
+
# 普通字段的封存选项也可关闭
|
|
377
|
+
e10-cli form list-search <objId> <appId> <listId> --field <fieldId> --archive off
|
|
378
|
+
e10-cli form list-search-group <objId> <appId> <listId> --add <字段> --archive off
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
`showArchiveOption: false` 或 `--archive off` 保存为 `"0"`,开启为 `"1"`;显式命令参数优先于文件。`selection` 为 `single` 或 `multiple`,`required` 仅用于常用搜索。每个普通自定义选项用与 `list-filter` 相同的 `conditions` 条件数组(可嵌套条件组),也可用 `conditionData` 传已有的完整条件树;常用搜索选项必须有条件或系统选项。当前确认可用的系统选项是 `myFollow`(我关注的),其他系统选项须先核对平台配置。分类搜索可只配置选项名称;若需按条件筛选,应给该选项配置 `conditions` 或 `conditionData`。保存后分别读取 `list-search --json` 或 `list-search-group --json`,再在实际视图核对展示与筛选结果。
|
|
382
|
+
|
|
383
|
+
两个开关的适用范围不同,用错类型会当场报错而不是写一个界面上看不见的键:
|
|
384
|
+
|
|
385
|
+
- `--count-update`(统计数字随搜索结果更新):选项 / 浏览框 / 日期类可用。缺省关,数字只在进入台账时统计一次。
|
|
386
|
+
- `--only-with-data`(仅显示有数据的选项):**只有**选项 / 浏览框类有这个键,日期与系统字段用不了。这个键**勾上才出现** —— 不勾时整个键都没有(不会写成 0)。
|
|
387
|
+
- `--no-show-count` 管的是**统计数字显不显示**,与 `--count-update` 是两回事。
|
|
388
|
+
|
|
389
|
+
`list-hierarchy` 与 `list-group` 不可混为一谈:前者按自关联字段建立父子树,后者按普通字段聚合分组。需求出现“上下级”“父级”“树形”“根据上级类型展示”时使用 `list-hierarchy`。字段名不要求固定为“上级类型”,但字段关系必须满足自关联单选。
|
|
390
|
+
|
|
391
|
+
字段 ID 来自 `form read <objId> --app-id <appId>` 或 `form list-columns` 当前列(系统列如 `2`创建者/`3`创建时间也可增删;`5`数据ID主键自动保留,禁止移除)。显示列命令保存后回读校验,`otherTerminalPreserved:true` 表示另一终端配置核对一致。
|
|
392
|
+
|
|
393
|
+
## formView 固定闭环
|
|
394
|
+
|
|
395
|
+
```bash
|
|
396
|
+
# 1. 确认目标表单与现有视图
|
|
397
|
+
e10-cli form list <appId>
|
|
398
|
+
e10-cli form view list <objId> <appId>
|
|
399
|
+
|
|
400
|
+
# 2. 创建视图并从输出取得 viewId
|
|
401
|
+
e10-cli --json form view create <objId> <appId> "<视图名>" --type formView
|
|
402
|
+
|
|
403
|
+
# 3. 填充已有字段并独立回读
|
|
404
|
+
e10-cli --json form view populate <objId> <appId> <viewId>
|
|
405
|
+
```
|
|
406
|
+
|
|
407
|
+
`populate` 只有同时满足以下条件才算服务器验证通过:
|
|
408
|
+
|
|
409
|
+
- `success=true`
|
|
410
|
+
- `componentCount > 0`
|
|
411
|
+
- `fieldComponentCount > 0`
|
|
412
|
+
- 重复执行返回 `alreadyPopulated=true`
|
|
413
|
+
|
|
414
|
+
服务器验证通过后仍需用户确认前端不是空画布、字段名称和特殊配置正确。
|
|
415
|
+
|
|
416
|
+
## 视图基础开关(表头 / check 框 / 分页 / 置顶 / 批量 / 删除)
|
|
417
|
+
|
|
418
|
+
`form list-config` 读写 `getNListConfig` 顶层的开关键。键名来自平台真实保存报文,**只改点名的键**,其余原样回写;另一端(PC / 移动)原样保留;保存后只回读被改的键。
|
|
419
|
+
|
|
420
|
+
```bash
|
|
421
|
+
# 读当前值(含操作按钮摘要:按钮 key / 启用值 / 位置,只读)
|
|
422
|
+
e10-cli form list-config get <objId> <appId> <listId> --json
|
|
423
|
+
|
|
424
|
+
# 改开关;不指定 --terminal 默认改 PC
|
|
425
|
+
e10-cli form list-config set <objId> <appId> <listId> --hide-checkbox on --page-size 20
|
|
426
|
+
e10-cli form list-config set <objId> <appId> <listId> --set-top 1 --set-top-rule @rule.json
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
选项按平台「视图设置」面板分组,键名即面板 item key(来自平台前端定义模块,不是猜的):
|
|
430
|
+
|
|
431
|
+
| 分组 | 选项 → 落库键 |
|
|
432
|
+
|---|---|
|
|
433
|
+
| 基本信息 | `--show-title` → `showTitle`(显示头部,关闭后表头区域隐藏)<br>`--hide-checkbox` → `hideCheckbox`(隐藏 check 框)<br>`--default-display-edit-modal` → `defaultDisplayEditModal`(默认显示编辑模式;人员范围 `defaultDisplayEditModalPermission` 形状未确认,暂不开放写入)<br>`--operate-column-fixed` → `operatColumnFixation`(操作按钮固定)<br>`--spread-top-button` → `enableSpreadTop`(显示展开至顶部按钮)<br>`--prefix-column` → `enablePrefixColumn`(前置列)<br>`--field-choose-width-fixed` → `fieldChooseWidthFixation`<br>`--quick-search-textarea` → `quickSearchTextArea`(快捷搜索支持富文本)<br>`--sub-form-main` / `--sub-form-show-empty` → `subFormMain` / `subFormMainShowEmpty`<br>`--page-size` → `pageSize`(1–100,落库为字符串) |
|
|
434
|
+
| 网格 | `--grid-row` / `--grid-col` → `gridRow` / `gridCol`<br>`--grid-width-type` / `--grid-width` → `gridWidthType` / `gridWidth`<br>`--grid-height-type` / `--grid-height` → `gridHeightType` / `gridHeight` |
|
|
435
|
+
| 显示数据 | `--permission-scope`(`isNoPermissionList`,无权限数据展示方式)/ `--data-range-type` / `--list-data-range`(数据范围)<br>`--show-follow` → `isShowFollow`(关注图标)<br>`--read-state` → `readState`(未读、反馈标识)<br>`--set-top` / `--set-top-type` / `--set-top-rule`(置顶;type 1=规则 2=手动) |
|
|
436
|
+
| 批量操作 | `--batch-add` / `--batch-add-fields`<br>`--batch-edit` / `--batch-edit-fields`<br>`--batch-edit-value`;另有 `--can-delete` |
|
|
437
|
+
| 数据列表插件 | `--title` → `title`(表格名称)<br>`--hide-table-header` → `hideTableHeader`(隐藏表头,仅表格式)<br>`--table-header-operation` → `tableHeaderOperation`(表头快捷操作模式,仅表格式)<br>`--operate-btn-fixed` → `buttonConfig.operateBtnFixed`(操作按钮固定)<br>`--group '<json>'` → 整个 `enableGroup`(`enable` 分组开关 / `groupField` / `groupSize` / `expandFirstFew` 默认展开 / `isDelay` 延迟加载 / `hasDataGroupsOnly` 只显示有数据的分组 / `groupFieldQuery`)<br>`--superior '<json>'` → 整个 `superiorField`(`enable` 启用上下级 / `field` 关联字段 / `expandLevel` 默认展开级数 / `levelSelection` 层级选择限制 / `levelRange`) |
|
|
438
|
+
| 展示模式 | `--open-child-list` → `openChildList`(上下级)<br>`--sup-field`(上下级关联字段 ID)<br>`--expand-level`(0–3 级)/ `--expand-num-limit`(0–500 行)<br>`--expand-page-type`(1=分页 0=更多加载)<br>`--enable-group` / `--group-field` / `--group-enable-count` / `--only-display-data-group` |
|
|
439
|
+
|
|
440
|
+
- `buttonConfig`(操作按钮的启用/位置)本版**只读展示、不提供写入**:样本里 `enable:0` 的极性未确认,避免写反。
|
|
441
|
+
- 已是目标值时零写入;值没变不发保存请求。
|
|
442
|
+
- 布尔键写 `true/false`;个别键平台可能落成 0/1,回读不一致时命令会直接点名报错(此时改用对应数值写法,不要硬重试)。
|
|
443
|
+
- `--enable-group` 单独打开时平台会返回「系统错误」——先 `--group-field <字段ID>` 再开分组;分组字段只支持下拉框 / 关联 e-Builder 单选 / 关联浏览单选。
|
|
444
|
+
- `--head-merge`(`headMerge`)在平台「视图设置」面板里没有对应开关;「隐藏表头」分两种实现:台账视图用 `--show-title off`(`showTitle`),数据列表插件用 `--hide-table-header on`(`hideTableHeader`)。
|
|
445
|
+
- 数据列表插件(`mode:"12"`、`_plugins` 里 `resourceType:"ebList"`)把分组/上下级存成嵌套对象,台账视图存成平铺键;两种都支持,按视图实际落库形态选。`--group` / `--superior` 是整对象写入,先 `get` 拿现值改完再写,避免丢子键。
|
|
446
|
+
- `--set-top-type 2`(手动置顶)时 `setTopRule` 是字段 ID 串(如 `123,125`),`--set-top-rule` 两种形态都接受。
|
|
447
|
+
|
|
448
|
+
## 卡片视图(cardView)
|
|
449
|
+
|
|
450
|
+
卡片视图在 `getViewlist` 里是独立的一族(`data.cardView.detail`),**不是布局视图**:
|
|
451
|
+
|
|
452
|
+
```bash
|
|
453
|
+
e10-cli --json form view create <objId> <appId> "卡片视图名" --type cardView
|
|
454
|
+
e10-cli form view rename <objId> <appId> <cardViewId> "新名称"
|
|
455
|
+
e10-cli form view delete <objId> <appId> <cardViewId> # ⚠ 不可逆
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
- 改名 / 删除走 `viewlist/buttonEvent`,报文里 `viewType:"cardView"`(台账是 `nListView`,行为不变)。
|
|
459
|
+
- 卡片视图**没有表单布局**:`form view populate` 会明确拒绝,不要拿它填字段。
|
|
460
|
+
- 创建走 `viewlist/createView` + `viewType:"cardView"`,创建后必须在 `cardView.detail` 里回读到。
|
|
461
|
+
若平台拒绝,命令会停下并提示「抓一次设计器新建卡片视图的 createView 报文」,不要改参数硬试。
|
|
462
|
+
|
|
463
|
+
## 显示字段落在哪一层(重要)
|
|
464
|
+
|
|
465
|
+
显示字段有两层,`form list-columns` 只改**表格式**的 `config.tableField`:
|
|
466
|
+
|
|
467
|
+
| 视图形态 | 显示字段所在层 | 用什么命令 |
|
|
468
|
+
|---|---|---|
|
|
469
|
+
| 表格式(nListView 默认) | `config.tableField` | `form list-columns` |
|
|
470
|
+
| 列表式 / 卡片视图(NList) | `config.listField` + `config.cardLayout` | `form nlist add-field / remove-field / apply` |
|
|
471
|
+
|
|
472
|
+
在列表式视图上执行 `form list-columns --add` 会**直接报错并给指引**(不会再写进不生效的 tableField,这是 2026-11 清单里「切列表式后加字段异常」的根因)。
|
|
473
|
+
|
|
474
|
+
```bash
|
|
475
|
+
# 增量追加 / 移除列表式显示字段(只动点名字段,已有卡片布局原样保留)
|
|
476
|
+
e10-cli form nlist add-field <objId> <appId> <listId> <fieldId1> <fieldId2>
|
|
477
|
+
e10-cli form nlist remove-field <objId> <appId> <listId> <fieldId>
|
|
478
|
+
|
|
479
|
+
# 整份模板重排(会重建 cardLayout)
|
|
480
|
+
e10-cli form nlist apply <objId> <appId> <listId> @template.json
|
|
481
|
+
```
|
|
482
|
+
|
|
483
|
+
- 新字段各占一行;隐藏主键 `id=5` 始终保留,不能增删。
|
|
484
|
+
- PC 与移动端一次提交;移动端不是 NList 时只改 PC 并给出提示。
|
|
485
|
+
|
|
486
|
+
## 列属性(宽度 / 冻结 / 换行 / 隐藏 / 对齐 / 注释 / 统计)
|
|
487
|
+
|
|
488
|
+
列属性存在 `getListFields` 层(不是 `tableField`)。PC 写入走平台的单字段接口 `saveListFieldById`,**两端同时生效**;`--terminal mobile` 才按终端分别回写:
|
|
489
|
+
|
|
490
|
+
```bash
|
|
491
|
+
e10-cli form list-columns attr show <objId> <appId> <listId>
|
|
492
|
+
e10-cli form list-columns attr set <objId> <appId> <listId> --field <fieldId> --fixed on
|
|
493
|
+
e10-cli form list-columns attr set <objId> <appId> <listId> --field <fieldId> --width 200 --width-unit px
|
|
494
|
+
e10-cli form list-columns attr set <objId> <appId> <listId> --field <fieldId> --wrap auto --hidden-column on
|
|
495
|
+
e10-cli form list-columns attr set <objId> <appId> <listId> --field <fieldId> --show-name "合同金额"
|
|
496
|
+
e10-cli form list-columns attr set <objId> <appId> <listId> --field <fieldId> --align right --remark "含税金额"
|
|
497
|
+
e10-cli form list-columns attr set <objId> <appId> <listId> --field <fieldId> --formula-type sum --formula-range allPage
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
| 选项 | 落库键 | 取值 | 说明 |
|
|
501
|
+
|---|---|---|---|
|
|
502
|
+
| `--fixed` | `fixed` | on→`"1"` / off→`"0"` | 冻结列;固定方向以平台表现为准 |
|
|
503
|
+
| `--width` / `--width-unit` | `width` / `widthUnit` | 正数 / px / % | 能落库;平台会把 `%` 归一回 `px` |
|
|
504
|
+
| `--wrap` | `wrapSetting` | whole 跟随全局 / auto 自动换行 / disabled 不换行 | 保存后回读一致 |
|
|
505
|
+
| `--hidden-column` | `hiddenColumn` | on→1 / off→0 | 保存后回读一致;数据接口仍返回该列 |
|
|
506
|
+
| `--editable` | `isEditField` | 0 / 1 | 与平台保存报文同构 |
|
|
507
|
+
| `--rich-editor` | `richEditor` | on / off | 与平台保存报文同构 |
|
|
508
|
+
| `--show-name` | `showName` | 非空字符串 | 与平台保存报文同构 |
|
|
509
|
+
| `--conversion` | `conversionSet` | JSON 字符串(如 `"[]"`) | 与平台保存报文同构 |
|
|
510
|
+
| `--align` | `alignment` | left / center / right | 两端同时生效 |
|
|
511
|
+
| `--remark` | `remark` | 文本(空串=清空) | 字段注释,悬停列头显示 |
|
|
512
|
+
| `--plain-text` | `plainTextDisplay` | on→1 / off→0 | 纯文本内容展示(去掉富文本格式) |
|
|
513
|
+
| `--view-data-detail` | `viewDataDetail` | on→1 / off→0 | 数据超链接(点击数据名称打开详情) |
|
|
514
|
+
| `--formula-type` | `formulaType` | sum 求和 / avg 平均值,逗号叠加 / none 清空 | 列统计 |
|
|
515
|
+
| `--formula-range` | `formulaRange` | currentPage 当前页 / allPage 全部页,逗号叠加 | 统计范围 |
|
|
516
|
+
|
|
517
|
+
- 只改目标列,保存后回读目标列断言;列从未改过时读取结果是稀疏对象,写入前会补齐平台缺省属性。
|
|
518
|
+
- 对齐 / 注释 / 纯文本 / 数据超链接 / 统计这几项只支持整列设置(两端同值);`--terminal mobile` 只用于宽度、冻结、换行、隐藏这类两端独立的属性。
|
|
519
|
+
|
|
520
|
+
## 数据列表字段设置(设计器「字段设置」抽屉)
|
|
521
|
+
|
|
522
|
+
数据列表设计器里每列的「字段设置」是另一层,落在 `config.tableField[]` 的字段项上:
|
|
523
|
+
|
|
524
|
+
```bash
|
|
525
|
+
e10-cli form list-columns field show <objId> <appId> <listId> [--terminal pc|mobile]
|
|
526
|
+
e10-cli form list-columns field set <objId> <appId> <listId> --field <fieldId> [--custom-text "采购项目名称——改123"] [--remark "这里是注释"] [--align center] [--width 111] [--width-unit px] [--merge-row on] [--hidden-column on] [--fixed on] [--title-wrap on] [--show-filter on] [--wrap auto] [--color "#000"] [--font-size 16px] [--bold on]
|
|
527
|
+
```
|
|
528
|
+
|
|
529
|
+
| 选项 | 落库键 | 对应界面 |
|
|
530
|
+
|---|---|---|
|
|
531
|
+
| `--text` / `--custom-text` | `text` / `customText` | 列标题 / 列名称自定义文案(空串=恢复默认) |
|
|
532
|
+
| `--remark` | `remark` | 列注释 |
|
|
533
|
+
| `--align` | `align` | 对齐(left/center/right) |
|
|
534
|
+
| `--width` / `--width-unit` | `width` / `widthUnit` | 列宽 |
|
|
535
|
+
| `--merge-row` | `mergeRow` | 合并行 |
|
|
536
|
+
| `--hidden-column` | `hiddenColumn` | 隐藏列 |
|
|
537
|
+
| `--fixed` | `fixed` | 冻结到此列 |
|
|
538
|
+
| `--title-wrap` | `titleWrap` | 表头换行 |
|
|
539
|
+
| `--show-filter` | `showFilter` | 列头筛选(列头显示筛选入口) |
|
|
540
|
+
| `--wrap` | `wrapSetting` | 换行设置(whole/auto/disabled) |
|
|
541
|
+
| `--color` / `--font-size` / `--bold` | `style.color` / `style.fontSize` / `style.fontWeight` | 文字样式(颜色 / 字号 / 加粗) |
|
|
542
|
+
|
|
543
|
+
- 只改点名字段与点名属性;其余字段、同一配置里的其它键(按钮、筛选等)与另一端配置都原样回写。
|
|
544
|
+
- `field set` 与上面的 `attr set` 不是一层:`field` 改的是设计器字段设置(`tableField`),`attr` 改的是列属性记录(`getListFields`)。改「列注释 / 文字样式 / 合并行 / 表头换行」用 `field set`。
|
|
545
|
+
- 拓展显示区域不在这个抽屉里,用 `form list-config extend`(见下节)。
|
|
546
|
+
|
|
547
|
+
### 字段事件动作(eventGroup)
|
|
548
|
+
|
|
549
|
+
字段设置底部的「事件动作」落库在 `tableField[].eventGroup`,是一段**按触发方式分组**的 JSON:
|
|
550
|
+
|
|
551
|
+
```json
|
|
552
|
+
[[{"type":"CLICKDATA","name":"单击每一条数据","id":"g…","disableDelete":true,
|
|
553
|
+
"events":[{"id":"…","type":"NewPage","linkInfo":{…}},
|
|
554
|
+
{"id":"…","type":"ClosePage"},
|
|
555
|
+
{"id":"…","type":"CopyLink"},
|
|
556
|
+
{"id":"…","type":"JsCode","jsCode":{"code":"…","compiledCode":"…"}}],
|
|
557
|
+
"actionDesc":"关闭窗口"}]]
|
|
558
|
+
```
|
|
559
|
+
|
|
560
|
+
```bash
|
|
561
|
+
e10-cli form list-columns field event show <objId> <appId> <listId> --field <fieldId> [--json]
|
|
562
|
+
e10-cli form list-columns field event set <objId> <appId> <listId> --field <fieldId> --events @events.json
|
|
563
|
+
```
|
|
564
|
+
|
|
565
|
+
- **动作类型不设白名单**:NewPage / ClosePage / CopyLink / ShowMenu / JsCode 等原样透传,设计器里配好后 `show --json` 导出即可当模板改。
|
|
566
|
+
- 缺 `id` / 触发名 / `disableDelete` 时命令自动补齐(id 为 32 位十六进制,触发为 `g` 前缀);已有 id 不覆盖。
|
|
567
|
+
- PC 与移动端共用同一份字段配置:写入后两端同时生效;保存后逐字回读 `eventGroup`。
|
|
568
|
+
- 只替换目标字段的 `eventGroup`,其它字段、按钮、筛选与 `extendArea` 原样回写。
|
|
569
|
+
|
|
570
|
+
## 列表式字段展示属性(cardLayout 单元格)
|
|
571
|
+
|
|
572
|
+
列表式没有表头,字段的展示属性不在 `tableField`/`listField`,而在 `config.cardLayout.grid` 的单元格上(`grid[行][列][] = {x,y,i,field:{...}}`):
|
|
573
|
+
|
|
574
|
+
```bash
|
|
575
|
+
e10-cli form nlist field show <objId> <appId> <listId> [--terminal pc|mobile] [--json]
|
|
576
|
+
e10-cli form nlist field set <objId> <appId> <listId> --field <fieldId> [--align left|center|right] [--hor-align 0|1|2] [--word-wrap on|off] [--color "#000"] [--font-size 14px] [--bold on|off] [--show-trans '[]']
|
|
577
|
+
```
|
|
578
|
+
|
|
579
|
+
| 选项 | 单元格字段键 | 说明 |
|
|
580
|
+
|---|---|---|
|
|
581
|
+
| `--align` | `field.align` | 对齐 |
|
|
582
|
+
| `--hor-align` | `field.horAlign` | 水平对齐码(平台卡片布局用,0/1/2) |
|
|
583
|
+
| `--word-wrap` | `field.wordWrap` | 自动换行 |
|
|
584
|
+
| `--show-trans` | `field.showTrans` | 显示转换(JSON 数组) |
|
|
585
|
+
| `--color` / `--font-size` / `--bold` | `field.style.color` / `.fontSize` / `.fontWeight` | 文字样式 |
|
|
586
|
+
|
|
587
|
+
- 同一字段在网格里可能对应多个单元格,命令会全部更新并报出单元格数。
|
|
588
|
+
- 只改目标字段的单元格,其它单元格、`split`/`row`/`size` 与移动端配置原样回写;保存后逐键回读。
|
|
589
|
+
- 列表式**没有表头**,所以「隐藏表头 / 表头换行 / 表头快捷操作模式」这类开关只对表格式有意义。
|
|
590
|
+
|
|
591
|
+
## 拓展显示区域(config.extendArea)
|
|
592
|
+
|
|
593
|
+
主列表之外再挂一组字段,运行时默认不显示,由界面上的展开操作调出。落库是 `config.extendArea` 子对象,本身就是一份精简列表配置(`tableField` + `pageSize` / `pageMode` 等)。
|
|
594
|
+
|
|
595
|
+
```bash
|
|
596
|
+
e10-cli form list-config extend get <objId> <appId> <listId>
|
|
597
|
+
e10-cli form list-config extend set <objId> <appId> <listId> --fields <fieldId...>
|
|
598
|
+
e10-cli form list-config extend set <objId> <appId> <listId> --fields 单据说明ID 创建者ID --page-size 10
|
|
599
|
+
e10-cli form list-config extend set <objId> <appId> <listId> --clear # 删除整个区域
|
|
600
|
+
```
|
|
601
|
+
|
|
602
|
+
- 新建时补齐平台缺省:`display:"none"`、`extendType:"current"`、`pageSize:"5"`、`pageMode:"part"`、`mode:"9"`、`isExtendArea:true`,并生成 32 位十六进制 `id`。
|
|
603
|
+
- `--fields` 的字段必须来自主列表 `tableField`;隐藏主键 `id=5` 自动带上。不传 `--fields` 时沿用现有字段。
|
|
604
|
+
- 只改拓展区域本身,主列表字段、按钮、筛选与移动端配置原样回写;`--clear` 写空对象(`extendArea:{}`)。
|
|
605
|
+
|
|
606
|
+
## SQL 条件(多数据库)
|
|
607
|
+
|
|
608
|
+
视图数据条件除了常规条件树,还可以用 **SQL 条件**。平台不是把 SQL 存在视图里,而是:
|
|
609
|
+
|
|
610
|
+
1. `POST /api/dw/directConn/addDataset` 建一个 `sqlfragments` 数据集——每种数据库一条 SQL;
|
|
611
|
+
2. 视图 `config.filter` 只记数据集 ID:
|
|
612
|
+
```json
|
|
613
|
+
{"type":"sql_where","isNewFilter":true,"version":1,
|
|
614
|
+
"data":{"condition":"<数据集ID>","formDw":true,"sourceId":"<表单objId>"}}
|
|
615
|
+
```
|
|
616
|
+
同时 `config.rootStr = "SQL"`,PC 与移动端都写。
|
|
617
|
+
|
|
618
|
+
```bash
|
|
619
|
+
# 读:视图 filter + 数据集里的基础SQL/各库 SQL
|
|
620
|
+
e10-cli form list-filter sql get <objId> <appId> <listId> --json
|
|
621
|
+
|
|
622
|
+
# 写:建数据集并绑定(文件形式,避免命令行引号被 shell 改形)
|
|
623
|
+
e10-cli form list-filter sql set <objId> <appId> <listId> --sql @sql.json
|
|
624
|
+
|
|
625
|
+
# 或按库逐条给
|
|
626
|
+
e10-cli form list-filter sql set <objId> <appId> <listId> \
|
|
627
|
+
--base-sql "t1.a = '{参数}'" \
|
|
628
|
+
--dialect "mysql=t1.a = '{参数}'" \
|
|
629
|
+
--dialect "oracle=t1.a = '{参数}'"
|
|
630
|
+
|
|
631
|
+
# 切回之前那份条件(不新建数据集)
|
|
632
|
+
e10-cli form list-filter sql set <objId> <appId> <listId> --dataset-id <旧数据集ID>
|
|
633
|
+
```
|
|
634
|
+
|
|
635
|
+
`sql.json` 的键(与平台 `sourceSql` 一致,别名大小写不敏感):
|
|
636
|
+
|
|
637
|
+
| 写法 | 落库键 | UI |
|
|
638
|
+
|---|---|---|
|
|
639
|
+
| `mysql` | `mysqlSql` | Mysql |
|
|
640
|
+
| `oracle` | `oracleSql` | Oracle |
|
|
641
|
+
| `sqlserver` | `sqlserverSql` | Sqlserver |
|
|
642
|
+
| `pg` / `postgresql` | `pgSql` | PostgreSQL |
|
|
643
|
+
| `dm` / `dameng` | `dmSql` | 达梦数据库 |
|
|
644
|
+
| `kingbase` | `kingBaseSql` | 人大金仓数据库 |
|
|
645
|
+
| `st` / `shentong` | `stSql` | 神通数据库 |
|
|
646
|
+
| `oceanbase` | `oceanbaseMysql` | oceanbaseMysql |
|
|
647
|
+
|
|
648
|
+
```json
|
|
649
|
+
{
|
|
650
|
+
"base": "t1.a = '{参数}' and d1.b = '3'",
|
|
651
|
+
"mysql": "t1.a = '{参数}'",
|
|
652
|
+
"oracle": "t1.a = '{参数}'",
|
|
653
|
+
"pg": "t1.a = '{参数}'"
|
|
654
|
+
}
|
|
655
|
+
```
|
|
656
|
+
|
|
657
|
+
- 主表别名 `t1`、明细表别名 `d1`;`{参数}` 是运行时参数占位。CLI 会告警花括号不配对、以及完全没出现 `t1./d1.` 的 SQL(只是提醒,以后端执行结果为准)。
|
|
658
|
+
- `base` 是平台的「基础SQL」;不给时取第一条库 SQL。
|
|
659
|
+
- 每次 `set` 都会新建一个数据集,**旧数据集不会自动删**;只是切换用 `--dataset-id`。
|
|
660
|
+
- SQL 以明文提交即可(平台自己加密存储),回读也是明文。
|
|
661
|
+
- **「变量值为空时不参与过滤」= `config.filterIsNull`**(2026-11-04 开/关两次保存对照,其余字段逐字节相同):
|
|
662
|
+
|
|
663
|
+
| 开关 | `filterIsNull` |
|
|
664
|
+
|---|---|
|
|
665
|
+
| 打开(空值不参与过滤) | `false` |
|
|
666
|
+
| 关闭 | `true` |
|
|
667
|
+
|
|
668
|
+
两个命令都支持 `--ignore-empty on|off`;不给则沿用视图现有值:
|
|
669
|
+
```bash
|
|
670
|
+
e10-cli form list-filter sql set <objId> <appId> <listId> --sql @sql.json --ignore-empty on
|
|
671
|
+
e10-cli form list-filter <objId> <appId> <listId> --ignore-empty on # 常规条件同样可设
|
|
672
|
+
```
|
|
673
|
+
|
|
674
|
+
## 自定义接口条件(filter.type = http)
|
|
675
|
+
|
|
676
|
+
视图条件的第三种形态:请求一个外部接口,用返回结果过滤数据。落库结构:
|
|
677
|
+
|
|
678
|
+
```json
|
|
679
|
+
{"type":"http","isNewFilter":true,"version":1,
|
|
680
|
+
"data":{"method":"GET","contentType":"multipart/form-data",
|
|
681
|
+
"url":"https://…",
|
|
682
|
+
"urlParams":[{"name":"a","value":"1"}],
|
|
683
|
+
"headers":[{"name":"x-test","value":"hello"}],
|
|
684
|
+
"payload":"{\"\"}",
|
|
685
|
+
"formData":[{"name":"body","value":"bbooddyy"}],
|
|
686
|
+
"condition":"","formDw":true,"sourceId":"<objId>","sqlContent":""}}
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
同时 `config.rootStr = "自定义接口"`,PC 与移动端写同一份。
|
|
690
|
+
|
|
691
|
+
```bash
|
|
692
|
+
e10-cli form list-filter http get <objId> <appId> <listId> --json
|
|
693
|
+
|
|
694
|
+
e10-cli form list-filter http set <objId> <appId> <listId> \
|
|
695
|
+
--method GET \
|
|
696
|
+
--url "https://example.com/api?x=1" \
|
|
697
|
+
--param a=1 \
|
|
698
|
+
--header "x-test=hello" \
|
|
699
|
+
--form body=bbooddyy \
|
|
700
|
+
--ignore-empty on
|
|
701
|
+
```
|
|
702
|
+
|
|
703
|
+
| 选项 | 落库键 | 说明 |
|
|
704
|
+
|---|---|---|
|
|
705
|
+
| `--method` | `data.method` | GET / POST / PUT / DELETE / PATCH(默认 GET) |
|
|
706
|
+
| `--url` | `data.url` | 接口地址,可带查询串 |
|
|
707
|
+
| `--content-type` | `data.contentType` | 默认 `multipart/form-data` |
|
|
708
|
+
| `--param` | `data.urlParams[]` | Params 页签一行,可重复 |
|
|
709
|
+
| `--header` | `data.headers[]` | Headers 页签一行,可重复 |
|
|
710
|
+
| `--form` | `data.formData[]` | Body(form-data) 一行,可重复 |
|
|
711
|
+
| `--payload` | `data.payload` | Body(JSON) 原始字符串;不给则写平台默认 `{"":""}` |
|
|
712
|
+
| `--ignore-empty` | `config.filterIsNull` | 开→false / 关→true,与 SQL 条件一致 |
|
|
713
|
+
|
|
714
|
+
- 参数名禁止为空、禁止重复;URL 首尾有空格或不是 http(s) 开头会告警(仍按原样写入,平台不帮你去空格)。
|
|
715
|
+
- `condition` 是切模式前残留的数据集 ID;http 模式不读它,CLI 写空串,回读只断言 URL/方法等实际写入的键。
|
|
716
|
+
- 三种条件(常规条件树 / SQL / 自定义接口)共用同一个 `config.filter`,**互相覆盖**;切换前先 `get` 确认当前是哪一种。
|
|
717
|
+
|
|
718
|
+
## 执行与验收
|
|
719
|
+
|
|
720
|
+
1. 计划中写明表单 objId、视图名称、类型和终端;用户确认后再写入。
|
|
721
|
+
2. CLI 先调用 `createView`,再查询该表单的完整视图列表;创建响应本身不是验收。`formView` 随后调用 `populate`:`原 formId + viewId(layoutMultiId)` 读取目标布局,保留目标页面元数据,按目标布局类型重建已有字段组件并保存。
|
|
722
|
+
3. 回读以返回的 viewId 优先;服务端未返回 ID 时,才按名称、类型和终端唯一匹配。多个候选视图时停止并让用户确认。
|
|
723
|
+
4. `populate` 回读组件数量和字段 ID;用户再确认新视图设计页出现表单既有字段,而非只有“未分组”的空画布。
|
|
724
|
+
|
|
725
|
+
服务器成功和独立回读成功但尚未前端确认时,只能标记为“待前端确认”。
|