weaver-e10-builder 1.5.16 → 1.6.0

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.
Files changed (180) hide show
  1. package/dist/commands/auth.d.ts.map +1 -1
  2. package/dist/commands/auth.js +4 -2
  3. package/dist/commands/auth.js.map +1 -1
  4. package/dist/commands/form-ebuilder-scope.d.ts +21 -0
  5. package/dist/commands/form-ebuilder-scope.d.ts.map +1 -1
  6. package/dist/commands/form-ebuilder-scope.js +41 -8
  7. package/dist/commands/form-ebuilder-scope.js.map +1 -1
  8. package/dist/commands/form-layout-code-reviewed.d.ts +3 -0
  9. package/dist/commands/form-layout-code-reviewed.d.ts.map +1 -0
  10. package/dist/commands/form-layout-code-reviewed.js +61 -0
  11. package/dist/commands/form-layout-code-reviewed.js.map +1 -0
  12. package/dist/commands/form-layout-describe.d.ts +3 -0
  13. package/dist/commands/form-layout-describe.d.ts.map +1 -0
  14. package/dist/commands/form-layout-describe.js +58 -0
  15. package/dist/commands/form-layout-describe.js.map +1 -0
  16. package/dist/commands/form-layout-diff.d.ts +3 -0
  17. package/dist/commands/form-layout-diff.d.ts.map +1 -0
  18. package/dist/commands/form-layout-diff.js +48 -0
  19. package/dist/commands/form-layout-diff.js.map +1 -0
  20. package/dist/commands/form-layout-document.d.ts +3 -0
  21. package/dist/commands/form-layout-document.d.ts.map +1 -0
  22. package/dist/commands/form-layout-document.js +81 -0
  23. package/dist/commands/form-layout-document.js.map +1 -0
  24. package/dist/commands/form-layout-edit.d.ts +3 -0
  25. package/dist/commands/form-layout-edit.d.ts.map +1 -0
  26. package/dist/commands/form-layout-edit.js +51 -0
  27. package/dist/commands/form-layout-edit.js.map +1 -0
  28. package/dist/commands/form-layout-init-reviewed.d.ts +3 -0
  29. package/dist/commands/form-layout-init-reviewed.d.ts.map +1 -0
  30. package/dist/commands/form-layout-init-reviewed.js +78 -0
  31. package/dist/commands/form-layout-init-reviewed.js.map +1 -0
  32. package/dist/commands/form-layout-restore.d.ts.map +1 -1
  33. package/dist/commands/form-layout-restore.js +23 -0
  34. package/dist/commands/form-layout-restore.js.map +1 -1
  35. package/dist/commands/form-layout-template-catalog.d.ts +3 -0
  36. package/dist/commands/form-layout-template-catalog.d.ts.map +1 -0
  37. package/dist/commands/form-layout-template-catalog.js +45 -0
  38. package/dist/commands/form-layout-template-catalog.js.map +1 -0
  39. package/dist/commands/form.d.ts.map +1 -1
  40. package/dist/commands/form.js +33 -3
  41. package/dist/commands/form.js.map +1 -1
  42. package/dist/index.js +15 -0
  43. package/dist/index.js.map +1 -1
  44. package/dist/services/actionflow/components/action_eb_add.d.ts.map +1 -1
  45. package/dist/services/actionflow/components/action_eb_add.js +12 -5
  46. package/dist/services/actionflow/components/action_eb_add.js.map +1 -1
  47. package/dist/services/actionflow/components/action_eb_add_compiler.d.ts.map +1 -1
  48. package/dist/services/actionflow/components/action_eb_add_compiler.js +5 -0
  49. package/dist/services/actionflow/components/action_eb_add_compiler.js.map +1 -1
  50. package/dist/services/actionflow/components/action_eb_delete.d.ts +6 -1
  51. package/dist/services/actionflow/components/action_eb_delete.d.ts.map +1 -1
  52. package/dist/services/actionflow/components/action_eb_delete.js +23 -5
  53. package/dist/services/actionflow/components/action_eb_delete.js.map +1 -1
  54. package/dist/services/actionflow/components/action_eb_delete_compiler.d.ts.map +1 -1
  55. package/dist/services/actionflow/components/action_eb_delete_compiler.js +22 -0
  56. package/dist/services/actionflow/components/action_eb_delete_compiler.js.map +1 -1
  57. package/dist/services/actionflow/components/action_eb_update.d.ts.map +1 -1
  58. package/dist/services/actionflow/components/action_eb_update.js +13 -4
  59. package/dist/services/actionflow/components/action_eb_update.js.map +1 -1
  60. package/dist/services/actionflow/components/action_eb_update_compiler.d.ts.map +1 -1
  61. package/dist/services/actionflow/components/action_eb_update_compiler.js +9 -2
  62. package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -1
  63. package/dist/services/actionflow/components/date_trigger.js +2 -2
  64. package/dist/services/actionflow/components/date_trigger.js.map +1 -1
  65. package/dist/services/actionflow/components/enquiry_form.d.ts.map +1 -1
  66. package/dist/services/actionflow/components/enquiry_form.js +11 -10
  67. package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
  68. package/dist/services/actionflow/components/event_button.js +1 -1
  69. package/dist/services/actionflow/components/event_button.js.map +1 -1
  70. package/dist/services/actionflow/components/form_data_builder.d.ts +29 -1
  71. package/dist/services/actionflow/components/form_data_builder.d.ts.map +1 -1
  72. package/dist/services/actionflow/components/form_data_builder.js +67 -3
  73. package/dist/services/actionflow/components/form_data_builder.js.map +1 -1
  74. package/dist/services/actionflow/components/time_batch_trigger.js +2 -2
  75. package/dist/services/actionflow/components/time_batch_trigger.js.map +1 -1
  76. package/dist/services/actionflow/form_source.d.ts +44 -1
  77. package/dist/services/actionflow/form_source.d.ts.map +1 -1
  78. package/dist/services/actionflow/form_source.js +231 -5
  79. package/dist/services/actionflow/form_source.js.map +1 -1
  80. package/dist/services/actionflow/preflight_service.d.ts +8 -0
  81. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  82. package/dist/services/actionflow/preflight_service.js +120 -14
  83. package/dist/services/actionflow/preflight_service.js.map +1 -1
  84. package/dist/services/actionflow/system_params.d.ts.map +1 -1
  85. package/dist/services/actionflow/system_params.js +4 -1
  86. package/dist/services/actionflow/system_params.js.map +1 -1
  87. package/dist/services/actionflow/trigger_common.d.ts.map +1 -1
  88. package/dist/services/actionflow/trigger_common.js +12 -3
  89. package/dist/services/actionflow/trigger_common.js.map +1 -1
  90. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  91. package/dist/services/actionflow/workflow_compiler.js +117 -40
  92. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  93. package/dist/services/form-layout-code-reviewed.d.ts +32 -0
  94. package/dist/services/form-layout-code-reviewed.d.ts.map +1 -0
  95. package/dist/services/form-layout-code-reviewed.js +101 -0
  96. package/dist/services/form-layout-code-reviewed.js.map +1 -0
  97. package/dist/services/form-layout-describe.d.ts +4 -0
  98. package/dist/services/form-layout-describe.d.ts.map +1 -0
  99. package/dist/services/form-layout-describe.js +107 -0
  100. package/dist/services/form-layout-describe.js.map +1 -0
  101. package/dist/services/form-layout-diff.d.ts +37 -0
  102. package/dist/services/form-layout-diff.d.ts.map +1 -0
  103. package/dist/services/form-layout-diff.js +232 -0
  104. package/dist/services/form-layout-diff.js.map +1 -0
  105. package/dist/services/form-layout-document-apply.d.ts +23 -0
  106. package/dist/services/form-layout-document-apply.d.ts.map +1 -0
  107. package/dist/services/form-layout-document-apply.js +82 -0
  108. package/dist/services/form-layout-document-apply.js.map +1 -0
  109. package/dist/services/form-layout-document.d.ts +13 -0
  110. package/dist/services/form-layout-document.d.ts.map +1 -0
  111. package/dist/services/form-layout-document.js +228 -0
  112. package/dist/services/form-layout-document.js.map +1 -0
  113. package/dist/services/form-layout-edit.d.ts +21 -0
  114. package/dist/services/form-layout-edit.d.ts.map +1 -0
  115. package/dist/services/form-layout-edit.js +103 -0
  116. package/dist/services/form-layout-edit.js.map +1 -0
  117. package/dist/services/form-layout-init-plan.d.ts +54 -0
  118. package/dist/services/form-layout-init-plan.d.ts.map +1 -0
  119. package/dist/services/form-layout-init-plan.js +211 -0
  120. package/dist/services/form-layout-init-plan.js.map +1 -0
  121. package/dist/services/form-layout-source/review.d.ts +4 -0
  122. package/dist/services/form-layout-source/review.d.ts.map +1 -0
  123. package/dist/services/form-layout-source/review.js +54 -0
  124. package/dist/services/form-layout-source/review.js.map +1 -0
  125. package/dist/services/form-layout-template-advanced.d.ts +5 -0
  126. package/dist/services/form-layout-template-advanced.d.ts.map +1 -1
  127. package/dist/services/form-layout-template-advanced.js +17 -1
  128. package/dist/services/form-layout-template-advanced.js.map +1 -1
  129. package/dist/services/form-layout-template-catalog.d.ts +13 -0
  130. package/dist/services/form-layout-template-catalog.d.ts.map +1 -0
  131. package/dist/services/form-layout-template-catalog.js +27 -0
  132. package/dist/services/form-layout-template-catalog.js.map +1 -0
  133. package/dist/services/form-layout-template-flow.d.ts +1 -1
  134. package/dist/services/form-layout-template-flow.d.ts.map +1 -1
  135. package/dist/services/form-layout-template-flow.js.map +1 -1
  136. package/dist/services/form-layout-template-verification.d.ts +34 -0
  137. package/dist/services/form-layout-template-verification.d.ts.map +1 -0
  138. package/dist/services/form-layout-template-verification.js +124 -0
  139. package/dist/services/form-layout-template-verification.js.map +1 -0
  140. package/dist/services/form-style-template.d.ts +3 -3
  141. package/dist/services/form-style-template.d.ts.map +1 -1
  142. package/dist/services/form-style-template.js +18 -13
  143. package/dist/services/form-style-template.js.map +1 -1
  144. package/package.json +1 -1
  145. package/skill-docs/SKILL.md +24 -19
  146. package/skill-docs/_catalog.md +108 -106
  147. package/skill-docs/actionflows/references/components/ebuilder/ActionEbDelete.md +60 -3
  148. package/skill-docs/actionflows/references/components/ebuilder/EventButton.md +35 -33
  149. package/skill-docs/references/common/capability-boundaries.md +20 -1
  150. package/skill-docs/references/common/guide-plan-template.md +29 -3
  151. package/skill-docs/references/common/map.md +11 -7
  152. package/skill-docs/references/common/ref-cli-commands.md +18 -4
  153. package/skill-docs/references/form/guide-browser-definition.md +57 -13
  154. package/skill-docs/references/form/guide-create-form.md +258 -258
  155. package/skill-docs/references/form/layout/code-block/code-block-guide.md +153 -0
  156. package/skill-docs/references/form/layout/code-block/controls.md +60 -0
  157. package/skill-docs/references/form/layout/code-block/coverage.md +32 -0
  158. package/skill-docs/references/form/layout/code-block/details.md +57 -0
  159. package/skill-docs/references/form/layout/code-block/events-validation.md +42 -0
  160. package/skill-docs/references/form/layout/code-block/foundations-fields.md +56 -0
  161. package/skill-docs/references/form/layout/code-block/layout-css.md +116 -0
  162. package/skill-docs/references/form/layout/code-block/recipes.md +164 -0
  163. package/skill-docs/references/form/layout/code-block/troubleshooting.md +49 -0
  164. package/skill-docs/references/form/layout/code-block/ui-global.md +47 -0
  165. package/skill-docs/references/form/layout/document.md +39 -0
  166. package/skill-docs/references/form/layout/incremental.md +133 -0
  167. package/skill-docs/references/form/layout/initialization.md +39 -0
  168. package/skill-docs/references/form/layout/inspect-edit.md +76 -0
  169. package/skill-docs/references/form/layout/layout-overview.md +67 -0
  170. package/skill-docs/references/form/layout/management.md +64 -0
  171. package/skill-docs/references/form/layout/planning.md +76 -0
  172. package/skill-docs/references/form/layout/source-restoration.md +388 -0
  173. package/skill-docs/references/form/layout/template/advanced-css.md +167 -0
  174. package/skill-docs/references/form/layout/template/advanced.md +318 -0
  175. package/skill-docs/references/form/layout/template/easy.md +64 -0
  176. package/skill-docs/references/form/layout/template/flow.md +30 -0
  177. package/skill-docs/references/form/layout/template/template-guide.md +56 -0
  178. package/skill-docs/references/form/layout/workflow-layout.md +44 -0
  179. package/skill-docs/references/form/ref-form-fields.md +303 -301
  180. package/skill-docs/references/workflow/guide-workflow-node-layout.md +189 -187
