weaver-e10-builder 1.5.10 → 1.5.12

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 (352) hide show
  1. package/README.md +212 -189
  2. package/assets/image-style-observation.schema.json +1355 -0
  3. package/assets/layout-spec.schema.json +52 -0
  4. package/dist/commands/app.d.ts.map +1 -1
  5. package/dist/commands/app.js +159 -8
  6. package/dist/commands/app.js.map +1 -1
  7. package/dist/commands/designer-setters.d.ts.map +1 -1
  8. package/dist/commands/designer-setters.js +26 -4
  9. package/dist/commands/designer-setters.js.map +1 -1
  10. package/dist/commands/form-association-manage.d.ts.map +1 -1
  11. package/dist/commands/form-association-manage.js +3 -0
  12. package/dist/commands/form-association-manage.js.map +1 -1
  13. package/dist/commands/form-button-actions-cmd.d.ts +3 -0
  14. package/dist/commands/form-button-actions-cmd.d.ts.map +1 -0
  15. package/dist/commands/form-button-actions-cmd.js +309 -0
  16. package/dist/commands/form-button-actions-cmd.js.map +1 -0
  17. package/dist/commands/form-button-permission-cmd.d.ts +3 -0
  18. package/dist/commands/form-button-permission-cmd.d.ts.map +1 -0
  19. package/dist/commands/form-button-permission-cmd.js +132 -0
  20. package/dist/commands/form-button-permission-cmd.js.map +1 -0
  21. package/dist/commands/form-button-props-cmd.d.ts +3 -0
  22. package/dist/commands/form-button-props-cmd.d.ts.map +1 -0
  23. package/dist/commands/form-button-props-cmd.js +236 -0
  24. package/dist/commands/form-button-props-cmd.js.map +1 -0
  25. package/dist/commands/form-button.d.ts.map +1 -1
  26. package/dist/commands/form-button.js +82 -55
  27. package/dist/commands/form-button.js.map +1 -1
  28. package/dist/commands/form-field-linkage.d.ts +55 -0
  29. package/dist/commands/form-field-linkage.d.ts.map +1 -1
  30. package/dist/commands/form-field-linkage.js +1026 -12
  31. package/dist/commands/form-field-linkage.js.map +1 -1
  32. package/dist/commands/form-formula-linkage.d.ts +36 -0
  33. package/dist/commands/form-formula-linkage.d.ts.map +1 -1
  34. package/dist/commands/form-formula-linkage.js +256 -65
  35. package/dist/commands/form-formula-linkage.js.map +1 -1
  36. package/dist/commands/form-layout-restore.d.ts +3 -0
  37. package/dist/commands/form-layout-restore.d.ts.map +1 -0
  38. package/dist/commands/form-layout-restore.js +217 -0
  39. package/dist/commands/form-layout-restore.js.map +1 -0
  40. package/dist/commands/form-layout.d.ts.map +1 -1
  41. package/dist/commands/form-layout.js +11 -1
  42. package/dist/commands/form-layout.js.map +1 -1
  43. package/dist/commands/form-list-permission.d.ts.map +1 -1
  44. package/dist/commands/form-list-permission.js +29 -3
  45. package/dist/commands/form-list-permission.js.map +1 -1
  46. package/dist/commands/form-list-search-group.d.ts.map +1 -1
  47. package/dist/commands/form-list-search-group.js +66 -3
  48. package/dist/commands/form-list-search-group.js.map +1 -1
  49. package/dist/commands/form-list-utils.d.ts +14 -0
  50. package/dist/commands/form-list-utils.d.ts.map +1 -1
  51. package/dist/commands/form-list-utils.js +65 -4
  52. package/dist/commands/form-list-utils.js.map +1 -1
  53. package/dist/commands/form-message.d.ts.map +1 -1
  54. package/dist/commands/form-message.js +16 -4
  55. package/dist/commands/form-message.js.map +1 -1
  56. package/dist/commands/form-obj-meta.d.ts +12 -0
  57. package/dist/commands/form-obj-meta.d.ts.map +1 -0
  58. package/dist/commands/form-obj-meta.js +116 -0
  59. package/dist/commands/form-obj-meta.js.map +1 -0
  60. package/dist/commands/form-permission.d.ts +20 -0
  61. package/dist/commands/form-permission.d.ts.map +1 -1
  62. package/dist/commands/form-permission.js +69 -11
  63. package/dist/commands/form-permission.js.map +1 -1
  64. package/dist/commands/form-validate.d.ts.map +1 -1
  65. package/dist/commands/form-validate.js +167 -35
  66. package/dist/commands/form-validate.js.map +1 -1
  67. package/dist/commands/form.d.ts.map +1 -1
  68. package/dist/commands/form.js +26 -2
  69. package/dist/commands/form.js.map +1 -1
  70. package/dist/commands/menu-permission.d.ts.map +1 -1
  71. package/dist/commands/menu-permission.js +6 -7
  72. package/dist/commands/menu-permission.js.map +1 -1
  73. package/dist/commands/menu.d.ts.map +1 -1
  74. package/dist/commands/menu.js +68 -43
  75. package/dist/commands/menu.js.map +1 -1
  76. package/dist/commands/wf-form.d.ts.map +1 -1
  77. package/dist/commands/wf-form.js +269 -47
  78. package/dist/commands/wf-form.js.map +1 -1
  79. package/dist/commands/workflow-function-management.d.ts +5 -0
  80. package/dist/commands/workflow-function-management.d.ts.map +1 -0
  81. package/dist/commands/workflow-function-management.js +91 -0
  82. package/dist/commands/workflow-function-management.js.map +1 -0
  83. package/dist/commands/workflow-node-assign-flow.d.ts.map +1 -1
  84. package/dist/commands/workflow-node-assign-flow.js +1 -0
  85. package/dist/commands/workflow-node-assign-flow.js.map +1 -1
  86. package/dist/commands/workflow-node-sign.d.ts +0 -12
  87. package/dist/commands/workflow-node-sign.d.ts.map +1 -1
  88. package/dist/commands/workflow-node-sign.js +31 -102
  89. package/dist/commands/workflow-node-sign.js.map +1 -1
  90. package/dist/commands/workflow-opinion-settings.d.ts +5 -0
  91. package/dist/commands/workflow-opinion-settings.d.ts.map +1 -0
  92. package/dist/commands/workflow-opinion-settings.js +51 -0
  93. package/dist/commands/workflow-opinion-settings.js.map +1 -0
  94. package/dist/commands/workflow-subprocess.d.ts.map +1 -1
  95. package/dist/commands/workflow-subprocess.js +370 -20
  96. package/dist/commands/workflow-subprocess.js.map +1 -1
  97. package/dist/commands/workflow.d.ts.map +1 -1
  98. package/dist/commands/workflow.js +35 -61
  99. package/dist/commands/workflow.js.map +1 -1
  100. package/dist/core/client.d.ts +2 -1
  101. package/dist/core/client.d.ts.map +1 -1
  102. package/dist/core/client.js +4 -2
  103. package/dist/core/client.js.map +1 -1
  104. package/dist/index.js +6 -0
  105. package/dist/index.js.map +1 -1
  106. package/dist/services/actionflow/calendar_mapper.d.ts.map +1 -1
  107. package/dist/services/actionflow/calendar_mapper.js +64 -18
  108. package/dist/services/actionflow/calendar_mapper.js.map +1 -1
  109. package/dist/services/actionflow/component_registry.d.ts.map +1 -1
  110. package/dist/services/actionflow/component_registry.js +6 -0
  111. package/dist/services/actionflow/component_registry.js.map +1 -1
  112. package/dist/services/actionflow/components/document_actions.d.ts.map +1 -1
  113. package/dist/services/actionflow/components/document_actions.js +113 -4
  114. package/dist/services/actionflow/components/document_actions.js.map +1 -1
  115. package/dist/services/actionflow/components/eb_get_data_by_id.d.ts.map +1 -1
  116. package/dist/services/actionflow/components/eb_get_data_by_id.js +18 -1
  117. package/dist/services/actionflow/components/eb_get_data_by_id.js.map +1 -1
  118. package/dist/services/actionflow/components/index.d.ts.map +1 -1
  119. package/dist/services/actionflow/components/index.js +2 -1
  120. package/dist/services/actionflow/components/index.js.map +1 -1
  121. package/dist/services/actionflow/components/meeting_create.d.ts.map +1 -1
  122. package/dist/services/actionflow/components/meeting_create.js +5 -1
  123. package/dist/services/actionflow/components/meeting_create.js.map +1 -1
  124. package/dist/services/actionflow/components/schedule_create.d.ts.map +1 -1
  125. package/dist/services/actionflow/components/schedule_create.js +22 -6
  126. package/dist/services/actionflow/components/schedule_create.js.map +1 -1
  127. package/dist/services/actionflow/components/workflow_actions.d.ts +1 -0
  128. package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
  129. package/dist/services/actionflow/components/workflow_actions.js +44 -7
  130. package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
  131. package/dist/services/actionflow/document_source.d.ts +5 -0
  132. package/dist/services/actionflow/document_source.d.ts.map +1 -1
  133. package/dist/services/actionflow/document_source.js +16 -0
  134. package/dist/services/actionflow/document_source.js.map +1 -1
  135. package/dist/services/actionflow/formula_service.d.ts +7 -0
  136. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  137. package/dist/services/actionflow/formula_service.js +44 -8
  138. package/dist/services/actionflow/formula_service.js.map +1 -1
  139. package/dist/services/actionflow/preflight_service.d.ts +5 -0
  140. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  141. package/dist/services/actionflow/preflight_service.js +127 -2
  142. package/dist/services/actionflow/preflight_service.js.map +1 -1
  143. package/dist/services/actionflow/save_workflow_draft.d.ts +7 -0
  144. package/dist/services/actionflow/save_workflow_draft.d.ts.map +1 -1
  145. package/dist/services/actionflow/save_workflow_draft.js +1 -1
  146. package/dist/services/actionflow/save_workflow_draft.js.map +1 -1
  147. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  148. package/dist/services/actionflow/workflow_compiler.js +26 -0
  149. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  150. package/dist/services/app-publish.d.ts +25 -0
  151. package/dist/services/app-publish.d.ts.map +1 -1
  152. package/dist/services/app-publish.js +38 -0
  153. package/dist/services/app-publish.js.map +1 -1
  154. package/dist/services/app-range.d.ts +66 -0
  155. package/dist/services/app-range.d.ts.map +1 -0
  156. package/dist/services/app-range.js +137 -0
  157. package/dist/services/app-range.js.map +1 -0
  158. package/dist/services/form-association.d.ts +13 -0
  159. package/dist/services/form-association.d.ts.map +1 -1
  160. package/dist/services/form-association.js +42 -0
  161. package/dist/services/form-association.js.map +1 -1
  162. package/dist/services/form-button-action.d.ts +82 -0
  163. package/dist/services/form-button-action.d.ts.map +1 -1
  164. package/dist/services/form-button-action.js +194 -2
  165. package/dist/services/form-button-action.js.map +1 -1
  166. package/dist/services/form-button-condition.d.ts +45 -0
  167. package/dist/services/form-button-condition.d.ts.map +1 -0
  168. package/dist/services/form-button-condition.js +106 -0
  169. package/dist/services/form-button-condition.js.map +1 -0
  170. package/dist/services/form-button-context.d.ts +41 -0
  171. package/dist/services/form-button-context.d.ts.map +1 -0
  172. package/dist/services/form-button-context.js +54 -0
  173. package/dist/services/form-button-context.js.map +1 -0
  174. package/dist/services/form-button-logicflow.d.ts +30 -0
  175. package/dist/services/form-button-logicflow.d.ts.map +1 -0
  176. package/dist/services/form-button-logicflow.js +59 -0
  177. package/dist/services/form-button-logicflow.js.map +1 -0
  178. package/dist/services/form-button-org.d.ts +30 -0
  179. package/dist/services/form-button-org.d.ts.map +1 -0
  180. package/dist/services/form-button-org.js +80 -0
  181. package/dist/services/form-button-org.js.map +1 -0
  182. package/dist/services/form-button-permission.d.ts +65 -0
  183. package/dist/services/form-button-permission.d.ts.map +1 -0
  184. package/dist/services/form-button-permission.js +113 -0
  185. package/dist/services/form-button-permission.js.map +1 -0
  186. package/dist/services/form-button-position.d.ts +4 -18
  187. package/dist/services/form-button-position.d.ts.map +1 -1
  188. package/dist/services/form-button-position.js +4 -36
  189. package/dist/services/form-button-position.js.map +1 -1
  190. package/dist/services/form-button-props.d.ts +55 -0
  191. package/dist/services/form-button-props.d.ts.map +1 -0
  192. package/dist/services/form-button-props.js +90 -0
  193. package/dist/services/form-button-props.js.map +1 -0
  194. package/dist/services/form-button-save.d.ts +49 -0
  195. package/dist/services/form-button-save.d.ts.map +1 -0
  196. package/dist/services/form-button-save.js +54 -0
  197. package/dist/services/form-button-save.js.map +1 -0
  198. package/dist/services/form-formula-linkage.d.ts +120 -20
  199. package/dist/services/form-formula-linkage.d.ts.map +1 -1
  200. package/dist/services/form-formula-linkage.js +253 -39
  201. package/dist/services/form-formula-linkage.js.map +1 -1
  202. package/dist/services/form-layout-io.d.ts +18 -0
  203. package/dist/services/form-layout-io.d.ts.map +1 -0
  204. package/dist/services/form-layout-io.js +89 -0
  205. package/dist/services/form-layout-io.js.map +1 -0
  206. package/dist/services/form-layout-source/artifact.d.ts +8 -0
  207. package/dist/services/form-layout-source/artifact.d.ts.map +1 -0
  208. package/dist/services/form-layout-source/artifact.js +52 -0
  209. package/dist/services/form-layout-source/artifact.js.map +1 -0
  210. package/dist/services/form-layout-source/binding.d.ts +10 -0
  211. package/dist/services/form-layout-source/binding.d.ts.map +1 -0
  212. package/dist/services/form-layout-source/binding.js +43 -0
  213. package/dist/services/form-layout-source/binding.js.map +1 -0
  214. package/dist/services/form-layout-source/compile.d.ts +7 -0
  215. package/dist/services/form-layout-source/compile.d.ts.map +1 -0
  216. package/dist/services/form-layout-source/compile.js +262 -0
  217. package/dist/services/form-layout-source/compile.js.map +1 -0
  218. package/dist/services/form-layout-source/creation.d.ts +18 -0
  219. package/dist/services/form-layout-source/creation.d.ts.map +1 -0
  220. package/dist/services/form-layout-source/creation.js +42 -0
  221. package/dist/services/form-layout-source/creation.js.map +1 -0
  222. package/dist/services/form-layout-source/excel-extractor.d.ts +7 -0
  223. package/dist/services/form-layout-source/excel-extractor.d.ts.map +1 -0
  224. package/dist/services/form-layout-source/excel-extractor.js +342 -0
  225. package/dist/services/form-layout-source/excel-extractor.js.map +1 -0
  226. package/dist/services/form-layout-source/image-border.d.ts +9 -0
  227. package/dist/services/form-layout-source/image-border.d.ts.map +1 -0
  228. package/dist/services/form-layout-source/image-border.js +128 -0
  229. package/dist/services/form-layout-source/image-border.js.map +1 -0
  230. package/dist/services/form-layout-source/image-observation.d.ts +14 -0
  231. package/dist/services/form-layout-source/image-observation.d.ts.map +1 -0
  232. package/dist/services/form-layout-source/image-observation.js +90 -0
  233. package/dist/services/form-layout-source/image-observation.js.map +1 -0
  234. package/dist/services/form-layout-source/image-review.d.ts +32 -0
  235. package/dist/services/form-layout-source/image-review.d.ts.map +1 -0
  236. package/dist/services/form-layout-source/image-review.js +266 -0
  237. package/dist/services/form-layout-source/image-review.js.map +1 -0
  238. package/dist/services/form-layout-source/image-style.d.ts +16 -0
  239. package/dist/services/form-layout-source/image-style.d.ts.map +1 -0
  240. package/dist/services/form-layout-source/image-style.js +539 -0
  241. package/dist/services/form-layout-source/image-style.js.map +1 -0
  242. package/dist/services/form-layout-source/json.d.ts +3 -0
  243. package/dist/services/form-layout-source/json.d.ts.map +1 -0
  244. package/dist/services/form-layout-source/json.js +33 -0
  245. package/dist/services/form-layout-source/json.js.map +1 -0
  246. package/dist/services/form-layout-source/presentation.d.ts +23 -0
  247. package/dist/services/form-layout-source/presentation.d.ts.map +1 -0
  248. package/dist/services/form-layout-source/presentation.js +174 -0
  249. package/dist/services/form-layout-source/presentation.js.map +1 -0
  250. package/dist/services/form-layout-source/preview.d.ts +4 -0
  251. package/dist/services/form-layout-source/preview.d.ts.map +1 -0
  252. package/dist/services/form-layout-source/preview.js +49 -0
  253. package/dist/services/form-layout-source/preview.js.map +1 -0
  254. package/dist/services/form-layout-source/schema.d.ts +20 -0
  255. package/dist/services/form-layout-source/schema.d.ts.map +1 -0
  256. package/dist/services/form-layout-source/schema.js +149 -0
  257. package/dist/services/form-layout-source/schema.js.map +1 -0
  258. package/dist/services/form-layout-source/source-grid.d.ts +8 -0
  259. package/dist/services/form-layout-source/source-grid.d.ts.map +1 -0
  260. package/dist/services/form-layout-source/source-grid.js +61 -0
  261. package/dist/services/form-layout-source/source-grid.js.map +1 -0
  262. package/dist/services/form-layout-source/types.d.ts +242 -0
  263. package/dist/services/form-layout-source/types.d.ts.map +1 -0
  264. package/dist/services/form-layout-source/types.js +2 -0
  265. package/dist/services/form-layout-source/types.js.map +1 -0
  266. package/dist/services/form-layout-source/verify.d.ts +14 -0
  267. package/dist/services/form-layout-source/verify.d.ts.map +1 -0
  268. package/dist/services/form-layout-source/verify.js +226 -0
  269. package/dist/services/form-layout-source/verify.js.map +1 -0
  270. package/dist/services/form-list-search-group.d.ts +17 -2
  271. package/dist/services/form-list-search-group.d.ts.map +1 -1
  272. package/dist/services/form-list-search-group.js +29 -12
  273. package/dist/services/form-list-search-group.js.map +1 -1
  274. package/dist/services/form-list-search.d.ts.map +1 -1
  275. package/dist/services/form-list-search.js +4 -0
  276. package/dist/services/form-list-search.js.map +1 -1
  277. package/dist/services/form-list-stats.d.ts.map +1 -1
  278. package/dist/services/form-list-stats.js +9 -2
  279. package/dist/services/form-list-stats.js.map +1 -1
  280. package/dist/services/form-message.d.ts +26 -7
  281. package/dist/services/form-message.d.ts.map +1 -1
  282. package/dist/services/form-message.js +52 -5
  283. package/dist/services/form-message.js.map +1 -1
  284. package/dist/services/form-obj-meta.d.ts +72 -0
  285. package/dist/services/form-obj-meta.d.ts.map +1 -0
  286. package/dist/services/form-obj-meta.js +103 -0
  287. package/dist/services/form-obj-meta.js.map +1 -0
  288. package/dist/services/form-permission-archive.d.ts +9 -1
  289. package/dist/services/form-permission-archive.d.ts.map +1 -1
  290. package/dist/services/form-permission-archive.js +38 -22
  291. package/dist/services/form-permission-archive.js.map +1 -1
  292. package/dist/services/form-view-populate.d.ts.map +1 -1
  293. package/dist/services/form-view-populate.js +7 -0
  294. package/dist/services/form-view-populate.js.map +1 -1
  295. package/dist/services/icon-path.d.ts +70 -0
  296. package/dist/services/icon-path.d.ts.map +1 -0
  297. package/dist/services/icon-path.js +80 -0
  298. package/dist/services/icon-path.js.map +1 -0
  299. package/dist/services/matrix-condition.d.ts +161 -0
  300. package/dist/services/matrix-condition.d.ts.map +1 -0
  301. package/dist/services/matrix-condition.js +403 -0
  302. package/dist/services/matrix-condition.js.map +1 -0
  303. package/dist/services/menu-catalog.d.ts +33 -0
  304. package/dist/services/menu-catalog.d.ts.map +1 -1
  305. package/dist/services/menu-catalog.js +56 -0
  306. package/dist/services/menu-catalog.js.map +1 -1
  307. package/dist/services/permission-entity.d.ts +55 -0
  308. package/dist/services/permission-entity.d.ts.map +1 -0
  309. package/dist/services/permission-entity.js +79 -0
  310. package/dist/services/permission-entity.js.map +1 -0
  311. package/dist/services/validate-help.d.ts +25 -0
  312. package/dist/services/validate-help.d.ts.map +1 -0
  313. package/dist/services/validate-help.js +29 -0
  314. package/dist/services/validate-help.js.map +1 -0
  315. package/dist/services/workflow-assign-flow.d.ts.map +1 -1
  316. package/dist/services/workflow-assign-flow.js.map +1 -1
  317. package/dist/services/workflow-function-management.d.ts +123 -0
  318. package/dist/services/workflow-function-management.d.ts.map +1 -0
  319. package/dist/services/workflow-function-management.js +425 -0
  320. package/dist/services/workflow-function-management.js.map +1 -0
  321. package/dist/services/workflow-matrix-rule.d.ts +34 -0
  322. package/dist/services/workflow-matrix-rule.d.ts.map +1 -0
  323. package/dist/services/workflow-matrix-rule.js +94 -0
  324. package/dist/services/workflow-matrix-rule.js.map +1 -0
  325. package/dist/services/workflow-opinion-settings.d.ts +67 -0
  326. package/dist/services/workflow-opinion-settings.d.ts.map +1 -0
  327. package/dist/services/workflow-opinion-settings.js +328 -0
  328. package/dist/services/workflow-opinion-settings.js.map +1 -0
  329. package/package.json +3 -1
  330. package/skill-docs/SKILL.md +15 -6
  331. package/skill-docs/_catalog.md +4 -0
  332. package/skill-docs/actionflows/references/components/calendar/MeetingCreate.md +2 -0
  333. package/skill-docs/actionflows/references/components/document/DocumentSave.md +17 -17
  334. package/skill-docs/actionflows/references/components/workflow/ApproveCompletelyDelete.md +29 -0
  335. package/skill-docs/actionflows/references/components/workflow/ApproveDelete.md +2 -2
  336. package/skill-docs/assets/schemas/image-style-observation.schema.json +1355 -0
  337. package/skill-docs/references/common/guide-plan-template.md +3 -0
  338. package/skill-docs/references/common/ref-cli-commands.md +77 -26
  339. package/skill-docs/references/ebuilder-designer/guide-designer-components.md +9 -0
  340. package/skill-docs/references/form/guide-create-form.md +2 -0
  341. package/skill-docs/references/form/guide-field-linkage.md +140 -55
  342. package/skill-docs/references/form/guide-form-archive-permission.md +55 -2
  343. package/skill-docs/references/form/guide-form-association.md +13 -0
  344. package/skill-docs/references/form/guide-form-button.md +87 -0
  345. package/skill-docs/references/form/guide-form-layout-planning.md +6 -0
  346. package/skill-docs/references/form/guide-form-layout-source.md +366 -0
  347. package/skill-docs/references/form/guide-form-message.md +19 -2
  348. package/skill-docs/references/form/guide-form-view.md +24 -4
  349. package/skill-docs/references/form/guide-formula-linkage.md +86 -12
  350. package/skill-docs/references/workflow/guide-function-management.md +154 -0
  351. package/skill-docs/references/workflow/guide-opinion-settings.md +126 -0
  352. package/skill-docs/references/workflow/guide-workflow.md +22 -6
