weaver-e10-builder 1.5.13 → 1.5.15

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 (340) hide show
  1. package/dist/commands/actionflow.d.ts.map +1 -1
  2. package/dist/commands/actionflow.js +1 -0
  3. package/dist/commands/actionflow.js.map +1 -1
  4. package/dist/commands/designer-setters.d.ts.map +1 -1
  5. package/dist/commands/designer-setters.js +148 -47
  6. package/dist/commands/designer-setters.js.map +1 -1
  7. package/dist/commands/form-add-detail-table.d.ts.map +1 -1
  8. package/dist/commands/form-add-detail-table.js +53 -7
  9. package/dist/commands/form-add-detail-table.js.map +1 -1
  10. package/dist/commands/form-browser-definition.d.ts +14 -0
  11. package/dist/commands/form-browser-definition.d.ts.map +1 -0
  12. package/dist/commands/form-browser-definition.js +493 -0
  13. package/dist/commands/form-browser-definition.js.map +1 -0
  14. package/dist/commands/form-code.d.ts +5 -0
  15. package/dist/commands/form-code.d.ts.map +1 -0
  16. package/dist/commands/form-code.js +276 -0
  17. package/dist/commands/form-code.js.map +1 -0
  18. package/dist/commands/form-engine-linkage.d.ts +3 -0
  19. package/dist/commands/form-engine-linkage.d.ts.map +1 -0
  20. package/dist/commands/form-engine-linkage.js +199 -0
  21. package/dist/commands/form-engine-linkage.js.map +1 -0
  22. package/dist/commands/form-formula.d.ts.map +1 -1
  23. package/dist/commands/form-formula.js +7 -19
  24. package/dist/commands/form-formula.js.map +1 -1
  25. package/dist/commands/form-layout-template-advanced.d.ts +3 -0
  26. package/dist/commands/form-layout-template-advanced.d.ts.map +1 -0
  27. package/dist/commands/form-layout-template-advanced.js +115 -0
  28. package/dist/commands/form-layout-template-advanced.js.map +1 -0
  29. package/dist/commands/form-layout-template-easy.d.ts +3 -0
  30. package/dist/commands/form-layout-template-easy.d.ts.map +1 -0
  31. package/dist/commands/form-layout-template-easy.js +59 -0
  32. package/dist/commands/form-layout-template-easy.js.map +1 -0
  33. package/dist/commands/form-layout.d.ts.map +1 -1
  34. package/dist/commands/form-layout.js +77 -0
  35. package/dist/commands/form-layout.js.map +1 -1
  36. package/dist/commands/form-list-filter.js +1 -1
  37. package/dist/commands/form-list-filter.js.map +1 -1
  38. package/dist/commands/form-list-utils.d.ts +5 -0
  39. package/dist/commands/form-list-utils.d.ts.map +1 -1
  40. package/dist/commands/form-list-utils.js +23 -3
  41. package/dist/commands/form-list-utils.js.map +1 -1
  42. package/dist/commands/form-permission.d.ts.map +1 -1
  43. package/dist/commands/form-permission.js +55 -19
  44. package/dist/commands/form-permission.js.map +1 -1
  45. package/dist/commands/form-physical-table.d.ts.map +1 -1
  46. package/dist/commands/form-physical-table.js +8 -2
  47. package/dist/commands/form-physical-table.js.map +1 -1
  48. package/dist/commands/form.d.ts.map +1 -1
  49. package/dist/commands/form.js +143 -5
  50. package/dist/commands/form.js.map +1 -1
  51. package/dist/commands/menu.d.ts +68 -2
  52. package/dist/commands/menu.d.ts.map +1 -1
  53. package/dist/commands/menu.js +186 -41
  54. package/dist/commands/menu.js.map +1 -1
  55. package/dist/commands/page.d.ts.map +1 -1
  56. package/dist/commands/page.js +29 -6
  57. package/dist/commands/page.js.map +1 -1
  58. package/dist/commands/special.d.ts.map +1 -1
  59. package/dist/commands/special.js +3 -2
  60. package/dist/commands/special.js.map +1 -1
  61. package/dist/commands/wf-form.d.ts.map +1 -1
  62. package/dist/commands/wf-form.js +76 -31
  63. package/dist/commands/wf-form.js.map +1 -1
  64. package/dist/commands/workflow-auth-resp.js +2 -2
  65. package/dist/commands/workflow-auth-resp.js.map +1 -1
  66. package/dist/commands/workflow-base-command.d.ts +4 -0
  67. package/dist/commands/workflow-base-command.d.ts.map +1 -0
  68. package/dist/commands/workflow-base-command.js +6 -0
  69. package/dist/commands/workflow-base-command.js.map +1 -0
  70. package/dist/commands/workflow-base-settings.d.ts +3 -0
  71. package/dist/commands/workflow-base-settings.d.ts.map +1 -0
  72. package/dist/commands/workflow-base-settings.js +76 -0
  73. package/dist/commands/workflow-base-settings.js.map +1 -0
  74. package/dist/commands/workflow-condition.d.ts.map +1 -1
  75. package/dist/commands/workflow-condition.js +59 -450
  76. package/dist/commands/workflow-condition.js.map +1 -1
  77. package/dist/commands/workflow-export.d.ts +9 -0
  78. package/dist/commands/workflow-export.d.ts.map +1 -0
  79. package/dist/commands/workflow-export.js +121 -0
  80. package/dist/commands/workflow-export.js.map +1 -0
  81. package/dist/commands/workflow-function-settings.d.ts +3 -0
  82. package/dist/commands/workflow-function-settings.d.ts.map +1 -0
  83. package/dist/commands/workflow-function-settings.js +47 -0
  84. package/dist/commands/workflow-function-settings.js.map +1 -0
  85. package/dist/commands/workflow-node.d.ts.map +1 -1
  86. package/dist/commands/workflow-node.js +28 -53
  87. package/dist/commands/workflow-node.js.map +1 -1
  88. package/dist/commands/workflow-operator-batch.d.ts +3 -0
  89. package/dist/commands/workflow-operator-batch.d.ts.map +1 -0
  90. package/dist/commands/workflow-operator-batch.js +35 -0
  91. package/dist/commands/workflow-operator-batch.js.map +1 -0
  92. package/dist/commands/workflow-setting.d.ts.map +1 -1
  93. package/dist/commands/workflow-setting.js +137 -406
  94. package/dist/commands/workflow-setting.js.map +1 -1
  95. package/dist/commands/workflow-subprocess.d.ts.map +1 -1
  96. package/dist/commands/workflow-subprocess.js +21 -33
  97. package/dist/commands/workflow-subprocess.js.map +1 -1
  98. package/dist/commands/workflow.d.ts.map +1 -1
  99. package/dist/commands/workflow.js +18 -33
  100. package/dist/commands/workflow.js.map +1 -1
  101. package/dist/index.js +18 -1
  102. package/dist/index.js.map +1 -1
  103. package/dist/services/actionflow/browser_source.d.ts +9 -0
  104. package/dist/services/actionflow/browser_source.d.ts.map +1 -0
  105. package/dist/services/actionflow/browser_source.js +12 -0
  106. package/dist/services/actionflow/browser_source.js.map +1 -0
  107. package/dist/services/actionflow/components/date_trigger.js +1 -1
  108. package/dist/services/actionflow/components/date_trigger.js.map +1 -1
  109. package/dist/services/actionflow/components/document_actions.d.ts.map +1 -1
  110. package/dist/services/actionflow/components/document_actions.js +178 -25
  111. package/dist/services/actionflow/components/document_actions.js.map +1 -1
  112. package/dist/services/actionflow/components/enquiry_form.js +1 -1
  113. package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
  114. package/dist/services/actionflow/components/logic_flow_set.d.ts.map +1 -1
  115. package/dist/services/actionflow/components/logic_flow_set.js +80 -8
  116. package/dist/services/actionflow/components/logic_flow_set.js.map +1 -1
  117. package/dist/services/actionflow/components/meeting_create.d.ts.map +1 -1
  118. package/dist/services/actionflow/components/meeting_create.js +1 -0
  119. package/dist/services/actionflow/components/meeting_create.js.map +1 -1
  120. package/dist/services/actionflow/components/schedule_create.d.ts.map +1 -1
  121. package/dist/services/actionflow/components/schedule_create.js +2 -0
  122. package/dist/services/actionflow/components/schedule_create.js.map +1 -1
  123. package/dist/services/actionflow/components/time_batch_trigger.js +1 -1
  124. package/dist/services/actionflow/components/time_batch_trigger.js.map +1 -1
  125. package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
  126. package/dist/services/actionflow/components/workflow_actions.js +6 -2
  127. package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
  128. package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
  129. package/dist/services/actionflow/context_preflight.js +103 -6
  130. package/dist/services/actionflow/context_preflight.js.map +1 -1
  131. package/dist/services/actionflow/form_source.d.ts +2 -0
  132. package/dist/services/actionflow/form_source.d.ts.map +1 -1
  133. package/dist/services/actionflow/form_source.js +8 -0
  134. package/dist/services/actionflow/form_source.js.map +1 -1
  135. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  136. package/dist/services/actionflow/formula_service.js +35 -19
  137. package/dist/services/actionflow/formula_service.js.map +1 -1
  138. package/dist/services/actionflow/logicflow_source.d.ts +5 -0
  139. package/dist/services/actionflow/logicflow_source.d.ts.map +1 -0
  140. package/dist/services/actionflow/logicflow_source.js +15 -0
  141. package/dist/services/actionflow/logicflow_source.js.map +1 -0
  142. package/dist/services/actionflow/preflight_service.d.ts +15 -0
  143. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  144. package/dist/services/actionflow/preflight_service.js +558 -26
  145. package/dist/services/actionflow/preflight_service.js.map +1 -1
  146. package/dist/services/actionflow/runtime_metadata.d.ts +8 -0
  147. package/dist/services/actionflow/runtime_metadata.d.ts.map +1 -1
  148. package/dist/services/actionflow/runtime_metadata.js +25 -0
  149. package/dist/services/actionflow/runtime_metadata.js.map +1 -1
  150. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  151. package/dist/services/actionflow/workflow_compiler.js +50 -10
  152. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  153. package/dist/services/actionflow/workflow_source.d.ts +2 -0
  154. package/dist/services/actionflow/workflow_source.d.ts.map +1 -1
  155. package/dist/services/actionflow/workflow_source.js +7 -0
  156. package/dist/services/actionflow/workflow_source.js.map +1 -1
  157. package/dist/services/auth-resp-condition.d.ts +7 -3
  158. package/dist/services/auth-resp-condition.d.ts.map +1 -1
  159. package/dist/services/auth-resp-condition.js +58 -63
  160. package/dist/services/auth-resp-condition.js.map +1 -1
  161. package/dist/services/browser.d.ts +5 -0
  162. package/dist/services/browser.d.ts.map +1 -1
  163. package/dist/services/browser.js +16 -4
  164. package/dist/services/browser.js.map +1 -1
  165. package/dist/services/condition-rules.d.ts +2 -30
  166. package/dist/services/condition-rules.d.ts.map +1 -1
  167. package/dist/services/condition-rules.js +3 -219
  168. package/dist/services/condition-rules.js.map +1 -1
  169. package/dist/services/designer-dataset.d.ts +45 -0
  170. package/dist/services/designer-dataset.d.ts.map +1 -0
  171. package/dist/services/designer-dataset.js +156 -0
  172. package/dist/services/designer-dataset.js.map +1 -0
  173. package/dist/services/form-association.d.ts +7 -0
  174. package/dist/services/form-association.d.ts.map +1 -1
  175. package/dist/services/form-association.js +22 -1
  176. package/dist/services/form-association.js.map +1 -1
  177. package/dist/services/form-code.d.ts +53 -0
  178. package/dist/services/form-code.d.ts.map +1 -0
  179. package/dist/services/form-code.js +370 -0
  180. package/dist/services/form-code.js.map +1 -0
  181. package/dist/services/form-create.d.ts +20 -0
  182. package/dist/services/form-create.d.ts.map +1 -1
  183. package/dist/services/form-create.js +73 -1
  184. package/dist/services/form-create.js.map +1 -1
  185. package/dist/services/form-field-build.d.ts +1 -1
  186. package/dist/services/form-field-build.d.ts.map +1 -1
  187. package/dist/services/form-field-build.js +20 -1
  188. package/dist/services/form-field-build.js.map +1 -1
  189. package/dist/services/form-field-drop.d.ts +2 -0
  190. package/dist/services/form-field-drop.d.ts.map +1 -1
  191. package/dist/services/form-field-drop.js +2 -0
  192. package/dist/services/form-field-drop.js.map +1 -1
  193. package/dist/services/form-layout-detail-insert.d.ts +58 -0
  194. package/dist/services/form-layout-detail-insert.d.ts.map +1 -0
  195. package/dist/services/form-layout-detail-insert.js +293 -0
  196. package/dist/services/form-layout-detail-insert.js.map +1 -0
  197. package/dist/services/form-layout-insert.d.ts.map +1 -1
  198. package/dist/services/form-layout-insert.js +34 -2
  199. package/dist/services/form-layout-insert.js.map +1 -1
  200. package/dist/services/form-layout-source/compile.d.ts.map +1 -1
  201. package/dist/services/form-layout-source/compile.js +11 -4
  202. package/dist/services/form-layout-source/compile.js.map +1 -1
  203. package/dist/services/form-layout-template-advanced.d.ts +330 -0
  204. package/dist/services/form-layout-template-advanced.d.ts.map +1 -0
  205. package/dist/services/form-layout-template-advanced.js +1437 -0
  206. package/dist/services/form-layout-template-advanced.js.map +1 -0
  207. package/dist/services/form-layout-template-easy.d.ts +34 -0
  208. package/dist/services/form-layout-template-easy.d.ts.map +1 -0
  209. package/dist/services/form-layout-template-easy.js +159 -0
  210. package/dist/services/form-layout-template-easy.js.map +1 -0
  211. package/dist/services/form-layout-template-flow.d.ts +23 -0
  212. package/dist/services/form-layout-template-flow.d.ts.map +1 -0
  213. package/dist/services/form-layout-template-flow.js +99 -0
  214. package/dist/services/form-layout-template-flow.js.map +1 -0
  215. package/dist/services/form-permission-archive.d.ts +23 -1
  216. package/dist/services/form-permission-archive.d.ts.map +1 -1
  217. package/dist/services/form-permission-archive.js +54 -2
  218. package/dist/services/form-permission-archive.js.map +1 -1
  219. package/dist/services/form-physical-table.d.ts +10 -0
  220. package/dist/services/form-physical-table.d.ts.map +1 -1
  221. package/dist/services/form-physical-table.js +20 -0
  222. package/dist/services/form-physical-table.js.map +1 -1
  223. package/dist/services/form-view-linkage-functions.d.ts +19 -0
  224. package/dist/services/form-view-linkage-functions.d.ts.map +1 -0
  225. package/dist/services/form-view-linkage-functions.js +90 -0
  226. package/dist/services/form-view-linkage-functions.js.map +1 -0
  227. package/dist/services/matrix-condition.d.ts +32 -1
  228. package/dist/services/matrix-condition.d.ts.map +1 -1
  229. package/dist/services/matrix-condition.js +169 -6
  230. package/dist/services/matrix-condition.js.map +1 -1
  231. package/dist/services/menu-catalog.d.ts +24 -1
  232. package/dist/services/menu-catalog.d.ts.map +1 -1
  233. package/dist/services/menu-catalog.js +49 -2
  234. package/dist/services/menu-catalog.js.map +1 -1
  235. package/dist/services/workflow-base-settings.d.ts +117 -0
  236. package/dist/services/workflow-base-settings.d.ts.map +1 -0
  237. package/dist/services/workflow-base-settings.js +504 -0
  238. package/dist/services/workflow-base-settings.js.map +1 -0
  239. package/dist/services/workflow-condition-core.d.ts +48 -0
  240. package/dist/services/workflow-condition-core.d.ts.map +1 -0
  241. package/dist/services/workflow-condition-core.js +316 -0
  242. package/dist/services/workflow-condition-core.js.map +1 -0
  243. package/dist/services/workflow-context.d.ts +10 -0
  244. package/dist/services/workflow-context.d.ts.map +1 -0
  245. package/dist/services/workflow-context.js +15 -0
  246. package/dist/services/workflow-context.js.map +1 -0
  247. package/dist/services/workflow-export.d.ts +80 -0
  248. package/dist/services/workflow-export.d.ts.map +1 -0
  249. package/dist/services/workflow-export.js +150 -0
  250. package/dist/services/workflow-export.js.map +1 -0
  251. package/dist/services/workflow-field-permission-route.d.ts +75 -0
  252. package/dist/services/workflow-field-permission-route.d.ts.map +1 -0
  253. package/dist/services/workflow-field-permission-route.js +52 -0
  254. package/dist/services/workflow-field-permission-route.js.map +1 -0
  255. package/dist/services/workflow-field-permission.d.ts +18 -0
  256. package/dist/services/workflow-field-permission.d.ts.map +1 -0
  257. package/dist/services/workflow-field-permission.js +40 -0
  258. package/dist/services/workflow-field-permission.js.map +1 -0
  259. package/dist/services/workflow-function-settings.d.ts +31 -0
  260. package/dist/services/workflow-function-settings.d.ts.map +1 -0
  261. package/dist/services/workflow-function-settings.js +191 -0
  262. package/dist/services/workflow-function-settings.js.map +1 -0
  263. package/dist/services/workflow-node-layout.d.ts +11 -10
  264. package/dist/services/workflow-node-layout.d.ts.map +1 -1
  265. package/dist/services/workflow-node-layout.js +24 -62
  266. package/dist/services/workflow-node-layout.js.map +1 -1
  267. package/dist/services/workflow-operator-batch-condition.d.ts +23 -0
  268. package/dist/services/workflow-operator-batch-condition.d.ts.map +1 -0
  269. package/dist/services/workflow-operator-batch-condition.js +56 -0
  270. package/dist/services/workflow-operator-batch-condition.js.map +1 -0
  271. package/dist/services/workflow-sign-file-settings.d.ts +16 -0
  272. package/dist/services/workflow-sign-file-settings.d.ts.map +1 -0
  273. package/dist/services/workflow-sign-file-settings.js +80 -0
  274. package/dist/services/workflow-sign-file-settings.js.map +1 -0
  275. package/dist/services/workflow-submit-confirm.d.ts +14 -0
  276. package/dist/services/workflow-submit-confirm.d.ts.map +1 -0
  277. package/dist/services/workflow-submit-confirm.js +29 -0
  278. package/dist/services/workflow-submit-confirm.js.map +1 -0
  279. package/dist/services/workflow-tab-config.d.ts +3 -3
  280. package/dist/services/workflow-tab-config.d.ts.map +1 -1
  281. package/dist/services/workflow-tab-config.js +14 -12
  282. package/dist/services/workflow-tab-config.js.map +1 -1
  283. package/dist/services/workflow-tabs-editor.d.ts +28 -0
  284. package/dist/services/workflow-tabs-editor.d.ts.map +1 -0
  285. package/dist/services/workflow-tabs-editor.js +130 -0
  286. package/dist/services/workflow-tabs-editor.js.map +1 -0
  287. package/package.json +1 -1
  288. package/skill-docs/SKILL.md +155 -154
  289. package/skill-docs/_catalog.md +106 -97
  290. package/skill-docs/actionflows/references/components/document/GetDocumentInfo.md +17 -17
  291. package/skill-docs/actionflows/references/components/logic/LogicFlowSet.md +23 -17
  292. package/skill-docs/assets/form-template/style-templates-advanced-base-example.json +1420 -0
  293. package/skill-docs/assets/form-template/style-templates-advanced-base.css +33 -0
  294. package/skill-docs/assets/form-template/style-templates-advanced-blue-crystal-example.json +1094 -0
  295. package/skill-docs/assets/form-template/style-templates-advanced-document-example.json +1251 -0
  296. package/skill-docs/assets/form-template/style-templates-advanced-grid-example.json +39 -0
  297. package/skill-docs/assets/form-template/style-templates-advanced-page-example.json +38 -0
  298. package/skill-docs/assets/form-template/style-templates-advanced-placements-example.json +30 -0
  299. package/skill-docs/assets/form-template/style-templates-advanced-standard-example.json +53 -0
  300. package/skill-docs/assets/form-template/style-templates-advanced-structure-example.json +25 -0
  301. package/skill-docs/assets/form-template/style-templates-advanced-table-example.json +1420 -0
  302. package/skill-docs/references/code-block/guide-code-block.md +141 -0
  303. package/skill-docs/references/code-block/guide-layout-css.md +107 -0
  304. package/skill-docs/references/code-block/ref-controls.md +60 -0
  305. package/skill-docs/references/code-block/ref-coverage.md +32 -0
  306. package/skill-docs/references/code-block/ref-details.md +57 -0
  307. package/skill-docs/references/code-block/ref-events-validation.md +42 -0
  308. package/skill-docs/references/code-block/ref-foundations-fields.md +56 -0
  309. package/skill-docs/references/code-block/ref-recipes.md +164 -0
  310. package/skill-docs/references/code-block/ref-troubleshooting.md +49 -0
  311. package/skill-docs/references/code-block/ref-ui-global.md +47 -0
  312. package/skill-docs/references/common/guide-plan-template.md +168 -167
  313. package/skill-docs/references/common/map.md +2 -1
  314. package/skill-docs/references/common/ref-cli-commands.md +67 -22
  315. package/skill-docs/references/ebuilder-designer/guide-designer-factory.md +8 -4
  316. package/skill-docs/references/form/form-template/style-templates-advanced-css-guide.md +167 -0
  317. package/skill-docs/references/form/form-template/style-templates-advanced.md +315 -0
  318. package/skill-docs/references/form/form-template/style-templates-easy.md +55 -0
  319. package/skill-docs/references/form/form-template/style-templates-flow.md +27 -0
  320. package/skill-docs/references/form/form-template/style-templates.md +29 -0
  321. package/skill-docs/references/form/guide-browser-definition.md +148 -0
  322. package/skill-docs/references/form/guide-create-form.md +258 -250
  323. package/skill-docs/references/form/guide-form-archive-permission.md +29 -6
  324. package/skill-docs/references/form/guide-form-formula-functions.md +354 -354
  325. package/skill-docs/references/form/guide-form-layout-incremental.md +28 -0
  326. package/skill-docs/references/form/guide-form-layout-planning.md +11 -0
  327. package/skill-docs/references/form/guide-form-layout-source.md +4 -0
  328. package/skill-docs/references/form/guide-form-linkage.md +295 -259
  329. package/skill-docs/references/form/guide-form-physical-table.md +2 -0
  330. package/skill-docs/references/form/guide-form-view.md +3 -0
  331. package/skill-docs/references/form/ref-form-fields.md +301 -293
  332. package/skill-docs/references/form/ref-list-filter-date-params.md +83 -0
  333. package/skill-docs/references/menu/system-menus.md +12 -0
  334. package/skill-docs/references/workflow/condition-core-contract.md +63 -0
  335. package/skill-docs/references/workflow/guide-base-auth-share-remind.md +126 -0
  336. package/skill-docs/references/workflow/guide-function-settings.md +55 -0
  337. package/skill-docs/references/workflow/guide-workflow-condition.md +476 -447
  338. package/skill-docs/references/workflow/guide-workflow-node-layout.md +6 -0
  339. package/skill-docs/references/workflow/guide-workflow.md +630 -527
  340. package/skill-docs/references/form/style-templates.md +0 -97
