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
@@ -2,9 +2,14 @@
2
2
 
3
3
  ## 概述
4
4
 
5
- 字段联动(FormDataLinkage):表单字段值改变时,自动查询**另一张表**(按数据ID=触发字段值过滤),把查到的字段值**带出赋值**到本表单字段。支持单跳(一次直接带出)和多跳链式(多次中转后带出)。
5
+ 字段联动(FormDataLinkage):表单字段变化时,按条件查询**另一张表**,把查到的值**赋给本表字段**(主表或明细表)。
6
6
 
7
- 背后是一个 ESB FieldLinkage 动作流(触发 + N 个 EnquiryForm 查询 + Output 赋值),CLI 自动完成建 ESB app + saveDesign + 绑定。
7
+ 背后是一条 ESB FieldLinkage 动作流(触发 + EnquiryForm 查询 + Output 赋值),CLI 自动完成建 ESB app + saveDesign + 绑定联动记录。
8
+
9
+ 支持两种配置方式:
10
+
11
+ - **快捷配置**(`--condition` / `--assign`):任意条件 + 多查询字段 + 多赋值,对应设计器里的「快捷配置」页
12
+ - **旧单跳/多跳**(`--source-form` / `--query-field` / `--hops`):固定按「数据ID = 触发字段值」过滤,多跳用于把 ID 换成名称
8
13
 
9
14
  ## 三种联动对比
10
15
 
@@ -14,22 +19,10 @@
14
19
  | 接口 | viewlinkage | ffRelateField module:hrm | saveFormDataLinkage + saveDesign(ESB) |
15
20
  | 作用 | 改字段显示属性(hide/show/required) | 换 Employee/Department→带 HRM 属性 | **查任意表→带出任意字段赋值** |
16
21
  | 源 | 表单字段值条件 | Employee/Department(HRM 源) | 任意字段→任意表查询 |
17
- | 复杂度 | 简单 | 简单(单源单属性) | 复杂(跨表多跳,ESB 动作流) |
18
- | 关系 | — | — | **字段联动是关联表带出的进阶版** |
22
+ | 复杂度 | 简单 | 简单(单源单属性) | 复杂(跨表,ESB 动作流) |
19
23
 
20
24
  > 本文讲的是**跨表**带出。本表字段之间用公式互相计算赋值的是**函数联动**(eb 表 `form formula-linkage`、流程表单 `wf-form formula-linkage`),见 `guide-formula-linkage.md` —— 两者 `linkageType` 不同(`excel` vs `template`),`form field-linkage list/delete` 看不到也删不掉函数联动。
21
25
 
22
- ## 何时用多跳
23
-
24
- **Text 字段赋值必须用名称(多跳),不能直接赋 ID。**
25
-
26
- | 场景 | 跳数 | 示例 |
27
- |------|------|------|
28
- | 带出字段是 EBuilder(存 ID)→ 目标也是 EBuilder | 单跳 | 关联合同→查合同信息表→带出关联客户(ID→EBuilder 字段) |
29
- | 带出字段存 ID → 目标是 Text(要名称) | **多跳** | 关联客户→查客户信息表→客户类型(ID)→查客户类型表→类型名称(Text)→填 Text 字段 |
30
-
31
- **判断原则**:目标字段是 EBuilder/Select(存 ID)→ 单跳即可;目标字段是 Text(要展示名称)→ 必须多跳到名称表取名称。
32
-
33
26
  ## CLI 命令
34
27
 
35
28
  ```bash
@@ -42,82 +35,174 @@ e10-cli form field-linkage read <appId> <objId> <linkageId>
42
35
  # 查源表可带出字段
43
36
  e10-cli form field-linkage fields <appId> <formId>
44
37
 
38
+ # 可用触发动作
39
+ e10-cli form field-linkage events <appId> <objId> [--effect formLayout|workFlow|includeNode]
40
+
45
41
  # 删除(批量)
46
42
  e10-cli form field-linkage delete <appId> <objId> <linkageId...>
47
43
  ```
48
44
 