@@ -54,6 +54,8 @@
54
54
 
55
55
  > 样表有标题、分组、空白、字段同排或跨列时逐行保留,并与字段清单互相核对。缺少的合并范围标待确认。建新表时按蓝图准备 fields.json,按所选布局创建并初始化;公式、联动、校验等后续配置在功能批次单列。
56
56
 
57
+ - 明确还原图片/XLSX源样式时,另记录源哈希、LayoutSpec、已有字段绑定、编译产物和独立回读结果。字段创建完成与布局还原通过分别勾选;未匹配、未支持项不能合并销号。相关指南为 `form/guide-form-layout-source.md`,精确保存晚于字段补写和归组重排。
58
+
57
59
  #### 1.2 视图与流程设计依据
58
60
  - 每张视图:所属表单、默认/新增、视图类型、终端、名称、数据范围及需要的显示列/交互要求。
59
61
  - 每个流程:表单来源、节点、操作者及签署方式、全部连线、默认出口、逐条条件、节点显示属性和动作流落点。普通流程和权责表流程分别按对应指南列出;权责表逐场景写说明、条件、经过节点及顺序,独立复用时写变量→主/明细字段映射。
@@ -154,6 +156,7 @@
154
156
  - 第一阶段:全部应建表单的字段、明细、布局和默认台账已核对;表单级与视图级需求逐项销号,后续流程依赖已标注。
