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
@@ -0,0 +1,67 @@
1
+ import { type Client, type Config, type Form } from './workflow-function-management.js';
2
+ export declare const signFields: string[];
3
+ export declare const draftFields: string[];
4
+ export declare const widgetFields: string[];
5
+ export declare function booleanValue(v: any): boolean;
6
+ export declare function resultData(r: any, label: string): any;
7
+ export declare function settings(form: Form): Config;
8
+ export declare function verifySettings(expected: Config, actual: Config, fields: string[]): void;
9
+ /** Endpoint-specific snapshots; GET defaults, explicit patch, single POST, verified readback. */
10
+ export declare class OpinionSettings {
11
+ client: Client;
12
+ base: string;
13
+ constructor(client: Client, base: string);
14
+ get(path: string, query: Config): Promise<any>;
15
+ post(path: string, payload: Config): Promise<any>;
16
+ sign(workflowId: string, nodeId: string): Promise<Form>;
17
+ browserOptions(form: Form, field: string): Promise<Config[]>;
18
+ browserValues(form: Form, field: string, input: any): Promise<Config[]>;
19
+ patchForm(form: Form, patch: Config, allowed: string[]): Promise<Config>;
20
+ private wire;
21
+ saveSign(w: string, n: string, patch: Config): Promise<{
22
+ workflowId: string;
23
+ nodeId: string;
24
+ before: Config;
25
+ after: Config;
26
+ verified: boolean;
27
+ }>;
28
+ forward(w: string, n: string): Promise<Config>;
29
+ saveForward(w: string, n: string, patch: Config): Promise<{
30
+ workflowId: string;
31
+ nodeId: string;
32
+ before: Config;
33
+ after: Config;
34
+ verified: boolean;
35
+ }>;
36
+ draft(w: string): Promise<Form>;
37
+ saveDraft(w: string, patch: Config): Promise<{
38
+ workflowId: string;
39
+ before: Config;
40
+ after: Config;
41
+ verified: boolean;
42
+ }>;
43
+ widgets(w: string): Promise<Config[]>;
44
+ widget(w: string, widgetId: string): Promise<Form>;
45
+ saveWidget(w: string, widgetId: string, patch: Config): Promise<{
46
+ workflowId: string;
47
+ widgetId: string;
48
+ before: Config;
49
+ after: Config;
50
+ verified: boolean;
51
+ }>;
52
+ content(w: string): Promise<any>;
53
+ saveContent(w: string, patch: Config): Promise<{
54
+ workflowId: string;
55
+ before: any;
56
+ after: any;
57
+ verified: boolean;
58
+ }>;
59
+ style(w: string): Promise<any>;
60
+ saveStyle(w: string, patch: Config): Promise<{
61
+ workflowId: string;
62
+ before: any;
63
+ after: any;
64
+ verified: boolean;
65
+ }>;
66
+ }
67
+ //# sourceMappingURL=workflow-opinion-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-opinion-settings.d.ts","sourceRoot":"","sources":["../../src/services/workflow-opinion-settings.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,IAAI,EAAE,MAAM,mCAAmC,CAAC;AAI5F,eAAO,MAAM,UAAU,UAAkR,CAAC;AAC1S,eAAO,MAAM,WAAW,UAAyJ,CAAC;AAClL,eAAO,MAAM,YAAY,UAA6N,CAAC;AAGvP,wBAAgB,YAAY,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAI5C;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAKrD;AAKD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAQ3C;AAqBD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAGhF;AAED,iGAAiG;AACjG,qBAAa,eAAe;IACP,MAAM,EAAE,MAAM;IAAS,IAAI,EAAE,MAAM;gBAAnC,MAAM,EAAE,MAAM,EAAS,IAAI,EAAE,MAAM;IAChD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAG/B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAClC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGvD,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAgB5D,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAWvE,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAY9E,OAAO,CAAC,IAAI;IAKN,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAC,CAAC,EAAE,MAAM,EAAC,KAAK,EAAE,MAAM;;;;;;;IAc1C,OAAO,CAAC,CAAC,EAAE,MAAM,EAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK7C,WAAW,CAAC,CAAC,EAAE,MAAM,EAAC,CAAC,EAAE,MAAM,EAAC,KAAK,EAAE,MAAM;;;;;;;IAgB7C,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAG/B,SAAS,CAAC,CAAC,EAAE,MAAM,EAAC,KAAK,EAAE,MAAM;;;;;;IASjC,OAAO,CAAC,CAAC,EAAE,MAAM;IAYjB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjD,UAAU,CAAC,CAAC,EAAE,MAAM,EAAC,QAAQ,EAAE,MAAM,EAAC,KAAK,EAAE,MAAM;;;;;;;IAkBnD,OAAO,CAAC,CAAC,EAAE,MAAM;IACjB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAC,KAAK,EAAE,MAAM;;;;;;IAWnC,KAAK,CAAC,CAAC,EAAE,MAAM;IACf,SAAS,CAAC,CAAC,EAAE,MAAM,EAAC,KAAK,EAAE,MAAM;;;;;;CA0BxC"}
@@ -0,0 +1,328 @@
1
+ import { isDeepStrictEqual } from 'node:util';
2
+ import { id } from './workflow-function-management.js';
3
+ const P = '/api/bs/workflow/pathdef';
4
+ const D = `${P}/pathSet/draftopinion`;
5
+ export const signFields = ['mustInputDto', 'inputOperateTypeSelectDto', 'inputOperateTypeDto', 'hideInput', 'signOperateTypeSelect', 'signOperateTypeList', 'hideArea', 'viewTypeSelectDto', 'viewTypeDto', 'viewEmptyNotShow', 'viewRangeSelectDto', 'viewRangeDto', 'notSeeEachOther', 'feedback', 'nullNotFeedback'];
6
+ export const draftFields = ['openCustomSet', 'openTextarea', 'defautFont', 'defaultFontSize', 'showBlank', 'openSearch', 'opinionOrder', 'showLog', 'pcFillMethod', 'alertEndCountersign'];
7
+ export const widgetFields = ['opinionType', 'enableCountersign', 'conterSignType', 'typeBfSignDepart', 'typeBfSignSubcom', 'typeAfSign', 'enableCopyClear', 'copyClearOperate', 'copyClearNode', 'enableGenerateRecord', 'agentRecordOperate', 'agentRecordNode'];
8
+ const forwardFields = ['isForward', 'allowSubOpt', 'allowForward', 'allowSubOptCusName', 'allowForwardCusName'];
9
+ const scalar = (v) => String(Array.isArray(v) ? v[0] ?? '' : v ?? '');
10
+ export function booleanValue(v) {
11
+ if ([true, 1, '1'].includes(v))
12
+ return true;
13
+ if ([false, 0, '0'].includes(v))
14
+ return false;
15
+ throw Error('开关必须为 true/false 或 0/1');
16
+ }
17
+ export function resultData(r, label) {
18
+ if (!r || r.code !== 200 || r.status === false || r.fail === true || r.data === false || r.data?.status === false || r.data?.status === 'failed') {
19
+ throw Error(`${label}失败: ${r?.data?.errorInfo || r?.msg || '无有效响应'}`);
20
+ }
21
+ return r.data;
22
+ }
23
+ function formOf(v) {
24
+ if (!v?.data || !v?.items || Array.isArray(v.data) || !Object.keys(v.data).length)
25
+ throw Error('未读到服务端配置/默认值,停止写入');
26
+ return v;
27
+ }
28
+ export function settings(form) {
29
+ const d = structuredClone(form.data);
30
+ for (const [k, item] of Object.entries(form.items)) {
31
+ if (!(k in d))
32
+ continue;
33
+ if (item.itemType === 'SWITCH')
34
+ d[k] = booleanValue(d[k]);
35
+ else if (['SELECT', 'RADIO'].includes(item.itemType))
36
+ d[k] = scalar(d[k]);
37
+ }
38
+ return d;
39
+ }
40
+ function keys(p, allowed) {
41
+ if (!p || typeof p !== 'object' || Array.isArray(p))
42
+ throw Error('设置必须是 JSON 对象');
43
+ for (const k of Object.keys(p))
44
+ if (!allowed.includes(k))
45
+ throw Error(`不支持设置 ${k};可用字段:${allowed.join(', ')}`);
46
+ }
47
+ function enumValue(v, item, k) {
48
+ const s = scalar(v), options = item?.options;
49
+ if (!Array.isArray(options) || !options.length)
50
+ throw Error(`${k} 未返回服务端选项`);
51
+ const matches = options.filter((o) => !o.disabled && (String(o.id) === s || o.content === s));
52
+ if (matches.length !== 1)
53
+ throw Error(`${k} 无效或有歧义:${s};允许:${options.filter((o) => !o.disabled).map((o) => `${o.id}=${o.content}`).join(', ')}`);
54
+ return String(matches[0].id);
55
+ }
56
+ function comparable(v) {
57
+ if (Array.isArray(v))
58
+ return v.map(x => x && typeof x === 'object' && 'id' in x ? String(x.id) : comparable(x)).sort();
59
+ if (v && typeof v === 'object') {
60
+ if ('inputValue' in v)
61
+ return v.inputValue;
62
+ return Object.fromEntries(Object.keys(v).sort().map(k => [k, comparable(v[k])]));
63
+ }
64
+ if (v === true || v === false)
65
+ return v ? '1' : '0';
66
+ return v == null ? v : String(v);
67
+ }
68
+ export function verifySettings(expected, actual, fields) {
69
+ const diff = fields.filter(k => k in expected && !isDeepStrictEqual(comparable(expected[k]), comparable(actual[k])));
70
+ if (diff.length)
71
+ throw Error(`保存已发出,但回读不一致:${diff.join(', ')}。请先查询当前状态,不要直接重试。`);
72
+ }
73
+ /** Endpoint-specific snapshots; GET defaults, explicit patch, single POST, verified readback. */
74
+ export class OpinionSettings {
75
+ client;
76
+ base;
77
+ constructor(client, base) {
78
+ this.client = client;
79
+ this.base = base;
80
+ }
81
+ async get(path, query) {
82
+ return resultData(await this.client.get(this.base + path + '?' + new URLSearchParams(Object.entries(query).map(([k, v]) => [k, String(v)]))), path);
83
+ }
84
+ async post(path, payload) { return resultData(await this.client.post(this.base + path, payload), path); }
85
+ async sign(workflowId, nodeId) {
86
+ return formOf(await this.get(`${P}/nodesign/getSignConfigForm`, { workflowId: id(workflowId), nodeId: id(nodeId) }));
87
+ }
88
+ async browserOptions(form, field) {
89
+ const b = form.items[field]?.browserBean;
90
+ // Only the two workflow-owned browser types are needed here; never follow arbitrary URLs.
91
+ if (b?.module !== 'workflow/pathdef' || !['workflowOperateTypeBrowser', 'workflowPathNodeBrowser'].includes(b.type))
92
+ throw Error(`${field} 未返回支持的浏览类型`);
93
+ const all = [], seen = new Set();
94
+ for (let current = 1; current <= 100; current++) {
95
+ const d = await this.post(`/api/${b.module}/common/browser/data/${b.type}`, { ...b.commonParams, ...b.dataParams, current, pageNo: current, pageSize: 100 });
96
+ if (!Array.isArray(d?.data))
97
+ throw Error(`${field} 浏览候选格式异常`);
98
+ const rows = d.data;
99
+ if (rows.some((r) => seen.has(String(r.id))))
100
+ throw Error(`${field} 浏览分页重复,停止写入`);
101
+ rows.forEach((r) => { seen.add(String(r.id)); all.push(r); });
102
+ if (d.total !== undefined ? all.length >= Number(d.total) : rows.length < 100)
103
+ return all;
104
+ if (!rows.length)
105
+ throw Error(`${field} 浏览候选分页不完整`);
106
+ }
107
+ throw Error(`${field} 浏览候选超过分页上限`);
108
+ }
109
+ async browserValues(form, field, input) {
110
+ if (!Array.isArray(input) || input.some(v => typeof v !== 'string'))
111
+ throw Error(`${field} 请传名称或字符串 ID 数组`);
112
+ if (!input.length)
113
+ return [];
114
+ const available = await this.browserOptions(form, field), used = new Set();
115
+ return input.map(v => {
116
+ const found = available.filter(o => String(o.id) === v || (o.name ?? o.content) === v);
117
+ if (found.length !== 1 || found[0].disabled || found[0].isDelete)
118
+ throw Error(`${field} 未找到唯一可选值:${v}`);
119
+ const row = found[0], key = String(row.id);
120
+ if (used.has(key))
121
+ throw Error(`${field} 重复值:${v}`);
122
+ used.add(key);
123
+ return { id: key, dataId: key, content: row.name ?? row.content, isDelete: false, isComplete: false, _entityImId: 0, _secretLevel: 0, _secretLevelEnd: 0 };
124
+ });
125
+ }
126
+ async patchForm(form, patch, allowed) {
127
+ keys(patch, allowed);
128
+ const next = settings(form);
129
+ for (const [k, v] of Object.entries(patch)) {
130
+ const item = form.items[k];
131
+ if (!item || !(k in next) || item.readOnly || item.disable)
132
+ throw Error(`${k} 当前环境不可编辑`);
133
+ if (item.itemType === 'SWITCH')
134
+ next[k] = booleanValue(v);
135
+ else if (['SELECT', 'RADIO'].includes(item.itemType))
136
+ next[k] = enumValue(v, item, k);
137
+ else if (item.itemType === 'BROWSER')
138
+ next[k] = await this.browserValues(form, k, v);
139
+ else
140
+ throw Error(`${k} 不支持直接写入;需使用对应子配置命令`);
141
+ }
142
+ return next;
143
+ }
144
+ wire(form, data) {
145
+ const out = { ...data };
146
+ for (const [k, item] of Object.entries(form.items))
147
+ if (k in out && item.itemType === 'SWITCH')
148
+ out[k] = booleanValue(out[k]) ? 1 : 0;
149
+ return out;
150
+ }
151
+ async saveSign(w, n, patch) {
152
+ const form = await this.sign(w, n), before = settings(form), next = await this.patchForm(form, patch, signFields);
153
+ if (next.mustInputDto === '1' && next.hideInput && ('hideInput' in patch || 'mustInputDto' in patch))
154
+ throw Error('全部必填时不能隐藏意见输入框;请显式设置 hideInput:false');
155
+ for (const [mode, list] of [['inputOperateTypeSelectDto', 'inputOperateTypeDto'], ['viewTypeSelectDto', 'viewTypeDto'], ['viewRangeSelectDto', 'viewRangeDto']]) {
156
+ if ((mode in patch || list in patch) && next[mode] !== '0' && !(next[list]?.length) && (mode !== 'inputOperateTypeSelectDto' || next.mustInputDto === '2'))
157
+ throw Error(`${mode} 为选择/排除时 ${list} 不能为空`);
158
+ }
159
+ // Server clears node selection for mode=all. Make that deliberate, rather than silently discarding it.
160
+ if (next.viewRangeSelectDto === '0' && next.viewRangeDto?.length && 'viewRangeSelectDto' in patch)
161
+ throw Error('全部节点模式须同时显式传 viewRangeDto:[]');
162
+ const payload = { ...this.wire(form, next), workflowId: w, nodeId: n, workflowIdDto: w, nodeIdDto: n, isSync: false };
163
+ delete payload.id;
164
+ await this.post(`${P}/nodesign/saveSignConfig`, payload);
165
+ const after = settings(await this.sign(w, n));
166
+ verifySettings(next, after, signFields);
167
+ return { workflowId: w, nodeId: n, before, after, verified: true };
168
+ }
169
+ async forward(w, n) {
170
+ const d = await this.get(`${P}/nodeForwardSet/getNodeForwardSet`, { workflowId: id(w), nodeId: id(n) });
171
+ for (const k of ['todo', 'done', 'end'])
172
+ if (!d?.[k] || forwardFields.some(f => !(f in d[k])))
173
+ throw Error('节点转发默认值不完整,停止写入');
174
+ return d;
175
+ }
176
+ async saveForward(w, n, patch) {
177
+ keys(patch, ['todo', 'done', 'end']);
178
+ const before = await this.forward(w, n), next = structuredClone(before);
179
+ for (const [stage, changes] of Object.entries(patch)) {
180
+ keys(changes, forwardFields);
181
+ for (const [k, v] of Object.entries(changes)) {
182
+ if (k.endsWith('CusName')) {
183
+ if (typeof v !== 'string')
184
+ throw Error(`${stage}.${k} 应为名称字符串(空串恢复默认名称)`);
185
+ next[stage][k] = { ...next[stage][k], inputValue: v };
186
+ }
187
+ else
188
+ next[stage][k] = booleanValue(v);
189
+ }
190
+ }
191
+ await this.post(`${P}/nodeForwardSet/saveNodeForwardSet`, { ...next, workflowId: w, nodeId: n, isSync: false });
192
+ const after = await this.forward(w, n);
193
+ for (const s of ['todo', 'done', 'end'])
194
+ verifySettings(next[s], after[s], forwardFields);
195
+ return { workflowId: w, nodeId: n, before, after, verified: true };
196
+ }
197
+ async draft(w) {
198
+ return formOf((await this.get(`${D}/getDraftOpinionConfig`, { workflowId: id(w), isGlobal: false }))?.weaForm);
199
+ }
200
+ async saveDraft(w, patch) {
201
+ const form = await this.draft(w), before = settings(form), next = await this.patchForm(form, patch, draftFields);
202
+ const payload = this.wire(form, next);
203
+ // Gear ticks are view state. Sending displayContent:false to the entity's String field would corrupt the template.
204
+ for (const k of ['fieldSet', 'displayContent', 'menuStyle', 'logviewer'])
205
+ delete payload[k];
206
+ await this.post(`${D}/saveDraftOpinionConfig`, { ...payload, workflowid: w, isGlobal: 0 });
207
+ const after = settings(await this.draft(w));
208
+ verifySettings(next, after, draftFields);
209
+ return { workflowId: w, before, after, verified: true };
210
+ }
211
+ async widgets(w) {
212
+ id(w);
213
+ const all = [];
214
+ for (let current = 1; current <= 100; current++) {
215
+ const d = await this.post(`${D}/getDraftOpinionWidgetList`, { workflowId: w, current, pageSize: 100 });
216
+ if (!Array.isArray(d?.data))
217
+ throw Error('拟签字段列表格式异常');
218
+ if (d.data.some((r) => all.some(o => String(o.widgetId) === String(r.widgetId))))
219
+ throw Error('拟签字段分页重复');
220
+ all.push(...d.data);
221
+ if (d.total !== undefined ? all.length >= Number(d.total) : d.data.length < 100)
222
+ return all;
223
+ if (!d.data.length)
224
+ throw Error('拟签字段分页不完整');
225
+ }
226
+ throw Error('拟签字段超出分页上限');
227
+ }
228
+ async widget(w, widgetId) {
229
+ id(widgetId);
230
+ if (!(await this.widgets(w)).some(r => String(r.widgetId) === widgetId))
231
+ throw Error(`拟签控件 ${widgetId} 不属于流程或尚未在布局中保存`);
232
+ return formOf((await this.get(`${D}/getDraftOpinionWidgetConfig`, { workflowId: w, widgetId, isDesign: false }))?.weaForm);
233
+ }
234
+ async saveWidget(w, widgetId, patch) {
235
+ const form = await this.widget(w, widgetId), before = settings(form), next = await this.patchForm(form, patch, widgetFields);
236
+ if (next.opinionType !== '1' && (next.enableCopyClear || next.enableGenerateRecord))
237
+ throw Error('抄清、代录仅支持一人一条意见;切换类型前请显式关闭二者');
238
+ const dimension = ['0', '1'].includes(next.conterSignType) ? 'typeBfSignDepart' : 'typeBfSignSubcom';
239
+ const inactive = dimension === 'typeBfSignDepart' ? 'typeBfSignSubcom' : 'typeBfSignDepart';
240
+ if (inactive in patch && next[inactive] !== next[dimension])
241
+ throw Error(`${inactive} 与当前拟签维度不符,请设置 ${dimension}`);
242
+ if (next.opinionType === '0' && next[dimension] === '2')
243
+ throw Error('多人编辑同一条意见不支持“不允许互相查看”');
244
+ for (const [enabled, mode, list, group] of [['enableCopyClear', 'copyClearOperate', 'copyClearNode', 'copyClearOpGroupid'], ['enableGenerateRecord', 'agentRecordOperate', 'agentRecordNode', 'agentRecordOpGroupid']]) {
245
+ if (next[enabled] && next[mode] === '1' && (!next[list]?.length || !/^[1-9]\d*$/.test(String(next[group]))))
246
+ throw Error(`${enabled} 选择节点操作者需要已设置节点及操作者范围`);
247
+ }
248
+ if (next.enableCountersign && !(next.finishOperator?.length || next.finishNode?.length))
249
+ throw Error('启用组织拟签前需在系统配置结束拟签操作者/节点');
250
+ await this.post(`${D}/saveDraftOpinionWidgetConfig`, { ...this.wire(form, next), workflowid: w, widgetId, isDesign: false });
251
+ const after = settings(await this.widget(w, widgetId));
252
+ // Both UI aliases read the same stored typeBfSign column.
253
+ next.typeBfSignDepart = next.typeBfSignSubcom = next[dimension];
254
+ verifySettings(next, after, [...widgetFields, 'finishNode', 'finishOperator', 'copyClearOpGroupid', 'agentRecordOpGroupid']);
255
+ return { workflowId: w, widgetId, before, after, verified: true };
256
+ }
257
+ async content(w) { return this.get(`${P}/drapOpinionContent/getOpinionContent`, { workflowId: id(w) }); }
258
+ async saveContent(w, patch) {
259
+ keys(patch, ['displayContent']);
260
+ if (typeof patch.displayContent !== 'string')
261
+ throw Error('displayContent 必须为模板 HTML 字符串');
262
+ const before = await this.content(w);
263
+ const known = new Set([...before.contentFieldList, ...before.contentLabelList].map(o => o.key));
264
+ for (const m of patch.displayContent.matchAll(/\$([^$\s]+)\$/g))
265
+ if (!known.has(m[1]))
266
+ throw Error(`未知模板占位符:${m[1]}`);
267
+ // The template endpoint only UPDATEs; the configuration GET initializes a missing workflow record.
268
+ await this.draft(w);
269
+ await this.post(`${P}/drapOpinionContent/saveOpinionContent`, { workflowId: w, displayContent: encodeURIComponent(patch.displayContent) });
270
+ const after = await this.content(w);
271
+ verifySettings(patch, after, ['displayContent']);
272
+ return { workflowId: w, before, after, verified: true };
273
+ }
274
+ async style(w) { return this.get(`${P}/drapOpinionMenuStyle/getOpinionMenuStyle`, { workflowId: id(w) }); }
275
+ async saveStyle(w, patch) {
276
+ keys(patch, ['menuFont', 'fontSize', 'buttons']);
277
+ const before = await this.style(w);
278
+ const stylePatch = { ...patch };
279
+ delete stylePatch.buttons;
280
+ const form = formOf(before.menuStyleForm), next = await this.patchForm(form, stylePatch, ['menuFont', 'fontSize']);
281
+ const rows = structuredClone(before.menuTable.data);
282
+ if (patch.buttons !== undefined) {
283
+ if (!Array.isArray(patch.buttons))
284
+ throw Error('buttons 必须是以 menuKey 定位的局部修改数组');
285
+ const seen = new Set();
286
+ for (const b of patch.buttons) {
287
+ keys(b, ['menuKey', 'customName', 'menuColor', 'menuFontColor', 'menuBorderColor', 'menuOrderNum']);
288
+ const row = rows.find((r) => r.menuKey === b.menuKey);
289
+ if (!row || seen.has(b.menuKey))
290
+ throw Error(`按钮不存在或重复:${b.menuKey}`);
291
+ seen.add(b.menuKey);
292
+ for (const [k, v] of Object.entries(b)) {
293
+ if (k === 'menuKey')
294
+ continue;
295
+ if (k === 'customName') {
296
+ if (typeof v !== 'string')
297
+ throw Error('customName 必须为字符串');
298
+ row.menuNameMultilang = { ...row.menuNameMultilang, inputValue: v };
299
+ }
300
+ else if (k === 'menuOrderNum') {
301
+ if (!Number.isInteger(v) || Number(v) < 0)
302
+ throw Error('menuOrderNum 必须为非负整数');
303
+ row[k] = v;
304
+ }
305
+ else {
306
+ if (typeof v !== 'string' || !/^(-1|transparent|#[0-9a-fA-F]{3,8}|rgba?\([\d\s,.%]+\))$/.test(v))
307
+ throw Error(`${k} 颜色格式不正确`);
308
+ row[k] = v;
309
+ }
310
+ }
311
+ }
312
+ if (new Set(rows.map((r) => r.menuOrderNum)).size !== rows.length)
313
+ throw Error('按钮顺序重复,请同时指定相关按钮的新序号');
314
+ }
315
+ await this.draft(w);
316
+ await this.post(`${P}/drapOpinionMenuStyle/saveOpinionMenuStyle`, { workflowId: w, ...next, tableDatas: rows });
317
+ const after = await this.style(w);
318
+ verifySettings(next, settings(formOf(after.menuStyleForm)), ['menuFont', 'fontSize']);
319
+ for (const row of rows) {
320
+ const actual = after.menuTable.data.find((r) => r.menuKey === row.menuKey);
321
+ if (!actual)
322
+ throw Error(`回读缺少按钮 ${row.menuKey}`);
323
+ verifySettings(row, actual, ['menuColor', 'menuFontColor', 'menuBorderColor', 'menuOrderNum', 'menuNameMultilang']);
324
+ }
325
+ return { workflowId: w, before, after, verified: true };
326
+ }
327
+ }
328
+ //# sourceMappingURL=workflow-opinion-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-opinion-settings.js","sourceRoot":"","sources":["../../src/services/workflow-opinion-settings.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "weaver-e10-builder",
3
- "version": "1.5.10",
3
+ "version": "1.5.12",
4
4
  "description": "Eteams/Ebuilder CLI — 泛微 OA 命令行工具",
5
5
  "type": "module",
6
6
  "files": [
@@ -24,6 +24,7 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "@napi-rs/keyring": "^1.3.0",
27
+ "@xmldom/xmldom": "0.8.15",
27
28
  "archiver": "^5.3.1",
28
29
  "axios": "^1.3.4",
29
30
  "chalk": "^5.0.1",
@@ -32,6 +33,7 @@
32
33
  "debug": "^4.3.4",
33
34
  "fs-extra": "^10.1.0",
34
35
  "js-base64": "^3.7.2",
36
+ "jszip": "3.10.1",
35
37
  "mammoth": "^1.12.0",
36
38
  "minimist": "^1.2.6",
37
39
  "node-html-markdown": "^2.0.0",
@@ -2,11 +2,11 @@
2
2
  name: weaver-e10-builder
3
3
  display_name: 泛微E10智能搭建Skill
4
4
  display_name_en: E10 Builder
5
- description: 泛微E10智能搭建skill v2(通用版),辅助编写泛微Ebuilder自定义应用,对应CLI版本1.5.10
6
- description_zh: 泛微Ebuilder低代码应用智能搭建工具 v2(通用版),辅助编写自定义应用(表单/流程/列表/动作流/权限/分组/编号等),与 e10-cli 配套使用,当前对应 CLI 版本 1.5.10。
7
- description_en: E10 Ebuilder low-code app builder skill v2 (general) — helps build Weaver E10 custom apps (forms/workflows/lists/actionflows/permissions/groups/numbering) via e10-cli, currently paired with CLI 1.5.10.
5
+ description: 泛微E10智能搭建skill v2(通用版),辅助编写泛微Ebuilder自定义应用,对应CLI版本1.5.12
6
+ description_zh: 泛微Ebuilder低代码应用智能搭建工具 v2(通用版),辅助编写自定义应用(表单/流程/列表/动作流/权限/分组/编号等),与 e10-cli 配套使用,当前对应 CLI 版本 1.5.12。
7
+ description_en: E10 Ebuilder low-code app builder skill v2 (general) — helps build Weaver E10 custom apps (forms/workflows/lists/actionflows/permissions/groups/numbering) via e10-cli, currently paired with CLI 1.5.12.
8
8
  category: coding
9
- version: 1.5.10
9
+ version: 1.5.12
10
10
  author: 泛微网络科技股份有限公司
11
11
  auto: true
12
12
  ---
@@ -15,7 +15,7 @@ auto: true
15
15
 
16
16
  ## 安装与升级
17
17
 
18
- 本 skill 需与 CLI **版本匹配**(当前对应 CLI `1.5.10`)。版本不一致时命令/文档/选项可能对不上——升级前先对齐:
18
+ 本 skill 需与 CLI **版本匹配**(当前对应 CLI `1.5.12`)。版本不一致时命令/文档/选项可能对不上——升级前先对齐:
19
19
 
20
20
  ```shell
21
21
  e10-cli --version # 查 CLI 版本,应与上方 description 标注一致
@@ -55,6 +55,14 @@ npx -y skills add ./weaver-e10-builder.zip --skill -y
55
55
 
56
56
  > 文档版本 = CLI 版本(`e10-cli --version`)。升级 CLI 后跑一次 `skill sync`(或 auth status)即可带新文档。
57
57
 
58
+ ## 图片布局还原要求
59
+
60
+ 图片搭建先实际查看原图,并读取 references/form/guide-form-layout-source.md。使用 image-context 获取真实像素尺寸,imageStyles.geometry 记录实际边界及完整区域,不照抄示例列宽和行高。compile 后使用 form layout preview 实际核对原图与结构,再保存;API 回读 VERIFIED 不能作为与原图一致的结论。
61
+
62
+ 图片观察完成后,必须主动向用户展示主标题、字段标题、内容的字体类型、字号及 px/pt 单位、颜色、粗细、水平/垂直对齐;相同配置可合并列出,不同配置单列。字体和字号标为视觉估计,未知项明确说明,不能猜测。每个字段标题单独观察对齐:原图居中应记录 textAlign:center、verticalAlign:middle,不能仅记录主标题居中或遗漏字段标题。先执行 form layout style-review 输出复核报告,再等待用户确认或明确修改指令。用户自然语言修改由 Agent 定位到字段/单元格,交给 --overrides 逐项转换;有效项采用用户值,无法转换的单项保留图片识别值并告知,不得整组回退。只有用户已确认最终样式(或明确给出修改指令)才使用 --confirm 并重新 compile;不能代用户确认,新图片未确认不能 apply。识别结果缺少对齐时先重新查看原图,不能把平台默认左对齐当成图片识别结果。
63
+
64
+ 表格边线单独识别:必须记录 imageStyles.tableBorders 的正文范围及 top/right/bottom/left。存在的边线写明颜色、线宽、线型;明确无边线填 none,未识别填 unknown。原图贴边的边线也不能遗漏,左右 4% 留白不承接外框。不得把所有线默认写成 1px;分别展示外框、内部横线/竖线的粗细,按真实图片尺寸和缩放估计,让用户确认。用户明确要求表格线加粗/改色时,可用 style-review --overrides 的 gridBorderStyle 修改已声明表格内的现有线条,不改控件输入框和标题区,不凭此新增未知边线。没有表格时才可写 tableBorders:[]。缺少外框观察的新图片只能生成待审草稿,不能确认或保存。
65
+
58
66
  ## 核心理念
59
67
 
60
68
  > **默认一份完整业务方案落在一个主应用。** 需求明确指定已有应用、跨应用资源或独立业务边界时,按实际范围处理,并在 `plan.md` 中标明每项资源的所属应用和跨应用关系。
@@ -112,7 +120,7 @@ npx -y skills add ./weaver-e10-builder.zip --skill -y
112
120
  - **段①:应用、角色、表单与视图。** 先建立应用和角色;按依赖完成全部表单的字段、明细与布局,读回资源及字段 ID;再按功能批次处理各表单的关联与范围、带出、公式、联动、校验、编号和权限;随后建立全部视图,按功能批次配置显示列、搜索排序、筛选统计、分组、上下级、权限、按钮和关联页签。建表时已完成的字段显示属性不重复写入。依赖流程 ID 的配置先列待办,段②回填。
113
121
  - **段②:流程与自动化。** 按依赖准备矩阵或权责表;每个流程建立后,依次完成该流程的节点、连线、出口条件、操作者及结构排版,核对核心流转后再处理下一流程。其余节点与流程级设置、动作流可按功能批次完成,并回填段①中依赖流程 ID 的表单字段和按钮。
114
122
  - **段③:报表、菜单与页面。** 按需求完成报表与数据集;将台账、流程发起和页面绑定到菜单并配置权限;创建配置式页面或定制页面,使用真实资源 ID 保存、发布并完成整体收尾。分批细节见 `references/common/guide-plan-template.md`。
115
- - 布局样表已进入 plan 时,据蓝图组织 `fields.json`,用现有 `form create --layout EXCEL` 创建并初始化;CLI 不消费蓝图本身。创建后仅在实际需要时读取当前布局并逐项调整,不生成额外布局 JSON、不改初始化逻辑。
123
+ - 布局样表已进入 plan 时,据蓝图组织 `fields.json`,仍由 CLI 创建字段与初始布局。普通布局沿用原路径;明确要求还原图片/XLSX 样式时,读取 `references/form/guide-form-layout-source.md`,通过源证据和 LayoutSpec 执行 `form layout extract/compile/preview/apply/verify`。布局模块只绑定已有字段,不创建或修改业务字段。字段属性、公式及归组重排全部结束后才精确保存;不在源布局保存后自动执行 initLayout。图片必须实际查看,由 Agent 输出可审阅观察,并经样式与外框确认;有未闭合映射或不支持结构时报告差异,不退回默认布局。
116
124
  - 简单单步需求(改字段、查数据)不分段,直接执行。
117
125
  ```
118
126
 
@@ -152,6 +160,7 @@ npx -y skills add ./weaver-e10-builder.zip --skill -y
152
160
  | 新建表单、form create、EB表单创建流程、fields.json | `references/form/guide-create-form.md`;确定具体字段参数时再读 `references/form/ref-form-fields.md` |
153
161
  | 虚拟表、虚拟表单、绑定数据源、业务表展示、数据加工结果 | `references/form/guide-virtual-form.md`;字段类型按来源映射,不按普通字段重新猜测 |
154
162
  | Excel样式、表格式布局、布局样表、布局蓝图、标签字段交替、合并单元格 | `references/form/guide-form-layout-planning.md` |
163
+ | 还原图片样式、还原Excel样式、XLSX布局、源网格、pageLayouts、layout extract/compile/apply/verify/style-audit、已有字段位置匹配 | `references/form/guide-form-layout-source.md`(图片 imageStyles 三层投影与样式诊断;已有字段复用,纯布局编译、单次保存和独立回读) |
155
164
  | 流程、审批、workflow、提交流程、预填 | `references/workflow/guide-workflow.md` |
156
165
  | 流程绑了哪张表、流程对应表单、workflow info、从流程找表单 | 命令速查 `references/common/ref-cli-commands.md` 的 `workflow info` 一行(**流程列表接口不含这个信息**;拿到的是 formId,不是 objId) |
157
166
  | 权责表、权责矩阵、权责表方式流程、分支场景、变量映射 | `references/workflow/guide-workflow-auth-resp.md`(操作者和条件同时遵循流程基础指南) |
@@ -20,14 +20,18 @@
20
20
  | 字段定义、字段类型、关联字段码表、DateRange、multiple | `references/form/ref-form-fields.md` |
21
21
  | FLOW/EXCEL、布局样表、布局蓝图、字段分组、singleRow | `references/form/guide-form-layout-planning.md` |
22
22
  | 布局样式模板、换配色、form layout init | `references/form/style-templates.md`(流式/表格式两套,同名不同 id) |
23
+ | 图片/XLSX源样式还原、imageStyles、pageLayouts、已有字段绑定、字体字号颜色确认、style-review、layout extract/compile/apply/verify/style-audit | `references/form/guide-form-layout-source.md` |
23
24
  | 已有表单加字段、改必填/只读、布局被重建、add-field --reinit、别动别人的表、布局组件、associatedId、字段标题取不到 | `references/form/guide-form-layout-incremental.md` |
24
25
  | 表单复杂编号、serial-mark、流水号、代字 | `references/form/guide-form-serial-mark.md` |
25
26
  | 分类搜索、分类筛选、list-search-group、选项配置、日期粒度、选项排序 | `references/common/ref-cli-commands.md` |
26
27
  | 表单消息提醒、数据变动提醒、form message、提醒对象、推送渠道、IM提醒 | `references/form/guide-form-message.md` |
27
28
  | 表单数据读写、form data、写入数据、查询数据、删除数据 | `references/form/guide-form-data.md` |
29
+ | 关联页签、关联视图、数据关联、association、页签显示布局、关联数据筛选、删除关联页签 | `references/form/guide-form-association.md` |
28
30
  | 流程归档权限、归档查看/编辑/删除、归档附件权限、form permission archive、创建人相关、字段相关、矩阵相关、归档卡片 | `references/form/guide-form-archive-permission.md` |
29
31
  | 列表自定义文本列、富文本列、列里插入字段、form nlist、列表式视图 | `references/form/guide-list-custom-text.md` |
30
32
  | 流程、审批、workflow、提交流程、flowpage、预填、URL传参、节点、操作者、审批人、连线 | `references/workflow/guide-workflow.md` |
33
+ | 撤回管理、加审管理、减审管理、接收人范围、指定流转接收人范围、转发传阅抄送收回、功能管理 | `references/workflow/guide-function-management.md` |
34
+ | 拟签意见、draft-opinion、节点转发、forward-setting、节点签字意见、必须签批签名、隐藏意见输入框、意见显示类型 | `references/workflow/guide-opinion-settings.md` |
31
35
  | 流程绑的表、流程关联表单、workflow info、workflowId 查表单、formId 不是 objId | `references/common/ref-cli-commands.md`(`workflow info` 一行) |
32
36
  | 权责表、权责矩阵、权责表方式流程、分支场景、变量映射 | `references/workflow/guide-workflow-auth-resp.md` + `references/workflow/guide-workflow-condition.md` |
33
37
  | 公文流程、公文审批、收文、发文、公文设置、正文设置 | `references/workflow/guide-workflow-odoc.md` + `references/workflow/guide-workflow.md` |
@@ -12,6 +12,8 @@
12
12
 
13
13
  会议标题、密级等普通字段支持固定值和动态赋值;创建人、召集人、联系人支持固定人员对象和动态人员公式。会议类型、会议室、附件、关联流程等设计期资源仍必须使用当前租户真实选择器对象,不能把上下文强行当作资源 ID。
14
14
 
15
+ 也可以直接传入前端 `MeetingPendingCreateEntity` 结构:使用 `type`、`setting` 和 `formSetting`。`setting` 的字段名应来自 `getMeetingField`;其中原生 FormulaBean 会原样保留,语义动态值会编译为 FormulaBean。
16
+
15
17
  ## 最小计划
16
18
 
17
19
  `operators`、`meetingType`,以及需求涉及的会议字段。
@@ -1,17 +1,17 @@
1
- # 新建文档(`DocumentSave`)
2
-
3
- ## 何时使用
4
-
5
- 在目标目录新建一篇文档。
6
-
7
- ## 先查询
8
-
9
- 查询目录、操作人及文档属性设置 DTO。
10
-
11
- ## 不可猜测
12
-
13
- 标题、目录、操作人和 `setting` 缺一不可;正文与附件只接受真实 DTO 或文件引用。
14
-
15
- ## 最小计划
16
-
17
- `docTitle`、`fileFolder`、`operatorId`、`setting`。
1
+ # 新建文档(`DocumentSave`)
2
+
3
+ ## 何时使用
4
+
5
+ 在目标目录新建一篇文档。
6
+
7
+ ## 先查询
8
+
9
+ 查询目录、操作人及文档属性设置 DTO。固定 `fileFolder` 会由 CLI 调用文档目录 Browser 接口 `esbCreateFolderComponentFolder`,使用当前登录租户返回的真实文件夹对象;动态 `fileFolder` FormulaBean 不走目录查询。
10
+
11
+ ## 不可猜测
12
+
13
+ 标题、目录、操作人和 `setting` 缺一不可;正文与附件只接受真实 DTO 或文件引用。
14
+
15
+ ## 最小计划
16
+
17
+ `docTitle`、`fileFolder`、`operatorId`、`setting`。
@@ -0,0 +1,29 @@
1
+ # 彻底删除流程(`ApproveCompletelyDelete`)
2
+
3
+ ## 重要说明
4
+
5
+ 这是 CLI 提供的独立组件类型,CLI 不会修改前端或后端代码。当前前端/后端若未注册该类型,生成的设计保存请求可能被平台拒绝;请先确认目标平台支持。
6
+
7
+ ## 参数
8
+
9
+ - `requestIds`:一个或多个流程实例 ID。按前端参考结构编译为 `type=8`、`formulaType=json` 的 `multipleSelect` FormulaBean;支持动态赋值对象、固定值和已构造的 FormulaBean。
10
+ - `operator`:操作人。按人员动态赋值规则编译为人员 FormulaBean。
11
+
12
+ 示例里的上下文对象是语义输入;实际生成时,CLI 优先使用 `getComponentContext` 返回的真实字段元数据补齐 `frontId`、`paramKey` 等信息,不会根据字段名凭空生成 `frontId`。
13
+
14
+ ## 示例
15
+
16
+ ```json
17
+ {
18
+ "requestIds": {
19
+ "kind": "context",
20
+ "paramKey": "requestIds",
21
+ "label": "流程ID列表"
22
+ },
23
+ "operator": {
24
+ "kind": "context",
25
+ "paramKey": "form-1.operator",
26
+ "label": "操作人"
27
+ }
28
+ }
29
+ ```