49
- ### 新增(add)
45
+ ## 快捷配置(add)
50
46
 
51
- **单跳**(一次直接带出):
52
47
  ```bash
53
48
  e10-cli form field-linkage add <appId> <objId> \
54
- --trigger <触发字段名> \
55
- --source-form <目标表objId> \
56
- --query-field <目标表带出字段名> \
57
- --target <本表目标字段名>
49
+ --trigger <本表触发字段名> \
50
+ --source-form <查询目标表 objId> \
51
+ --condition "源表字段:算子:值" \
52
+ --query-fields "源表字段1,源表字段2" \
53
+ --assign "源表查询字段=本表目标字段"
58
54
  ```
59
55
 
60
- **多跳**(多次中转后带出):
56
+ ### 查询条件(`--condition`)
57
+
58
+ 可重复,多个为「且」。写法 `源表字段:算子:值`,算子与动作流筛选共用同一套:
59
+
60
+ | 类别 | 算子 |
61
+ |---|---|
62
+ | 比较 | 等于 / 不等于 / 大于 / 大于等于 / 小于 / 小于等于 |
63
+ | 文本 | 包含 / 不包含 / 开头包含 / 开头不包含 / 结尾包含 / 结尾不包含 |
64
+ | 集合 | 属于 / 不属于 / 被包含于 |
65
+ | 无值 | 为空 / 不为空(可不写冒号和值) |
66
+ | 区间 | 区间(写 `起始~结束`) |
67
+
68
+ 值写 `@本表字段名` 表示引用本表字段;否则按字面值。示例:
69
+
61
70
  ```bash
62
- e10-cli form field-linkage add <appId> <objId> \
63
- --trigger <触发字段名> \
64
- --target <本表目标字段名> \
65
- --hops "<源表objId:带出字段名,源表objId:带出字段名,...>"
71
+ --condition "测试字段C:eq:11111"
72
+ --condition "测试字段C:等于:@测试字段A"
73
+ --condition "日期字段A:区间:2026-10-20~2026-10-21"
74
+ --condition "备注:不为空"
66
75
  ```
67
76
 
68
- `--hops` 格式:每跳 `objId:字段名`,逗号分隔。前一跳的带出值 = 下一跳的过滤值(数据ID=前一跳结果)。最后一跳的带出值赋给 `--target`。
77
+ ### 查询字段(`--query-fields`)
78
+
79
+ 逗号分隔的源表字段名。不给时会自动并入 `--assign` 的源字段和明细依据字段。
69
80
 
70
- ## 配置示例
81
+ ### 赋值(`--assign`)
71
82
 
72
- ### 示例1:单跳——关联合同→合同信息表→关联客户
83
+ 可重复,`源表查询字段=本表目标字段`:
73
84
 
85
+ - 主表字段直接写字段名
86
+ - 明细表字段写 `明细表名.字段名`
87
+
88
+ ```bash
89
+ --assign "测试字段C=测试字段A"
90
+ --assign "测试字段C=明细表1.明细字段1"
74
91
  ```
75
- 关联合同(EBuilder→合同信息表) 值改变
76
- → 查合同信息表 by 数据ID=关联合同
77
- → 带出关联客户(EBuilder→客户信息表,存ID)
78
- → 赋值到本表.关联客户(EBuilder字段,存ID)
92
+
93
+ ### 明细行依据(`--basis`)
94
+
95
+ `明细表名=源表字段名`。决定写入明细表时按哪一列匹配/生成行。不给则取该明细表第一个赋值的源字段;当被赋值的源字段正好是依据值时,设计器里显示为「依据值本身」。
96
+
97
+ ```bash
98
+ --basis "明细表1=测试字段C"
79
99
  ```
80
100
 