155
157
  - 第二阶段:流程结构、关键条件、操作者及动作流已核对;第一阶段的流程依赖项已回填。
156
158
  - 第三阶段:报表、菜单和页面入口已核对;交付时列出应用→表单→视图、流程、矩阵、报表、页面的真实 ID 与未完成项。
159
+
157
160
  ```
158
161
 
159
162
  ## 使用边界
@@ -45,7 +45,8 @@
45
45
  | `e10-cli app enable <appId>` | 启用应用。`read` 里的 `publishEnabled`:1=已启用 / 2=已停用 / 0=从未启用 |
46
46
  | `e10-cli app disable <appId>` | 停用应用。⚠ **会连带收回已发布到前台的入口** —— 不是「临时关一下、发布态还在」 |
47
47
  | `e10-cli app publish <appId> [--name] [--description] [--category]` | 发布到**前台**(应用中心出现入口,地址 `/ebdapp/view/<appId>`)。需先 `enable`。`--category` 取汇报/协作/HRM/审批/数据协作/综合办公/CRM/自定义,缺省「自定义」。⚠ **每次发布生成新的前台 id**,取消后重发不沿用旧号 |
48
- | `e10-cli app publish-info <appId> [--name] [--description] [--category]` | 改**前台那份**配置(不动应用本身的名称描述,那用 `app edit`)。需先 `publish`;不指定分类则沿用现有 |
48
+ | `e10-cli app publish-info <appId> [--name] [--description] [--category] [--short-name] [--clients pc\|mobile\|all]` | 改**前台那份**配置(不动应用本身的名称描述,那用 `app edit`)。需先 `publish`;不指定分类则沿用现有。**一个编辑项都不给 = 只查看当前发布信息**(打印前台显示名/简称/简介/适用端/使用范围)。`--short-name` 改**简称**(`sysMenus.shortname`,与显示名各自独立;改 `--name` 时若没单独给 `--short-name`,简称跟着走)。`--clients` 改**适用端**(`sysMenus.applyClient`:`pc`=仅PC / `all`=PC+移动 / `mobile`=仅移动端,也认中文) |
49
+ | `e10-cli app range <appId> [--client pc\|mobile] [--add-user <名或ID>] [--add-dept …] [--add-role …] [--add-position …] [--add-all] [--remove <序号\|id>] [--clear]` | 前台应用的**使用范围** —— ⚠ **每一端各自一套**,用 `--client` 选终端(缺省 PC)。**不走 `saveCustomApplication`**,是独立一族 `appmanage/permission/table/{list,batchAdd,delete}`,定位用 `appModuleLink.amId`,终端维度的编码是 `permissionType`(0=PC / 2=移动端)。授权对象支持 人员 / 部门 / 角色 / 岗位 / 所有人 五类,主体写名称或 ID(同名多条报错不取首条)。加/删都**回读校验**(新增行的 id 是平台现分配的,按「类型+名字」核对) |
49
50
  | `e10-cli app unpublish <appId>` | 取消发布(收回前台入口)。⚠ **不可逆、无回收站**;重新发布是新入口。回读确认入口确实没了才报成功 |
50
51
  | `e10-cli app lang get <appId>` | 查看应用名各语言译文 |
51
52
  | `e10-cli app lang set <appId> [--zh] [--en]` | 设置应用名多语言。**简体中文那档就是应用名本身**;只给 `--en` 不会清空中文(内部先读回再整份写回)。改应用名(`app edit --name`)不动多语言配置 |
@@ -74,9 +75,12 @@
74
75
  | `e10-cli form relate <appId> <objId> <目标字段> --from <源字段>` | **HRM 值带出联动**:源字段为表内 Employee(人员)或 Department(部门)类型,换源自动填目标字段(换申请人→填邮箱/工号/部门;换所属部门→填部门编号/上级部门)。`--key` 从平台清单校验(默认 Employee=department、Department=name),`--title` 指定显示名(默认属性中文名)。详见 `form/guide-form-linkage.md` |
75
76
  | `e10-cli form delete-field <objId> <appId> <fieldId...>` | **删除字段**(可一次多个,批量)。**仍被布局引用的字段平台不允许删除**(报「当前字段已被布局引用,不允许删除」);加 `--force` 时 CLI 先从布局移除再重试——会**连字段的标题组件一起摘**(一个字段在布局里是「字段本体 + 标题标签」两个组件),否则表单上会留下孤儿标签。字段**有数据**时同样删不掉 |
76
77
  | `e10-cli form delete <objId> <appId>` | 删除**整个表单**(不是字段;删字段用上面的 delete-field) |
78
+ | `e10-cli form rename <objId> <appId> <新名称>` | 修改**表单名称**。⚠ 表单名称与**自定义标题**是分开的两套(标题用 `form title`),两者不一致属正常状态,不是漏改。平台该接口是整对象覆盖,命令内部**先读回完整对象、只换名称、再整体回写**,不会清掉其它配置;改完回读校验。改名称**不影响**标题 |
79
+ | `e10-cli form title get <objId> <appId>` | 查看**表单自定义标题**:标题文本、表单页面名、是否隐藏页面头部 / 隐藏表单标题、页面名是否全含 |
80
+ | `e10-cli form title set <objId> <appId> [--show-name <文本>] [--form-page-name <文本>] [--hide-header\|--no-hide-header] [--hide-title\|--no-hide-title] [--page-name-all-in 0\|1]` | 修改自定义标题(至少要给一项)。先读回现有标题、叠上改动再整份提交,改完逐项回读校验。⚠ **标题处于隐藏状态时,改了标题文本界面上也看不出变化**(`get` 会提示) |
77
81
  | `e10-cli form permission data add <objId> <appId> --org-type <类型> [--org-id <id>] --rights <view/edit/delete...> [--file-rights <view/download...>]` | **表单数据权限**,`1/view=查看`、`2/edit=编辑`、`3/delete=删除`,可任意组合;附件 `401/view=查看`、`402/download=下载`。固定写入 `obj_data_admin` 并按新增权限 ID 回读。授权对象支持 all/role/department/company/employee/group/post;all 的 orgId 自动为 0 |
78
82
  | `e10-cli form permission imp-exp <list\|add> <objId> <appId> ...` | **导入导出权限**(独立分类 `data_imp_exp`,⚠ 勿用 `data add` 加——共享权限只有 查看/编辑/删除 三种,导出/导入不在其中)。`list` 查看;`add --org-type <类型> [--org-id] --rights <export/import/delete-import...> [--update-import] [--export-details] [--export-attachment] [--export-field-range listShowField|all]`。`export=8`、`import=9`、`delete-import=93`(93 须与 import 同选,自动带更新导入);添加后按权限 ID 回读 `impRightList` 校验。删除同 `permission remove --right-id` |
79
- | `e10-cli form permission archive <list\|add\|remove\|card> <objId> <appId> --workflow <workflowId>` | **流程归档权限**(归档后数据对谁可见/可改/可删,**按流程各一套**,与共享权限不同)。`add --target <general/creator/field/matrix>`:`general` 通用对象配 `--org-type`+`--org-id`;`creator` 创建人相关配 `--creator-related 0~7`;`field` 字段相关配 `--field <字段id或名>`(`--sub-form-id` 支持明细字段,未收录的字段类型需 `--org-type field_xxx` 显式指定);`matrix` 矩阵相关配 `--matrix`(真矩阵)或 `--eb-form`(e-Builder 表单)+ `--matrix-value`。权限码 `5/view` 归档查看、`6/edit` 归档编辑、`7/delete` 归档删除;归档附件另算 `501/view`、`502/download`、`503/edit`(**不是**共享权限的 401/402)。保存后按 ID 回读逐项核对;`card <workflowId> <appId> [--set 0\|1]` 读写归档卡片开关。详见 `form/guide-form-archive-permission.md` |
83
+ | `e10-cli form permission archive <list\|add\|remove\|card> <objId> <appId> --workflow <workflowId>` | **流程归档权限**(归档后数据对谁可见/可改/可删,**按流程各一套**,与共享权限不同)。`add --target <general/creator/field/matrix>`:`general` 通用对象配 `--org-type`+`--org-id`;`creator` 创建人相关配 `--creator-related 0~7`;`field` 字段相关配 `--field <字段id或名>`(`--sub-form-id` 支持明细字段,未收录的字段类型需 `--org-type field_xxx` 显式指定);`matrix` 矩阵相关配 `--matrix`(真矩阵)或 `--eb-form`(e-Builder 表单)+ `--matrix-value`,另可加**矩阵条件** `--matrix-condition '<json>'`(可重复 / `@文件` 给数组;右值三选一 `value` 固定值 / `field` 引本表单字段 / `fieldRef` 直给字段描述符)+ `--matrix-condition-relation and\|or`。权限码 `5/view` 归档查看、`6/edit` 归档编辑、`7/delete` 归档删除;归档附件另算 `501/view`、`502/download`、`503/edit`(**不是**共享权限的 401/402)。保存后按 ID 回读逐项核对;`card <workflowId> <appId> [--set 0\|1]` 读写归档卡片开关。详见 `form/guide-form-archive-permission.md` |
80
84
  | `e10-cli form permission <list\|add\|remove\|rebuild> <objId> <appId>` | 权限通用管理及兼容入口。新建权限与数据权限分开;旧 `add --right-type` 保留兼容。`list` 查看全部分类;`remove --right-id <id[,id...]>` 删除一条或多条权限;添加后提示 `isShowRebuild=2` 时执行 `rebuild` |
81
85
  | `e10-cli form list-view <objId> <appId>` | 查看台账/数据列表(获取 viewId 用于菜单配置) |
82
86
  | `e10-cli form list-columns <objId> <appId> <listId> [--add <fieldId...>] [--remove <fieldId...>] [--set @columns.json] [--terminal pc/mobile] [--pc-only]` | 查看/批量设置台账显示列。增量追加、移除或整组指定顺序/列宽/格式;整组模式与增删互斥。支持主表和明细子字段,保留已有列未指定属性、事件及数据主键;一次保存并回读核对目标列和另一终端。详见 `references/form/guide-list-columns.md` |
@@ -85,7 +89,7 @@
85
89
  | `e10-cli form list-click <objId> <appId> <listId> <fieldId> [--target <formObjId>] [--open-mode <模式>] [--win-size <尺寸>] [--clear] [--pc-only]` | 设置台账列**点击跳转**。`--open-mode` 支持当前页面/新窗口/弹出窗口/右侧滑出/右侧推出;`--win-size` 仅用于滑出/推出,具体数值按需求填写:百分比使用 `%`(0~100),像素使用 `px`,两种单位不可混用。缺省 `800px` |
86
90
  | `e10-cli form ebuilder-columns <objId> <appId> <fieldId> [字段名/ID...] [--clear]` | 设置 EBuilder 关联字段的**浏览显示列**(存在字段配置 `ffDisplayColumns:{id,name}[]`)。**缺省查看**:列出当前显示列 + 目标表单全部**业务字段候选**(系统字段已自动过滤,不设显示列时浏览走平台默认列会带系统字段);**传目标表业务字段名/ID 设置**,系统字段会被拦截提示"系统字段不能设为显示列";`--clear` 清空。关联浏览显示哪些字段(只留业务字段) |
87
91
  | `e10-cli form ebuilder-scope <get\|set\|clear> <objId> <appId> <fieldId>` | **浏览数据定义 → 数据范围设置**(关联浏览字段,限定被关联数据须满足条件才可选,如关联客户只选"客户状态=启用"的)。走 `browserDataScope` 接口(独立于字段布局)。`set --rules '[{"field":"客户状态","operator":"eq","value":"启用"}]'`(选项类 value 用选项名,CLI 自动解析 valueKey);`--logic and/or` 多规则关系;`--fill-null` 关联字段为空时填充;`get` 读已设条件;`clear` 清空。**这是关联浏览筛选的正解**,旧 `ebuilder-filter` 走 layout/save 不被设计器识别 |
88
- | `e10-cli form validate list <objId> <appId>` | 查看表单**查重规则**(字段重复校验,多字段 AND)。`add <objId> <appId> <字段名...> [--help 提示] [--remind]` 新增(缺省禁止提交 NOSUBMISSION,`--remind` 仅提醒)。**`--help` 会建成多语言标签、存的是标签 id**(平台只收 id,传文本会被拒「提示内容格式不正确」;`list` 会解回文本显示,缓存原因刚建完约 10 秒内可能仍显示 id);`delete <objId> <appId> <ruleId>` 删除。项目名称重名/工时日期重复不允许 |
92
+ | `e10-cli form validate list <objId> <appId>` | 查看表单**查重规则**(字段重复校验,多字段 AND)。`add <objId> <appId> <字段名...> [--help 提示] [--remind]` 新增(缺省禁止提交 NOSUBMISSION,`--remind` 仅提醒)。**`--help` 会建成多语言标签、存的是标签 id**(平台只收 id,传文本会被拒「提示内容格式不正确」;`list` 会解回文本显示,缓存原因刚建完约 10 秒内可能仍显示 id);`update <objId> <appId> <ruleId> [--fields <名...>] [--help <文本>] [--remind\|--no-remind]` **修改**(只改传入项,其余保持;**checkFields 是整组替换**,命令内部会把完整字段一起回传,不会丢字段;`--help` 支持 `#[字段名]#` 插入变量,自动转成平台片段 `<a>#[字段id]#</a>`,也支持 `@文件`);`delete <objId> <appId> <ruleId>` 删除。项目名称重名/工时日期重复不允许 |
89
93
  | `e10-cli form add-detail-table <objId> <appId> <明细表名> [首字段名] [--init]` | 给**已存在的主表**加明细子表(saveSubForm 建子表 + 加首字段使其可见)。`--data-key <物理表名>`、`--first-field-type <类型>`(默认 Text)。⚠ **空子表平台会过滤掉、布局里看不见**,首字段名强烈建议传;`--init` 建完把 DetailTable 组件放进布局。后续往明细里加字段用 `form add-field --sub-form-id <subFormId>`:建表时一次性带明细用 `form create` 的 fields.json `DetailTable`+`formFields` |