@@ -1,6 +1,14 @@
1
+ import { registerWorkflowFunctionSettings } from './workflow-function-settings.js';
2
+ import { SignFileSettings } from '../services/workflow-sign-file-settings.js';
3
+ import { editTabs, getTabLocales } from '../services/workflow-tabs-editor.js';
4
+ import { readPatch } from './workflow-function-management.js';
5
+ import { findTab } from '../services/workflow-tab-config.js';
6
+ import { SubmitConfirmSettings, showNodeLabels } from '../services/workflow-submit-confirm.js';
7
+ import { normalized } from '../services/workflow-base-settings.js';
8
+ import { workflowBaseCommand } from './workflow-base-command.js';
1
9
  import { AuthSession } from '../core/auth.js';
2
10
  import { ApiClient } from '../core/client.js';
3
- import { applyTabPatch, getTabConfig, saveTabConfig, tabLabel, } from '../services/workflow-tab-config.js';
11
+ import { getTabConfig, tabLabel, } from '../services/workflow-tab-config.js';
4
12
  /**
5
13
  * Merge only known keys from source into target, converting boolean to 0/1.
6
14
  * This prevents leaking UI-internal fields (layout, items, etc.) to save APIs.
@@ -16,58 +24,55 @@ function mergeKnown(target, source) {
16
24
  return result;
17
25
  }
18
26
  export function registerWorkflowSettingCommands(wf, program) {
19
- const sc = wf.command('setting').description('工作流维度设置(提交/签字/评论/页签/批量/自动/其他)');
27
+ const base = workflowBaseCommand(wf);
28
+ registerWorkflowFunctionSettings(wf, program);
20
29
  // ======== submit ========
21
- sc.command('submit')
22
- .description('查看/配置提交确认设置')
30
+ base.command('submit-confirm')
31
+ .description('查看/修改流程提交确认设置;先读后合并,保存后回读验证')
23
32
  .argument('<workflowId>', '流程 ID')
24
- .option('--confirm <0|1>', '提交确认开关')
25
- .option('--node-range <n>', '节点范围: 0=全部, 1=选择, 2=排除')
26
- .option('--show-way <n>', '显示方式: 1=下一节点, 2=可到达节点')
33
+ .option('--confirm <0|1>', '提交流程需要确认')
34
+ .option('--node-range <n>', '节点范围: 0=全部, 1=选择, 2=排除;切换全部会清空节点列表')
35
+ .option('--nodes <nodes...>', '替换选择/排除的节点列表;支持节点 ID 或唯一名称,名称含空格请加引号')
36
+ .option('--show-cc <0|1>', '提交确认时显示抄送人')
37
+ .option('--show-way <n>', '发起节点显示方式: 0=所有节点, 1=下一节点, 2=会流转到达的节点')
27
38
  .action(async (workflowId, cmdOpts) => {
28
- const opts = program.opts();
29
- const auth = await AuthSession.fromOptions(opts);
30
- if (!auth)
31
- process.exit(1);
32
- const client = new ApiClient(auth);
33
- const baseUrl = auth.getBaseUrl();
34
- const getRes = await client.get(`${baseUrl}/api/bs/workflow/pathdef/baseSet/getSubmitSetForm?workflowId=${workflowId}`);
35
- if (getRes?.code !== 200 || !getRes?.status) {
36
- console.error(`查询失败: ${getRes?.msg}`);
37
- process.exit(1);
38
- }
39
- const form = getRes?.data?.data || getRes?.data || {};
40
- if (!cmdOpts.confirm && !cmdOpts.nodeRange && !cmdOpts.showWay) {
39
+ try {
40
+ const opts = program.opts();
41
+ const auth = await AuthSession.fromOptions(opts);
42
+ if (!auth)
43
+ throw Error('无法加载认证');
44
+ const service = new SubmitConfirmSettings(new ApiClient(auth), auth.getBaseUrl());
45
+ const patch = {};
46
+ for (const [option, field] of [['confirm', 'confirm'], ['nodeRange', 'nodeRange'], ['nodes', 'nodeRangeBrowser'], ['showCc', 'showCcOperator'], ['showWay', 'showNodeWay']]) {
47
+ if (cmdOpts[option] !== undefined)
48
+ patch[field] = cmdOpts[option];
49
+ }
50
+ if (Object.keys(patch).length) {
51
+ const result = await service.update(workflowId, patch);
52
+ console.log(opts.json ? JSON.stringify(result, null, 2) : '提交确认设置已保存并回读验证');
53
+ return;
54
+ }
55
+ const form = normalized(await service.read(workflowId));
41
56
  if (opts.json) {
42
57
  console.log(JSON.stringify(form, null, 2));
58
+ return;
43
59
  }
44
- else {
45
- console.log(`提交确认: ${form.confirm === '1' || form.confirm === 1 ? '✅ 开启' : '⛔ 关闭'}`);
46
- const rangeLabels = { '0': '全部节点', '1': '选择节点', '2': '排除节点' };
47
- console.log(`节点范围: ${rangeLabels[form.nodeRange] || form.nodeRange}`);
48
- console.log(`显示方式: ${form.showNodeWay === '1' ? '下一节点' : '可到达节点'}`);
49
- }
50
- return;
60
+ const rangeLabels = { '0': '全部节点', '1': '选择节点', '2': '排除节点' };
61
+ console.log(`提交确认: ${form.confirm ? '开启' : '关闭'}`);
62
+ console.log(`节点范围: ${rangeLabels[form.nodeRange] ?? form.nodeRange}`);
63
+ console.log(`指定节点: ${(form.nodeRangeBrowser ?? []).map((n) => `${n.content ?? n.name ?? n.id}(${n.id})`).join('、') || '无'}`);
64
+ console.log(`显示抄送人: ${form.showCcOperator ? '开启' : '关闭'}`);
65
+ console.log(`显示方式: ${showNodeLabels[String(form.showNodeWay)] ?? form.showNodeWay}`);
51
66
  }
52
- if (cmdOpts.confirm)
53
- form.confirm = cmdOpts.confirm;
54
- if (cmdOpts.nodeRange)
55
- form.nodeRange = cmdOpts.nodeRange;
56
- if (cmdOpts.showWay)
57
- form.showNodeWay = cmdOpts.showWay;
58
- const saveRes = await client.post(`${baseUrl}/api/bs/workflow/pathdef/baseSet/saveSubmitSetForm`, { workflowId, ...form });
59
- if (saveRes?.code === 200 && saveRes?.status) {
60
- console.log(opts.json ? JSON.stringify({ success: true, workflowId }) : '提交确认设置已保存');
61
- }
62
- else {
63
- console.error(`保存失败: ${saveRes?.msg || '未知错误'}`);
64
- process.exit(1);
67
+ catch (error) {
68
+ console.error(`操作失败: ${error.message}`);
69
+ process.exitCode = 1;
65
70
  }
66
71
  });
67
72
  // ======== tabs(详情页页签) ========
68
- // 读接口必须带 global=false,否则 500;保存必须提交完整列表,只发变化行会覆盖没。
69
- sc.command('tabs')
70
- .description('查看/配置流程详情页页签(显示哪些页签、默认打开哪个、移动端)')
73
+ // 读接口必须带 global=false,否则 500;保存提交完整列表以保持排序,删除使用专用接口。
74
+ base.command('tabs-set')
75
+ .description('查看/修改详情页页签:显示、名称、多语言、顺序、自定义地址页签增删改')
71
76
  .argument('<workflowId>', '流程 ID')
72
77
  .option('--only <names...>', 'PC 端只显示这些页签,其余全部不显示')
73
78
  .option('--show <names...>', 'PC 端显示(不动其它)')
@@ -75,6 +80,15 @@ export function registerWorkflowSettingCommands(wf, program) {
75
80
  .option('--mobile <names...>', '移动端只显示这些,其余全部不显示(移动端页签与 PC 端独立)')
76
81
  .option('--mobile-menu <names...>', '移动端菜单只显示这些,其余全部不显示')
77
82
  .option('--default-open <name>', '默认打开哪个页签(单选,其余取消)')
83
+ .option('--tab <id-or-name>', '待修改页签 ID 或唯一名称')
84
+ .option('--name <name>', '自定义名称;空字符串恢复系统名称')
85
+ .option('--order <tabs...>', '完整排序名单,每个页签恰好一次;推荐使用 ID')
86
+ .option('--create', '新增自定义地址页签,需 --name 和 --pc-url')
87
+ .option('--pc-url <url>', 'PC 地址,支持内部路径、http(s) 及字段占位符')
88
+ .option('--mobile-url <url>', '移动地址;空字符串使用 PC 地址')
89
+ .option('--delete <id-or-name>', '删除一个自定义页签;须单独使用')
90
+ .option('--locales <json>', '多语言名称补丁:语言 ID/代码到字符串的 JSON 对象或 @文件;保留其他语言')
91
+ .option('--get-locales', '读取 --tab 页签的多语言名称及可用语言')
78
92
  .action(async (workflowId, o) => {
79
93
  const opts = program.opts();
80
94
  const auth = await AuthSession.fromOptions(opts);
@@ -83,171 +97,101 @@ export function registerWorkflowSettingCommands(wf, program) {
83
97
  const client = new ApiClient(auth);
84
98
  const baseUrl = auth.getBaseUrl();
85
99
  try {
86
- const tabs = await getTabConfig(client, baseUrl, workflowId);
87
- const hasChange = o.only || o.show || o.hide || o.mobile || o.mobileMenu || o.defaultOpen;
88
- if (!hasChange) {
89
- if (opts.json) {
90
- console.log(JSON.stringify({ workflowId, tabs }, null, 2));
91
- return;
92
- }
93
- console.log(`流程 ${workflowId} 详情页页签: ${tabs.length} 个\n`);
94
- console.log(' 页签 类型码 PC端 移动端 移动菜单 默认打开');
95
- for (const t of tabs) {
96
- console.log(` ${tabLabel(t).padEnd(14)} ${String(t.flowPageTabId).padEnd(6)} ` +
97
- `${(t.showInPc ? '✅' : '⛔').padEnd(5)} ${(t.showInMobile ? '✅' : '⛔').padEnd(7)} ` +
98
- `${(t.showInMobileMenu ? '✅' : '⛔').padEnd(9)} ${t.defOpen ? '✅' : ''}`);
99
- }
100
+ if (o.getLocales) {
101
+ if (!o.tab || Object.keys(o).some(k => !['tab', 'getLocales'].includes(k)))
102
+ throw Error('--get-locales 仅与 --tab 一起使用');
103
+ const tabs = await getTabConfig(client, baseUrl, workflowId), t = findTab(tabs, o.tab);
104
+ if (!t)
105
+ throw Error('未找到页签');
106
+ console.log(JSON.stringify(await getTabLocales(client, baseUrl, t.id), null, 2));
100
107
  return;
101
108
  }
102
- const { next, changed } = applyTabPatch(tabs, {
103
- only: o.only, show: o.show, hide: o.hide,
104
- mobile: o.mobile, mobileMenu: o.mobileMenu, defaultOpen: o.defaultOpen,
105
- });
106
- if (!changed.length) {
107
- console.log('页签本来就是目标状态,没有改动');
109
+ const patch = { ...o, ...(o.locales !== undefined ? { locales: readPatch(o.locales) } : {}) };
110
+ if (Object.keys(patch).some(k => k !== 'tab')) {
111
+ const result = await editTabs(client, baseUrl, workflowId, patch);
112
+ console.log(JSON.stringify(result, null, 2));
108
113
  return;
109
114
  }
110
- await saveTabConfig(client, baseUrl, workflowId, next);
111
- const after = await getTabConfig(client, baseUrl, workflowId);
112
- const byId = new Map(after.map((t) => [t.id, t]));
113
- const mismatches = [];
114
- for (const t of next) {
115
- const a = byId.get(t.id);
116
- if (!a) {
117
- mismatches.push(`${tabLabel(t)} 回读时不见了`);
118
- continue;
119
- }
120
- if (a.showInPc !== t.showInPc || a.defOpen !== t.defOpen
121
- || a.showInMobile !== t.showInMobile || a.showInMobileMenu !== t.showInMobileMenu) {
122
- mismatches.push(`${tabLabel(t)}: 期望 PC=${t.showInPc} 移动=${t.showInMobile} 菜单=${t.showInMobileMenu} 默认打开=${t.defOpen},`
123
- + `回读 PC=${a.showInPc} 移动=${a.showInMobile} 菜单=${a.showInMobileMenu} 默认打开=${a.defOpen}`);
124
- }
125
- }
115
+ const tabs = await getTabConfig(client, baseUrl, workflowId);
126
116
  if (opts.json) {
127
- console.log(JSON.stringify({ success: mismatches.length === 0, workflowId, changed, tabs: after, mismatches }, null, 2));
128
- }
129
- else {
130
- console.log(`页签已保存: ${changed.length} 项更新 → 流程 ${workflowId}`);
131
- for (const m of mismatches)
132
- console.error(` ⚠ 回读不一致: ${m}`);
117
+ console.log(JSON.stringify({ workflowId, tabs }, null, 2));
118
+ return;
133
119
  }
134
- if (mismatches.length)
135
- process.exitCode = 1;
120
+ for (const t of tabs)
121
+ console.log(`${t.id} ${tabLabel(t)} 顺序=${t.orderId} 类型=${t.flowPageTabType} PC=${t.showInPc} 移动=${t.showInMobile} 菜单=${t.showInMobileMenu} 默认=${t.defOpen}`);
136
122
  }
137
123
  catch (e) {
138
124
  console.error(`操作失败: ${e.message}`);
139
125
  process.exitCode = 1;
140
126
  }
141
127
  });
142
- // ======== sign ========
143
- sc.command('sign')
144
- .description('查看/配置签字意见设置')
145
- .argument('<workflowId>', '流程 ID')
146
- .option('--show-order <n>', '排序: 0=倒序, 1=正序')
147
- .option('--show-src <n>', '显示来源: 0=未选, 1=PC, 2=非PC, 3=两者')
148
- .option('--view-relate <0|1>', '查看关联签字开关')
149
- .option('--view-forward <0|1>', '查看转发签字开关')
150
- .option('--allow-relate <0|1>', '允许关联事项开关')
151
- .option('--allow-upload <0|1>', '允许上传附件开关')
152
- .option('--allow-location <0|1>', '允许定位开关')
153
- .option('--allow-emoticon <0|1>', '允许表情开关')
154
- .option('--allow-at <0|1>', '允许@人员开关')
155
- .option('--inform-range <n>', '@人员范围: 0=所有人, 1=流程参与人')
156
- .action(async (workflowId, cmdOpts) => {
157
- const opts = program.opts();
158
- const auth = await AuthSession.fromOptions(opts);
159
- if (!auth)
160
- process.exit(1);
161
- const client = new ApiClient(auth);
162
- const baseUrl = auth.getBaseUrl();
163
- const getRes = await client.get(`${baseUrl}/api/bs/workflow/pathdef/pathSet/signconfig/getPathSignConfigForm?workflowId=${workflowId}`);
164
- if (getRes?.code !== 200 || !getRes?.status) {
165
- console.error(`查询失败: ${getRes?.msg || getRes?.data?.msg}`);
166
- process.exit(1);
167
- }
168
- const raw = getRes?.data || {};
169
- const form = raw.pathSignConfig?.data || raw.data || raw;
170
- const hasOpts = !!(cmdOpts.showOrder || cmdOpts.showSrc || cmdOpts.viewRelate || cmdOpts.viewForward
171
- || cmdOpts.allowRelate || cmdOpts.allowUpload || cmdOpts.allowLocation || cmdOpts.allowEmoticon
172
- || cmdOpts.allowAt || cmdOpts.informRange);
173
- if (!hasOpts) {
174
- if (opts.json) {
175
- console.log(JSON.stringify(form, null, 2));
176
- }
177
- else {
178
- const on = (v) => v === '1' || v === 1 || v === true ? '✅' : '⛔';
179
- const srcMap = { '0': '未选', '1': 'PC', '2': '非PC', '3': '两者' };
180
- const srcList = form.signShowSrcList || (form.signShowSrc ? [form.signShowSrc] : []);
181
- const srcLabel = srcList.length === 0 ? '未选' : srcList.map((s) => srcMap[s] || s).join('+');
182
- console.log(`签字排序: ${form.signShowOrder === '1' ? '正序' : '倒序'}`);
183
- console.log(`显示来源: ${srcLabel}`);
184
- console.log(`查看关联签字: ${on(form.viewRelateSign)} 查看转发签字: ${on(form.viewForwardSign)}`);
185
- console.log(`允许关联: ${on(form.allowSignRelate)} 上传: ${on(form.allowSignUpload)} 定位: ${on(form.allowSignLocation)}`);
186
- console.log(`表情: ${on(form.allowSignEmoticon)} @人员: ${on(form.allowSignAt)}`);
187
- console.log(`@人员范围: ${form.informHrmRange === '1' ? '流程参与人' : '所有人'}`);
188
- }
189
- return;
190
- }
191
- const payload = mergeKnown({
192
- workflowId,
193
- signShowOrder: '0',
194
- viewRelateSign: 1,
195
- viewForwardSign: 1,
196
- allowSignRelate: 1,
197
- relateRangeSelect: '0',
198
- relateMatterRangeBrowser: [],
199
- allowSignUpload: 1,
200
- allowSignLocation: 1,
201
- allowSignEmoticon: 1,
202
- allowSignAt: 1,
203
- informHrmRange: '0',
204
- signOrder: 0,
205
- signShowSrcList: [],
206
- uploadCatalog: '',
207
- uploadCatalogBrowser: [],
208
- }, form);
209
- if (cmdOpts.showOrder)
210
- payload.signShowOrder = cmdOpts.showOrder;
211
- if (cmdOpts.showSrc) {
212
- // Convert to array: "3"→["1","2"], "1,2"→["1","2"], "0"→[], "1"→["1"], "2"→["2"]
213
- if (cmdOpts.showSrc === '0') {
214
- payload.signShowSrcList = [];
215
- }
216
- else if (cmdOpts.showSrc === '3') {
217
- payload.signShowSrcList = ['1', '2'];
128
+ // Workflow-level signing and attachment switches; PC/mobile style APIs are excluded.
129
+ const sign = base.command('sign-set').description('签字意见设置(不含 PC/移动显示样式)').argument('<workflowId>', '流程 ID')
130
+ .option('--schema', '显示服务端表单、可选值及默认值')
131
+ .option('--show-order <0|1>', '意见及评论顺序:0倒序/1正序')
132
+ .option('--show-src <n>', '保留原来源参数:0无/1PC/2非PC/3两者')
133
+ .option('--view-relate <0|1>', '允许查看关联流程意见及评论')
134
+ .option('--view-forward <0|1>', '事项分享默认允许查看意见及评论')
135
+ .option('--allow-relate <0|1>', '允许签字意见关联事项')
136
+ .option('--relate-range <0|1>', '关联范围:0全部/1选择范围')
137
+ .option('--candidates <relate|catalog>', '查询关联事项类型或目录候选(首100项/树形根节点)')
138
+ .option('--relate-items <ids...>', '关联事项类型 ID 列表(不是具体流程或实例 ID)')
139
+ .option('--clear-relate-items', '清空已选事项类型,需关联范围为全部')
140
+ .option('--allow-upload <0|1>', '允许签字意见上传附件')
141
+ .option('--upload-catalog <id>', '附件上传目录 ID;0 清空;需环境支持知识管理')
142
+ .option('--allow-location <0|1>', '允许意见及评论插入位置')
143
+ .option('--allow-emoticon <0|1>', '允许意见及评论插入表情')
144
+ .option('--allow-at <0|1>', '允许意见及评论 @ 人员')
145
+ .option('--inform-range <0|1>', '@范围:0所有人/1流程参与人(不含共享人)');
146
+ const file = base.command('file-set').description('附件设置:仅两个删除开关').argument('<workflowId>', '流程 ID')
147
+ .option('--schema', '显示服务端表单及默认值')
148
+ .option('--create-delete <0|1>', '仅发起节点才能删除附件')
149
+ .option('--async-delete <0|1>', '删除流程的同时删除附件');
150
+ for (const [cmd, kind, mapping] of [
151
+ [sign, 'sign', { showOrder: 'signShowOrder', viewRelate: 'viewRelateSign', viewForward: 'viewForwardSign', allowRelate: 'allowSignRelate', relateRange: 'relateRangeSelect', relateItems: 'relateMatterRangeBrowser', allowUpload: 'allowSignUpload', allowLocation: 'allowSignLocation', allowEmoticon: 'allowSignEmoticon', allowAt: 'allowSignAt', informRange: 'informHrmRange' }],
152
+ [file, 'file', { createDelete: 'createDelete', asyncDelete: 'asyncDelete' }]
153
+ ])
154
+ cmd.action(async (w, o) => {
155
+ try {
156
+ const auth = await AuthSession.fromOptions(program.opts());
157
+ if (!auth)
158
+ throw Error('无法加载认证');
159
+ const service = new SignFileSettings(new ApiClient(auth), auth.getBaseUrl()), patch = {};
160
+ for (const [flag, key] of Object.entries(mapping))
161
+ if (o[flag] !== undefined)
162
+ patch[key] = o[flag];
163
+ if (o.candidates !== undefined) {
164
+ if (!['relate', 'catalog'].includes(o.candidates) || Object.keys(o).some(k => k !== 'candidates'))
165
+ throw Error('--candidates 须单独使用 relate 或 catalog');
166
+ console.log(JSON.stringify(await service.candidates(w, o.candidates === 'relate' ? 'relateMatterRangeBrowser' : 'uploadCatalogBrowser'), null, 2));
167
+ return;
168
+ }
169
+ if (o.showSrc !== undefined) {
170
+ if (!['0', '1', '2', '3', '1,2'].includes(o.showSrc))
171
+ throw Error('无效 --show-src');
172
+ patch.signShowSrcList = o.showSrc === '0' ? [] : ['3', '1,2'].includes(o.showSrc) ? ['1', '2'] : [o.showSrc];
173
+ }
174
+ if (o.clearRelateItems) {
175
+ if (o.relateItems)
176
+ throw Error('--clear-relate-items 与 --relate-items 互斥');
177
+ patch.relateMatterRangeBrowser = [];
178
+ }
179
+ if (o.uploadCatalog !== undefined)
180
+ patch.uploadCatalogBrowser = o.uploadCatalog === '0' ? [] : [o.uploadCatalog];
181
+ if (Object.keys(patch).length)
182
+ console.log(JSON.stringify(await service.updateSettings(kind, w, patch), null, 2));
183
+ else {
184
+ const form = await service.readSettings(kind, w);
185
+ console.log(JSON.stringify(o.schema ? { settings: normalized(form), form } : normalized(form), null, 2));
186
+ }
218
187
  }
219
- else {
220
- payload.signShowSrcList = cmdOpts.showSrc.split(',').filter(Boolean);
188
+ catch (e) {
189
+ console.error(`操作失败: ${e.message}`);
190
+ process.exitCode = 1;
221
191
  }
222
- delete payload.signShowSrc;
223
- }
224
- if (cmdOpts.viewRelate)
225
- payload.viewRelateSign = parseInt(cmdOpts.viewRelate, 10);
226
- if (cmdOpts.viewForward)
227
- payload.viewForwardSign = parseInt(cmdOpts.viewForward, 10);
228
- if (cmdOpts.allowRelate)
229
- payload.allowSignRelate = parseInt(cmdOpts.allowRelate, 10);
230
- if (cmdOpts.allowUpload)
231
- payload.allowSignUpload = parseInt(cmdOpts.allowUpload, 10);
232
- if (cmdOpts.allowLocation)
233
- payload.allowSignLocation = parseInt(cmdOpts.allowLocation, 10);
234
- if (cmdOpts.allowEmoticon)
235
- payload.allowSignEmoticon = parseInt(cmdOpts.allowEmoticon, 10);
236
- if (cmdOpts.allowAt)
237
- payload.allowSignAt = parseInt(cmdOpts.allowAt, 10);
238
- if (cmdOpts.informRange)
239
- payload.informHrmRange = cmdOpts.informRange;
240
- const saveRes = await client.post(`${baseUrl}/api/bs/workflow/pathdef/pathSet/signconfig/savePathSignConfig`, payload);
241
- if (saveRes?.code === 200 && saveRes?.status) {
242
- console.log(opts.json ? JSON.stringify({ success: true, workflowId }) : '签字意见设置已保存');
243
- }
244
- else {
245
- console.error(`保存失败: ${saveRes?.msg || '未知错误'}`);
246
- process.exit(1);
247
- }
248
- });
192
+ });
249
193
  // ======== comment ========
250
- sc.command('comment')
194
+ base.command('comment-set')
251
195
  .description('查看/配置评论设置')
252
196
  .argument('<workflowId>', '流程 ID')
253
197
  .option('--enable <0|1>', '评论功能开关')
@@ -299,218 +243,5 @@ export function registerWorkflowSettingCommands(wf, program) {
299
243
  process.exit(1);
300
244
  }
301
245
  });
302
- // ======== batch ========
303
- sc.command('batch')
304
- .description('查看/配置批量操作设置')
305
- .argument('<workflowId>', '流程 ID')
306
- .option('--enable-batch <0|1>', '批量提交开关')
307
- .option('--enable-turn-todo <0|1>', '批量转办开关')
308
- .option('--enable-consult <0|1>', '批量征询开关')
309
- .option('--enable-reject <0|1>', '批量退回开关')
310
- .option('--range <n>', '节点范围: 0=全部, 1=选择, 2=排除')
311
- .action(async (workflowId, cmdOpts) => {
312
- const opts = program.opts();
313
- const auth = await AuthSession.fromOptions(opts);
314
- if (!auth)
315
- process.exit(1);
316
- const client = new ApiClient(auth);
317
- const baseUrl = auth.getBaseUrl();
318
- const getRes = await client.get(`${baseUrl}/api/bs/workflow/pathdef/batchSubmitSet/getConfigForm?workflowId=${workflowId}`);
319
- if (getRes?.code !== 200 || !getRes?.status) {
320
- console.error(`查询失败: ${getRes?.msg}`);
321
- process.exit(1);
322
- }
323
- const form = getRes?.data?.data || getRes?.data || {};
324
- const hasOpts = cmdOpts.enableBatch || cmdOpts.enableTurnTodo || cmdOpts.enableConsult || cmdOpts.enableReject || cmdOpts.range;
325
- if (!hasOpts) {
326
- if (opts.json) {
327
- console.log(JSON.stringify(form, null, 2));
328
- }
329
- else {
330
- const on = (v) => v === '1' || v === 1 || v === true ? '✅' : '⛔';
331
- console.log(`批量提交: ${on(form.enabledBatch)} 转办: ${on(form.allowTurnTodo)} 征询: ${on(form.allowConsult)} 退回: ${on(form.allowReject)}`);
332
- }
333
- return;
334
- }
335
- // Normalize GET values (booleans→int, arrays→scalar) for save API
336
- const norm = (v) => typeof v === 'boolean' ? (v ? 1 : 0) : (Array.isArray(v) && v.length === 1 ? v[0] : v);
337
- const payload = mergeKnown({
338
- workflowId,
339
- enabledBatch: 0,
340
- allowTurnTodo: 0,
341
- allowConsult: 0,
342
- allowReject: 0,
343
- rejectOption: '0',
344
- rejectNodeBrowser: [],
345
- turnTodoNodeBrowser: [],
346
- consultNodeBrowser: [],
347
- submitType: [],
348
- selectOptions: '0',
349
- turnTodoOption: '0',
350
- selectNodes: [],
351
- submitTypeOption: '0',
352
- consultOption: '0',
353
- rejectToStart: [],
354
- }, form);
355
- const normPayload = {};
356
- for (const [k, v] of Object.entries(payload)) {
357
- normPayload[k] = norm(v);
358
- }
359
- if (cmdOpts.enableBatch)
360
- normPayload.enabledBatch = parseInt(cmdOpts.enableBatch, 10);
361
- if (cmdOpts.enableTurnTodo)
362
- normPayload.allowTurnTodo = parseInt(cmdOpts.enableTurnTodo, 10);
363
- if (cmdOpts.enableConsult)
364
- normPayload.allowConsult = parseInt(cmdOpts.enableConsult, 10);
365
- if (cmdOpts.enableReject)
366
- normPayload.allowReject = parseInt(cmdOpts.enableReject, 10);
367
- if (cmdOpts.range) {
368
- normPayload.rangeType = cmdOpts.range;
369
- normPayload.nodeRangeType = cmdOpts.range;
370
- }
371
- const saveRes = await client.post(`${baseUrl}/api/bs/workflow/pathdef/batchSubmitSet/saveConfig`, normPayload);
372
- if (saveRes?.code === 200 && saveRes?.status) {
373
- console.log(opts.json ? JSON.stringify({ success: true, workflowId }) : '批量操作设置已保存');
374
- }
375
- else {
376
- console.error(`保存失败: ${saveRes?.msg || '未知错误'}`);
377
- process.exit(1);
378
- }
379
- });
380
- // ======== auto ========
381
- sc.command('auto')
382
- .description('查看/配置自动处理设置')
383
- .argument('<workflowId>', '流程 ID')
384
- .option('--enable <0|1>', '自动处理开关')
385
- .option('--way <n>', '处理方式: 0=前置, 1=后置')
386
- .option('--follow-type <types>', '跟进类型(逗号分隔): 0=不启用, 1=发起过, 2=批准过, 3=确认过')
387
- .action(async (workflowId, cmdOpts) => {
388
- const opts = program.opts();
389
- const auth = await AuthSession.fromOptions(opts);
390
- if (!auth)
391
- process.exit(1);
392
- const client = new ApiClient(auth);
393
- const baseUrl = auth.getBaseUrl();
394
- const getRes = await client.get(`${baseUrl}/api/bs/workflow/pathdef/autoApprove/getAutoInfoForm?src=&workflowId=${workflowId}`);
395
- if (getRes?.code !== 200 || !getRes?.status) {
396
- console.error(`查询失败: ${getRes?.msg || getRes?.data?.msg}`);
397
- process.exit(1);
398
- }
399
- const form = getRes?.data?.data || getRes?.data || {};
400
- if (!cmdOpts.enable && !cmdOpts.way && !cmdOpts.followType) {
401
- if (opts.json) {
402
- console.log(JSON.stringify(form, null, 2));
403
- }
404
- else {
405
- const on = form.autoHandle === '1' || form.autoHandle === 1 || form.autoHandle === true;
406
- console.log(`自动处理: ${on ? '✅ 开启' : '⛔ 关闭'}`);
407
- console.log(`处理方式: ${form.handWay === '1' ? '后置' : '前置'}`);
408
- console.log(`跟进类型: ${form.followUpType || '[]'}`);
409
- }
410
- return;
411
- }
412
- const payload = mergeKnown({
413
- workflowId,
414
- autoHandle: 0,
415
- handWay: '0',
416
- adjacentCheck: ['0'],
417
- adjacentOptions: '0',
418
- adjacentNodes: [],
419
- followUpType: ['0'],
420
- followUpCommit: 'false',
421
- followUpCheck: [],
422
- followUpOptions: '0',
423
- followUpNodes: [],
424
- selectUsers: [],
425
- backHandle: [],
426
- mustHandNodeBrowser: [],
427
- allowHandleUserBrowser: [],
428
- backHandleForecastNodeBrowser: [],
429
- compensateTip: 1,
430
- signMark: 0,
431
- signContent: '',
432
- }, form);
433
- // Normalize: GET returns arrays for these but save API expects scalar strings
434
- if (Array.isArray(payload.adjacentOptions))
435
- payload.adjacentOptions = payload.adjacentOptions[0] || '0';
436
- if (Array.isArray(payload.followUpOptions))
437
- payload.followUpOptions = payload.followUpOptions[0] || '0';
438
- if (cmdOpts.enable)
439
- payload.autoHandle = parseInt(cmdOpts.enable, 10);
440
- if (cmdOpts.way)
441
- payload.handWay = cmdOpts.way;
442
- if (cmdOpts.followType)
443
- payload.followUpType = cmdOpts.followType.split(',');
444
- const saveRes = await client.post(`${baseUrl}/api/bs/workflow/pathdef/autoApprove/saveConfig`, payload);
445
- if (saveRes?.code === 200 && saveRes?.status) {
446
- console.log(opts.json ? JSON.stringify({ success: true, workflowId }) : '自动处理设置已保存');
447
- }
448
- else {
449
- console.error(`保存失败: ${saveRes?.msg || '未知错误'}`);
450
- process.exit(1);
451
- }
452
- });
453
- // ======== other ========
454
- sc.command('other')
455
- .description('查看/配置其他设置')
456
- .argument('<workflowId>', '流程 ID')
457
- .option('--message-op <0|1>', '消息操作开关')
458
- .option('--auto-save <0|1>', '自动保存草稿开关')
459
- .option('--switch-identity <0|1>', '允许切换身份查看开关')
460
- .action(async (workflowId, cmdOpts) => {
461
- const opts = program.opts();
462
- const auth = await AuthSession.fromOptions(opts);
463
- if (!auth)
464
- process.exit(1);
465
- const client = new ApiClient(auth);
466
- const baseUrl = auth.getBaseUrl();
467
- const getRes = await client.get(`${baseUrl}/api/bs/workflow/pathdef/baseExtSet/getConfigForm?workflowId=${workflowId}`);
468
- if (getRes?.code !== 200 || !getRes?.status) {
469
- console.error(`查询失败: ${getRes?.msg || getRes?.data?.msg}`);
470
- process.exit(1);
471
- }
472
- const form = getRes?.data?.data || getRes?.data || {};
473
- if (!cmdOpts.messageOp && !cmdOpts.autoSave && !cmdOpts.switchIdentity) {
474
- if (opts.json) {
475
- console.log(JSON.stringify(form, null, 2));
476
- }
477
- else {
478
- const on = (v) => v === '1' || v === 1 || v === true ? '✅' : '⛔';
479
- console.log(`消息操作: ${on(form.messageOperation)} 自动保存: ${on(form.enableAutoSave)} 切换身份: ${on(form.followNodeviewRight)}`);
480
- }
481
- return;
482
- }
483
- const payload = mergeKnown({
484
- workflowId,
485
- followNodeviewRight: 0,
486
- allowViewFormLog: 0,
487
- allowUseInDoor: 1,
488
- messageOperation: 0,
489
- nodeRangeOptions: '0',
490
- nodeRangeNodes: [],
491
- autoMaxDisplay: 1,
492
- enableOdocText: 0,
493
- enableAutoSave: 0,
494
- autoSaveRangeType: '0',
495
- autoSaveRangeMultiBrowser: [],
496
- markChangedFieldScene: '',
497
- markFieldRange: '0',
498
- markFieldKeyBrowserValue: [],
499
- }, form);
500
- if (cmdOpts.messageOp)
501
- payload.messageOperation = parseInt(cmdOpts.messageOp, 10);
502
- if (cmdOpts.autoSave)
503
- payload.enableAutoSave = parseInt(cmdOpts.autoSave, 10);
504
- if (cmdOpts.switchIdentity)
505
- payload.followNodeviewRight = parseInt(cmdOpts.switchIdentity, 10);
506
- const saveRes = await client.post(`${baseUrl}/api/bs/workflow/pathdef/baseExtSet/saveConfig`, payload);
507
- if (saveRes?.code === 200 && saveRes?.status) {
508
- console.log(opts.json ? JSON.stringify({ success: true, workflowId }) : '其他设置已保存');
509
- }
510
- else {
511
- console.error(`保存失败: ${saveRes?.msg || '未知错误'}`);
512
- process.exit(1);
513
- }
514
- });
515
246
  }
516
247
  //# sourceMappingURL=workflow-setting.js.map