101
+ ### 明细配置(三个开关)
102
+
103
+ | 参数 | 取值 | 对应设计器 |
104
+ |---|---|---|
105
+ | `--detail-mode` | `add`(默认)/ `cover` / `update` | 主表联动明细表时:添加明细 / 覆盖明细 / 更新明细 |
106
+ | `--detail-add` | `override`(默认)/ `append` | 明细表添加行时:删除已联动出的明细再添加 / 累计添加明细 |
107
+ | `--fission` | `on`(默认)/ `off` | 联动出的值继续触发联动 |
108
+
109
+ ### 触发动作(`--event`)
110
+
111
+ 可重复,写法同函数联动:事件名或 type,可带 `类型:字段,字段`。默认 `changeField`(值改变时),字段取 `--trigger`。
112
+
81
113
  ```bash
82
- e10-cli form field-linkage add <appId> <objId> \
83
- --trigger 关联合同 --source-form <合同信息表objId> --query-field 关联客户 --target 关联客户
114
+ --event changeField
115
+ --event onLoadForm
116
+ --event "changeField:测试字段A"
84
117
  ```
85
118
 
86
- ### 示例2:多跳——关联客户→客户信息表→客户类型→客户类型表→类型名称→填Text
119
+ 表单级 / 流程级事件(载入时、创建数据时…)不需要触发字段。流程事件(提交/批准、转发、保存…)需要配合 `--effect workFlow|includeNode`。
120
+
121
+ ### 生效维度(`--effect`)
122
+
123
+ `form`(默认,当前表单)/ `formLayout`(表单布局,可配 `--layout-id`)/ `workFlow`(当前工作流)/ `includeNode`(选择节点,配 `--workflow-id` 与 `--node`)。
124
+
125
+ ### 启用状态(`--state`)
126
+
127
+ `on`(默认)/ `off`。
128
+
129
+ ### 赋值前提(`--precondition`)
87
130
 
131
+ 满足前提时才执行赋值。可重复,多个为「且」:
132
+
133
+ ```bash
134
+ --precondition "rlytest:不为空"
135
+ --precondition "测试字段C:包含:@rlytest" # @ 先查查询结果字段
136
+ --precondition "日期字段A:包含:@测试字段A" # 查不到再按本表字段
88
137
  ```
89
- 关联客户(EBuilder→客户信息表) 值改变
90
- → Step1: 查客户信息表 by 数据ID=关联客户 → 带出客户类型(EBuilder→客户类型表,存ID)
91
- → Step2: 查客户类型表 by 数据ID=客户类型(Step1结果) → 带出类型名称(Text)
92
- → 赋值到本表.客户类型(Text字段,要名称不要ID)
138
+
139
+ 前提条件保存在 ESB 条件服务里,开关它等价于重新保存动作流设计。
140
+
141
+ ## 修改(update)
142
+
143
+ ```bash
144
+ e10-cli form field-linkage update <appId> <objId> <linkageId> \
145
+ [--name <名称>] [--state on|off] \
146
+ [--event <事件...>] [--trigger <字段...>] [--effect <维度>] \
147
+ [--detail-mode add|cover|update] [--detail-add override|append] [--fission on|off] \
148
+ [--precondition <条件...>] [--clear-precondition]
93
149
  ```
94
150
 
151
+ - 不给 `--event` / `--trigger` 时原样沿用现有触发动作
152
+ - 只改启停时走专用接口,不重发整套联动报文
153
+ - 赋值前提不属于联动记录,由 CLI 读回动作流设计后只改 Output 节点再保存
154
+
155
+ ## 旧单跳 / 多跳(兼容保留)
156
+
157
+ **单跳**:按「数据ID = 触发字段值」过滤。
158
+
95
159
  ```bash
96
160
  e10-cli form field-linkage add <appId> <objId> \
97
- --trigger 关联客户 --target 客户类型 \
98
- --hops "<客户信息表objId>:客户类型,<客户类型表objId>:类型名称"
161
+ --trigger <触发字段名> \
162
+ --source-form <目标表objId> \
163
+ --query-field <目标表带出字段名> \
164
+ --target <本表目标字段名>
99
165
  ```
100
166
 
101
- ### 示例3:链式联动(两条独立 linkage 串联)
167
+ **多跳**:`--hops "objId:字段名,objId:字段名"`,前一跳的带出值作为下一跳的过滤值。
102
168
 