90
94
  | `e10-cli form delete-detail-table <objId> <appId> <subFormId\|明细表名>` | **删除明细表**(连带表里的字段)。平台不允许删**仍被布局引用**的明细表(报「当前【X】明细表已被布局引用,不允许删除」)—— 明细表只要在表单上就必然被引用,所以多数情况要加 `--force`:先把这张表的组件(本体 + 每列的「字段本体 + 标题标签」)从布局摘掉、清掉 workbook 里的残留,再删。删除是**软删**,记录仍在但不再算数 |
91
95
  | `e10-cli form physical-table list <objId> <appId>` | 列出表单的**全部物理表**(含主表),带 `formTableId` / 显示名 / 库表名 / 表类型(`MAIN`\|`SUBSIDIARY`) / 字段数。走 `getFormAGroupList`(设计器「字段管理」那排 chip 的数据源)。**只列物理表**,明细表要用 `form detail-table list` |
@@ -101,8 +105,8 @@
101
105
  | `e10-cli form list-event <objId> <appId> <listId> [--add-page '<json>'] [--add-field '<json>'] [--open-mode <模式>] [--modal-width <pct>] [--modal-height <pct>] [--win-size <pct>] [--clear] [--pc-only]` | 查看/配置**行事件**(点击行数据 NewPage 打开表单布局)。`--add-page '{"pageId":"1/<objId>","pageName":"新建数据","openMode":"右侧滑出"}'` 选页面方式(pageId 缺省 `1/<objId>` 新建布局,`0/<objId>`=显示布局)、`--add-field '{"urlFieldId":"字段id"}'` 选字段方式(URL取自行内字段值,urlFieldText/Type自动补)、`--clear` 清空。**打开方式** `--open-mode`(或在 JSON 里写 `openMode`):当前页面/新窗口/弹出窗口/右侧滑出(缺省)/右侧推出;弹出/滑出/推出 用 `--modal-width`/`--modal-height`(缺省 50%),滑出/推出 用 `--win-size`(缺省 100%)。走 saveNListConfig config.eventGroup(明文 JSON,config+mConfig 都写)。**自动保留移动端配置** |
102
106
  | `e10-cli form list-group <objId> <appId> <listId> [--enable --group-field <fieldId> [--group-size N]] [--disable] [--pc-only]` | 查看/配置**启用分组**(台账按某字段分组聚合显示)。`--enable --group-field <分组字段id> [--group-size N 默认100]` 启用/换分组字段、`--disable` 禁用(保留 groupField/groupSize 仅 enable=false)。走 saveNListConfig config.enableGroup(对象,持久化,不走 layout/save LZW)。**自动保留移动端配置** |
103
107
  | `e10-cli form list-hierarchy <objId> <appId> <listId> [--enable --parent-field <名称或fieldId> [--expand-level N]] [--disable] [--pc-only]` | 查看/配置**上下级树形展示**。上级字段必须是主表中单选、关联当前表单自身的 EBuilder 字段(常见名称“上级类型”);与普通 `list-group` 分组聚合不是同一能力。走 `saveNListConfig config.superiorField`,保存后独立回读并自动保留移动端配置 |
104
- | `e10-cli form list-permission <objId> <appId> <listId> [--add-all] [--add-user <userId> --name <name>] [--add-role <roleId> [--name <name>]] [--add-matrix <矩阵id> --name <name>] [--share-level <n>] [--seclevel <min>-<max>] [--add-raw '<json>'] [--remove <id>] [--remove-all] [--clear]` | 查看/配置**台账视图权限**(谁能查看这个台账)。`--add-all` 所有人(自动把空 dataid 与 0 视为同一主体,避免重复)、`--add-user` 人员、`--add-role` 角色、`--add-matrix` 矩阵。`--remove <id>` 删除指定权限;`--remove-all` 删除全部“所有人”,与 `--add-all` 同用可清理重复后只保留一条;`--clear` 清空全部。保存走 `list/permission/save` 全量覆盖并回读。另支持共享级别和安全级别范围 |
105
- | `e10-cli form list-search-group <objId> <appId> <listId> [--add <字段名或fieldId>] [--position 0\|1] [--option-order default\|field] [--no-show-count] [--date-granularity <列表>] [--options <列表>] [--default-options <列表>] [--remove <fieldId>] [--clear] [--pc-only]` | 查看/配置**分类搜索**(台账顶部/下拉的分类筛选)。`--add` 收**字段名或 fieldId**,已在里面则按本次参数**重建那条**(改配置走它)。支持四类:**选项类**(Select/RadioBox/CheckBox)、**浏览框类**(Ebuilder/Browser/Employee/Department)、**日期类**(DateComponent)、**系统字段**(创建者/数据ID 这类)。`--position` 1=顶部(缺省)/0=下拉样式;`--option-order` 浏览框的选项排序(default 默认排序 / field 按字段属性设置);`--no-show-count` 关掉统计数字;`--date-granularity` 日期粒度(全年/半年/季度/月,缺省全要);`--options` / `--default-options` 控制选项类**哪些选项出现 / 哪些默认选中**。**仅主表字段,不支持明细(产品边界,传明细报错)**。走 saveNListConfig `config.searchConditions.groupFilters`(视图级明文) |
108
+ | `e10-cli form list-permission <objId> <appId> <listId> [--add-all] [--add-user <userId> --name <name>] [--add-role <roleId> [--name <name>]] [--add-matrix <矩阵id> --name <name>] [--share-level <n>] [--seclevel <min>-<max>] [--add-raw '<json>'] [--remove <id>] [--remove-all] [--clear]` | 查看/配置**台账视图权限**(谁能查看这个台账)。`--add-all` 所有人(自动把空 dataid 与 0 视为同一主体,避免重复)、`--add-user` 人员、`--add-role` 角色、`--add-matrix` 矩阵(同 `form permission archive` 的矩阵条件参数:`--matrix-condition` / `--matrix-condition-relation` / `--matrix-condition-comp-type` / `--matrix-condition-raw`)。`--remove <id>` 删除指定权限;`--remove-all` 删除全部“所有人”,与 `--add-all` 同用可清理重复后只保留一条;`--clear` 清空全部。保存走 `list/permission/save` 全量覆盖并回读。另支持共享级别和安全级别范围 |
109
+ | `e10-cli form list-search-group <objId> <appId> <listId> [--add <字段名或fieldId>] [--position 0\|1] [--option-order default\|field] [--no-show-count] [--count-update] [--only-with-data] [--date-granularity <列表>] [--default-group <粒度> --default-value <起,止>] [--options <列表>] [--default-options <列表>] [--remove <fieldId>] [--clear] [--pc-only]` | 查看/配置**分类搜索**(台账顶部/下拉的分类筛选)。`--add` 收**字段名或 fieldId**,已在里面则按本次参数**重建那条**(改配置走它)—— 本次没给的选项一律回到缺省,所以只改一项时要把想留着的一起给全。支持四类:**选项类**(Select/RadioBox/CheckBox)、**浏览框类**(Ebuilder/Browser/Employee/Department)、**日期类**(DateComponent)、**系统字段**(创建者/数据ID 这类)。`--position` 1=顶部(缺省)/0=下拉样式;`--option-order` 浏览框的选项排序(default 默认排序 / field 按字段属性设置);`--no-show-count` 关掉统计数字,`--count-update` 让统计数字**随搜索结果更新**(选项/浏览框/日期可用,缺省只在进入台账时统计一次);`--only-with-data` **仅显示有数据的选项**(**只有**选项/浏览框类有这个键,日期与系统字段用不了;这个键**勾上才出现**,不勾整个键都没有);`--date-granularity` 日期粒度(全年/半年/季度/月,缺省全要);`--options` / `--default-options` 控制选项类**哪些选项出现 / 哪些默认选中**。日期类的**默认值**用 `--default-group <粒度>` + `--default-value "起,止"`(两个**必须一起给**;平台存的是一条 `{value,group}` 的默认值,并把它对应的粒度标成默认勾上)。**仅主表字段,不支持明细(产品边界,传明细报错)**。走 saveNListConfig `config.searchConditions.groupFilters`(视图级明文) |
106
110
  | `e10-cli form nlist apply <objId> <appId> <listId> <template>` | 配置**列表式视图**(台账)的显示列:模板是二维数组(行 → 列),列项可绑表单字段(`fieldId`)或做**自定义文本**列(不给 `fieldId`、给 `html`,里面用 `{{字段名}}` 插入表单字段)。自动读移动端槽位一并写入。`show` 查看当前配置。⚠ 仅对列表式(NList)生效,表格式用 `form table-view`。详见 `form/guide-list-custom-text.md` |
107
111
  | `e10-cli form view list <objId> <appId> [--with-comps]` | 列出表单全部视图。`--with-comps` 额外拉每个视图布局 comps 数、标出空视图(NList 数据视图会显示「读取失败」,正常) |
108
112
  | `e10-cli form view rename <objId> <appId> <viewId> <新名称>` | 修改视图名称并回读。**表单视图与台账各走一条接口**(台账走 `viewlist/buttonEvent` 的编辑动作,其余视图走 `layout/rename`),命令按类型自动选。保留原视图 ID 和配置。需求名称与默认名称不一致时统一用此命令,不新建重复视图 |
@@ -116,7 +120,15 @@
116
120
  | `e10-cli form message delete <appId> <triggerId> [--obj-id <objId>]` | 删除消息提醒(不可逆) |
117
121
  | `e10-cli form message enable \| disable <appId> <triggerId> [--obj-id <objId>]` | 启用 / 停用消息提醒。停用后不再推,配置保留 |
118
122
  | `e10-cli form native <子命令>` | **原生表单引擎**(formdatareport/biaoge,非 Ebuilder;只有 formId、无 objId、无 appId)的命令组:`create <名称>` 建表、`read <formId>` 读字段、`add-field` / `add-detail-table` / `init` / `field-group`,以及 `list [--keyword]`(存活表单,名称模糊搜)、`trash`(回收站)、`delete <formId...>`(停用→检查→删除,进回收站,删后回读确认)。**注意与 EB 表单不通用**:URL 前缀 `/api/formdatareport/...`、body module `biaoge` 或 `formdatareport` 视接口而定 |
