weaver-e10-builder 1.5.16 → 1.6.4

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 (232) 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/check.d.ts.map +1 -1
  5. package/dist/commands/check.js +109 -51
  6. package/dist/commands/check.js.map +1 -1
  7. package/dist/commands/form-attachment-setting.d.ts +3 -0
  8. package/dist/commands/form-attachment-setting.d.ts.map +1 -0
  9. package/dist/commands/form-attachment-setting.js +422 -0
  10. package/dist/commands/form-attachment-setting.js.map +1 -0
  11. package/dist/commands/form-data.d.ts.map +1 -1
  12. package/dist/commands/form-data.js +49 -1
  13. package/dist/commands/form-data.js.map +1 -1
  14. package/dist/commands/form-ebuilder-scope.d.ts +21 -0
  15. package/dist/commands/form-ebuilder-scope.d.ts.map +1 -1
  16. package/dist/commands/form-ebuilder-scope.js +41 -8
  17. package/dist/commands/form-ebuilder-scope.js.map +1 -1
  18. package/dist/commands/form-field-linkage.d.ts +6 -1
  19. package/dist/commands/form-field-linkage.d.ts.map +1 -1
  20. package/dist/commands/form-field-linkage.js +138 -31
  21. package/dist/commands/form-field-linkage.js.map +1 -1
  22. package/dist/commands/form-layout-code-reviewed.d.ts +3 -0
  23. package/dist/commands/form-layout-code-reviewed.d.ts.map +1 -0
  24. package/dist/commands/form-layout-code-reviewed.js +61 -0
  25. package/dist/commands/form-layout-code-reviewed.js.map +1 -0
  26. package/dist/commands/form-layout-describe.d.ts +3 -0
  27. package/dist/commands/form-layout-describe.d.ts.map +1 -0
  28. package/dist/commands/form-layout-describe.js +58 -0
  29. package/dist/commands/form-layout-describe.js.map +1 -0
  30. package/dist/commands/form-layout-diff.d.ts +3 -0
  31. package/dist/commands/form-layout-diff.d.ts.map +1 -0
  32. package/dist/commands/form-layout-diff.js +48 -0
  33. package/dist/commands/form-layout-diff.js.map +1 -0
  34. package/dist/commands/form-layout-document.d.ts +3 -0
  35. package/dist/commands/form-layout-document.d.ts.map +1 -0
  36. package/dist/commands/form-layout-document.js +81 -0
  37. package/dist/commands/form-layout-document.js.map +1 -0
  38. package/dist/commands/form-layout-edit.d.ts +3 -0
  39. package/dist/commands/form-layout-edit.d.ts.map +1 -0
  40. package/dist/commands/form-layout-edit.js +51 -0
  41. package/dist/commands/form-layout-edit.js.map +1 -0
  42. package/dist/commands/form-layout-init-reviewed.d.ts +3 -0
  43. package/dist/commands/form-layout-init-reviewed.d.ts.map +1 -0
  44. package/dist/commands/form-layout-init-reviewed.js +78 -0
  45. package/dist/commands/form-layout-init-reviewed.js.map +1 -0
  46. package/dist/commands/form-layout-restore.d.ts.map +1 -1
  47. package/dist/commands/form-layout-restore.js +23 -0
  48. package/dist/commands/form-layout-restore.js.map +1 -1
  49. package/dist/commands/form-layout-template-catalog.d.ts +3 -0
  50. package/dist/commands/form-layout-template-catalog.d.ts.map +1 -0
  51. package/dist/commands/form-layout-template-catalog.js +45 -0
  52. package/dist/commands/form-layout-template-catalog.js.map +1 -0
  53. package/dist/commands/form.d.ts.map +1 -1
  54. package/dist/commands/form.js +80 -5
  55. package/dist/commands/form.js.map +1 -1
  56. package/dist/commands/project.d.ts.map +1 -1
  57. package/dist/commands/project.js +39 -6
  58. package/dist/commands/project.js.map +1 -1
  59. package/dist/index.js +15 -0
  60. package/dist/index.js.map +1 -1
  61. package/dist/services/actionflow/components/action_eb_add.d.ts.map +1 -1
  62. package/dist/services/actionflow/components/action_eb_add.js +12 -5
  63. package/dist/services/actionflow/components/action_eb_add.js.map +1 -1
  64. package/dist/services/actionflow/components/action_eb_add_compiler.d.ts.map +1 -1
  65. package/dist/services/actionflow/components/action_eb_add_compiler.js +5 -0
  66. package/dist/services/actionflow/components/action_eb_add_compiler.js.map +1 -1
  67. package/dist/services/actionflow/components/action_eb_delete.d.ts +6 -1
  68. package/dist/services/actionflow/components/action_eb_delete.d.ts.map +1 -1
  69. package/dist/services/actionflow/components/action_eb_delete.js +23 -5
  70. package/dist/services/actionflow/components/action_eb_delete.js.map +1 -1
  71. package/dist/services/actionflow/components/action_eb_delete_compiler.d.ts.map +1 -1
  72. package/dist/services/actionflow/components/action_eb_delete_compiler.js +22 -0
  73. package/dist/services/actionflow/components/action_eb_delete_compiler.js.map +1 -1
  74. package/dist/services/actionflow/components/action_eb_update.d.ts.map +1 -1
  75. package/dist/services/actionflow/components/action_eb_update.js +13 -4
  76. package/dist/services/actionflow/components/action_eb_update.js.map +1 -1
  77. package/dist/services/actionflow/components/action_eb_update_compiler.d.ts.map +1 -1
  78. package/dist/services/actionflow/components/action_eb_update_compiler.js +9 -2
  79. package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -1
  80. package/dist/services/actionflow/components/date_trigger.js +2 -2
  81. package/dist/services/actionflow/components/date_trigger.js.map +1 -1
  82. package/dist/services/actionflow/components/enquiry_form.d.ts.map +1 -1
  83. package/dist/services/actionflow/components/enquiry_form.js +11 -10
  84. package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
  85. package/dist/services/actionflow/components/event_button.js +1 -1
  86. package/dist/services/actionflow/components/event_button.js.map +1 -1
  87. package/dist/services/actionflow/components/form_data_builder.d.ts +29 -1
  88. package/dist/services/actionflow/components/form_data_builder.d.ts.map +1 -1
  89. package/dist/services/actionflow/components/form_data_builder.js +67 -3
  90. package/dist/services/actionflow/components/form_data_builder.js.map +1 -1
  91. package/dist/services/actionflow/components/time_batch_trigger.js +2 -2
  92. package/dist/services/actionflow/components/time_batch_trigger.js.map +1 -1
  93. package/dist/services/actionflow/form_source.d.ts +44 -1
  94. package/dist/services/actionflow/form_source.d.ts.map +1 -1
  95. package/dist/services/actionflow/form_source.js +231 -5
  96. package/dist/services/actionflow/form_source.js.map +1 -1
  97. package/dist/services/actionflow/preflight_service.d.ts +8 -0
  98. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  99. package/dist/services/actionflow/preflight_service.js +120 -14
  100. package/dist/services/actionflow/preflight_service.js.map +1 -1
  101. package/dist/services/actionflow/system_params.d.ts.map +1 -1
  102. package/dist/services/actionflow/system_params.js +4 -1
  103. package/dist/services/actionflow/system_params.js.map +1 -1
  104. package/dist/services/actionflow/trigger_common.d.ts.map +1 -1
  105. package/dist/services/actionflow/trigger_common.js +12 -3
  106. package/dist/services/actionflow/trigger_common.js.map +1 -1
  107. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  108. package/dist/services/actionflow/workflow_compiler.js +117 -40
  109. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  110. package/dist/services/form-attachment-settings.d.ts +110 -0
  111. package/dist/services/form-attachment-settings.d.ts.map +1 -0
  112. package/dist/services/form-attachment-settings.js +332 -0
  113. package/dist/services/form-attachment-settings.js.map +1 -0
  114. package/dist/services/form-attachment-upload.d.ts +30 -0
  115. package/dist/services/form-attachment-upload.d.ts.map +1 -0
  116. package/dist/services/form-attachment-upload.js +76 -0
  117. package/dist/services/form-attachment-upload.js.map +1 -0
  118. package/dist/services/form-data-openapi.d.ts +2 -0
  119. package/dist/services/form-data-openapi.d.ts.map +1 -1
  120. package/dist/services/form-data-openapi.js +1 -0
  121. package/dist/services/form-data-openapi.js.map +1 -1
  122. package/dist/services/form-layout-code-reviewed.d.ts +32 -0
  123. package/dist/services/form-layout-code-reviewed.d.ts.map +1 -0
  124. package/dist/services/form-layout-code-reviewed.js +101 -0
  125. package/dist/services/form-layout-code-reviewed.js.map +1 -0
  126. package/dist/services/form-layout-describe.d.ts +4 -0
  127. package/dist/services/form-layout-describe.d.ts.map +1 -0
  128. package/dist/services/form-layout-describe.js +107 -0
  129. package/dist/services/form-layout-describe.js.map +1 -0
  130. package/dist/services/form-layout-diff.d.ts +37 -0
  131. package/dist/services/form-layout-diff.d.ts.map +1 -0
  132. package/dist/services/form-layout-diff.js +232 -0
  133. package/dist/services/form-layout-diff.js.map +1 -0
  134. package/dist/services/form-layout-document-apply.d.ts +23 -0
  135. package/dist/services/form-layout-document-apply.d.ts.map +1 -0
  136. package/dist/services/form-layout-document-apply.js +82 -0
  137. package/dist/services/form-layout-document-apply.js.map +1 -0
  138. package/dist/services/form-layout-document.d.ts +13 -0
  139. package/dist/services/form-layout-document.d.ts.map +1 -0
  140. package/dist/services/form-layout-document.js +228 -0
  141. package/dist/services/form-layout-document.js.map +1 -0
  142. package/dist/services/form-layout-edit.d.ts +21 -0
  143. package/dist/services/form-layout-edit.d.ts.map +1 -0
  144. package/dist/services/form-layout-edit.js +103 -0
  145. package/dist/services/form-layout-edit.js.map +1 -0
  146. package/dist/services/form-layout-init-plan.d.ts +54 -0
  147. package/dist/services/form-layout-init-plan.d.ts.map +1 -0
  148. package/dist/services/form-layout-init-plan.js +211 -0
  149. package/dist/services/form-layout-init-plan.js.map +1 -0
  150. package/dist/services/form-layout-source/review.d.ts +4 -0
  151. package/dist/services/form-layout-source/review.d.ts.map +1 -0
  152. package/dist/services/form-layout-source/review.js +54 -0
  153. package/dist/services/form-layout-source/review.js.map +1 -0
  154. package/dist/services/form-layout-template-advanced.d.ts +5 -0
  155. package/dist/services/form-layout-template-advanced.d.ts.map +1 -1
  156. package/dist/services/form-layout-template-advanced.js +17 -1
  157. package/dist/services/form-layout-template-advanced.js.map +1 -1
  158. package/dist/services/form-layout-template-catalog.d.ts +13 -0
  159. package/dist/services/form-layout-template-catalog.d.ts.map +1 -0
  160. package/dist/services/form-layout-template-catalog.js +27 -0
  161. package/dist/services/form-layout-template-catalog.js.map +1 -0
  162. package/dist/services/form-layout-template-flow.d.ts +1 -1
  163. package/dist/services/form-layout-template-flow.d.ts.map +1 -1
  164. package/dist/services/form-layout-template-flow.js.map +1 -1
  165. package/dist/services/form-layout-template-verification.d.ts +34 -0
  166. package/dist/services/form-layout-template-verification.d.ts.map +1 -0
  167. package/dist/services/form-layout-template-verification.js +124 -0
  168. package/dist/services/form-layout-template-verification.js.map +1 -0
  169. package/dist/services/form-style-template.d.ts +3 -3
  170. package/dist/services/form-style-template.d.ts.map +1 -1
  171. package/dist/services/form-style-template.js +18 -13
  172. package/dist/services/form-style-template.js.map +1 -1
  173. package/package.json +1 -1
  174. package/skill-docs/SKILL.md +163 -155
  175. package/skill-docs/_catalog.md +110 -106
  176. package/skill-docs/actionflows/references/components/ebuilder/ActionEbDelete.md +60 -3
  177. package/skill-docs/actionflows/references/components/ebuilder/EventButton.md +35 -33
  178. package/skill-docs/assets/sample/api/formApi.js +689 -510
  179. package/skill-docs/assets/sample/app/config.js +4 -0
  180. package/skill-docs/assets/sample/app/fields.js +25 -0
  181. package/skill-docs/assets/sample/entry.js +24 -22
  182. package/skill-docs/assets/sample/eslint.config.cjs +1 -0
  183. package/skill-docs/assets/sample/pages/Items.js +247 -0
  184. package/skill-docs/assets/sample/styles/prototypeStyles.js +137 -0
  185. package/skill-docs/references/coding/guide-edit-backfill.md +102 -150
  186. package/skill-docs/references/coding/guide-form-crud.md +195 -172
  187. package/skill-docs/references/coding/guide-html-to-react.md +250 -0
  188. package/skill-docs/references/coding/guide-page-code.md +194 -167
  189. package/skill-docs/references/coding/guide-page-export.md +27 -18
  190. package/skill-docs/references/coding/ref-compile-rules.md +7 -7
  191. package/skill-docs/references/common/capability-boundaries.md +20 -1
  192. package/skill-docs/references/common/guide-plan-template.md +29 -3
  193. package/skill-docs/references/common/map.md +13 -8
  194. package/skill-docs/references/common/ref-cli-commands.md +31 -10
  195. package/skill-docs/references/components/display-FilePreview.md +5 -4
  196. package/skill-docs/references/form/guide-browser-definition.md +57 -13
  197. package/skill-docs/references/form/guide-create-form.md +258 -258
  198. package/skill-docs/references/form/guide-field-linkage.md +4 -1
  199. package/skill-docs/references/form/guide-form-attachment-setting.md +95 -0
  200. package/skill-docs/references/form/guide-form-data.md +22 -1
  201. package/skill-docs/references/form/layout/code-block/code-block-guide.md +153 -0
  202. package/skill-docs/references/form/layout/code-block/controls.md +60 -0
  203. package/skill-docs/references/form/layout/code-block/coverage.md +32 -0
  204. package/skill-docs/references/form/layout/code-block/details.md +57 -0
  205. package/skill-docs/references/form/layout/code-block/events-validation.md +42 -0
  206. package/skill-docs/references/form/layout/code-block/foundations-fields.md +56 -0
  207. package/skill-docs/references/form/layout/code-block/layout-css.md +116 -0
  208. package/skill-docs/references/form/layout/code-block/recipes.md +164 -0
  209. package/skill-docs/references/form/layout/code-block/troubleshooting.md +49 -0
  210. package/skill-docs/references/form/layout/code-block/ui-global.md +47 -0
  211. package/skill-docs/references/form/layout/document.md +39 -0
  212. package/skill-docs/references/form/layout/incremental.md +133 -0
  213. package/skill-docs/references/form/layout/initialization.md +39 -0
  214. package/skill-docs/references/form/layout/inspect-edit.md +76 -0
  215. package/skill-docs/references/form/layout/layout-overview.md +67 -0
  216. package/skill-docs/references/form/layout/management.md +64 -0
  217. package/skill-docs/references/form/layout/planning.md +76 -0
  218. package/skill-docs/references/form/layout/source-restoration.md +388 -0
  219. package/skill-docs/references/form/layout/template/advanced-css.md +167 -0
  220. package/skill-docs/references/form/layout/template/advanced.md +318 -0
  221. package/skill-docs/references/form/layout/template/easy.md +64 -0
  222. package/skill-docs/references/form/layout/template/flow.md +30 -0
  223. package/skill-docs/references/form/layout/template/template-guide.md +56 -0
  224. package/skill-docs/references/form/layout/workflow-layout.md +44 -0
  225. package/skill-docs/references/form/ref-form-fields.md +303 -301
  226. package/skill-docs/references/workflow/guide-workflow-node-layout.md +189 -187
  227. package/skill-docs/assets/sample/config/config.js +0 -0
  228. package/skill-docs/assets/sample/config/configLoad.js +0 -0
  229. package/skill-docs/assets/sample/config/configLoad_default.js +0 -0
  230. package/skill-docs/assets/sample/config/config_default.js +0 -0
  231. package/skill-docs/assets/sample/memo.md +0 -0
  232. package/skill-docs/assets/sample/readme.js +0 -8