103
- 关联合同→(linkage1)→关联客户→(linkage2)→客户类型→(linkage3)→类型名称
169
+ **何时用多跳**:目标字段是 Text(要名称)而源表存的是 ID(EBuilder/Select)时,需要多跳一次到名称表取名称;目标字段本身存 ID 则单跳即可。
104
170
 
105
- 每条 linkage 的 `--trigger` 是上一条的 `--target`。分开 `add` 多次即可。
171
+ ## 示例
106
172
 
107
- ## 查源表字段
173
+ **单跳(快捷配置)**:
108
174
 
109
175
  ```bash
110
- # 查某表单有哪些可带出字段
111
- e10-cli form field-linkage fields <appId> <formId>
176
+ e10-cli form field-linkage add <appId> <objId> \
177
+ --trigger 关联合同 \
178
+ --source-form <合同信息表objId> \
179
+ --condition "关联合同:等于:@关联合同" \
180
+ --query-fields "关联客户" \
181
+ --assign "关联客户=关联客户"
112
182
  ```
113
183
 
114
- 或用 `e10-cli form read <objId> --app-id <appId>` 取字段 fieldId(配置 --hops 时需知道字段名)。
184
+ **主表联动明细表(多值写入 + 赋值前提)**:
185
+
186
+ ```bash
187
+ e10-cli form field-linkage add <appId> <objId> \
188
+ --trigger 客户编号 \
189
+ --source-form <订单表objId> \
190
+ --condition "客户编号:等于:@客户编号" \
191
+ --query-fields "订单号,金额" \
192
+ --assign "订单号=订单明细.订单号" \
193
+ --assign "金额=订单明细.金额" \
194
+ --basis "订单明细=订单号" \
195
+ --detail-mode add --detail-add override --fission on \
196
+ --precondition "订单号:不为空"
197
+ ```
115
198
 
116
199
  ## 注意事项
117
200
 
118
- 1. **Text 字段必须多跳取名称**:目标字段是 Text → 带出值必须是名称(文本),不能是 ID。如果源表存的是 ID(EBuilder/Select),需多跳到名称表取名称。
119
- 2. **orgId 必须正确**:CLI 自动从 getForm 取 orgId,传给 application/save 建 ESB app。没有 orgId 的 app 不完整,saveDesign 会 500。
120
- 3. **多跳 EnquiryForm 需要 sources**:非首跳的查询动作必须有 `sources` 指向前一跳,否则服务器报"有两个起始执行组件"(CLI 已处理)。
121
- 4. **FormData 引用格式**:触发字段 `FormData.<本表formId>.<触发字段id>`;查询结果 `FormData.<源表objId>[].field_<带出字段id>`。
122
- 5. **--hops 的 objId 是表单 objId**(不是 formId)。CLI 内部自动解析 objId→formId。
123
- 6. **联动名称**:不传 `--name` 时自动生成 `<本表名>.<触发字段>→<最后源表名>.<最后带出字段>`。
201
+ 1. **三种明细模式**:添加/覆盖/更新由 `--detail-mode` 决定;「删除再添加 / 累计添加」是另一个开关 `--detail-add`。
202
+ 2. **明细行依据**决定行匹配:写入明细表时,依据值相同的行按模式处理。
203
+ 3. **赋值前提引用字段**:`@字段名` 先按查询结果字段解析(`source` = 查询节点),找不到再按本表字段(`source` = 触发事件)。
204
+ 4. **算子与动作流筛选同源**:按字段类型族校验,不支持的算子会直接报错。
205
+ 5. **FormData 引用格式**:本表字段 `FormData.<本表formId>.<字段id>`;查询结果 `FormData.<源表objId>[].field_<字段id>`。
206
+ 6. **--source-form 的 objId 是表单 objId**(不是 formId),CLI 内部自动解析。
207
+ 7. **联动名称**:不传 `--name` 时自动生成 `<本表名>.<触发字段>→<源表名>.<条件字段>`。
208
+ 8. **SQL 联动类型尚未覆盖**:只支持「动作流联动」(`linkageType=template`);设计器里的「SQL可视化配置 / SQL联动」两条支路尚未实现。
@@ -29,6 +29,12 @@ e10-cli form permission archive add <objId> <appId> --workflow <workflowId> \
29
29
  e10-cli form permission archive add <objId> <appId> --workflow <workflowId> \