119
- | `e10-cli form layout read <objId> [--view-id <id>]` | 读表单布局结构(comps 坐标/只读)。不传 `--view-id` 读默认布局,传则读指定视图 |
123
+ | `e10-cli form layout read <objId> [--view-id <id>] [--raw] [--out <file>]` | 读表单布局结构;raw/out 获取完整原生快照,含 workbook。不传 view-id 读默认布局 |
124
+ | `e10-cli form layout image-context <image> --out <file>` | 离线获取真实原图路径和 SHA256,供 Agent 实际查看后产出图片观察 |
125
+ | `e10-cli form layout style-review --source @json [--spec @json] [--overrides @json] [--confirm] --out <file> [--report <file>]` | 主动展示字体/字号/颜色/对齐及表格线粗细/外框;gridBorderStyle 调整已声明表格内的线型、粗细和颜色,用户修改逐项映射,失败项保留图片值;只有用户已确认或明确修改才用 --confirm,新图片保存前必查确认状态 |
126
+ | `e10-cli form layout extract <file> --out <file> [--observation @json]` | XLSX 确定性提取;图片绑定结构化观察;不创建业务字段 |
127
+ | `e10-cli form layout inspect <id> --out <file>` | 只读导出完整字段和原生布局上下文;可指定 module、id-type、view-id、target-kind |
128
+ | `e10-cli form layout compile <id> --source @json --spec @json --out <file> [--context @json]` | 编译已有字段的源布局,零业务写入;context 模式完全离线 |
129
+ | `e10-cli form layout apply <id> --artifact @json [--out <file>]` | 单次保存并独立回读;旧快照阻断,写结果未知先查询,不自动重建 |
130
+ | `e10-cli form layout verify <id> --artifact @json [--out <file>]` | 独立验证布局、支持样式和字段保持;不发写请求;详见源样式指南 |
131
+ | `e10-cli form layout style-audit <id> --artifact @json [--context @json] [--out <file>]` | 图片样式三层差异诊断;context 模式无登录;区分观察/投影/回读与像素验收 |
120
132
  | `e10-cli form layout init <objId> [--style-template <名\|id>] [--view-id <id>] [--read-only] [--required] [--disable-edit] [--single-row]` | 初始化/重建表单布局(initLayout):**换样式模板** + 覆盖字段 readOnly/required/disableEdit/singleRow(不传这些开关则**保留字段已有设置**)。**⚠ 样式模板流式与表格式是两套**,同名不同 id,按表单实际布局类型实时查(传错套会直接报错并列出可用项;**平台对跨套 id 不报错、只会静默忽略,表现为"命令成功但样式没变"**)。缺省:流式=标准版、表格式=表格版。完整模板表见 `form/style-templates.md`。**建表时不能指定样式,只能建完再用本命令换** |
121
133
  | `e10-cli form layout copy <objId> <appId> --from <源布局ID> [--name <新名>] [--describe <文本>]` | 复制一套已有布局(设计器里的「复制」)。**响应体不含新布局 ID**(平台只回一句「复制成功!」),命令靠**复制前后各回读一次视图列表**反查并把新 ID 报出来。`--name` 缺省沿用源布局名;布局类型自动跟随源(表格式复制出来仍是表格式)。**复制出来的不是默认布局**,要设为默认续跑 `form layout set-default` |
122
134
  | `e10-cli form layout set-default <objId> <appId> <布局ID> [--for all\|add\|view\|edit]` | 把某套布局设为默认(设计器右键「设为默认布局」)。⚠ `--for` 是**用途档位**、不是布局类型:`all` 全部布局 / `add` 新建布局 / `view` 显示布局 / `edit` 编辑布局(也收中文说法,缺省 `all`)。**一套布局同时只承担一个档位** —— 换档位会把旧档位摘掉;「新建/显示/编辑各用一套」是靠**三套不同布局各占一档**。设完回读 `defaultType` 确认;只有 `all` 才会让视图的 `default` 变 `true` |
@@ -133,8 +145,11 @@
133
145
  | 命令 | 说明 |
134
146
  |------|------|
135
147
  | `e10-cli form button list <objId> <appId>` | 列出所有按钮 |
136
- | `e10-cli form button add <objId> <appId> <name> [--url <url>\|--open-view <视图>\|--open-layout <表单>\|--start-workflow <流程>] [--layout-type 新建\|编辑\|显示] [--map "目标字段:来源字段"...] [--target-app <appId>] --view <来源视图> --position <位置...>` | 添加通用打开页面按钮。支持固定 URL、平台视图、表单布局及流程快捷入口。`--map` 把当前行的来源字段传出去,可多项,但**两种动作的写法不同**:视图/布局/流程动作写 `"目标字段:来源字段"`,**URL 动作写 `"参数名:来源字段"`**(参数名会成为目标 URL 的查询键)。⚠ **URL 动作的页面类型缺省 `LINK`**(平台设计器对 URL 路径用的就是这个;`CUSTOMPAGE` 是「自定义页面」,`pageId` 要页面 id,装 URL 路径点不开)。⚠ **平台不认 URL 里的 `{字段}` 占位符**,传参只能用 `--map`。当前行映射只允许行上/行末下拉;右上按钮无单行上下文。目标名称不唯一时使用 ID,保存后回读动作和映射 |
137
- | `e10-cli form button action-set <objId> <appId> <buttonId> [--open-view ...\|--open-layout ...\|--start-workflow ...] [--map ...]` | 更新已有自定义按钮的单一 `openpage` 动作,保留按钮位置和权限;适合修正目标页面或动态字段映射,避免重复创建同名按钮 |
148
+ | `e10-cli form button add <objId> <appId> <name> [--url <url>\|--open-view <视图>\|--open-layout <表单>\|--start-workflow <流程>] [--layout-type 新建\|编辑\|显示] [--map "目标字段:来源字段"...] [--target-app <appId>] --view <来源视图> --position <位置...>` | 添加通用打开页面按钮。支持固定 URL、平台视图、表单布局及流程快捷入口。`--map` 把当前行的来源字段传出去,可多项,但**两种动作的写法不同**:视图/布局/流程动作写 `"目标字段:来源字段"`,**URL 动作写 `"参数名:来源字段"`**(参数名会成为目标 URL 的查询键)。⚠ **URL 动作的页面类型缺省 `LINK`**(平台设计器对 URL 路径用的就是这个;`CUSTOMPAGE` 是「自定义页面」,`pageId` 要页面 id,装 URL 路径点不开)。⚠ **平台不认 URL 里的 `{字段}` 占位符**,传参只能用 `--map`。当前行映射只允许行上/行末下拉;右上按钮无单行上下文。目标名称不唯一时使用 ID,保存后回读动作和映射。建按钮时还可一次带上基础属性:`--tips` / `--desc` / `--icon`(配 `--icon-color` / `--icon-bg` / `--icon-display`)/ `--only-icon` / `--no-log` / `--log-message` / `--data-filter` |
149
+ | `e10-cli form button set <objId> <appId> <buttonId> [--name <名称>] [--tips <文本>] [--desc <文本>] [--icon <图标名> --icon-color <色值> --icon-bg <色值> --icon-display <line\|fill>] [--icon-none] [--only-icon\|--no-only-icon] [--log\|--no-log] [--log-message <文本>] [--add\|--replace\|--remove\|--relation\|--clear-filter] [--disable-condition\|--clear-disable-condition] [--dry-run]` | 改按钮基础属性:名称 / 提示内容 / 备注 / 图标 / 点击日志 / 数据过滤 / 禁用条件。**已有的动作与权限原样保留**。数据过滤的 `--add/--replace/--remove/--relation` 与 `form list-filter` 同名同义;启用时开关自动置 1,`--clear-filter` 置回 0。详见 `references/form/guide-form-button.md` |
150
+ | `e10-cli form button permission <objId> <appId> <buttonId> [--add-all\|--add-company <名或ID>\|--add-department <名或ID>\|--add-people <名或ID>] [--contain-extra] [--remove <序号\|id>] [--clear]` | 配置按钮权限(**哪些人能看见并点击这个按钮**,与表单共享权限是两套),不带选项时列出。授权对象支持 全体 / 分部 / 部门 / 人员;主体可写名称或 ID,名称需精确同名(撞名报错并列候选)。`--contain-extra` 含下级。保存后按集合回读核对(平台会重排顺序) |
151
+ | `e10-cli form button action <objId> <appId> <buttonId> [--add-url <url>\|--add-view <视图>\|--add-layout <表单>\|--add-start-workflow <流程>\|--add-confirm ...\|--add-js --code <源码\|@文件>\|--add-edit-field "字段:值"...\|--add-logic <逻辑流>] [--remove <序号\|id>] [--clear]` | 管按钮动作,**一个按钮可挂多个**;不带选项时列出。追加顺序固定为 打开页面 → 确认框 → JavaScript → 编辑字段值 → 触发逻辑流。`--add-edit-field` 只支持赋固定值,同字段后写覆盖先写。`--add-logic` 只绑现有逻辑流(按名称精确匹配),`--logic-ecode-id` 可指定 `ecodeId`。改动作时权限原样保留。详见 `references/form/guide-form-button.md` |
152
+ | `e10-cli form button action-set <objId> <appId> <buttonId> [--open-view ...\|--open-layout ...\|--start-workflow ...] [--map ...]` | **已废弃**,改用 `form button action`(等价 `--clear` + 一个 `--add-*`)。更新已有自定义按钮的单一 `openpage` 动作,保留按钮位置和权限 |
138
153
  | `e10-cli form button toggle <objId> <appId> <buttonId>` | 启用/禁用按钮 |
139
154
  | `e10-cli form button position <objId> <appId> <buttonId> [--view <视图...> --position <位置...>] [--show-position <json或@文件>] [--replace]` | 设置已有按钮位置并回读验证。默认合并、保留未指定页面;`--replace` 全量替换。视图支持 ID/唯一名称/新建/编辑/显示;多台账不能省略具体视图。系统按钮适用,保留动作权限及返回的日志/提示配置。详见 `references/form/guide-form-button.md` |
140
155
  | `e10-cli form button views <objId> <appId> <buttonId>` | 读取该按钮可选视图及当前 showPosition,配置前先查询 |
@@ -143,6 +158,7 @@
143
158
  | `e10-cli form association fields <objId> <appId> --view <viewId> [--target-app <id>]` | 查询来源表单字段和目标视图字段 |
144
159
  | `e10-cli form association create <objId> <appId> <name> --view <viewId> --permissions <json或@文件> [--layouts 显示 编辑] [--terminals PC MOBILE] [--mappings <json或@文件>]` | 创建关联页签;默认仅显示布局、PC+MOBILE、启用。权限必须显式提供,筛选映射为 [{targetField,sourceField}] |
145
160
  | `e10-cli form association update <objId> <appId> <associationId> [--name <名>] [--view <viewId>] [--layouts 显示 新建 编辑] [--terminals PC MOBILE] [--enabled true/false] [--mappings <json或@文件>]` | 保留未指定配置;布局和终端为集合替换;显示=0,新建=1,编辑=2,none 关闭全部布局。仅启停走独立接口并回读;多动作时传 --action |
161
+ | `e10-cli form association delete <objId> <appId> <associationId>` | 删除关联页签,参数可为 ID 或**唯一**名称(同名多条报错并列 ID);删前确认归属、删后回读确认消失。不可撤销、无回收站;只想临时下线用 `update --enabled false` |
146
162
  | `e10-cli form association set-filter <objId> <appId> <associationId> --mappings <json或@文件> [--action <id>]` | 替换目标视图动作的数据筛选字段映射,区别于权限条件 |
147
163
  | `e10-cli form association clear-filter <objId> <appId> <associationId> [--action <id>]` | 清空指定视图动作的数据筛选映射 |
148
164
  | `e10-cli form association set-condition <objId> <appId> <associationId> --perm <序号或类型> --rules <json或@文件> [--logic and/or]` | 设置页签权限条件,来源表单字段;与关联目标视图数据筛选独立 |
@@ -156,14 +172,16 @@
156
172
  | `e10-cli form field-linkage list <appId> <objId>` | 字段联动(跨表带出赋值):列出联动 |
157
173
  | `e10-cli form field-linkage read <appId> <objId> <id>` | 回读单条(inFields/outFields) |
158
174
  | `e10-cli form field-linkage fields <appId> <formId>` | 查源表可带出字段 |
175
+ | `e10-cli form field-linkage events <appId> <objId> [--effect <维度>]` | 可用触发动作。默认 10 个;`workFlow`/`includeNode` 维度取流程那套 17 个 |
159
176
  | `e10-cli form field-linkage delete <appId> <objId> <ids...>` | 删除(批量) |
160
- | `e10-cli form field-linkage add <appId> <objId> --trigger <字段名> --target <字段名> --hops "<objId:字段名,...>"` | 新增。`--hops` 多跳链式(单跳用 `--source-form/--query-field`)。**Text 字段必须多跳取名称**。详见 `form/guide-field-linkage.md` |
177
+ | `e10-cli form field-linkage add <appId> <objId> --trigger <字段名> --source-form <objId> --condition "<字段:算子:值>"... --assign "<源字段>=<目标字段>"...` | 快捷配置:任意条件(可多个)、多查询字段(`--query-fields`)、多赋值(目标写 `明细表名.字段名` 则写明细表)、`--basis` 明细行依据、`--detail-mode add/cover/update`、`--detail-add override/append`、`--fission on/off`、`--precondition "<字段:算子[:值]>"`(可多个)、`--event`/`--effect`/`--state`。旧单跳/多跳用 `--query-field`/`--target`/`--hops`。详见 `form/guide-field-linkage.md` |
178
+ | `e10-cli form field-linkage update <appId> <objId> <id> [--name] [--state] [--event] [--trigger] [--effect] [--detail-mode] [--detail-add] [--fission] [--precondition] [--clear-precondition]` | 改名称/启停/触发动作/生效维度/明细开关/赋值前提。不给触发项就原样沿用;只改启停走专用接口 |
161
179
  | `e10-cli form formula-linkage list <appId> <objId>` | 函数联动(**本表**字段间公式赋值,`linkageType=excel`):列出 |