@@ -1,187 +1,189 @@
1
- # 流程节点独立布局
2
-
3
- > **命令**:`e10-cli workflow node layout list | get | bind | unbind | create`
4
- > **同族功能**:`e10-cli workflow node field-permission`(节点字段权限)
5
- > **相关**:`wf-form layout add` / `wf-form layout delete`(表单自己的多套布局)
6
-
7
- 流程表单可以有多套布局(每套是流式 FLOW 或表格式 EXCEL),默认那一套作用于所有节点。
8
- **节点独立布局**是让某个节点单独挂另一套布局 —— 比如审批节点只显示审批相关字段、
9
- 归档节点全只读且换成表格式。
10
-
11
- ```
12
- 表单默认布局 ──┬── 节点:发起报销申请
13
- (FLOW) ├── 节点:报销初审
14
- └── …
15
- PC1 布局 ──────┬── 节点:财务部专项复核 ← 独立布局
16
- (EXCEL) └── 节点:流程归档
17
- ```
18
-
19
- ---
20
-
21
- ## 一、三条硬规则
22
-
23
- 1. **一个节点同时只属于一套布局。** 把节点从 A 挪到 B,服务端会自动把它从 A 摘掉,不会两套都留着。
24
- 2. **摘掉后回落到表单默认布局**(该节点 `layoutId` 置空),不是「没有布局」。
25
- 3. **PC 端与移动端是两套独立的关系。** 移动端另有「独立布局 / 读取PC端布局」的模式开关,
26
- `--terminal MOBILE` 操作的是另一份映射,互不影响。
27
-
28
- > ⚠️ **布局类型(流式/表格式)在新建布局时就要定死**,建完不能切换。这是 `form create --layout` 同一类约束。
29
-
30
- ---
31
-
32
- ## 二、命令
33
-
34
- ```bash
35
- # 这个工作流有哪些布局,每套被哪些节点引用
36
- e10-cli workflow node layout list <workflowId> [--terminal PC|MOBILE]
37
-
38
- # 某个节点挂的是哪套
39
- e10-cli workflow node layout get <workflowId> <nodeId>
40
-
41
- # 把节点挂到某套布局(自动从原来那套摘掉)
42
- e10-cli workflow node layout bind <workflowId> <nodeId> --layout-id <布局ID> [--terminal PC]
43
-
44
- # 摘下来,回落表单默认布局
45
- e10-cli workflow node layout unbind <workflowId> <nodeId> [--terminal PC]
46
-
47
- # 新建一套布局:默认**复制表单默认布局**(推荐),可同时挂上若干节点
48
- e10-cli workflow node layout create <workflowId> --name "项目费用报销流程表PC2" \
49
- --layout-type EXCEL --nodes <nodeId1> <nodeId2> [--describe "…"]
50
-
51
- # 从指定布局复制
52
- e10-cli workflow node layout create <workflowId> --name "…" --from <来源布局ID>
53
-
54
- # 建空白布局(字段与排版全部从零配,慎用)
55
- e10-cli workflow node layout create <workflowId> --name "…" --empty
56
-
57
- # 建完立刻排版;只摆指定字段(审批节点常见诉求)
58
- e10-cli workflow node layout create <workflowId> --name "审批专用PC" --init --fields 报销单号 报销金额 关联客户
59
-
60
- # 对已有布局重排(只动这一套)
61
- e10-cli workflow node layout init <workflowId> <布局ID> [--fields …]
62
-
63
- # 先看看这张表单有哪些字段可摆
64
- e10-cli workflow node layout init <workflowId> x --list-fields
65
- ```
66
-
67
- `bind` / `unbind` **幂等**:节点本来就在目标状态时不发写请求,重复执行安全。
68
-
69
- ### `create` 的两种模式:复制 vs 空白
70
-
71
- | 模式 | 触发 | 结果 |
72
- |---|---|---|
73
- | **复制**(默认) | 不写 `--empty`;默认复制**表单默认布局**,可用 `--from <布局ID>` 换来源 | 内容与来源一致,拿到手就能微调 |
74
- | **空白** | `--empty` | 字段与排版都是空的,全都要重新配 |
75
-
76
- 同一份默认布局下的对比(内容体积):来源 28,941 / 复制出来 28,980 / **空白只有 5,622**。
77
- 空白布局挂到节点上,该节点打开时**几乎什么都没有** —— 除非确实要从零设计,否则用默认的复制模式。
78
-
79
- `--layout-type` 不写时**跟随来源布局的类型**(复制表格式布局就还是表格式),显式传则覆盖。
80
- 平台设计器上的「新建」按钮走的是空白那条分支。
81
-
82
- ### 只摆指定字段
83
-
84
- `--init --fields A B C` 会让这套布局**只放这三个字段**。
85
-
86
- **没摆的字段只是在这套布局里不显示,字段本身仍在表单上**,其它布局照旧 —— 已回读核对:
87
- 过滤后目标布局 3 个组件,表单默认布局仍是完整的 17 个,一个没少。
88
-
89
- 不传 `--fields` 就是把这套布局按全部字段重排。
90
-
91
- ```bash
92
- # 审批节点:只看单号/金额/客户
93
- e10-cli workflow node layout create <workflowId> --name "审批专用PC" --init --fields 报销单号 报销金额 关联客户
94
-
95
- # 事后改主意,重排成别的字段组合
96
- e10-cli workflow node layout init <workflowId> <布局ID> --fields 报销单号 报销人
97
- ```
98
-
99
- 字段名写错会**直接报错并列出可用字段**,不会闷头建出一套空布局。
100
- `--list-fields` 可以先看清单。
101
-
102
- 删除布局用 `wf-form layout delete <formId> <layoutId>`。
103
-
104
- ---
105
-
106
- ## 三、典型用法
107
-
108
- **给审批节点换一套只看关键字段的布局**
109
-
110
- ```bash
111
- # 1. 先建布局(表格式),建完在设计器里把需要的字段排好
112
- e10-cli workflow node layout create <workflowId> --name "审批专用PC" --layout-type EXCEL
113
-
114
- # 2. 从列表里拿到新布局的 ID
115
- e10-cli workflow node layout list <workflowId>
116
-
117
- # 3. 把审批节点挂上去
118
- e10-cli workflow node layout bind <workflowId> <nodeId> --layout-id <新布局ID>
119
-
120
- # 4. 核对
121
- e10-cli workflow node layout get <workflowId> <nodeId>
122
- ```
123
-
124
- **改回默认**
125
-
126
- ```bash
127
- e10-cli workflow node layout unbind <workflowId> <nodeId>
128
- ```
129
-
130
- ---
131
-
132
- ## 四、接口(排查用)
133
-
134
- | 用途 | 接口 |
135
- |---|---|
136
- | 布局列表 | `POST /api/ebuilder/flow/form/layout/list` → `data.formLayoutMultiplePage.result[]` |
137
- | 每套布局 ← 哪些节点 | `GET /api/bs/workflow/pathdef/pathLayoutManage/getLayoutInfoParams?terminalType&workflowId` → `formId` + `layoutReferNodeInfo` |
138
- | 节点 → 哪套布局 | `GET /api/bs/workflow/pathdef/nodeLayout/getDisplayLayoutForm?workflowId&nodeId` → `layoutId`/`defaultLayoutId`/`mLayoutId`/`mLayoutMode` |
139
- | 绑定 / 解绑 | `POST /api/bs/workflow/pathdef/form/layout/updateQuoteNode` |
140
- | 新建布局 | `POST /api/ebuilder/flow/form/layout/save` |
141
- | 布局内容 | `POST /api/ebuilder/form/builder/getFormLayout`(带 `layoutMultiId`;不传读默认) |
142
-
143
- **新建布局的 `sourceId` 决定复制还是空白**:不传 `sourceId` 时服务端建出的是空壳,传了才按 `copyConfig` 复制。
144
- `copyConfig` 四项全开才是完整复制(`{formDataLinkage, excelLinkage, viewLinkage, displayFormat}`)——
145
- 少 `viewLinkage` / `displayFormat` 时复制出来的布局会缺视图关联与显示格式,体积只有完整复制的五分之一左右。
146
-
147
- **`updateQuoteNode` 是整集合覆盖,不是增量追加**:
148
-
149
- ```json
150
- { "terminal": "PC", "workflowId": "…", "layoutId": "…",
151
- "nodeIds": ["变更后该布局引用的全部节点"],
152
- "sourceNodeIds": ["变更前的全部节点"] }
153
- ```
154
-
155
- 所以 CLI 的 `bind` 是「先读现状 → 加上这个节点 → 整包提交」。**不要**直接拿单个节点当 `nodeIds` 提交,
156
- 否则该布局上原有的其它节点会被摘掉。
157
-
158
- **重建布局必须走 ebuilder 路径**:`initLayout` 用 `/api/ebuilder/form/form/view/relate/initLayout`
159
- (`module:"ebuilderform"`)。流程表单那套 `/api/workflow/core/form/...` 在 **eb 表关联流程**的表单上会直接
160
- 回「无工作流修改权限或工作流维护权限」500,用不了 —— `wf-form layout init` 因此对这类表单不可用。
161
-
162
- **「只摆某些字段」的实现**:`getConfig` 恒返回表单**全量**字段的 configs(与布局无关),
163
- 过滤掉不要的再 `initLayout`,就是「这套布局只显示这些字段」。系统字段的 config 项保留(不会变成组件)。
164
-
165
- **节点布局面板的完整定义**在 `getDisplayLayoutForm.displayLayoutForm` 里(`groups` / `layout` / `items`),
166
- `items.layoutId.browserBean` 描述了 PC 端布局选择器(`module:"workflow/core"`, `type:"nodeLayoutBrowser"`,
167
- 参数 `{formId, terminal, workflowId}`);`items.mLayoutMode` 是移动端那个 radio(`0`=独立布局 / `1`=读取PC端布局)。
168
- 要确认面板上还有哪些可配项,读它比翻文档准。
169
-
170
- ---
171
-
172
- ## 五、与本文件其它节点的关系
173
-
174
- | 功能 | 命令 | 说明 |
175
- |---|---|---|
176
- | 节点字段权限 | `workflow node field-permission` | 控制字段在节点上 显示/只读/必填 |
177
- | 节点操作菜单 | `workflow node menu` | 节点上显示哪些操作按钮 |
178
- | **节点独立布局** | `workflow node layout` | 节点上换一整套排版 |
179
-
180
- 节点布局与字段权限是**叠加**的:布局管「字段怎么排」,字段权限管「字段能不能改」。
181
- 两者都挂在同一条节点表单关联记录上,互不覆盖,可以同时用。
182
-
183
- 字段权限的界面约束由命令自动收口:
184
-
185
- - 勾选**编辑**(`--editable`)必定勾选**显示**;
186
- - **禁止手动编辑**(`--disable-manual-edit`)只有在编辑勾选时才可设,命令会自动补上编辑与显示;
187
- - 设为**只读**(`--readonly`)会清除「禁止手动编辑」——只读字段不存在这一项。
1
+ # 流程节点独立布局
2
+
3
+ > **命令**:`e10-cli workflow node layout list | get | bind | unbind | create`
4
+ > **同族功能**:`e10-cli workflow node field-permission`(节点字段权限)
5
+ > **相关**:`wf-form layout add` / `wf-form layout delete`(表单自己的多套布局)
6
+
7
+ 表单布局的新增、初始化与节点引用如何衔接,先读[流程表单布局与节点独立布局](../form/layout/workflow-layout.md);本篇保留节点绑定的详细规则。
8
+
9
+ 流程表单可以有多套布局(每套是流式 FLOW 或表格式 EXCEL),默认那一套作用于所有节点。
10
+ **节点独立布局**是让某个节点单独挂另一套布局 —— 比如审批节点只显示审批相关字段、
11
+ 归档节点全只读且换成表格式。
12
+
13
+ ```
14
+ 表单默认布局 ──┬── 节点:发起报销申请
15
+ (FLOW) ├── 节点:报销初审
16
+ └── …
17
+ PC1 布局 ──────┬── 节点:财务部专项复核 ← 独立布局
18
+ (EXCEL) └── 节点:流程归档
19
+ ```
20
+
21
+ ---
22
+
23
+ ## 一、三条硬规则
24
+
25
+ 1. **一个节点同时只属于一套布局。** 把节点从 A 挪到 B,服务端会自动把它从 A 摘掉,不会两套都留着。
26
+ 2. **摘掉后回落到表单默认布局**(该节点 `layoutId` 置空),不是「没有布局」。
27
+ 3. **PC 端与移动端是两套独立的关系。** 移动端另有「独立布局 / 读取PC端布局」的模式开关,
28
+ `--terminal MOBILE` 操作的是另一份映射,互不影响。
29
+
30
+ > ⚠️ **布局类型(流式/表格式)在新建布局时就要定死**,建完不能切换。这是 `form create --layout` 同一类约束。
31
+
32
+ ---
33
+
34
+ ## 二、命令
35
+
36
+ ```bash
37
+ # 这个工作流有哪些布局,每套被哪些节点引用
38
+ e10-cli workflow node layout list <workflowId> [--terminal PC|MOBILE]
39
+
40
+ # 某个节点挂的是哪套
41
+ e10-cli workflow node layout get <workflowId> <nodeId>
42
+
43
+ # 把节点挂到某套布局(自动从原来那套摘掉)
44
+ e10-cli workflow node layout bind <workflowId> <nodeId> --layout-id <布局ID> [--terminal PC]
45
+
46
+ # 摘下来,回落表单默认布局
47
+ e10-cli workflow node layout unbind <workflowId> <nodeId> [--terminal PC]
48
+
49
+ # 新建一套布局:默认**复制表单默认布局**(推荐),可同时挂上若干节点
50
+ e10-cli workflow node layout create <workflowId> --name "项目费用报销流程表PC2" \
51
+ --layout-type EXCEL --nodes <nodeId1> <nodeId2> [--describe "…"]
52
+
53
+ # 从指定布局复制
54
+ e10-cli workflow node layout create <workflowId> --name "…" --from <来源布局ID>
55
+
56
+ # 建空白布局(字段与排版全部从零配,慎用)
57
+ e10-cli workflow node layout create <workflowId> --name "…" --empty
58
+
59
+ # 建完立刻排版;只摆指定字段(审批节点常见诉求)
60
+ e10-cli workflow node layout create <workflowId> --name "审批专用PC" --init --fields 报销单号 报销金额 关联客户
61
+
62
+ # 对已有布局重排(只动这一套)
63
+ e10-cli workflow node layout init <workflowId> <布局ID> [--fields …]
64
+
65
+ # 先看看这张表单有哪些字段可摆
66
+ e10-cli workflow node layout init <workflowId> x --list-fields
67
+ ```
68
+
69
+ `bind` / `unbind` **幂等**:节点本来就在目标状态时不发写请求,重复执行安全。
70
+
71
+ ### `create` 的两种模式:复制 vs 空白
72
+
73
+ | 模式 | 触发 | 结果 |
74
+ |---|---|---|
75
+ | **复制**(默认) | 不写 `--empty`;默认复制**表单默认布局**,可用 `--from <布局ID>` 换来源 | 内容与来源一致,拿到手就能微调 |
76
+ | **空白** | `--empty` | 字段与排版都是空的,全都要重新配 |
77
+
78
+ 同一份默认布局下的对比(内容体积):来源 28,941 / 复制出来 28,980 / **空白只有 5,622**。
79
+ 空白布局挂到节点上,该节点打开时**几乎什么都没有** —— 除非确实要从零设计,否则用默认的复制模式。
80
+
81
+ `--layout-type` 不写时**跟随来源布局的类型**(复制表格式布局就还是表格式),显式传则覆盖。
82
+ 平台设计器上的「新建」按钮走的是空白那条分支。
83
+
84
+ ### 只摆指定字段
85
+
86
+ `--init --fields A B C` 会让这套布局**只放这三个字段**。
87
+
88
+ **没摆的字段只是在这套布局里不显示,字段本身仍在表单上**,其它布局照旧 —— 已回读核对:
89
+ 过滤后目标布局 3 个组件,表单默认布局仍是完整的 17 个,一个没少。
90
+
91
+ 不传 `--fields` 就是把这套布局按全部字段重排。
92
+
93
+ ```bash
94
+ # 审批节点:只看单号/金额/客户
95
+ e10-cli workflow node layout create <workflowId> --name "审批专用PC" --init --fields 报销单号 报销金额 关联客户
96
+
97
+ # 事后改主意,重排成别的字段组合
98
+ e10-cli workflow node layout init <workflowId> <布局ID> --fields 报销单号 报销人
99
+ ```
100
+
101
+ 字段名写错会**直接报错并列出可用字段**,不会闷头建出一套空布局。
102
+ `--list-fields` 可以先看清单。
103
+
104
+ 删除布局用 `wf-form layout delete <formId> <layoutId>`。
105
+
106
+ ---
107
+
108
+ ## 三、典型用法
109
+
110
+ **给审批节点换一套只看关键字段的布局**
111
+
112
+ ```bash
113
+ # 1. 先建布局(表格式),建完在设计器里把需要的字段排好
114
+ e10-cli workflow node layout create <workflowId> --name "审批专用PC" --layout-type EXCEL
115
+
116
+ # 2. 从列表里拿到新布局的 ID
117
+ e10-cli workflow node layout list <workflowId>
118
+
119
+ # 3. 把审批节点挂上去
120
+ e10-cli workflow node layout bind <workflowId> <nodeId> --layout-id <新布局ID>
121
+
122
+ # 4. 核对
123
+ e10-cli workflow node layout get <workflowId> <nodeId>
124
+ ```
125
+
126
+ **改回默认**
127
+
128
+ ```bash
129
+ e10-cli workflow node layout unbind <workflowId> <nodeId>
130
+ ```
131
+
132
+ ---
133
+
134
+ ## 四、接口(排查用)
135
+
136
+ | 用途 | 接口 |
137
+ |---|---|
138
+ | 布局列表 | `POST /api/ebuilder/flow/form/layout/list` → `data.formLayoutMultiplePage.result[]` |
139
+ | 每套布局 ← 哪些节点 | `GET /api/bs/workflow/pathdef/pathLayoutManage/getLayoutInfoParams?terminalType&workflowId` → `formId` + `layoutReferNodeInfo` |
140
+ | 节点 → 哪套布局 | `GET /api/bs/workflow/pathdef/nodeLayout/getDisplayLayoutForm?workflowId&nodeId` → `layoutId`/`defaultLayoutId`/`mLayoutId`/`mLayoutMode` |
141
+ | 绑定 / 解绑 | `POST /api/bs/workflow/pathdef/form/layout/updateQuoteNode` |
142
+ | 新建布局 | `POST /api/ebuilder/flow/form/layout/save` |
143
+ | 布局内容 | `POST /api/ebuilder/form/builder/getFormLayout`(带 `layoutMultiId`;不传读默认) |
144
+
145
+ **新建布局的 `sourceId` 决定复制还是空白**:不传 `sourceId` 时服务端建出的是空壳,传了才按 `copyConfig` 复制。
146
+ `copyConfig` 四项全开才是完整复制(`{formDataLinkage, excelLinkage, viewLinkage, displayFormat}`)——
147
+ 少 `viewLinkage` / `displayFormat` 时复制出来的布局会缺视图关联与显示格式,体积只有完整复制的五分之一左右。
148
+
149
+ **`updateQuoteNode` 是整集合覆盖,不是增量追加**:
150
+
151
+ ```json
152
+ { "terminal": "PC", "workflowId": "…", "layoutId": "…",
153
+ "nodeIds": ["变更后该布局引用的全部节点"],
154
+ "sourceNodeIds": ["变更前的全部节点"] }
155
+ ```
156
+
157
+ 所以 CLI 的 `bind` 是「先读现状 → 加上这个节点 → 整包提交」。**不要**直接拿单个节点当 `nodeIds` 提交,
158
+ 否则该布局上原有的其它节点会被摘掉。
159
+
160
+ **重建布局必须走 ebuilder 路径**:`initLayout` 用 `/api/ebuilder/form/form/view/relate/initLayout`
161
+ (`module:"ebuilderform"`)。流程表单那套 `/api/workflow/core/form/...` 在 **eb 表关联流程**的表单上会直接
162
+ 回「无工作流修改权限或工作流维护权限」500,用不了 —— `wf-form layout init` 因此对这类表单不可用。
163
+
164
+ **「只摆某些字段」的实现**:`getConfig` 恒返回表单**全量**字段的 configs(与布局无关),
165
+ 过滤掉不要的再 `initLayout`,就是「这套布局只显示这些字段」。系统字段的 config 项保留(不会变成组件)。
166
+
167
+ **节点布局面板的完整定义**在 `getDisplayLayoutForm.displayLayoutForm` 里(`groups` / `layout` / `items`),
168
+ `items.layoutId.browserBean` 描述了 PC 端布局选择器(`module:"workflow/core"`, `type:"nodeLayoutBrowser"`,
169
+ 参数 `{formId, terminal, workflowId}`);`items.mLayoutMode` 是移动端那个 radio(`0`=独立布局 / `1`=读取PC端布局)。
170
+ 要确认面板上还有哪些可配项,读它比翻文档准。
171
+
172
+ ---
173
+
174
+ ## 五、与本文件其它节点的关系
175
+
176
+ | 功能 | 命令 | 说明 |
177
+ |---|---|---|
178
+ | 节点字段权限 | `workflow node field-permission` | 控制字段在节点上 显示/只读/必填 |
179
+ | 节点操作菜单 | `workflow node menu` | 节点上显示哪些操作按钮 |
180
+ | **节点独立布局** | `workflow node layout` | 节点上换一整套排版 |
181
+
182
+ 节点布局与字段权限是**叠加**的:布局管「字段怎么排」,字段权限管「字段能不能改」。
183
+ 两者都挂在同一条节点表单关联记录上,互不覆盖,可以同时用。
184
+
185
+ 字段权限的界面约束由命令自动收口:
186
+
187
+ - 勾选**编辑**(`--editable`)必定勾选**显示**;
188
+ - **禁止手动编辑**(`--disable-manual-edit`)只有在编辑勾选时才可设,命令会自动补上编辑与显示;
189
+ - 设为**只读**(`--readonly`)会清除「禁止手动编辑」——只读字段不存在这一项。
File without changes
File without changes
File without changes
File without changes
@@ -1,8 +0,0 @@
1
- const routes = [
2
- {
3
- fileName: "xxx.js",
4
- className: "xxx",
5
- }
6
- ];
7
-
8
- export default routes;