30
30
  --target matrix --eb-form <表单名或id> --matrix-value 创建者 --rights view
31
31
 
32
+ # 矩阵相关 + 条件(真矩阵才有条件列):所属门店 等于 本表单的「创建人部门」
33
+ e10-cli form permission archive add <objId> <appId> --workflow <workflowId> \
34
+ --target matrix --matrix 门店经理矩阵 \
35
+ --matrix-condition '{"column":"所属门店","func":"等于","field":"创建人部门"}' \
36
+ --rights view
37
+
32
38
  # 删除(按 list 里的权限 ID)
33
39
  e10-cli form permission archive remove <objId> <appId> --right-id <id[,id...]>
34
40
 
@@ -83,7 +89,53 @@ e10-cli form permission archive card <workflowId> <appId> --set 1
83
89
  目前只有「创建者」可直接用名称指定;其余取值请用 `--matrix-value <id>:<名称>:<valueType>` 明写,
84
90
  或用 `--matrix-value-raw '<JSON 数组>'` 整体透传(数组元素形状以设计器实际请求为准)。
85
91
 
86
- 矩阵下面的「条件」这一层暂未开放,固定为空。
92
+ ### 矩阵相关的「条件」
93
+
94
+ 矩阵相关比另外三类多一层**条件**:拿矩阵自己的**条件列**去比「固定值」或「本表单字段」,只有命中的行才生效。
95
+ 落库是行报文里的 `matrixConditionData`(一棵条件树的 JSON 串)。
96
+
97
+ ```bash
98
+ # 一条:所属门店 等于 固定值
99
+ --matrix-condition '{"column":"所属门店","func":"等于","value":"123测试的"}'
100
+
101
+ # 一条:所属门店 等于 本表单字段(field 走字段表按 id/名解析)
102
+ --matrix-condition '{"column":"所属门店","func":"eq","field":"创建人部门"}'
103
+
104
+ # 两条 + 任一
105
+ --matrix-condition '{"column":"所属门店","func":"等于","value":"上海门店"}' \
106
+ --matrix-condition '{"column":"所属门店","func":"不属于","value":"临时门店"}' \
107
+ --matrix-condition-relation or
108
+ ```
109
+
110
+ | 参数 | 说明 |
111
+ |---|---|
112
+ | `--matrix-condition <json>` | 一条条件,**可重复**;也可 `@文件` 给一个数组。对象三件套:`column`(条件列的 id 或列名)+ `func` + 右值 |
113
+ | `--matrix-condition-relation` | 条件之间的关系:`and`=所有(默认)/ `or`=任一 |
114
+ | `--matrix-condition-comp-type` | 条件列的组件键。**列类型的组件键目前只实证了「部门」→`Department`**,其余类型(人员/分部/岗位/客户/项目/自定义浏览框)命令会报错要求显式给 |
115
+ | `--matrix-condition-raw <json>` | 整棵树透传(不做校验),形状以设计器请求为准 |
116
+
117
+ **右值三选一**:
118
+
119
+ - `"value": "字面值"` —— 固定值。**6 个算子都能配**。
120
+ - `"field": "字段名或 id"` —— 引用**本表单字段**,按字段表解析。
121
+ - `"fieldRef": {"id":"…","compType":"…","text":"…"}` —— 直接给字段描述符。**「创建人部门」这类运行时变量必须用这个** ——
122
+ 它出现在设计器的字段选择器里,但 `ds/fields` 与 `getFormFieldPage` 都查不到;描述符从设计器报文里抄。
123
+
124
+ > ⚠ **引用本表字段(`field` / `fieldRef`)平台卡两条**,CLI 会当场拦下而不是发出去:
125
+ > ① **算子只能是「等于」**;② **字段类型必须与条件列一致** —— 部门列只能引用部门类型的字段,
126
+ > 文本字段在设计器里根本选不到。所以「所属门店(部门)等于 [创建人部门]」成立,
127
+ > 「所属门店(部门)等于 [名称(文本)]」和「所属门店 不等于 [创建人部门]」都会报错。
128
+
129
+ 算子只有界面下拉那 6 个:**等于 / 不等于 / 属于 / 不属于 / 为空 / 不为空**(`eq` / `neq` / `aggregate` / `unaggregate` / `empty` / `nempty`)。
130
+ 其中**只有「等于」是对着真机报文核实的**,其余 5 个是按同一族条件树的码表推的 —— 内容平台会原样存下、回读也一模一样,
131
+ **只会在设计器里露馅**(渲染成 `undefined`)。用它配完请在设计器里过一眼。
132
+
133
+ 两条限制:
134
+
135
+ - **`--eb-form` 不能配条件** —— e-Builder 表单当矩阵用时没有条件列,给了会直接报错。
136
+ - **右值不能引用明细表字段**(只支持主表字段)。
137
+
138
+ 台账那边的矩阵权限(`form list-permission --add-matrix`)**同一套参数与语义**。
87
139
 