162
180
  | `e10-cli form formula-linkage read <appId> <objId> <id>` | 回读单条(含公式表达式与参数) |
163
- | `e10-cli form formula-linkage events <appId> <objId>` | 列出可用的触发事件(值改变时 / 载入时 / 创建数据时 …) |
181
+ | `e10-cli form formula-linkage events <appId> <objId> [--effect <维度>]` | 列出可用的触发事件。默认 10 个(字段组 5 + 表单组 5);生效维度给 `workFlow`/`includeNode` 时取**流程**那套 = 17 个(多「提交/批准时、转发时、保存时、退回时、转办时、意见征询时、传阅时」7 个) |
164
182
  | `e10-cli form formula-linkage columns <appId> <objId>` | 列出可引用/可触发的字段(业务字段 / 系统模块字段分两桶) |
165
- | `e10-cli form formula-linkage add <appId> <objId> --target <字段> --expression <函数体>` | 新增函数联动。`--event`(默认 `changeField`)、`--trigger <字段...>`(字段级事件必填)、`--effect form\|formLayout`(生效维度,默认当前表单)、`--name`。表达式**只给右侧**,左侧 `{主表.目标}=` 自动拼。**目标只能是业务字段**,模块字段可作来源/触发。详见 `form/guide-formula-linkage.md` |
166
- | `e10-cli form formula-linkage update <appId> <objId> <id> [--event] [--trigger] [--effect] [--name] [--state on\|off]` | 改触发条件/生效维度/名称/启停。不传则沿用现有 |
183
+ | `e10-cli form formula-linkage add <appId> <objId> --target <字段> --expression <函数体>` | 新增函数联动。**`--event <事件...>` 可给多个**(一条联动能挂多个触发时机),每个可自带触发字段:`--event changeField:数量,单价 onclick:按钮`;没自带字段的字段级事件回退 `--trigger <字段...>`。默认 `changeField`。`--effect form\|formLayout\|workFlow\|includeNode`(后两者需 `--workflow-id`,`includeNode` 另需 `--node`)、`--name`。表达式**只给右侧**,左侧 `{主表.目标}=` 自动拼。**目标只能是业务字段**,模块字段可作来源/触发。详见 `form/guide-formula-linkage.md` |
184
+ | `e10-cli form formula-linkage update <appId> <objId> <id> [--event...] [--trigger...] [--effect] [--workflow-id] [--node] [--name] [--state on\|off]` | 改触发时机/生效维度/名称/启停。**不给 `--event`/`--trigger` 就原样沿用现有的触发时机**(不会按第一条重建)。生效维度在「表单/布局 ↔ 工作流/节点」之间切换时**必须**同时给 `--event` |
167
185
  | `e10-cli form formula-linkage delete <appId> <objId> <ids...>` | 删除(批量)。`form field-linkage delete` 删不掉这类,会报错指路 |
168
186
  | `e10-cli form formula set <objId> <appId> --target <fieldId> --expression "<公式>"` | 给 eb 表字段**绑定**计算公式。`{主表.字段}` / `{明细表名.字段}`(平台存储格式)与设计器的 `[字段]` 两种写法都收,保存前归一化成花括号再下发。`--name`、`--return-type`(不传按目标字段类型推断)。**`--formula-id <id>` 原地更新已有公式**(平台认这个字段:不新建、返回 id 不变、字段绑定不受影响),不传才是新建;更新时不传 `--name` 会沿用原公式名,不会被改成「公式_&lt;时间戳&gt;」。另:`formula get <id>` / `list <objId> <appId>` / `functions`。**⚠ 公式语法四条**:函数名必须大写(自定义 JS 脚本函数除外)、逻辑比较用 `==`、给字段赋值用 `=`、跨表粘贴要换掉非本表字段变量 —— 写错**不报错**只是算不对,见 `references/form/guide-form-formula-functions.md` |
169
187
 
@@ -220,12 +238,12 @@
220
238
  | `e10-cli wf-form delete-field <formId> <fieldId...> [--force]` | 删除流程表单字段(可批量)。**仍被布局引用的字段平台拒删**;`--force` 让 CLI 先从布局摘掉这些字段的组件(含它的标题标签)再删。eb 表侧对应 `form delete-field` |