@@ -1,258 +1,258 @@
1
- # 新建 EBuilder 表单
2
-
3
- 通过 `e10-cli form create` 在 EBuilder 应用中创建表单。本指南说明从需求整理、`fields.json` 编写到建后配置的完整顺序;字段参数和布局样表的详细规则按需读取专题参考。
4
-
5
- 需求以已有 EB 表单、系统业务表或数据加工结果为实际数据源时,使用 [虚拟表创建与维护](guide-virtual-form.md) 的 `form virtual` 流程。
6
-
7
- ## 标准创建流程
8
-
9
- 1. 确认目标应用 `appId`。
10
- 2. 确认布局类型:流式 `FLOW` 或表格式 `EXCEL`。布局类型在建表时确定。
11
- 3. 从需求中整理字段、明细表、字段顺序和布局要求;遇到完整布局样表时,将空间结构写入 plan 的“表单布局蓝图”。
12
- 4. 将建表时可以完成的配置写入 `fields.json`。
13
- 5. 执行 `form create`,记录返回的 `objId` 和 `formId`。
14
- 6. 使用 `form list-view` 查询并记录默认台账 `listId`。
15
- 7. 按需求完成多语言、联动、校验、权限、视图和按钮等建后配置。
16
- 8. 使用读取命令轻量核对字段、布局和默认台账。
17
-
18
- ```bash
19
- e10-cli form create <appId> "<表单名>" --fields @fields.json --layout FLOW|EXCEL
20
- e10-cli form list-view <objId> <appId>
21
- e10-cli form read <objId> --app-id <appId> --out fields-created.json
22
- ```
23
-
24
- 需要同时生成台账菜单入口时,在创建命令中增加 `--menu`;建成后也可使用 `menu add-table <appId> <objId>` 添加。默认台账视图与应用菜单入口是两个资源。
25
-
26
- ### 自定义数据库表名
27
-
28
- 不指定时表名按表单名拼音首字母加随机数生成(如 `uf_xsddb_4683`)。需要固定或对齐既有命名时用 `--table-name`:
29
-
30
- ```bash
31
- e10-cli form create <appId> "客户信息表" --fields @fields.json --table-name cs_khxx
32
- ```
33
-
34
- - **平台前缀由 CLI 自动补**:传 `cs_khxx` 与传 `uf_cs_khxx` 结果相同(`uf_cs_khxx`)。
35
- - **格式约束**:字母开头,只含字母、数字、下划线。前缀之外的部分受平台长度上限约束 —— 前缀 `uf_`、总长上限 30 时,自定义部分最多 27 位。越界会直接报错,不会建成一半。
36
- - **建成后回读校验**:实际表名与预期不一致会报错,不静默通过。
37
- - 仅对**物理表**应用有效;应用未启用物理表时该选项不适用(CLI 会先查存储设置并拒绝)。
38
-
39
- ## 各阶段配置范围
40
-
41
- | 阶段 | 配置内容 |
42
- |---|---|
43
- | 需求与 plan | 表单名称、字段类型、顺序、明细结构、FLOW/EXCEL、布局蓝图及外围配置 |
44
- | `fields.json` | 字段、选项、默认值、精度、日期格式、关联、公式、明细、分组和显示属性 |
45
- | `form create` | 表单主体、字段、明细、布局、基础查看权限、默认台账及可选菜单 |
46
- | 建成后 | 字段多语言、联动、查重、进一步权限、视图名称与列、筛选、按钮及关联页签 |
47
- | 完成核对 | `objId`、`formId`、`listId`、字段结构和布局结果 |
48
-
49
- ## 建表前整理需求
50
-
51
- ### 布局类型
52
-
53
- ```bash
54
- e10-cli form create <appId> "<表单名>" --fields @fields.json --layout FLOW
55
- e10-cli form create <appId> "<表单名>" --fields @fields.json --layout EXCEL
56
- ```
57
-
58
- - `FLOW`:流式布局。
59
- - `EXCEL`:表格式布局,也是 CLI 缺省值。
60
- - 需求未明确且布局选择会影响结果时,建表前向用户确认。
61
- - 需求提供完整表格、合并单元格、分组标题、标签与字段交替排布时,按布局样表处理,详见 [表单布局规划](guide-form-layout-planning.md)。
62
-
63
- ### 字段定义
64
-
65
- 字段按照需求顺序写入 `fields.json`。主表字段在前,`DetailTable` 明细表放在数组末尾。
66
-
67
- ```json
68
- [
69
- {"componentKey":"Text","fieldName":"合同名称","required":true,"singleRow":true},
70
- {"componentKey":"DateRange","fieldName":"合同有效期","format":"yyyy-MM-dd"},
71
- {"componentKey":"Money","fieldName":"合同金额","precision":2},
72
- {"componentKey":"Select","fieldName":"合同状态","fieldOptions":[{"name":"草稿"},{"name":"履行中"}]},
73
- {"componentKey":"Employee","fieldName":"负责人"},
74
- {"componentKey":"DetailTable","fieldName":"付款明细","formFields":[
75
- {"componentKey":"Date","fieldName":"付款日期"},
76
- {"componentKey":"Number","fieldName":"付款金额","precision":2}
77
- ]}
78
- ]
79
- ```
80
-
81
- 常用字段类型包括文本、数字、选项、日期、组织、关联、行政区域和其他类型。完整类型、关联码表及各类型属性见 [表单字段定义参考](ref-form-fields.md);明细表通过表单结构配置创建。
82
-
83
- ## 常用字段属性
84
-
85
- | 属性 | 作用 |
86
- |---|---|
87
- | `required:true` | 字段必填 |
88
- | `readOnly:true` | 禁止手工编辑 |
89
- | `hidden:true` | 布局中隐藏,字段仍可参与计算 |
90
- | `singleRow:true` | 独占一行 |
91
- | `group:"基本信息"` | 放入指定字段分组 |
92
- | `multiple:true` | 支持多选的字段设置为多选 |
93
- | `maxLen:500` | 文本最大长度 |
94
- | `precision:2` | 数字或金额小数位 |
95
- | `defaultValue` | 字段默认值 |
96
-
97
- ### 字段分组
98
-
99
- 以需求为准:只有需求明确要求字段分组时,才在 `fields.json` 中设置 `group`;需求未要求时保持不分组。
100
-
101
- ```json
102
- [
103
- {"componentKey":"Text","fieldName":"项目名称","group":"基本信息","required":true},
104
- {"componentKey":"Employee","fieldName":"负责人","group":"基本信息"},
105
- {"componentKey":"Number","fieldName":"项目金额","group":"财务信息","precision":2}
106
- ]
107
- ```
108
-
109
- 同名 `group` 的字段进入同一个分组。分组内字段按字段顺序排列,需要整行展示的字段增加 `singleRow:true`。已有表单补充分组时使用:
110
-
111
- ```bash
112
- e10-cli form group <objId> <appId> --groups '{"基本信息":["项目名称","负责人"]}'
113
- ```
114
-
115
- ### 日期区间
116
-
117
- 字段本身包含开始与结束含义,如“项目周期、合同有效期、请假时间、活动时间”,优先使用 `DateRange`。明确要求两个独立字段,或开始、结束需要分别参与公式和联动时,再拆成两个日期字段。
118
-
119
- ```json
120
- {"componentKey":"DateRange","fieldName":"项目周期","format":"yyyy-MM-dd"}
121
- ```
122
-
123
- ### 选项和多选
124
-
125
- ```json
126
- {"componentKey":"Select","fieldName":"状态","fieldOptions":[{"name":"启用"},{"name":"停用"}]},
127
- {"componentKey":"Employee","fieldName":"项目成员","multiple":true}
128
- ```
129
-
130
- `Select`、`RadioBox`、`CheckBox` 可在 `fieldOptions` 中定义选项。人员、部门、EBuilder、Browser 和 Select 等支持按字段能力设置多选。共享选项可使用 `optionTemplate`;详细结构见 [表单字段定义参考](ref-form-fields.md)。
131
-
132
- **开关(`Switch`)自动带固定选项「开启=1 / 关闭=0」**,不需要在 `fields.json` 里写 `fieldOptions`;主表、明细表与后续 `form add-field` / `form add-physical-field` 都会自动补上。
133
-
134
- ### 关联字段
135
-
136
- EBuilder 关联字段在创建时指定目标表单 `objId` 和显示字段:
137
-
138
- ```json
139
- {
140
- "componentKey":"EBuilder",
141
- "fieldName":"关联客户",
142
- "sformId":"<目标表单objId>",
143
- "dataTitle":"客户名称",
144
- "displayColumns":["客户名称","客户类型"]
145
- }
146
- ```
147
-
148
- `Flow` 的 `sformId` 同样指向目标流程绑定的表单 `objId`。原生关联对象和通用浏览类型的配置码表见 [表单字段定义参考](ref-form-fields.md);关联数据过滤和范围分别见 [EBuilder 过滤](guide-ebuilder-filter.md) 与 [关联浏览数据范围](guide-ebuilder-scope.md)。
149
-
150
- **明细表里的 EBuilder 子字段用同一套键**:在 `DetailTable.formFields` 的字段对象里写 `sformId` / `dataTitle` / `displayColumns` 即可,建表时会一起绑定到目标表单;不写 `sformId` 会建成无关联的裸字段(命令会给出警告)。
151
-
152
- 使用自定义浏览框时,在 `fields.json` 的 `Browser` / `RelateBrowser` 字段写 `"browserName":"浏览框准确名称"`;CLI 会从当前环境检索该名称并绑定。已有表单用 `form add-field ... Browser --browser-name "浏览框准确名称"`。具体字段示例见 [表单字段定义参考](ref-form-fields.md)。
153
-
154
- ### 明细表与二级明细
155
-
156
- 明细字段写入 `DetailTable.formFields`。二级明细关系配置在父明细表上,父明细每一行分别拥有对应的子明细数据:
157
-
158
- ```json
159
- [
160
- {"componentKey":"DetailTable","fieldName":"任务明细","enableSubDetail":true,
161
- "subDetailConfig":[{"subForm":"工时明细","subField":"父任务标识"}],"formFields":[
162
- {"componentKey":"Text","fieldName":"任务名称"}
163
- ]},
164
- {"componentKey":"DetailTable","fieldName":"工时明细","formFields":[
165
- {"componentKey":"Text","fieldName":"父任务标识"},
166
- {"componentKey":"Number","fieldName":"工时","precision":2}
167
- ]}
168
- ]
169
- ```
170
-
171
- 父级行标识缺省使用行 ID;子级行标识必须为单行文本。多父级复用、多子级和多级嵌套的规则,以及已有表单的查询、增加、删除、启停命令见 [二级明细表配置](guide-form-sub-detail.md)。
172
-
173
- 明细表的**描述默认是空**;需要时在 `DetailTable` 上写 `"describe":"说明文字"`,不写不会用明细名填充。
174
-
175
- ### 表单结构与布局组件
176
-
177
- 主表字段直接写在 `fields.json` 根数组中;明细表使用 `DetailTable` 配置,并通过 `formFields` 维护其字段。主表与明细表字段采用相同的字段类型和属性规则。
178
-
179
- 布局初始化会根据表单结构生成相应的内部组件:
180
-
181
- | 组件 | 在创建流程中的作用 |
182
- | --- | --- |
183
- | `DetailTable` | 定义明细表及其字段 |
184
- | `DataTable` | 在布局中承载和展示明细表 |
185
- | `Fold` | 承载字段分组和折叠区域 |
186
- | `Placeholder` | 维护布局中的占位位置 |
187
- | `EbuilderAppTag` | 维护 EB 应用相关的布局标签 |
188
-
189
- 业务字段从字段类型码表中选择;以上结构与内部组件由明细表、分组和布局配置生成与维护。
190
-
191
- ### 字段公式
192
-
193
- 可在目标字段中写 `formula`,由创建流程完成公式创建和字段绑定:
194
-
195
- ```json
196
- {"componentKey":"Number","fieldName":"项目收益","formula":"{主表.已收款}-{主表.项目费用}"}
197
- ```
198
-
199
- 公式表达式、明细汇总和函数格式见 [字段公式函数参考](guide-form-formula-functions.md)。复杂编号属于建后配置,见 [表单复杂编号](guide-form-serial-mark.md)。
200
-
201
- ## 执行创建
202
-
203
- 需要还原图片或 XLSX 源样式时,可在普通创建完成后使用[源样式还原命令链](guide-form-layout-source.md),或同时传 `--layout-source @source.json --layout-spec @spec.json --layout-artifact-out artifact.json`。该入口先验证源文件,继续使用原字段创建链,最后在高级属性、公式和分组重排结束后保存精确布局。失败保留已有 objId/formId,重试只处理该对象,不重复建表。
204
-
205
- ```bash
206
- e10-cli form create <appId> "采购合同" --fields @fields.json --layout EXCEL
207
- ```
208
-
209
- 创建流程会依次完成表单主体、字段和明细、布局初始化、字段高级属性、关联关系、选项、公式、分组、基础查看权限及默认台账配置。传入 `--menu` 时同时添加台账菜单入口。
210
-
211
- 记录命令返回的:
212
-
213
- - `objId`:EB 表单业务对象 ID,多数 `form` 命令使用它。
214
- - `formId`:底层表单 ID,布局和部分底层接口使用它。
215
- - `listId`:默认台账 ID,通过 `form list-view` 查询。
216
-
217
- ## 建成后配置
218
-
219
- 按需求执行,未提出的配置不额外增加:
220
-
221
- | 需求 | 命令或指南 |
222
- |---|---|
223
- | 字段中英文名称 | `form field-lang set` |
224
- | 字段显隐、只读、必填联动 | [表单联动](guide-form-linkage.md) |
225
- | 字段查重 | `form validate` |
226
- | 表单和数据权限 | `form permission` |
227
- | 默认台账改名、列、筛选和分组 | [表单视图](guide-form-view.md) |
228
- | 表单及视图按钮 | [表单按钮](guide-form-button.md) |
229
- | 关联页签 | [表单关联页签](guide-form-association.md) |
230
- | 复杂编号 | [表单复杂编号](guide-form-serial-mark.md) |
231
-
232
- 需求写成 `中文/English`(如 `项目/project`)时,先以中文名称创建字段,再设置多语言:
233
-
234
- ```bash
235
- e10-cli form field-lang set <objId> <appId> <fieldId> --zh "项目" --en "project"
236
- ```
237
-
238
- ## 完成核对
239
-
240
- 使用与本次需求直接相关的读取命令核对即可:
241
-
242
- ```bash
243
- e10-cli form read <objId> --app-id <appId> --out fields-created.json
244
- e10-cli form list-view <objId> <appId>
245
- e10-cli form layout read <objId>
246
- ```
247
-
248
- 重点确认字段数量与类型、明细结构、分组和显示属性、布局类型、默认台账名称与 `listId`。需要菜单时再确认菜单入口。
249
-
250
- `fields-created.json` 里的 `fieldName` **就是字段标题** —— 与设计器「字段管理」里看到的是同一个值,想核对标题建对没有看它即可。它为空就说明标题没写进去(`form add-field` 没给标题时会回落成字段名,所以正常不会空)。
251
-
252
- ## 专题参考
253
-
254
- - [表单字段定义参考](ref-form-fields.md):完整字段类型、属性、关联类型和 JSON 结构。
255
- - [表单布局规划](guide-form-layout-planning.md):FLOW/EXCEL、布局样表、布局蓝图及建后调整。
256
- - [表单复杂编号](guide-form-serial-mark.md):编号段、流水和代字配置。
257
- - [字段公式函数参考](guide-form-formula-functions.md):公式表达式和函数。
258
- - [表单视图](guide-form-view.md):默认台账、视图名称和列表配置。
1
+ # 新建 EBuilder 表单
2
+
3
+ 通过 `e10-cli form create` 在 EBuilder 应用中创建表单。本指南说明从需求整理、`fields.json` 编写到建后配置的完整顺序;字段参数和布局样表的详细规则按需读取专题参考。
4
+
5
+ 需求以已有 EB 表单、系统业务表或数据加工结果为实际数据源时,使用 [虚拟表创建与维护](guide-virtual-form.md) 的 `form virtual` 流程。
6
+
7
+ ## 标准创建流程
8
+
9
+ 1. 确认目标应用 `appId`。
10
+ 2. 确认布局类型:流式 `FLOW` 或表格式 `EXCEL`。布局类型在建表时确定。
11
+ 3. 从需求中整理字段、明细表、字段顺序和布局要求;遇到完整布局样表时,将空间结构写入 plan 的“表单布局蓝图”。
12
+ 4. 将建表时可以完成的配置写入 `fields.json`。
13
+ 5. 执行 `form create`,记录返回的 `objId` 和 `formId`。
14
+ 6. 使用 `form list-view` 查询并记录默认台账 `listId`。
15
+ 7. 按需求完成多语言、联动、校验、权限、视图和按钮等建后配置。
16
+ 8. 使用读取命令轻量核对字段、布局和默认台账。
17
+
18
+ ```bash
19
+ e10-cli form create <appId> "<表单名>" --fields @fields.json --layout FLOW|EXCEL
20
+ e10-cli form list-view <objId> <appId>
21
+ e10-cli form read <objId> --app-id <appId> --out fields-created.json
22
+ ```
23
+
24
+ 需要同时生成台账菜单入口时,在创建命令中增加 `--menu`;建成后也可使用 `menu add-table <appId> <objId>` 添加。默认台账视图与应用菜单入口是两个资源。
25
+
26
+ ### 自定义数据库表名
27
+
28
+ 不指定时表名按表单名拼音首字母加随机数生成(如 `uf_xsddb_4683`)。需要固定或对齐既有命名时用 `--table-name`:
29
+
30
+ ```bash
31
+ e10-cli form create <appId> "客户信息表" --fields @fields.json --table-name cs_khxx
32
+ ```
33
+
34
+ - **平台前缀由 CLI 自动补**:传 `cs_khxx` 与传 `uf_cs_khxx` 结果相同(`uf_cs_khxx`)。
35
+ - **格式约束**:字母开头,只含字母、数字、下划线。前缀之外的部分受平台长度上限约束 —— 前缀 `uf_`、总长上限 30 时,自定义部分最多 27 位。越界会直接报错,不会建成一半。
36
+ - **建成后回读校验**:实际表名与预期不一致会报错,不静默通过。
37
+ - 仅对**物理表**应用有效;应用未启用物理表时该选项不适用(CLI 会先查存储设置并拒绝)。
38
+
39
+ ## 各阶段配置范围
40
+
41
+ | 阶段 | 配置内容 |
42
+ |---|---|
43
+ | 需求与 plan | 表单名称、字段类型、顺序、明细结构、FLOW/EXCEL、布局蓝图及外围配置 |
44
+ | `fields.json` | 字段、选项、默认值、精度、日期格式、关联、公式、明细、分组和显示属性 |
45
+ | `form create` | 表单主体、字段、明细、布局、基础查看权限、默认台账及可选菜单 |
46
+ | 建成后 | 字段多语言、联动、查重、进一步权限、视图名称与列、筛选、按钮及关联页签 |
47
+ | 完成核对 | `objId`、`formId`、`listId`、字段结构和布局结果 |
48
+
49
+ ## 建表前整理需求
50
+
51
+ ### 布局类型
52
+
53
+ ```bash
54
+ e10-cli form create <appId> "<表单名>" --fields @fields.json --layout FLOW
55
+ e10-cli form create <appId> "<表单名>" --fields @fields.json --layout EXCEL
56
+ ```
57
+
58
+ - `FLOW`:流式布局。
59
+ - `EXCEL`:表格式布局,也是 CLI 缺省值。
60
+ - 需求未明确且布局选择会影响结果时,建表前向用户确认。
61
+ - 需求提供完整表格、合并单元格、分组标题、标签与字段交替排布时,按布局样表处理,详见 [表单布局规划](layout/planning.md)。
62
+
63
+ ### 字段定义
64
+
65
+ 字段按照需求顺序写入 `fields.json`。主表字段在前,`DetailTable` 明细表放在数组末尾。
66
+
67
+ ```json
68
+ [
69
+ {"componentKey":"Text","fieldName":"合同名称","required":true,"singleRow":true},
70
+ {"componentKey":"DateRange","fieldName":"合同有效期","format":"yyyy-MM-dd"},
71
+ {"componentKey":"Money","fieldName":"合同金额","precision":2},
72
+ {"componentKey":"Select","fieldName":"合同状态","fieldOptions":[{"name":"草稿"},{"name":"履行中"}]},
73
+ {"componentKey":"Employee","fieldName":"负责人"},
74
+ {"componentKey":"DetailTable","fieldName":"付款明细","formFields":[
75
+ {"componentKey":"Date","fieldName":"付款日期"},
76
+ {"componentKey":"Number","fieldName":"付款金额","precision":2}
77
+ ]}
78
+ ]
79
+ ```
80
+
81
+ 常用字段类型包括文本、数字、选项、日期、组织、关联、行政区域和其他类型。完整类型、关联码表及各类型属性见 [表单字段定义参考](ref-form-fields.md);明细表通过表单结构配置创建。
82
+
83
+ ## 常用字段属性
84
+
85
+ | 属性 | 作用 |
86
+ |---|---|
87
+ | `required:true` | 字段必填 |
88
+ | `readOnly:true` | 禁止手工编辑 |
89
+ | `hidden:true` | 布局中隐藏,字段仍可参与计算 |
90
+ | `singleRow:true` | 独占一行 |
91
+ | `group:"基本信息"` | 放入指定字段分组 |
92
+ | `multiple:true` | 支持多选的字段设置为多选 |
93
+ | `maxLen:500` | 文本最大长度 |
94
+ | `precision:2` | 数字或金额小数位 |
95
+ | `defaultValue` | 字段默认值 |
96
+
97
+ ### 字段分组
98
+
99
+ 以需求为准:只有需求明确要求字段分组时,才在 `fields.json` 中设置 `group`;需求未要求时保持不分组。
100
+
101
+ ```json
102
+ [
103
+ {"componentKey":"Text","fieldName":"项目名称","group":"基本信息","required":true},
104
+ {"componentKey":"Employee","fieldName":"负责人","group":"基本信息"},
105
+ {"componentKey":"Number","fieldName":"项目金额","group":"财务信息","precision":2}
106
+ ]
107
+ ```
108
+
109
+ 同名 `group` 的字段进入同一个分组。分组内字段按字段顺序排列,需要整行展示的字段增加 `singleRow:true`。已有表单补充分组时使用:
110
+
111
+ ```bash
112
+ e10-cli form group <objId> <appId> --groups '{"基本信息":["项目名称","负责人"]}'
113
+ ```
114
+
115
+ ### 日期区间
116
+
117
+ 字段本身包含开始与结束含义,如“项目周期、合同有效期、请假时间、活动时间”,优先使用 `DateRange`。明确要求两个独立字段,或开始、结束需要分别参与公式和联动时,再拆成两个日期字段。
118
+
119
+ ```json
120
+ {"componentKey":"DateRange","fieldName":"项目周期","format":"yyyy-MM-dd"}
121
+ ```
122
+
123
+ ### 选项和多选
124
+
125
+ ```json
126
+ {"componentKey":"Select","fieldName":"状态","fieldOptions":[{"name":"启用"},{"name":"停用"}]},
127
+ {"componentKey":"Employee","fieldName":"项目成员","multiple":true}
128
+ ```
129
+
130
+ `Select`、`RadioBox`、`CheckBox` 可在 `fieldOptions` 中定义选项。人员、部门、EBuilder、Browser 和 Select 等支持按字段能力设置多选。共享选项可使用 `optionTemplate`;详细结构见 [表单字段定义参考](ref-form-fields.md)。
131
+
132
+ **开关(`Switch`)自动带固定选项「开启=1 / 关闭=0」**,不需要在 `fields.json` 里写 `fieldOptions`;主表、明细表与后续 `form add-field` / `form add-physical-field` 都会自动补上。
133
+
134
+ ### 关联字段
135
+
136
+ EBuilder 关联字段在创建时指定目标表单 `objId` 和显示字段:
137
+
138
+ ```json
139
+ {
140
+ "componentKey":"EBuilder",
141
+ "fieldName":"关联客户",
142
+ "sformId":"<目标表单objId>",
143
+ "dataTitle":"客户名称",
144
+ "displayColumns":["客户名称","客户类型"]
145
+ }
146
+ ```
147
+
148
+ `Flow` 的 `sformId` 同样指向目标流程绑定的表单 `objId`。原生关联对象和通用浏览类型的配置码表见[表单字段定义参考](ref-form-fields.md);关联浏览的数据范围见[浏览数据定义](guide-browser-definition.md#数据范围)。旧布局过滤配置见[EBuilder 过滤](guide-ebuilder-filter.md)。
149
+
150
+ **明细表里的 EBuilder 子字段用同一套键**:在 `DetailTable.formFields` 的字段对象里写 `sformId` / `dataTitle` / `displayColumns` 即可,建表时会一起绑定到目标表单;不写 `sformId` 会建成无关联的裸字段(命令会给出警告)。
151
+
152
+ 使用自定义浏览框时,在 `fields.json` 的 `Browser` / `RelateBrowser` 字段写 `"browserName":"浏览框准确名称"`;CLI 会从当前环境检索该名称并绑定。已有表单用 `form add-field ... Browser --browser-name "浏览框准确名称"`。具体字段示例见 [表单字段定义参考](ref-form-fields.md)。
153
+
154
+ ### 明细表与二级明细
155
+
156
+ 明细字段写入 `DetailTable.formFields`。二级明细关系配置在父明细表上,父明细每一行分别拥有对应的子明细数据:
157
+
158
+ ```json
159
+ [
160
+ {"componentKey":"DetailTable","fieldName":"任务明细","enableSubDetail":true,
161
+ "subDetailConfig":[{"subForm":"工时明细","subField":"父任务标识"}],"formFields":[
162
+ {"componentKey":"Text","fieldName":"任务名称"}
163
+ ]},
164
+ {"componentKey":"DetailTable","fieldName":"工时明细","formFields":[
165
+ {"componentKey":"Text","fieldName":"父任务标识"},
166
+ {"componentKey":"Number","fieldName":"工时","precision":2}
167
+ ]}
168
+ ]
169
+ ```
170
+
171
+ 父级行标识缺省使用行 ID;子级行标识必须为单行文本。多父级复用、多子级和多级嵌套的规则,以及已有表单的查询、增加、删除、启停命令见 [二级明细表配置](guide-form-sub-detail.md)。
172
+
173
+ 明细表的**描述默认是空**;需要时在 `DetailTable` 上写 `"describe":"说明文字"`,不写不会用明细名填充。
174
+
175
+ ### 表单结构与布局组件
176
+
177
+ 主表字段直接写在 `fields.json` 根数组中;明细表使用 `DetailTable` 配置,并通过 `formFields` 维护其字段。主表与明细表字段采用相同的字段类型和属性规则。
178
+
179
+ 布局初始化会根据表单结构生成相应的内部组件:
180
+
181
+ | 组件 | 在创建流程中的作用 |
182
+ | --- | --- |
183
+ | `DetailTable` | 定义明细表及其字段 |
184
+ | `DataTable` | 在布局中承载和展示明细表 |
185
+ | `Fold` | 承载字段分组和折叠区域 |
186
+ | `Placeholder` | 维护布局中的占位位置 |
187
+ | `EbuilderAppTag` | 维护 EB 应用相关的布局标签 |
188
+
189
+ 业务字段从字段类型码表中选择;以上结构与内部组件由明细表、分组和布局配置生成与维护。
190
+
191
+ ### 字段公式
192
+
193
+ 可在目标字段中写 `formula`,由创建流程完成公式创建和字段绑定:
194
+
195
+ ```json
196
+ {"componentKey":"Number","fieldName":"项目收益","formula":"{主表.已收款}-{主表.项目费用}"}
197
+ ```
198
+
199
+ 公式表达式、明细汇总和函数格式见 [字段公式函数参考](guide-form-formula-functions.md)。复杂编号属于建后配置,见 [表单复杂编号](guide-form-serial-mark.md)。
200
+
201
+ ## 执行创建
202
+
203
+ 需要还原图片或 XLSX 源样式时,可在普通创建完成后使用[源样式还原命令链](layout/source-restoration.md),或同时传 `--layout-source @source.json --layout-spec @spec.json --layout-artifact-out artifact.json`。该入口先验证源文件,继续使用原字段创建链,最后在高级属性、公式和分组重排结束后保存精确布局。失败保留已有 objId/formId,重试只处理该对象,不重复建表。
204
+
205
+ ```bash
206
+ e10-cli form create <appId> "采购合同" --fields @fields.json --layout EXCEL
207
+ ```
208
+
209
+ 创建流程会依次完成表单主体、字段和明细、布局初始化、字段高级属性、关联关系、选项、公式、分组、基础查看权限及默认台账配置。传入 `--menu` 时同时添加台账菜单入口。
210
+
211
+ 记录命令返回的:
212
+
213
+ - `objId`:EB 表单业务对象 ID,多数 `form` 命令使用它。
214
+ - `formId`:底层表单 ID,布局和部分底层接口使用它。
215
+ - `listId`:默认台账 ID,通过 `form list-view` 查询。
216
+
217
+ ## 建成后配置
218
+
219
+ 按需求执行,未提出的配置不额外增加:
220
+
221
+ | 需求 | 命令或指南 |
222
+ |---|---|
223
+ | 字段中英文名称 | `form field-lang set` |
224
+ | 字段显隐、只读、必填联动 | [表单联动](guide-form-linkage.md) |
225
+ | 字段查重 | `form validate` |
226
+ | 表单和数据权限 | `form permission` |
227
+ | 默认台账改名、列、筛选和分组 | [表单视图](guide-form-view.md) |
228
+ | 表单及视图按钮 | [表单按钮](guide-form-button.md) |
229
+ | 关联页签 | [表单关联页签](guide-form-association.md) |
230
+ | 复杂编号 | [表单复杂编号](guide-form-serial-mark.md) |
231
+
232
+ 需求写成 `中文/English`(如 `项目/project`)时,先以中文名称创建字段,再设置多语言:
233
+
234
+ ```bash
235
+ e10-cli form field-lang set <objId> <appId> <fieldId> --zh "项目" --en "project"
236
+ ```
237
+
238
+ ## 完成核对
239
+
240
+ 使用与本次需求直接相关的读取命令核对即可:
241
+
242
+ ```bash
243
+ e10-cli form read <objId> --app-id <appId> --out fields-created.json
244
+ e10-cli form list-view <objId> <appId>
245
+ e10-cli form layout read <objId>
246
+ ```
247
+
248
+ 重点确认字段数量与类型、明细结构、分组和显示属性、布局类型、默认台账名称与 `listId`。需要菜单时再确认菜单入口。
249
+
250
+ `fields-created.json` 里的 `fieldName` **就是字段标题** —— 与设计器「字段管理」里看到的是同一个值,想核对标题建对没有看它即可。它为空就说明标题没写进去(`form add-field` 没给标题时会回落成字段名,所以正常不会空)。
251
+
252
+ ## 专题参考
253
+
254
+ - [表单字段定义参考](ref-form-fields.md):完整字段类型、属性、关联类型和 JSON 结构。
255
+ - [表单布局规划](layout/planning.md):FLOW/EXCEL、布局样表、布局蓝图及建后调整。
256
+ - [表单复杂编号](guide-form-serial-mark.md):编号段、流水和代字配置。
257
+ - [字段公式函数参考](guide-form-formula-functions.md):公式表达式和函数。
258
+ - [表单视图](guide-form-view.md):默认台账、视图名称和列表配置。