88
140
  ## 权限码
89
141
 
@@ -115,7 +167,8 @@ e10-cli form permission archive card <workflowId> <appId> --set 1
115
167
  - 回读的 `orgTypeName` 会和该类别的预期名称对照(如 `field_employee` 对应「人员字段」)。对不上直接报错 ——
116
168
  那意味着授权对象写错了,不能静默放过。
117
169
  - 字段相关这类计算型授权,平台会回 `isShowRebuild=2`,此时按提示执行
118
- `e10-cli form permission rebuild <objId> <appId> <权限ID>`。
170
+ `e10-cli form permission rebuild <objId> <appId> <权限ID>` —— 等价于在权限行上点【重构】。
171
+ 这一步不做,权限列表是不完整的(界面上表现为该行还要重构)。
119
172
 
120
173
  ## 归档卡片
121
174
 
@@ -74,6 +74,19 @@ e10-cli form association update <objId> <appId> <associationId> --view <newViewI
74
74
 
75
75
  仅启用或停用页签时,`update --enabled true|false` 使用 `updateIsOpenById` 独立接口并通过列表回读状态,不整包保存关联配置。
76
76
 
77
+ ## 删除关联页签
78
+
79
+ ```bash
80
+ e10-cli form association delete <objId> <appId> <associationId>
81
+ e10-cli form association delete <objId> <appId> "全部合同"
82
+ ```
83
+
84
+ 第 3 个参数可以是关联 ID,也可以是页签名称;按名称删时**名称必须唯一** —— 同名多条会报错并列出各自的 ID,不会替你挑一条删。找不到时同样报错并列出该表单现有的页签。
85
+
86
+ 命令先按列表确认这条页签属于当前表单,删除后回读列表确认它确实消失,成功输出 `verified: true` 和剩余页签数 `remaining`。
87
+
88
+ 删除不可撤销,也没有回收站。删掉后该页签连同它的权限条件一起不再出现在表单上,但**它引用的目标视图本身不受影响**。只想临时下线这个页签时用 `update --enabled false`,不要删。
89
+
77
90
  ## 修改和清空关联数据筛选
78
91
 