221
239
  | `e10-cli wf-form formula set <formId> --expression "DAYS({主表.开始时间},{主表.结束时间})" --target <fieldId>` | 给流程表单字段绑定计算公式。`{主表.字段}`/`{明细表名.字段}` 引用(getConfig 解析)→ `/api/excel/formula/save`(module=workflow) → ffExpress 绑字段 + saveSourceForm。`--name`/`--return-type`/**`--formula-id <id>`(原地更新已有公式,不新建)**。另:`formula get <id>` / `list <formId>` / `functions`。**⚠ 公式语法四条**:函数名必须大写(自定义 JS 脚本函数除外)、逻辑比较用 `==`、给字段赋值用 `=`、跨表粘贴要换掉非本表字段变量 —— 写错不报错只是算不对,见 `references/form/guide-form-formula-functions.md` |
222
240
  | `e10-cli wf-form formula-linkage list <formId> --workflow-id <id>` | 流程表单的**函数联动**(`linkageType=excel`,走 `/api/ebuilder/flow/form/linkage`,module=`ebuildercard`)。`read` / `delete <ids...>` 同形 |
223
- | `e10-cli wf-form formula-linkage events <formId> --workflow-id <id>` | 列出触发事件(**17 个**:字段组 5 + 表单组 5 + 流程组 7) |
241
+ | `e10-cli wf-form formula-linkage events <formId> --workflow-id <id>` | 列出触发事件(**17 个**:字段组 5 + 表单组 5 + 流程组 7)。这条路由恒取流程那套 |
224
242
  | `e10-cli wf-form formula-linkage columns <formId> --workflow-id <id>` | 列出可引用/可触发的字段,按「可作 / 不可作赋值目标」分桶。字段清单取自 `findFormDrivingColumns`,**不依赖 getFormLayout**(后者在部分流程表单上会 500) |
225
- | `e10-cli wf-form formula-linkage add <formId> --workflow-id <id> --target <字段> --expression <函数体>` | 新增。`--event`(默认 `changeField`)、`--trigger <字段...>`、`--effect form\|formLayout\|workFlow\|includeNode`(后两者需 `--workflow-id`,`includeNode` 另需 `--node`)、`--name`。表达式只给右侧,左侧自动拼。详见 `form/guide-formula-linkage.md` |
226
- | `e10-cli wf-form formula-linkage update <formId> --workflow-id <id> <linkageId> [--event] [--trigger] [--effect] [--node] [--name] [--state on\|off]` | 改触发条件/生效维度/名称/启停。不传的项沿用现有 |
243
+ | `e10-cli wf-form formula-linkage add <formId> --workflow-id <id> --target <字段> --expression <函数体>` | 新增。**`--event <事件...>` 可给多个**(一条联动能挂多个触发时机),每个可自带触发字段:`--event EVENT_FORWARD --event changeField:数量,单价`。`--trigger <字段...>` 作用于没自带字段的字段级事件。`--effect form\|formLayout\|workFlow\|includeNode`(后两者需 `--workflow-id`,`includeNode` 另需 `--node`)、`--name`。表达式只给右侧,左侧自动拼。详见 `form/guide-formula-linkage.md` |
244
+ | `e10-cli wf-form formula-linkage update <formId> --workflow-id <id> <linkageId> [--event...] [--trigger...] [--effect] [--node] [--name] [--state on\|off]` | 改触发时机/生效维度/名称/启停。**不给 `--event`/`--trigger` 就原样沿用现有的触发时机**。生效维度在「表单/布局 ↔ 工作流/节点」之间切换时**必须**同时给 `--event` |
227
245
  | `e10-cli wf-form linkage <formId> <联动名> --config '{"conditions":[{"field":"请假天数","operator":"EQUAL","value":"3"}],"actions":[{"prop":"hide","fields":["请假事由"]}]}'` | 显隐联动。`--config` 写字段名(自动解析 fieldId/dataKey);**为空写 `NULL`(或 `EMPTY`,会归一)、不为空写 `NOT_NULL`**(写错平台报的是一句与条件无关的写库异常)。prop: hide/show/edit/readonly/required/hideLine;operator 另有 EQUAL/NOT_EQUAL/CONTAIN/GREATER/LESS 等。顶层可选 `"detailType":"AND\|OR"`(界面「所有/任一」)。**`"effect"` 指定生效维度**(这条路由有四种):不写=当前表单、`"formLayout"`=**表单布局**、`"workFlow"`=**当前工作流**、`"includeNode"`+`"nodeId"`=**选择节点**(后两者需配 `--workflow-id`) |
228
- | `e10-cli wf-form validate add <formId> <字段名...> [--remind] [--help <提示>]` | 字段查重规则(多字段 AND,重复禁止提交/提醒)。`list`/`delete <ruleId>`。字段名自动 getConfig 解析 |
246
+ | `e10-cli wf-form validate add <formId> <字段名...> [--remind] [--help <提示>]` | 字段查重规则(多字段 AND,重复禁止提交/提醒)。`list` / `update <ruleId> [--fields <名...>] [--help <文本>] [--remind\|--no-remind]` / `delete <ruleId>`。`update` 只改传入项,其余保持;**checkFields 是整组替换**,内部会把完整字段一起回传;本组的提示内容是**纯文本**(不走多语言标签)。字段名自动 getConfig 解析(含明细子字段) |
229
247
  | `e10-cli wf-form relate <formId> <目标字段> --from <Employee/Department源字段> [--key email/department/code/name] [--title <名>]` | 值带出:换表内 Employee/Department 字段自动填目标字段(HRM 属性带出)。`--key` 默认 Employee=department/Department=name。机制同 eb 表(ffRelateField,Employee 源 module=hrm) |
230
248
  | `e10-cli wf-form permission get <formId>` | 查看流程表单字段权限(display/readOnly/required/disableEdit)。**写字段权限用 `workflow node field-permission`**(节点级,流程表单表单级写平台多返 500) |
231
249
  | `e10-cli wf-form add-detail-table <formId> <明细表名> [首字段名] [--init]` | 给流程表单加明细子表(saveSubForm+首字段+可选 init 放入布局)。机制同 eb 表 `form add-detail-table` |
@@ -240,7 +258,7 @@
240
258
  | `e10-cli workflow info <workflowId>` | 单个流程的基础信息 + **它关联的表单**(流程 → 表单反查)。给出 `formId`、表单名、启用状态、是 eb 表还是流程表单。⚠ **formId 不是 objId**,表单类命令要 objId,而平台没有直通的 formId → objId 接口 —— 得先确认表单在哪个应用下再按 formId 匹配 |
241
259
  | `e10-cli workflow nodes <workflowId>` | 查看流程节点详情(名称、类型、操作者、连线含 linkId) |
242
260
  | `e10-cli workflow nodes <wf> --mode list` | 列表视图:展示全节点含 nodeAttr、合流方式(比 chart XML 更全) |
243
- | `e10-cli workflow set-operator <wf> <node> [keyword]` | 设置节点操作者。`--type user`(指定人) / `role`(指定角色) / `dept`(指定部门) / `position`(指定岗位) / `all`(所有人) / `free`(自由选择) / `superior`(发起人上级) / `initiator`(流程发起人本人) / `prev-node`(上一节点) / `form`(表单相关人员) / `matrix`(矩阵对应,需 `--matrix-id` `--value-config-id` `--matrix-rule`)。`--sign-order` 会签/非会签/竞签/依次处理/抄送/抄送需批注(概念见 guide-workflow);**`--type form` 另支持「或签」**,等价于竞签(表单字段里多人任一人签,语义一致),已登记的签署顺序里没有单独一档。**依次处理倒序**用 `--execute-order 2-2`(默认)/`2-1`正序/`1-1,2-2`安全级别正序+倒序。**`--dept-scope 本部门`**=单个部门内会签/`本及下级`默认。**一个节点多人用逗号分隔 keyword**(如 `"区域经理,部门领导"`,user/dept 都支持);默认每次全量重建操作者组(先清空再新建),重复设置不堆积。**多操作者组叠加(如「部门领导矩阵 + 门店经理矩阵」双组会签):先用 set-operator 配第一组,再用 `--append` 配第二组**,`--append` 不清空已有组,两组合起来就是双矩阵会签 |
261
+ | `e10-cli workflow set-operator <wf> <node> [keyword]` | 设置节点操作者。`--type user`(指定人) / `role`(指定角色) / `dept`(指定部门) / `position`(指定岗位) / `all`(所有人) / `free`(自由选择) / `superior`(发起人上级) / `initiator`(流程发起人本人) / `prev-node`(上一节点) / `form`(表单相关人员) / `matrix`(矩阵对应,需 `--matrix-id` `--value-config-id`;条件用 `--matrix-rule` 或 `--matrix-rules JSON/@文件`,互斥;支持部门/分部系统来源、表单字段与指定组织,详见 guide-workflow)。`--sign-order` 会签/非会签/竞签/依次处理/抄送/抄送需批注(概念见 guide-workflow);**`--type form` 另支持「或签」**,等价于竞签(表单字段里多人任一人签,语义一致),已登记的签署顺序里没有单独一档。**依次处理倒序**用 `--execute-order 2-2`(默认)/`2-1`正序/`1-1,2-2`安全级别正序+倒序。**`--dept-scope 本部门`**=单个部门内会签/`本及下级`默认。**一个节点多人用逗号分隔 keyword**(如 `"区域经理,部门领导"`,user/dept 都支持);默认每次全量重建操作者组(先清空再新建),重复设置不堆积。**多操作者组叠加(如「部门领导矩阵 + 门店经理矩阵」双组会签):先用 set-operator 配第一组,再用 `--append` 配第二组**,`--append` 不清空已有组,两组合起来就是双矩阵会签 |
244
262
  | `e10-cli workflow generate-link-id <wf>` | 生成新连线 ID |
245
263
  | `e10-cli workflow add-node <wf> <type> <name>` | 添加节点(列表 API)。`<type>`: 0=发起 1=审批 2=确认 3=归档 5=投递 7=自动处理 8=等待 / forkstart/forkend/forkmiddle。**结束节点=归档节点(type=3)**。`--node-attr` 节点属性;合流点支持 `--merge-type`(0=全部/1=指定/2=数量/3=比例)、`--merge-num`、`--branch-nodes` |
246
264
  | `e10-cli workflow rename-node <wf> <nodeId> <name>` | 重命名节点(saveNodeSetForm API) |
@@ -286,7 +304,7 @@
286
304
  | `e10-cli workflow node timeout <wf> <nodeId>` | ⚠ **已弃用**,请改用 `workflow node-overtime`。旧命令的超时时长与提醒字段名平台不认(时长恒为 0、提醒直接报错),且配不了退回/提交目标节点 |
287
305
  | `e10-cli workflow node field-permission get <wf> <nodeId>` | 查看节点字段权限(各字段 显示/隐藏)。表单字段在节点上可见与否 |
288
306
  | `e10-cli workflow node field-permission set <wf> <nodeId> --hide <字段...>` | 设置节点字段显示/隐藏。`--hide 字段名/ID` 隐藏、`--show` 显示;可多个,已设权限则更新、未设则新建 |
289
- | `e10-cli workflow node sign <wf> <nodeId>` | 节点签字意见必填(退回时必填意见等)。缺省查看;`--all-required` 全部必填、`--none-required` 全部不必填、`--select "退回,加签"` 指定操作类型必填(按 mustInputDto=2 + 选中操作类型 id)。`getSignConfigForm` 枚举操作类型 |
307
+ | `e10-cli workflow node sign <wf> <nodeId>` | 全部签字意见设置;旧必填参数保留,`--data JSON/@文件` 局部修改签批签名、隐藏输入框/区域、显示类型/范围、反馈;`--schema` 字段定义,`--options` 查询完整候选。先读后改并回读 |
290
308
  | `e10-cli workflow node empty-handle get <wf> <nodeId>` | 查看节点**流程异常处理**(无可处理人时怎么办) |
291
309
  | `e10-cli workflow node empty-handle set <wf> <nodeId> --handle-way <1-5>` | 设置节点流程异常处理:1=指定人员(`--person 名称/ID`) / 2=用户指定 / 3=发起人 / 4=自动流转下一节点 / 5=提交指定节点(`--assign-node <节点ID>`);`--off` 关闭;`--sync` 同步所有节点 |
292
310
  | `e10-cli workflow setting title <wf>` | 流程标题规则(发起后标题按规则生成,如"发起人-提交日期-客户名称"→真实数据)。缺省列出可用变量(发起人/部门/日期/表单字段);`--rule "发起人\|提交日期\|客户名称"` 竖线分隔字段名设置;`--sep <分隔符>` 默认 `-`;`--disable` 关闭自动生成(标题回退流程名+系统默认)。占位符 `$code$`,平台发起时替换为真实值 |
@@ -335,10 +353,16 @@
335
353
  | `e10-cli workflow segment embed <wf> <segmentId> [--x <n>] [--y <n>]` | 在主流程里插入**公用流转节点**(引用指定片段,自动拼 group + 子节点 XML 并入主流程图)。`--sub-company-id` 用于查片段名 |
336
354
  | `e10-cli workflow sub-process list <wf> <nodeId>` | 列出节点上全部子流程配置 |
337
355
  | `e10-cli workflow sub-process get <wf> <nodeId> <subSetId>` | 查看子流程配置详情(主配置 + detailSet + 触发条件) |
338
- | `e10-cli workflow sub-process set <wf> <nodeId> --sub-wf <子流程ID> [--name <配置名>] [--id <subSetId>]` | 新建/更新子流程主配置(**不传 `--id` 新建,传了则读-改-写**)。`--enable`/`--disable`(默认停用)、`--tri-once` 只触发一次、`--tri-source <主表objId>`、`--time-day`/`--time-hour`/`--time-minute` 延时 |
339
- | `e10-cli workflow sub-process set-condition <wf> <nodeId> <subSetId> --rule "..." [--relation AND\|OR]` | 设置子流程触发条件(复用条件构建器,`--rule` 语法同 `workflow condition add`),并回填到主配置 |
340
- | `e10-cli workflow sub-process set-mapping <wf> --sub-wf <子流程ID> --map 源字段:目标字段[:名] [--field-mapping-id <id>]` | 设置主→子字段映射(`--map` 可多个;不传 `--field-mapping-id` 则新建) |
341
- | `e10-cli workflow sub-process set-detail <wf> <nodeId> <subSetId> [选项]` | 更新明细设置(创建人 / 读意见等,读-改-写)。`--creator <类型:字段ID>`、`--del-old-sub-request 0\|1`、`--read-main`/`--read-paralle`/`--read-sub`、`--auto-show 0\|1`、`--init-default-val` |
356
+ | `e10-cli workflow sub-process set <wf> <nodeId> --sub-wf <子流程ID> --name <配置名> [--id <subSetId>]` | 新建/更新子流程主配置(不传 `--id` 新建,传了则读-改-写)。主表触发用 `--tri-source-type MAIN --tri-source <主表objId>`;按明细触发用 `--tri-source-type DETAIL --tri-source <明细表subFormId>`。`--tri-time LEAVE_NODE\|ARRIVE_NODE` 指定离开/到达节点;`--tri-operation LAST_NODE_APPRIVE\|LAST_NODE_REJECT` 与 `--tri-operation2 APPRIVE\|REJECT` 成对设置上一节点操作,明细触发缺省为批准。`--tri-moment DELAY --time-day/--time-hour/--time-minute` 配置固定延迟;`--split-detail TRI_DATA\|ALL_DATA` 指定触发明细赋值方式。`--enable`/`--disable` 通过独立状态接口设置;保存后回读核对 |
357
+ | `e10-cli workflow sub-process set-condition <wf> <nodeId> <subSetId> --rule "..." [--relation AND\|OR]` | 设置子流程触发条件并回填主配置;明细字段用 `form:<字段ID>:<操作>:<值>[:任一\|所有]`,例如 `form:123:等于:测试:任一`。条件是否满足与是否按每条明细发起是两项独立设置 |
358
+ | `e10-cli workflow sub-process set-mapping <wf> --sub-wf <子流程ID> --map 源字段:目标字段[:名] [--field-mapping-id <id>]` | 设置主→子字段映射(`--map` 可多个;不传 `--field-mapping-id` 则新建)。明细触发时加 `--detail-source <明细表subFormId>`,将明细来源写入映射上下文 |
359
+ | `e10-cli workflow sub-process set-detail <wf> <nodeId> <subSetId> [选项]` | 更新默认子流程的创建人、读意见与字段映射关联,按普通子流程或按字段路由自动选择保存接口,并读回映射。先用 `set-mapping` 保存映射,取得 `fieldMappingId`,再传 `--data-rule-id <fieldMappingId>`;其他选项有 `--creator <类型:字段ID>`、`--del-old-sub-request 0\|1`、`--read-main`/`--read-paralle`/`--read-sub`、`--auto-show 0\|1`、`--init-default-val` |
360
+ | `e10-cli workflow sub-process set <wf> <nodeId> --name <名> --diff-wf --tri-source-type DETAIL --tri-source <明细表ID> --diff-field-id <区分字段ID>` | 创建“按字段触发不同子流程”的主设置;不在主设置指定唯一 `--sub-wf`,后续分别设置默认子流程和匹配值路由。修改触发节点时同时更新 `triNodeId` 和 `multiTriNodeId` |
361
+ | `e10-cli workflow sub-process diff-route list <wf> <nodeId> <subSetId>` | 读取区分字段、默认子流程及全部路由 ID、匹配值和目标子流程 |
362
+ | `e10-cli workflow sub-process diff-route default <wf> <nodeId> <subSetId> --sub-wf <id>` | 设置未命中匹配值时的默认子流程(`diffFieldValue=-1`) |
363
+ | `e10-cli workflow sub-process diff-route add <wf> <nodeId> <subSetId> --values <值ID[,值ID...]> --sub-wf <id> [--default-sub-wf <id>]` | 新增一条匹配值路由;值传浏览器选项 ID,多个逗号分隔。首条路由需同时传 `--default-sub-wf`,整表保存后读回 |
364
+ | `e10-cli workflow sub-process diff-route update <wf> <nodeId> <subSetId> <routeId> [--values <值ID[,值ID...]>] [--sub-wf <id>]` | 保留路由 ID 原位修改匹配值和/或目标子流程,保存后读回 |
365
+ | `e10-cli workflow sub-process diff-route delete <wf> <nodeId> <subSetId> <routeId>` | 删除路由行,不删除目标子流程;删除后读回确认 |
342
366
  | `e10-cli workflow sub-process delete <wf> <subSetId>` | 删除子流程配置(连同 detailSet 一并删) |
343
367
  | `e10-cli workflow message create <wf> <nodeId> <名称> [选项]` | 创建**消息提醒动作流**并绑定到流程节点。`--title`、`--content`、`--recipients <用户ID>`(缺省流程发起人)、`--channel im\|yunqiao\|email\|sms`、`--event arrive\|leave\|delete\|save\|revert\|pause\|cancel`(触发时机)、`--node-name` |
344
368
 
@@ -359,12 +383,13 @@
359
383
 
360
384
  | 命令 | 说明 |
361
385
  |------|------|
362
- | `e10-cli menu list <appId>` | 列出当前Ebuilder应用下的菜单。**递归展开嵌套菜单**(如「设置 → 个人设置 → 个人菜单设置」),列表即全量 —— 在这里没找到就是真没有,不必再怀疑被折叠 |
386
+ | `e10-cli menu list <appId>` | 列出当前Ebuilder应用下的菜单。**递归展开嵌套菜单**(如「设置 → 个人设置 → 个人菜单设置」),列表即全量 —— 在这里没找到就是真没有,不必再怀疑被折叠。`--raw [菜单ID]` 打印菜单的**原始报文**(读侧记录与写侧报文形状不同,核对某一项到底存了什么时看它) |
363
387
  | `e10-cli menu rename <appId> <菜单ID或名称> <新名>` | 重命名已有菜单(含嵌套菜单)。名称在应用内重复时必须改用 ID,命令会列出候选让你选。平台系统菜单(回收站/设置等)不能改 |
364
388
  | `e10-cli menu add <name> <path> <appId> [--parent <父菜单ID或名称>]` | 将页面加入左侧导航(LINK 类型,URL path)。ecode 页面 path 如 `/sp/custom/ecode/project-list`。**表单台账/流程发起菜单用下面两条专用命令**(VIEWPORT/LAYOUT 类型,非 URL)。`--parent` 挂到父菜单下做子菜单(缺省 `0`=顶级)。**建完会回读确认**并报出菜单 ID;回读不到就报错退出,不谎报成功 |
389
+ | `e10-cli menu add-dir <appId> <name> [--parent <父菜单ID或名称>]` | 加**上级目录**菜单 —— **空链接**的纯分类节点,只用来给子菜单分组,点它不跳页面。设计器里建「上级目录」就是这个(存下来 `pageType=EMPTY`、`pageId/pageName` 空、**没有 `menuUrl`**、`menuType="0"`)。`--parent` 支持菜单 ID 或名称(缺省 `0`=顶级)。**建完回读确认**并核对层级,另外**核对 `pageType` 确实是 `EMPTY`** —— 不是就说明链接没留空,直接报错而不是谎报成功。⚠ 与 `menu add` 的区别:要指向某个页面的父菜单(点得开)用 `menu add`,纯分组的用这条 |
365
390
  | `e10-cli menu add-table <appId> <objId> [name] [--parent <父菜单ID或名称>]` | 给表单加**台账菜单**(VIEWPORT,指向数据列表页)。`form create --menu` 才自动加(默认不加),此处用于事后补加。**`--parent` 挂到某个父菜单下做子菜单**(缺省 `0`=顶级;既收菜单 ID 也收名称,同名多条会报错并列 ID)。**建完回读确认**,并**核对层级** —— 只确认菜单存在不够,`pid` 没生效时菜单照样建出来、只是跑到顶级 |
366
391
  | `e10-cli menu add-start <appId> <formObjId> [name] [--parent <父菜单ID或名称>]` | 给流程绑定的表单加**发起菜单**(LAYOUT,指向表单新建页,点开触发流程)。`workflow create --menu` 才自动加(默认不加)。`--parent` 同上(子菜单)。**建完回读确认**并核对层级 |
367
- | ↳ 搭「父菜单 + 子菜单」 | 设计器里的二级菜单 = 先建父菜单(`menu add` 建 LINK,或已有菜单),再把台账/发起菜单用 `--parent <父菜单>` 挂上去。父菜单 ID 从 `menu list` 拿(输出就是完整菜单树) |
392
+ | ↳ 搭「父菜单 + 子菜单」 | 设计器里的二级菜单 = 先建父菜单(**纯分组用 `menu add-dir`**;父菜单自己也要指向某页才用 `menu add`),再把台账/发起菜单用 `--parent <父菜单>` 挂上去。父菜单 ID 从 `menu list` 拿(输出就是完整菜单树) |
368
393
  | `e10-cli menu permission list <appId> <menuId>` | 列菜单可见范围授权(**默认所有人**;无输出=全可见) |
369
394
  | `e10-cli menu permission add <appId> <menuId> <目标> --type role\|dept\|user\|all` | 给菜单授权。默认语义:**加角色/人/部门后自动撤「所有人」→ 只有授权对象可见**;`--keep-all` 保留所有人;`--type all` 恢复"所有人可见" |
370
395
  | `e10-cli menu permission remove <appId> <menuId> <目标> --type role\|dept\|user\|all` | 撤销菜单授权(撤销所有人用 `--type all`) |
@@ -392,11 +417,11 @@
392
417
  | `e10-cli designer comp-remove <pageId> <compId>` | 移除组件(PC/MOBILE 按 refCompId 联动删) |
393
418
  | `e10-cli designer factory-list` | 列出 28 个内置 factory 模板(名称↔组件 type 对照) |
394
419
  | `e10-cli designer chart dataset-set\|measure-add\|dimension-add\|title\|height` | **图表配置(全 11 种)**。dataset-set 绑表单;measure-add 加度量(SUM/AVG/MAX/MIN 用 `--field-id`,COUNT 用 `--count-records`);dimension-add 加维度(字段名/ID 均可,Date 自动按月);title 设业务标题;height 设像素高。**Gauge:COUNT+无维度;堆积:2 度量+1 维度;Bubble:只能 1 度量** |
395
- | `e10-cli designer digital-panel panel-add ...` | 数字面板加 KPI 卡(`--field-id --aggregator SUM\|COUNT\|AVG\|MAX\|MIN --label`) |
420
+ | `e10-cli designer digital-panel panel-add ...` | 数字面板加 KPI 卡(`--field-id --aggregator SUM\|COUNT\|AVG\|MAX\|MIN --label`)。可选 `--icon <path>` + `--icon-color` / `--icon-bg` 配卡片图标(`panels[].icon`,不给就不发该键;形状与导航面板不同:`fillType:'backgroundColor'`、底色键是 `bgColor`)。**每张卡的 `id` 自动避开已占用的**,保存前复查,重复即中止 |
396
421
  | `e10-cli designer list dataset-set\|field-add\|order-add` | NList 绑数据源/加显示列(`--type` `--comp-type` 同值传字段类型)/加排序 |
397
422
  | `e10-cli designer calendar dataset-bind\|field-map\|title` | 日历绑数据源(`--start --end --title-field`,内置全视图渲染)/调映射(`--end clear` 全天单日)/设标题 |
398
423
  | `e10-cli designer slide pic-add\|title` | 幻灯片加轮播图(**平台资源路径**,已防 Git Bash 路径转换)/设标题 |
399
- | `e10-cli designer nav-panel menu-add\|menu-source-type\|title` | 导航面板加跳页菜单(NewPage 双层 eventGroup 自动构造)/切菜单来源 DEFAULT\|CUSTOM/设标题 |
424
+ | `e10-cli designer nav-panel menu-add\|menu-source-type\|title` | 导航面板加跳页菜单(NewPage 双层 eventGroup 自动构造)/切菜单来源 DEFAULT\|CUSTOM/设标题。`menu-add --icon <path> [--icon-color]`;**图标 path 不带 `#` 会自动补**(漏了 `#` 平台当图片路径加载 → 静默不显示) |
400
425
  | `e10-cli designer css read <pageId> <compId> [--terminal pc\|mobile\|both]` | 读组件**自定义 CSS**(`comp.config.styles[].customStyle.base.codeSource`;compId 给任一端都行) |
401
426
  | `e10-cli designer css write <pageId> <compId> (--css <文本>\|--css-file <路径>) [--append\|--clear] [--terminal] [--yes]` | 写自定义 CSS:默认**双端同写**、默认整段替换;`--append` 非幂等;`--clear` 清空但留记录;两端已分叉时须 `--yes`。写后回读比对,对不上报错 |
402
427
  | `e10-cli designer dom-list` / `designer dom <type> [--keys] [--section <path>] [--refs]` | 查写 CSS 要用的**组件 DOM 结构索引**(27 个组件,随包分发)。**先 `--keys` 看骨架再 `--section` 取子树**(文档中位数 20 多 KB) |
@@ -595,3 +620,29 @@ e10-cli actionflow generate '{"planFile":"@plan.json","appName":"AI-动作流名
595
620
  # 管理: list-node 查节点绑定 / clear-node 清 / delete/disable 删动作流
596
621
  e10-cli workflow action list-node <wf> <nodeId>
597
622
  ```
623
+
624
+ ## 工作流高级设置:功能管理
625
+
626
+ | 命令 | 能力 |
627
+ |---|---|
628
+ | `workflow withdraw get/create/update <workflowId>` | 撤回管理 |
629
+ | `workflow add-operator get/create/update <workflowId>` | 加审基础/会签设置及权限规则 |
630
+ | `workflow minus-operator get/create/update <workflowId>` | 减审权限规则 |
631
+ | `workflow receiver-range get/create/update <workflowId> --add-operator-id <id>` | 加审权限规则引用的普通模式接收人范围;自动查询/验证范围引用 |
632
+ | `workflow receiver-range get/create/update <workflowId> --scene assign-flow --node-id <源节点ID>` | 指定流转通用接收人范围:普通模式、仅目标操作者范围、明细适用全部/操作者/抄送人 |
633
+ | `workflow receiver-range get/create/update <workflowId> --scene assign-flow-target --node-id <源节点ID> --target-node-id <目标节点ID>` | 指定流转单独目标节点范围;自动解析配置记录和真实范围主键 |
634
+ | `workflow forward-circulate-back get/create/update <workflowId>` | 转发/传阅/抄送收回 |
635
+
636
+ 写入用 `--data JSON/@文件`,单条规则修改用 `--rule-id`,查询元数据用 `get --schema`。详见 [功能管理指南](../workflow/guide-function-management.md)。
637
+
638
+ ## 拟签与节点转发
639
+
640
+ | 命令 | 能力 |
641
+ |---|---|
642
+ | `workflow draft-opinion fields <wf>` | 查询已保存的拟签控件 ID |
643
+ | `workflow draft-opinion get/create/update <wf> [--widget-id <id>]` | 流程展现/已有拟签控件配置,get 支持 --schema |
644
+ | `workflow draft-opinion content get/create/update <wf>` | HTML 显示模板 |
645
+ | `workflow draft-opinion style get/create/update <wf>` | 字体、按钮名称/颜色/顺序 |
646
+ | `workflow node forward-setting get/create/update <wf> <node>` | 待办/已办/结束转发、接收人可提交意见/继续转发 |
647
+
648
+ 写入使用 `--data JSON/@文件`,未指定项保留,单次保存后回读。详见 [参数、范围与自然语言示例](../workflow/guide-opinion-settings.md)。
@@ -97,6 +97,15 @@ e10-cli designer save <pageId> --layouts @layouts.json
97
97
  > 组件 `type`/`package`/`category`/`applyStyle`/`styleCategoryCompKey`/`styleCategoryPackage` 同样从真实 comp 复制真实值,不编造、不赋空。
98
98
  >
99
99
  > **机器随机 id 硬规则**:页面/组件配置里**所有由工具生成的随机 hex 机器 id 首位都不能是数字**(后端校验,浏览器样本首位恒为 a-f 字母):`comp.id`(32 位)、图表 `axisId`(32 位)/`shortKey`(7 位,平台数据行/分组键)、NavPanel 菜单项/事件组/事件 id、DigitalPanel panel id 等。CLI `designer chart`/`digital-panel`/`nav-panel` 已统一用 `genLetterHex()`(首位强制 a-f)自动生成;agent 手工改 config 时须遵守同规则。真实数字标识(objId/pageId/formId/字段 id)照常可数字开头,勿动。
100
+ >
101
+ > **图标 path 必须带 `#` 前缀**。平台按 path **首字符分流**:`#` 开头走系统图标(`AssetsIcon`),**否则当成图片路径**去加载(`AssetsImg`)—— 所以写 `Icon-Project-o`(漏了 `#`)**不报错,只是静默不显示**,是最难查的一类问题。平台样本与 CLI 默认值都是带 `#` 的(`#icon-eBuilder-o`)。
102
+ > 真要发**图片**才不带 `#`(以 `/`、`./`、`../`、`http(s)://`、`data:` 开头)。CLI 的 `designer nav-panel menu-add --icon` / `designer digital-panel panel-add --icon` / `form button … --icon` 都会**自动补 `#`**(见 `services/icon-path.ts`);agent 手工改 config 时须自己带上。
103
+ >
104
+ > **图标对象的形状按组件分两套,别混用**:
105
+ > - 导航面板 / app:`{path, style:{color, fillType:'borderColor', borderColor}}`
106
+ > - **数字面板 KPI 卡**(`panels[].icon`,真机读回的形状):`{path, style:{fontSize:36, color, disabled:false, fillType:'backgroundColor', borderColor, bgColor}, iconDisplayType:'line'}` —— `fillType` 是 **`backgroundColor`**,底色键叫 **`bgColor`**(在 `style` 里),`iconDisplayType` 在**图标对象顶层**。没有 `path` 时整块图标不渲染。
107
+ >
108
+ > **数字面板的卡 id 硬规则**:`config.panels[]` 里**每张卡的 `id` 必须两两不同**。撞了平台不报错,但设计器里两张卡会互相串。CLI `designer digital-panel panel-add` 会自动避开已占用的 id,并在保存前复查一遍。
100
109
 
101
110
  ---
102
111
 
@@ -192,6 +192,8 @@ EBuilder 关联字段在创建时指定目标表单 `objId` 和显示字段:
192
192
 
193
193
  ## 执行创建
194
194
 
195
+ 需要还原图片或 XLSX 源样式时,可在普通创建完成后使用[源样式还原命令链](guide-form-layout-source.md),或同时传 `--layout-source @source.json --layout-spec @spec.json --layout-artifact-out artifact.json`。该入口先验证源文件,继续使用原字段创建链,最后在高级属性、公式和分组重排结束后保存精确布局。失败保留已有 objId/formId,重试只处理该对象,不重复建表。
196
+
195
197
  ```bash
196
198
  e10-cli form create <appId> "采购合同" --fields @fields.json --layout EXCEL
197
199
  ```