79
92
  ```bash
@@ -73,6 +73,93 @@ e10-cli form button action-set <objId> <appId> <buttonId> --open-view <视图> -
73
73
 
74
74
  当前仅管理一个 `openpage` 动作,不用于复杂多动作编排。`--start-workflow` 暂只解析当前应用内流程;跨应用普通视图/布局使用 `--target-app`。
75
75
 
76
+ ## 按钮基础属性
77
+
78
+ `form button set` 改按钮的展示配置,**已有的动作和权限原样保留**:
79
+
80
+ ```bash
81
+ # 名称 / 提示内容 / 备注
82
+ e10-cli form button set <objId> <appId> <buttonId> --name "提交" --tips "请确认数据无误" --desc "业务备注"
83
+
84
+ # 图标(存的是 JSON 串,命令负责拼装)
85
+ e10-cli form button set <objId> <appId> <buttonId> --icon Icon-N-Offer-management --icon-display line
86
+ e10-cli form button set <objId> <appId> <buttonId> --icon Icon-N-Offer-management --icon-color "#ff0000" --icon-bg "#ffffff"
87
+ e10-cli form button set <objId> <appId> <buttonId> --icon-none # 清空图标
88
+ e10-cli form button set <objId> <appId> <buttonId> --only-icon # 只显示图标
89
+
90
+ # 点击日志
91
+ e10-cli form button set <objId> <appId> <buttonId> --no-log
92
+ e10-cli form button set <objId> <appId> <buttonId> --log --log-message "提交了单据"
93
+ ```
94
+
95
+ `--icon-display` 取 `line`(描边)或 `fill`(填充);只改颜色/描边时按钮必须已有图标。
96
+
97
+ ### 数据过滤
98
+
99
+ 按钮的「数据过滤」决定**列表里哪些行**受该按钮影响,条件语法与 `form list-filter` **完全一致**:
100
+
101
+ ```bash
102
+ e10-cli form button set <objId> <appId> <buttonId> --add '{"conditions":[{"fieldId":"<fieldId>","func":"contains","value":"abc"}]}'
103
+ e10-cli form button set <objId> <appId> <buttonId> --replace @cond.json
104
+ e10-cli form button set <objId> <appId> <buttonId> --remove <fieldId>
105
+ e10-cli form button set <objId> <appId> <buttonId> --relation or
106
+ e10-cli form button set <objId> <appId> <buttonId> --clear-filter
107
+ ```
108
+
109
+ `--add` 叠加、`--replace` 整体覆盖、`--remove` 按字段摘、`--relation` 只调顶层关系,同名同义。启用数据过滤时开关 `conditionEnable` 自动置 1,`--clear-filter` 置回 0。另有 `--disable-condition` / `--clear-disable-condition` 管「禁用条件」。
110
+
111
+ `form button add` 建按钮时也能一次带上:`--tips --desc --icon --only-icon --no-log --log-message --data-filter`。
112
+
113
+ ## 按钮权限
114
+
115
+ 「按钮权限」管**哪些人能看见并点击这个按钮**,与表单共享权限是两套:
116
+
117
+ ```bash
118
+ e10-cli form button permission <objId> <appId> <buttonId> # 列出
119
+ e10-cli form button permission <objId> <appId> <buttonId> --add-all
120
+ e10-cli form button permission <objId> <appId> <buttonId> --add-company 某分部 --contain-extra
121
+ e10-cli form button permission <objId> <appId> <buttonId> --add-department 某部门
122
+ e10-cli form button permission <objId> <appId> <buttonId> --add-people 某人
123
+ e10-cli form button permission <objId> <appId> <buttonId> --remove 1 # 序号(从 1 起)或权限 id
124
+ e10-cli form button permission <objId> <appId> <buttonId> --clear
125
+ ```
126
+
127
+ 授权对象支持**全体 / 分部 / 部门 / 人员**四类,主体可写名称或 ID。名称要求精确同名,撞名会报错并列出候选 id;取不到显示名也会直接报错,不会写入一条空名字。`--contain-extra` 表示含下级。其余授权对象类型本轮不支持,遇到会当场报错而不是写错。
128
+
129
+ 未配置过权限的按钮,平台会保留一条「全体」。保存后按**集合**回读核对(平台会重排顺序,不比数组顺序)。
130
+
131
+ ## 按钮动作(可挂多个)
132
+
133
+ 一个按钮可以挂**多个**动作。`form button action` 负责增删查:
134
+
135
+ ```bash
136
+ e10-cli form button action <objId> <appId> <buttonId> # 列出(序号 / 类型 / 摘要)
137
+ e10-cli form button action <objId> <appId> <buttonId> --remove 2 # 按序号或动作 id
138
+ e10-cli form button action <objId> <appId> <buttonId> --clear # 清空自定义动作
139
+ ```
140
+
141
+ 追加动作(同一次命令里按 打开页面 → 确认框 → JavaScript → 编辑字段值 → 触发逻辑流 的顺序追加,可一次给多种):
142
+
143
+ | 动作 | 用法 |
144
+ |---|---|
145
+ | 打开页面(URL) | `--add-url <url> [--page-type LINK\|CUSTOMPAGE] [--map "参数名:来源字段"]` |
146
+ | 打开页面(视图 / 布局 / 流程) | `--add-view <视图>`、`--add-layout <表单> [--layout-type 新建\|编辑\|显示]`、`--add-start-workflow <流程>`,共用 `--map "目标字段:来源字段"` |
147
+ | 确认框 | `--add-confirm --confirm-title <标题> --confirm-content <正文> [--confirm-true <文案>] [--confirm-false <文案>]` |
148
+ | JavaScript | `--add-js --code <源码\|@文件>` |
149
+ | 编辑字段值 | `--add-edit-field "字段:值"`(可多个;字段写 fieldId 或字段标题) |
150
+ | 触发逻辑流 | `--add-logic <逻辑流名或ID> [--logic-ecode-id <id>]` |
151
+
152
+ `--open-type` 管打开方式:`1` 弹窗 / `2` 当前页 / `3` 新窗口。
153
+
154
+ ### 使用说明与边界
155
+
156
+ - **编辑字段值**本轮只支持「赋固定值」。同一次命令里多次 `--add-edit-field` 会并进同一条动作(按字段去重,同字段后写的覆盖先写的);按钮上已有该动作时会并入它,不会多出一条。
157
+ - **触发逻辑流**只做绑定,**不生成**逻辑流。按名称解析要求精确同名,撞名报错并列出候选。`ecodeId` 可用 `--logic-ecode-id` 指定;不给时沿用该按钮上已有的绑定值,都没有则留空。
158
+ - **JavaScript** 源码建议用 `--code @文件` 传入,避免命令行转义把脚本弄坏。
159
+ - `action-set` 是早期只支持单一打开页面动作的命令,**已标记废弃**,等价于 `action --clear --add-view …`;仍可用,但新需求请用 `form button action`。
160
+
161
+ 保存沿用「读回为底 → 只覆盖本次要改的部分 → 写 → 回读」:改动作时权限原样保留,改属性或权限时动作原样保留,互不冲掉。改完若提示回读不一致,远端可能已被改动,先重新查询再处理。
162
+
76
163
  ## 保存与验证
77
164
 
78
165
  命令先分页查找按钮,再读取动作、权限和可选视图。提交时保留按钮基础配置、完整动作和权限,及接口返回的日志/自定义提示设置,并按视图实际名称重建 `showPositionSpan`。
@@ -66,3 +66,9 @@ e10-cli form layout read <objId>
66
66
  ```
67
67
 
68
68
  创建后需要调整局部位置或显示属性时,使用 `form layout` 下的移动、只读和必填设置命令;具体参数通过 `form layout --help` 查询。
69
+
70
+ ## 图片与 Excel 源样式还原
71
+
72
+ 明确要求保留原样表的合并、留白、尺寸、静态文字和样式时,使用[源样式还原指南](guide-form-layout-source.md)。字段解析、创建及业务配置仍由 CLI 完成;布局模块在全部字段补写和归组结束后,将源网格绑定到已存在的字段与组件,编译 pageLayouts,再单次保存并独立回读。
73
+
74
+ Plan 中的文字蓝图不直接作为保存请求。必须产出版本化 LayoutSpec,分别绑定 TITLE、VALUE 和普通明细。图片由 Agent 实际观察形成源网格,Excel 使用确定性提取。未知或冲突位置会阻断,不生成手写原生组件 JSON,也不自动转为默认两字段一行。