weaver-e10-builder 1.1.9 → 1.2.3

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 (501) hide show
  1. package/README.md +9 -20
  2. package/dist/commands/actionflow.d.ts.map +1 -1
  3. package/dist/commands/actionflow.js +58 -0
  4. package/dist/commands/actionflow.js.map +1 -1
  5. package/dist/commands/app.d.ts.map +1 -1
  6. package/dist/commands/app.js +17 -5
  7. package/dist/commands/app.js.map +1 -1
  8. package/dist/commands/auth.d.ts.map +1 -1
  9. package/dist/commands/auth.js +9 -2
  10. package/dist/commands/auth.js.map +1 -1
  11. package/dist/commands/designer.d.ts.map +1 -1
  12. package/dist/commands/designer.js +22 -1
  13. package/dist/commands/designer.js.map +1 -1
  14. package/dist/commands/form-add-detail-table.d.ts.map +1 -1
  15. package/dist/commands/form-add-detail-table.js +127 -7
  16. package/dist/commands/form-add-detail-table.js.map +1 -1
  17. package/dist/commands/form-ebuilder-columns.d.ts +7 -0
  18. package/dist/commands/form-ebuilder-columns.d.ts.map +1 -1
  19. package/dist/commands/form-ebuilder-columns.js +2 -24
  20. package/dist/commands/form-ebuilder-columns.js.map +1 -1
  21. package/dist/commands/form-field-props.d.ts +3 -0
  22. package/dist/commands/form-field-props.d.ts.map +1 -0
  23. package/dist/commands/form-field-props.js +242 -0
  24. package/dist/commands/form-field-props.js.map +1 -0
  25. package/dist/commands/form-formula.d.ts.map +1 -1
  26. package/dist/commands/form-formula.js +35 -11
  27. package/dist/commands/form-formula.js.map +1 -1
  28. package/dist/commands/form-layout-init.d.ts +0 -7
  29. package/dist/commands/form-layout-init.d.ts.map +1 -1
  30. package/dist/commands/form-layout-init.js +23 -39
  31. package/dist/commands/form-layout-init.js.map +1 -1
  32. package/dist/commands/form-nlist.d.ts +1 -1
  33. package/dist/commands/form-nlist.d.ts.map +1 -1
  34. package/dist/commands/form-nlist.js +5 -3
  35. package/dist/commands/form-nlist.js.map +1 -1
  36. package/dist/commands/form-serial-mark.d.ts.map +1 -1
  37. package/dist/commands/form-serial-mark.js +134 -42
  38. package/dist/commands/form-serial-mark.js.map +1 -1
  39. package/dist/commands/form-virtual.d.ts +3 -0
  40. package/dist/commands/form-virtual.d.ts.map +1 -0
  41. package/dist/commands/form-virtual.js +197 -0
  42. package/dist/commands/form-virtual.js.map +1 -0
  43. package/dist/commands/form.d.ts +3 -0
  44. package/dist/commands/form.d.ts.map +1 -1
  45. package/dist/commands/form.js +356 -129
  46. package/dist/commands/form.js.map +1 -1
  47. package/dist/commands/interface.js +1 -1
  48. package/dist/commands/interface.js.map +1 -1
  49. package/dist/commands/report-admin.d.ts +5 -0
  50. package/dist/commands/report-admin.d.ts.map +1 -0
  51. package/dist/commands/report-admin.js +420 -0
  52. package/dist/commands/report-admin.js.map +1 -0
  53. package/dist/commands/report-query.d.ts +3 -0
  54. package/dist/commands/report-query.d.ts.map +1 -0
  55. package/dist/commands/report-query.js +314 -0
  56. package/dist/commands/report-query.js.map +1 -0
  57. package/dist/commands/report-validate.d.ts +3 -0
  58. package/dist/commands/report-validate.d.ts.map +1 -0
  59. package/dist/commands/report-validate.js +719 -0
  60. package/dist/commands/report-validate.js.map +1 -0
  61. package/dist/commands/report.d.ts +12 -0
  62. package/dist/commands/report.d.ts.map +1 -0
  63. package/dist/commands/report.js +666 -0
  64. package/dist/commands/report.js.map +1 -0
  65. package/dist/commands/wf-form.d.ts +34 -0
  66. package/dist/commands/wf-form.d.ts.map +1 -1
  67. package/dist/commands/wf-form.js +303 -127
  68. package/dist/commands/wf-form.js.map +1 -1
  69. package/dist/commands/workflow-advanced.d.ts.map +1 -1
  70. package/dist/commands/workflow-advanced.js +109 -90
  71. package/dist/commands/workflow-advanced.js.map +1 -1
  72. package/dist/commands/workflow-auth-resp.d.ts +8 -0
  73. package/dist/commands/workflow-auth-resp.d.ts.map +1 -0
  74. package/dist/commands/workflow-auth-resp.js +629 -0
  75. package/dist/commands/workflow-auth-resp.js.map +1 -0
  76. package/dist/commands/workflow-condition.d.ts.map +1 -1
  77. package/dist/commands/workflow-condition.js +3 -1
  78. package/dist/commands/workflow-condition.js.map +1 -1
  79. package/dist/commands/workflow-create-auth-resp.d.ts +4 -0
  80. package/dist/commands/workflow-create-auth-resp.d.ts.map +1 -0
  81. package/dist/commands/workflow-create-auth-resp.js +204 -0
  82. package/dist/commands/workflow-create-auth-resp.js.map +1 -0
  83. package/dist/commands/workflow-node-assign-flow.d.ts +3 -0
  84. package/dist/commands/workflow-node-assign-flow.d.ts.map +1 -0
  85. package/dist/commands/workflow-node-assign-flow.js +342 -0
  86. package/dist/commands/workflow-node-assign-flow.js.map +1 -0
  87. package/dist/commands/workflow-node-overtime.d.ts.map +1 -1
  88. package/dist/commands/workflow-node-overtime.js +125 -92
  89. package/dist/commands/workflow-node-overtime.js.map +1 -1
  90. package/dist/commands/workflow-node-reject.d.ts +52 -0
  91. package/dist/commands/workflow-node-reject.d.ts.map +1 -1
  92. package/dist/commands/workflow-node-reject.js +134 -63
  93. package/dist/commands/workflow-node-reject.js.map +1 -1
  94. package/dist/commands/workflow-node-sign.d.ts.map +1 -1
  95. package/dist/commands/workflow-node-sign.js +14 -7
  96. package/dist/commands/workflow-node-sign.js.map +1 -1
  97. package/dist/commands/workflow-node-validate.d.ts +6 -0
  98. package/dist/commands/workflow-node-validate.d.ts.map +1 -1
  99. package/dist/commands/workflow-node-validate.js +143 -21
  100. package/dist/commands/workflow-node-validate.js.map +1 -1
  101. package/dist/commands/workflow-node.d.ts +2 -0
  102. package/dist/commands/workflow-node.d.ts.map +1 -1
  103. package/dist/commands/workflow-node.js +434 -165
  104. package/dist/commands/workflow-node.js.map +1 -1
  105. package/dist/commands/workflow-numbering.d.ts.map +1 -1
  106. package/dist/commands/workflow-numbering.js +73 -34
  107. package/dist/commands/workflow-numbering.js.map +1 -1
  108. package/dist/commands/workflow-operator-sign.d.ts +10 -0
  109. package/dist/commands/workflow-operator-sign.d.ts.map +1 -1
  110. package/dist/commands/workflow-operator-sign.js +40 -53
  111. package/dist/commands/workflow-operator-sign.js.map +1 -1
  112. package/dist/commands/workflow-plan-range.d.ts +10 -0
  113. package/dist/commands/workflow-plan-range.d.ts.map +1 -1
  114. package/dist/commands/workflow-plan-range.js +15 -54
  115. package/dist/commands/workflow-plan-range.js.map +1 -1
  116. package/dist/commands/workflow-segment.d.ts.map +1 -1
  117. package/dist/commands/workflow-segment.js +22 -14
  118. package/dist/commands/workflow-segment.js.map +1 -1
  119. package/dist/commands/workflow.d.ts.map +1 -1
  120. package/dist/commands/workflow.js +13 -69
  121. package/dist/commands/workflow.js.map +1 -1
  122. package/dist/core/auth.js +1 -1
  123. package/dist/index.js +17 -0
  124. package/dist/index.js.map +1 -1
  125. package/dist/services/actionflow/build_workflow_draft.d.ts +6 -0
  126. package/dist/services/actionflow/build_workflow_draft.d.ts.map +1 -1
  127. package/dist/services/actionflow/build_workflow_draft.js +63 -4
  128. package/dist/services/actionflow/build_workflow_draft.js.map +1 -1
  129. package/dist/services/actionflow/calendar_mapper.d.ts +2 -2
  130. package/dist/services/actionflow/calendar_mapper.d.ts.map +1 -1
  131. package/dist/services/actionflow/calendar_mapper.js +33 -13
  132. package/dist/services/actionflow/calendar_mapper.js.map +1 -1
  133. package/dist/services/actionflow/components/action_eb_add.d.ts.map +1 -1
  134. package/dist/services/actionflow/components/action_eb_add.js +13 -1
  135. package/dist/services/actionflow/components/action_eb_add.js.map +1 -1
  136. package/dist/services/actionflow/components/action_eb_delete.js +2 -2
  137. package/dist/services/actionflow/components/action_eb_delete.js.map +1 -1
  138. package/dist/services/actionflow/components/action_eb_recover.js +2 -2
  139. package/dist/services/actionflow/components/action_eb_recover.js.map +1 -1
  140. package/dist/services/actionflow/components/action_eb_save_version.js +2 -2
  141. package/dist/services/actionflow/components/action_eb_save_version.js.map +1 -1
  142. package/dist/services/actionflow/components/action_eb_update.d.ts.map +1 -1
  143. package/dist/services/actionflow/components/action_eb_update.js +15 -3
  144. package/dist/services/actionflow/components/action_eb_update.js.map +1 -1
  145. package/dist/services/actionflow/components/action_eb_update_compiler.js +5 -5
  146. package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -1
  147. package/dist/services/actionflow/components/approve_create.d.ts.map +1 -1
  148. package/dist/services/actionflow/components/approve_create.js +5 -2
  149. package/dist/services/actionflow/components/approve_create.js.map +1 -1
  150. package/dist/services/actionflow/components/approve_trigger.d.ts.map +1 -1
  151. package/dist/services/actionflow/components/approve_trigger.js +5 -0
  152. package/dist/services/actionflow/components/approve_trigger.js.map +1 -1
  153. package/dist/services/actionflow/components/assign_var.d.ts +12 -0
  154. package/dist/services/actionflow/components/assign_var.d.ts.map +1 -0
  155. package/dist/services/actionflow/components/assign_var.js +133 -0
  156. package/dist/services/actionflow/components/assign_var.js.map +1 -0
  157. package/dist/services/actionflow/components/date_trigger.d.ts.map +1 -1
  158. package/dist/services/actionflow/components/date_trigger.js +14 -1
  159. package/dist/services/actionflow/components/date_trigger.js.map +1 -1
  160. package/dist/services/actionflow/components/dml_execute.d.ts.map +1 -1
  161. package/dist/services/actionflow/components/dml_execute.js +18 -10
  162. package/dist/services/actionflow/components/dml_execute.js.map +1 -1
  163. package/dist/services/actionflow/components/document_actions.js +5 -5
  164. package/dist/services/actionflow/components/document_actions.js.map +1 -1
  165. package/dist/services/actionflow/components/eb_get_data_by_id.d.ts.map +1 -1
  166. package/dist/services/actionflow/components/eb_get_data_by_id.js +8 -6
  167. package/dist/services/actionflow/components/eb_get_data_by_id.js.map +1 -1
  168. package/dist/services/actionflow/components/enquiry_form.d.ts.map +1 -1
  169. package/dist/services/actionflow/components/enquiry_form.js +28 -9
  170. package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
  171. package/dist/services/actionflow/components/hrm_actions.d.ts.map +1 -1
  172. package/dist/services/actionflow/components/hrm_actions.js +34 -13
  173. package/dist/services/actionflow/components/hrm_actions.js.map +1 -1
  174. package/dist/services/actionflow/components/index.d.ts.map +1 -1
  175. package/dist/services/actionflow/components/index.js +12 -3
  176. package/dist/services/actionflow/components/index.js.map +1 -1
  177. package/dist/services/actionflow/components/inner_mq_send.d.ts.map +1 -1
  178. package/dist/services/actionflow/components/inner_mq_send.js +43 -4
  179. package/dist/services/actionflow/components/inner_mq_send.js.map +1 -1
  180. package/dist/services/actionflow/components/meeting_create.js +9 -9
  181. package/dist/services/actionflow/components/meeting_create.js.map +1 -1
  182. package/dist/services/actionflow/components/multiple_execution.d.ts.map +1 -1
  183. package/dist/services/actionflow/components/multiple_execution.js +83 -4
  184. package/dist/services/actionflow/components/multiple_execution.js.map +1 -1
  185. package/dist/services/actionflow/components/output.d.ts +3 -2
  186. package/dist/services/actionflow/components/output.d.ts.map +1 -1
  187. package/dist/services/actionflow/components/output.js +33 -0
  188. package/dist/services/actionflow/components/output.js.map +1 -1
  189. package/dist/services/actionflow/components/schedule_create.js +10 -10
  190. package/dist/services/actionflow/components/schedule_create.js.map +1 -1
  191. package/dist/services/actionflow/components/send_message.js +1 -1
  192. package/dist/services/actionflow/components/send_message.js.map +1 -1
  193. package/dist/services/actionflow/components/simple_scheduler.d.ts.map +1 -1
  194. package/dist/services/actionflow/components/simple_scheduler.js +42 -9
  195. package/dist/services/actionflow/components/simple_scheduler.js.map +1 -1
  196. package/dist/services/actionflow/components/time_batch_trigger.d.ts.map +1 -1
  197. package/dist/services/actionflow/components/time_batch_trigger.js +43 -13
  198. package/dist/services/actionflow/components/time_batch_trigger.js.map +1 -1
  199. package/dist/services/actionflow/components/workflow_actions.d.ts +0 -1
  200. package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
  201. package/dist/services/actionflow/components/workflow_actions.js +21 -27
  202. package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
  203. package/dist/services/actionflow/context_preflight.d.ts +30 -1
  204. package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
  205. package/dist/services/actionflow/context_preflight.js +175 -2
  206. package/dist/services/actionflow/context_preflight.js.map +1 -1
  207. package/dist/services/actionflow/design_client.d.ts +4 -0
  208. package/dist/services/actionflow/design_client.d.ts.map +1 -1
  209. package/dist/services/actionflow/design_client.js +10 -0
  210. package/dist/services/actionflow/design_client.js.map +1 -1
  211. package/dist/services/actionflow/dynamic_resources.d.ts +7 -1
  212. package/dist/services/actionflow/dynamic_resources.d.ts.map +1 -1
  213. package/dist/services/actionflow/dynamic_resources.js +74 -10
  214. package/dist/services/actionflow/dynamic_resources.js.map +1 -1
  215. package/dist/services/actionflow/enrich_approve_trigger.d.ts.map +1 -1
  216. package/dist/services/actionflow/enrich_approve_trigger.js +18 -3
  217. package/dist/services/actionflow/enrich_approve_trigger.js.map +1 -1
  218. package/dist/services/actionflow/form_source.d.ts +35 -0
  219. package/dist/services/actionflow/form_source.d.ts.map +1 -1
  220. package/dist/services/actionflow/form_source.js +50 -0
  221. package/dist/services/actionflow/form_source.js.map +1 -1
  222. package/dist/services/actionflow/formula_service.d.ts +1 -1
  223. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  224. package/dist/services/actionflow/formula_service.js +186 -13
  225. package/dist/services/actionflow/formula_service.js.map +1 -1
  226. package/dist/services/actionflow/generation_service.d.ts.map +1 -1
  227. package/dist/services/actionflow/generation_service.js +18 -2
  228. package/dist/services/actionflow/generation_service.js.map +1 -1
  229. package/dist/services/actionflow/preflight_service.d.ts +1 -1
  230. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  231. package/dist/services/actionflow/preflight_service.js +168 -5
  232. package/dist/services/actionflow/preflight_service.js.map +1 -1
  233. package/dist/services/actionflow/save_workflow_draft.d.ts +8 -0
  234. package/dist/services/actionflow/save_workflow_draft.d.ts.map +1 -1
  235. package/dist/services/actionflow/save_workflow_draft.js +6 -2
  236. package/dist/services/actionflow/save_workflow_draft.js.map +1 -1
  237. package/dist/services/actionflow/update_service.d.ts +6 -0
  238. package/dist/services/actionflow/update_service.d.ts.map +1 -1
  239. package/dist/services/actionflow/update_service.js +125 -7
  240. package/dist/services/actionflow/update_service.js.map +1 -1
  241. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  242. package/dist/services/actionflow/workflow_compiler.js +17 -9
  243. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  244. package/dist/services/browser.d.ts +34 -0
  245. package/dist/services/browser.d.ts.map +1 -0
  246. package/dist/services/browser.js +57 -0
  247. package/dist/services/browser.js.map +1 -0
  248. package/dist/services/esb-interface/document-parser.d.ts +5 -0
  249. package/dist/services/esb-interface/document-parser.d.ts.map +1 -1
  250. package/dist/services/esb-interface/document-parser.js +117 -1
  251. package/dist/services/esb-interface/document-parser.js.map +1 -1
  252. package/dist/services/esb-interface/importer.d.ts.map +1 -1
  253. package/dist/services/esb-interface/importer.js +7 -2
  254. package/dist/services/esb-interface/importer.js.map +1 -1
  255. package/dist/services/field-props-data.d.ts +56 -0
  256. package/dist/services/field-props-data.d.ts.map +1 -0
  257. package/dist/services/field-props-data.js +732 -0
  258. package/dist/services/field-props-data.js.map +1 -0
  259. package/dist/services/form-create.d.ts +2 -1
  260. package/dist/services/form-create.d.ts.map +1 -1
  261. package/dist/services/form-create.js.map +1 -1
  262. package/dist/services/form-ebuilder-columns.d.ts +50 -0
  263. package/dist/services/form-ebuilder-columns.d.ts.map +1 -0
  264. package/dist/services/form-ebuilder-columns.js +68 -0
  265. package/dist/services/form-ebuilder-columns.js.map +1 -0
  266. package/dist/services/form-edit-base.d.ts +45 -0
  267. package/dist/services/form-edit-base.d.ts.map +1 -0
  268. package/dist/services/form-edit-base.js +76 -0
  269. package/dist/services/form-edit-base.js.map +1 -0
  270. package/dist/services/form-field-drop.d.ts +70 -0
  271. package/dist/services/form-field-drop.d.ts.map +1 -0
  272. package/dist/services/form-field-drop.js +118 -0
  273. package/dist/services/form-field-drop.js.map +1 -0
  274. package/dist/services/form-field-patch.d.ts +47 -0
  275. package/dist/services/form-field-patch.d.ts.map +1 -0
  276. package/dist/services/form-field-patch.js +88 -0
  277. package/dist/services/form-field-patch.js.map +1 -0
  278. package/dist/services/form-nlist.d.ts +1 -0
  279. package/dist/services/form-nlist.d.ts.map +1 -1
  280. package/dist/services/form-nlist.js +32 -5
  281. package/dist/services/form-nlist.js.map +1 -1
  282. package/dist/services/form-style-template.d.ts +17 -0
  283. package/dist/services/form-style-template.d.ts.map +1 -0
  284. package/dist/services/form-style-template.js +102 -0
  285. package/dist/services/form-style-template.js.map +1 -0
  286. package/dist/services/form-sub-detail.d.ts +51 -3
  287. package/dist/services/form-sub-detail.d.ts.map +1 -1
  288. package/dist/services/form-sub-detail.js +183 -20
  289. package/dist/services/form-sub-detail.js.map +1 -1
  290. package/dist/services/form-virtual.d.ts +60 -0
  291. package/dist/services/form-virtual.d.ts.map +1 -0
  292. package/dist/services/form-virtual.js +331 -0
  293. package/dist/services/form-virtual.js.map +1 -0
  294. package/dist/services/formula-detail.d.ts +68 -5
  295. package/dist/services/formula-detail.d.ts.map +1 -1
  296. package/dist/services/formula-detail.js +110 -44
  297. package/dist/services/formula-detail.js.map +1 -1
  298. package/dist/services/report/analyze.d.ts +67 -0
  299. package/dist/services/report/analyze.d.ts.map +1 -0
  300. package/dist/services/report/analyze.js +173 -0
  301. package/dist/services/report/analyze.js.map +1 -0
  302. package/dist/services/report/build.d.ts +166 -0
  303. package/dist/services/report/build.d.ts.map +1 -0
  304. package/dist/services/report/build.js +520 -0
  305. package/dist/services/report/build.js.map +1 -0
  306. package/dist/services/report/constants.d.ts +145 -0
  307. package/dist/services/report/constants.d.ts.map +1 -0
  308. package/dist/services/report/constants.js +250 -0
  309. package/dist/services/report/constants.js.map +1 -0
  310. package/dist/services/report/dataset.d.ts +73 -0
  311. package/dist/services/report/dataset.d.ts.map +1 -0
  312. package/dist/services/report/dataset.js +185 -0
  313. package/dist/services/report/dataset.js.map +1 -0
  314. package/dist/services/report/fields.d.ts +80 -0
  315. package/dist/services/report/fields.d.ts.map +1 -0
  316. package/dist/services/report/fields.js +245 -0
  317. package/dist/services/report/fields.js.map +1 -0
  318. package/dist/services/report/forms.d.ts +70 -0
  319. package/dist/services/report/forms.d.ts.map +1 -0
  320. package/dist/services/report/forms.js +237 -0
  321. package/dist/services/report/forms.js.map +1 -0
  322. package/dist/services/report/guard.d.ts +73 -0
  323. package/dist/services/report/guard.d.ts.map +1 -0
  324. package/dist/services/report/guard.js +262 -0
  325. package/dist/services/report/guard.js.map +1 -0
  326. package/dist/services/report/http.d.ts +118 -0
  327. package/dist/services/report/http.d.ts.map +1 -0
  328. package/dist/services/report/http.js +159 -0
  329. package/dist/services/report/http.js.map +1 -0
  330. package/dist/services/report/lifecycle.d.ts +107 -0
  331. package/dist/services/report/lifecycle.d.ts.map +1 -0
  332. package/dist/services/report/lifecycle.js +323 -0
  333. package/dist/services/report/lifecycle.js.map +1 -0
  334. package/dist/services/report/permission.d.ts +59 -0
  335. package/dist/services/report/permission.d.ts.map +1 -0
  336. package/dist/services/report/permission.js +286 -0
  337. package/dist/services/report/permission.js.map +1 -0
  338. package/dist/services/report/query-checks.d.ts +124 -0
  339. package/dist/services/report/query-checks.d.ts.map +1 -0
  340. package/dist/services/report/query-checks.js +374 -0
  341. package/dist/services/report/query-checks.js.map +1 -0
  342. package/dist/services/report/query.d.ts +106 -0
  343. package/dist/services/report/query.d.ts.map +1 -0
  344. package/dist/services/report/query.js +278 -0
  345. package/dist/services/report/query.js.map +1 -0
  346. package/dist/services/report/render.d.ts +52 -0
  347. package/dist/services/report/render.d.ts.map +1 -0
  348. package/dist/services/report/render.js +138 -0
  349. package/dist/services/report/render.js.map +1 -0
  350. package/dist/services/report/reports.d.ts +110 -0
  351. package/dist/services/report/reports.d.ts.map +1 -0
  352. package/dist/services/report/reports.js +179 -0
  353. package/dist/services/report/reports.js.map +1 -0
  354. package/dist/services/report/safe-save.d.ts +57 -0
  355. package/dist/services/report/safe-save.d.ts.map +1 -0
  356. package/dist/services/report/safe-save.js +325 -0
  357. package/dist/services/report/safe-save.js.map +1 -0
  358. package/dist/services/report/sources.d.ts +48 -0
  359. package/dist/services/report/sources.d.ts.map +1 -0
  360. package/dist/services/report/sources.js +147 -0
  361. package/dist/services/report/sources.js.map +1 -0
  362. package/dist/services/report/types.d.ts +312 -0
  363. package/dist/services/report/types.d.ts.map +1 -0
  364. package/dist/services/report/types.js +2 -0
  365. package/dist/services/report/types.js.map +1 -0
  366. package/dist/services/report/validate.d.ts +169 -0
  367. package/dist/services/report/validate.d.ts.map +1 -0
  368. package/dist/services/report/validate.js +685 -0
  369. package/dist/services/report/validate.js.map +1 -0
  370. package/dist/services/report/verify.d.ts +72 -0
  371. package/dist/services/report/verify.d.ts.map +1 -0
  372. package/dist/services/report/verify.js +441 -0
  373. package/dist/services/report/verify.js.map +1 -0
  374. package/dist/services/report/workbook.d.ts +108 -0
  375. package/dist/services/report/workbook.d.ts.map +1 -0
  376. package/dist/services/report/workbook.js +471 -0
  377. package/dist/services/report/workbook.js.map +1 -0
  378. package/dist/services/rich-text.d.ts +33 -0
  379. package/dist/services/rich-text.d.ts.map +1 -0
  380. package/dist/services/rich-text.js +134 -0
  381. package/dist/services/rich-text.js.map +1 -0
  382. package/dist/services/rich-types.d.ts +39 -0
  383. package/dist/services/rich-types.d.ts.map +1 -1
  384. package/dist/services/rich-types.js +61 -30
  385. package/dist/services/rich-types.js.map +1 -1
  386. package/dist/services/workflow-assign-flow.d.ts +114 -0
  387. package/dist/services/workflow-assign-flow.d.ts.map +1 -0
  388. package/dist/services/workflow-assign-flow.js +311 -0
  389. package/dist/services/workflow-assign-flow.js.map +1 -0
  390. package/dist/services/workflow-node-layout.d.ts +214 -0
  391. package/dist/services/workflow-node-layout.d.ts.map +1 -0
  392. package/dist/services/workflow-node-layout.js +338 -0
  393. package/dist/services/workflow-node-layout.js.map +1 -0
  394. package/dist/services/workflow-node-menu.d.ts +57 -0
  395. package/dist/services/workflow-node-menu.d.ts.map +1 -0
  396. package/dist/services/workflow-node-menu.js +144 -0
  397. package/dist/services/workflow-node-menu.js.map +1 -0
  398. package/dist/services/workflow-operator.d.ts +47 -2
  399. package/dist/services/workflow-operator.d.ts.map +1 -1
  400. package/dist/services/workflow-operator.js +102 -5
  401. package/dist/services/workflow-operator.js.map +1 -1
  402. package/dist/services/workflow-overtime.d.ts +95 -0
  403. package/dist/services/workflow-overtime.d.ts.map +1 -0
  404. package/dist/services/workflow-overtime.js +207 -0
  405. package/dist/services/workflow-overtime.js.map +1 -0
  406. package/dist/services/workflow-plan-range.d.ts +18 -0
  407. package/dist/services/workflow-plan-range.d.ts.map +1 -0
  408. package/dist/services/workflow-plan-range.js +72 -0
  409. package/dist/services/workflow-plan-range.js.map +1 -0
  410. package/package.json +48 -47
  411. package/skill-docs/SKILL.md +278 -261
  412. package/skill-docs/_catalog.md +13 -0
  413. package/skill-docs/actionflows/SKILL.md +168 -159
  414. package/skill-docs/actionflows/references/components/calendar/MeetingCreate.md +17 -17
  415. package/skill-docs/actionflows/references/components/calendar/ScheduleCreate.md +17 -17
  416. package/skill-docs/actionflows/references/components/database/DMLExecute.md +3 -3
  417. package/skill-docs/actionflows/references/components/ebuilder/ActionEbAdd.md +1 -1
  418. package/skill-docs/actionflows/references/components/ebuilder/DateTrigger.md +32 -17
  419. package/skill-docs/actionflows/references/components/ebuilder/EbGetDataById.md +17 -17
  420. package/skill-docs/actionflows/references/components/ebuilder/EnquiryForm.md +6 -0
  421. package/skill-docs/actionflows/references/components/ebuilder/EventButton.md +33 -33
  422. package/skill-docs/actionflows/references/components/ebuilder/EventFormData.md +2 -0
  423. package/skill-docs/actionflows/references/components/ebuilder/TimeBatchTrigger.md +19 -17
  424. package/skill-docs/actionflows/references/components/logic/Output.md +28 -17
  425. package/skill-docs/actionflows/references/components/message/InnerMQSend.md +6 -2
  426. package/skill-docs/actionflows/references/components/personnel/AlterPersonStatus.md +30 -30
  427. package/skill-docs/actionflows/references/components/personnel/HrmEmployeeUpdate.md +32 -32
  428. package/skill-docs/actionflows/references/components/trigger/InnerMQListener.md +41 -40
  429. package/skill-docs/actionflows/references/components/trigger/SimpleScheduler.md +19 -17
  430. package/skill-docs/actionflows/references/components/workflow/ApproveCreate.md +17 -17
  431. package/skill-docs/actionflows/references/components/workflow/ApproveDelete.md +19 -17
  432. package/skill-docs/actionflows/references/components/workflow/ApproveEntrust.md +19 -17
  433. package/skill-docs/actionflows/references/components/workflow/ApproveSave.md +17 -17
  434. package/skill-docs/actionflows/references/components/workflow/ApproveTrigger.md +99 -84
  435. package/skill-docs/actionflows/references/dynamic_capability_matrix.md +39 -0
  436. package/skill-docs/references/common/guide-plan-template.md +22 -1
  437. package/skill-docs/references/common/ref-cli-commands.md +167 -11
  438. package/skill-docs/references/ebuilder-designer/guide-designer-components.md +1 -1
  439. package/skill-docs/references/ebuilder-designer/guide-designer-factory.md +460 -460
  440. package/skill-docs/references/ebuilder-designer/guide-designer.md +4 -4
  441. package/skill-docs/references/form/guide-create-form.md +25 -6
  442. package/skill-docs/references/form/guide-form-association.md +1 -1
  443. package/skill-docs/references/form/guide-form-formula-functions.md +11 -1
  444. package/skill-docs/references/form/guide-form-sub-detail.md +82 -0
  445. package/skill-docs/references/form/guide-form-view.md +318 -318
  446. package/skill-docs/references/form/guide-list-custom-text.md +52 -0
  447. package/skill-docs/references/form/guide-virtual-form.md +156 -0
  448. package/skill-docs/references/form/ref-form-fields.md +239 -100
  449. package/skill-docs/references/form/style-templates.md +80 -27
  450. package/skill-docs/references/report/add-dataset-registration-guide.md +139 -0
  451. package/skill-docs/references/report/ai-report-workflow.md +412 -0
  452. package/skill-docs/references/report/api-report-build-fast-path.md +275 -0
  453. package/skill-docs/references/report/app-datasource-lookup-guide.md +230 -0
  454. package/skill-docs/references/report/cell-config-echo-guide.md +163 -0
  455. package/skill-docs/references/report/cell-transform-guide.md +147 -0
  456. package/skill-docs/references/report/condition-format-guide.md +140 -0
  457. package/skill-docs/references/report/cross-dataset-filter-guide.md +304 -0
  458. package/skill-docs/references/report/dataset-query-filter-guide.md +235 -0
  459. package/skill-docs/references/report/dataset-sidebar-ops-guide.md +280 -0
  460. package/skill-docs/references/report/dataset-table-field-contract-guide.md +339 -0
  461. package/skill-docs/references/report/datasource-metadata-guide.md +365 -0
  462. package/skill-docs/references/report/datasource-selection-and-parent-filter-guide.md +148 -0
  463. package/skill-docs/references/report/date-range-query-reference.md +102 -0
  464. package/skill-docs/references/report/default-header-style-guide.md +70 -0
  465. package/skill-docs/references/report/designer-blank-prevention-guide.md +111 -0
  466. package/skill-docs/references/report/event-hreflink-guide.md +184 -0
  467. package/skill-docs/references/report/field-bind-exact-match-guide.md +208 -0
  468. package/skill-docs/references/report/formula-cell-api-guide.md +258 -0
  469. package/skill-docs/references/report/guide-report-build.md +131 -0
  470. package/skill-docs/references/report/guide-report-modify.md +100 -0
  471. package/skill-docs/references/report/guide-report-multisource.md +143 -0
  472. package/skill-docs/references/report/guide-report-query.md +98 -0
  473. package/skill-docs/references/report/hidden-row-and-header-merge-guide.md +100 -0
  474. package/skill-docs/references/report/layout-showlocation-freeze-guide.md +167 -0
  475. package/skill-docs/references/report/preaggregate-auto-disable-guide.md +107 -0
  476. package/skill-docs/references/report/query-condition-api-guide.md +890 -0
  477. package/skill-docs/references/report/ref-report-commands.md +122 -0
  478. package/skill-docs/references/report/ref-report-pitfalls.md +226 -0
  479. package/skill-docs/references/report/report-baseinfo-defaults-guide.md +117 -0
  480. package/skill-docs/references/report/report-building-guide.md +511 -0
  481. package/skill-docs/references/report/report-config-schema.md +445 -0
  482. package/skill-docs/references/report/report-create-modes-guide.md +182 -0
  483. package/skill-docs/references/report/report-data-model.md +447 -0
  484. package/skill-docs/references/report/report-delivery-contract.md +101 -0
  485. package/skill-docs/references/report/report-designer-feature-map.md +500 -0
  486. package/skill-docs/references/report/report-internal-error-guide.md +78 -0
  487. package/skill-docs/references/report/report-knowledge-base.md +389 -0
  488. package/skill-docs/references/report/report-lifecycle-api-guide.md +392 -0
  489. package/skill-docs/references/report/report-list-page-ops-guide.md +191 -0
  490. package/skill-docs/references/report/report-permission-guide.md +365 -0
  491. package/skill-docs/references/report/report-requirement-analysis-template.md +202 -0
  492. package/skill-docs/references/report/report-self-check-guide.md +164 -0
  493. package/skill-docs/references/report/safe-partial-save-guide.md +151 -0
  494. package/skill-docs/references/report/snowflake-id-precision-guide.md +84 -0
  495. package/skill-docs/references/report/spec-build-schema.md +291 -0
  496. package/skill-docs/references/report/targeted-fix-guide.md +97 -0
  497. package/skill-docs/references/report/user-request-scope-only-guide.md +82 -0
  498. package/skill-docs/references/workflow/guide-workflow-auth-resp.md +198 -0
  499. package/skill-docs/references/workflow/guide-workflow-node-layout.md +181 -0
  500. package/skill-docs/references/workflow/guide-workflow.md +14 -3
  501. package/skill-docs/actionflows/references/components/workflow/ApproveCompletelyDelete.md +0 -17
@@ -1,13 +1,33 @@
1
1
  import { AuthSession } from '../core/auth.js';
2
2
  import { ApiClient } from '../core/client.js';
3
+ import { CHECKED_NODES, REJECT_REMINDS, REJECT_TYPES, SUBMIT_TYPES, codeToKey, formatRejectForm, readRejectForm, saveRejectSet, } from './workflow-node-reject.js';
4
+ import { FLOW_TYPE_BY_ID, OVERTIME_FLOW_TYPES, formatDhm, listOvertimeRules, saveOvertimeRemind, saveOvertimeRule, setOvertimeRuleUsed, verifyOvertimeRule, } from '../services/workflow-overtime.js';
5
+ import { applyMenuPatch, findMenu, getNodeMenus, menuLabel, menuNames, saveNodeMenus, } from '../services/workflow-node-menu.js';
6
+ import { bindNodeLayout, createFormLayout, getLayoutReferNodes, getNodeLayout, initNodeLayout, listLayoutFields, listLayoutsWithNodes, unbindNodeLayout, } from '../services/workflow-node-layout.js';
7
+ /** `--rename 批准=发送` 这类可重复的「键=值」参数收集器 */
8
+ export function collectPairs(value, previous) {
9
+ const i = value.indexOf('=');
10
+ if (i < 0)
11
+ throw new Error(`需要「菜单=值」格式,收到: ${value}`);
12
+ previous.set(value.slice(0, i).trim(), value.slice(i + 1));
13
+ return previous;
14
+ }
3
15
  export function registerWorkflowNodeCommands(wf, program) {
4
- const nodeCmd = wf.command('node').description('节点维度设置(菜单 / 退回 / 超时 / 投票 / 字段权限)');
16
+ const nodeCmd = wf.command('node').description('节点维度设置(菜单 / 退回 / 超时 / 投票 / 字段权限 / 独立布局)');
5
17
  // ======== node menu ========
18
+ // 平台把菜单分 topmenu(快捷)/ moremenu(更多)两个数组返回,保存时 menuStr 要两组合并。
19
+ // 旧实现只读 moremenu,所以**快捷菜单一个都切不了**(批准/保存/退回/加签/强制收回全在 topmenu)。
6
20
  nodeCmd.command('menu')
7
- .description('查看/切换节点操作菜单启用状态')
21
+ .description('查看/配置节点操作菜单(快捷菜单 / 更多菜单:启用、改名、默认意见、分组)')
8
22
  .argument('<workflowId>', '流程 ID')
9
23
  .argument('<nodeId>', '节点 ID')
10
- .option('--toggle <menuId>', '切换指定菜单的启用状态(传菜单 ID)')
24
+ .option('--toggle <菜单>', '切换单个菜单的启用状态(菜单名或类型码,两组都会找)')
25
+ .option('--quick <names...>', '快捷菜单只启用这些(其余快捷菜单关闭);不在快捷组的会移进来')
26
+ .option('--more <names...>', '更多菜单只启用这些(其余更多菜单关闭);不在更多组的会移进来')
27
+ .option('--enable <names...>', '启用这些菜单(不动分组)')
28
+ .option('--disable <names...>', '关闭这些菜单')
29
+ .option('--rename <menu=newName>', '改菜单显示名,可重复(新名留空则恢复默认名)', collectPairs, new Map())
30
+ .option('--sign <menu=sign>', '设置默认签字意见,可重复', collectPairs, new Map())
11
31
  .action(async (workflowId, nodeId, cmdOpts) => {
12
32
  const opts = program.opts();
13
33
  const auth = await AuthSession.fromOptions(opts);
@@ -15,64 +35,75 @@ export function registerWorkflowNodeCommands(wf, program) {
15
35
  process.exit(1);
16
36
  const client = new ApiClient(auth);
17
37
  const baseUrl = auth.getBaseUrl();
18
- // 1. Get current menu info
19
- const getRes = await client.get(`${baseUrl}/api/bs/workflow/pathdef/nodeMenu/getWfpNodeMenuInfo?workflowId=${workflowId}&nodeId=${nodeId}`);
20
- if (getRes?.code !== 200 || !getRes?.status) {
21
- console.error(`查询失败: ${getRes?.msg || '未知错误'}`);
22
- process.exit(1);
23
- }
24
- const menusRaw = getRes?.data?.moremenu || getRes?.data?.data || getRes?.data || [];
25
- const menus = Array.isArray(menusRaw) ? menusRaw : (menusRaw.menus || menusRaw.list || []);
26
- // Toggle mode
27
- if (cmdOpts.toggle) {
28
- let found = false;
29
- for (const m of menus) {
30
- if (String(m.id) === cmdOpts.toggle || String(m.menuId) === cmdOpts.toggle) {
31
- m.useable = (m.useable === 1 || m.useable === '1' || m.useable === true) ? 0 : 1;
32
- found = true;
33
- break;
38
+ try {
39
+ const set = await getNodeMenus(client, baseUrl, workflowId, nodeId);
40
+ const hasChange = cmdOpts.toggle || cmdOpts.quick || cmdOpts.more || cmdOpts.enable
41
+ || cmdOpts.disable || cmdOpts.rename?.size || cmdOpts.sign?.size;
42
+ if (!hasChange) {
43
+ if (opts.json) {
44
+ console.log(JSON.stringify(set, null, 2));
45
+ return;
34
46
  }
47
+ console.log(`节点 ${nodeId} 操作菜单: 快捷菜单 ${set.quick.length} 个 / 更多菜单 ${set.more.length} 个\n`);
48
+ for (const [groupName, list] of [['快捷菜单', set.quick], ['更多菜单', set.more]]) {
49
+ console.log(`【${groupName}】`);
50
+ for (const m of list) {
51
+ const marks = [m.useable ? '✅ 启用' : '⛔ 关闭'];
52
+ if (m.title)
53
+ marks.push(`改名「${m.title}」`);
54
+ if (m.defaultSign)
55
+ marks.push(`默认意见「${m.defaultSign}」`);
56
+ console.log(` ${menuLabel(m).padEnd(14)} ${m.menutype.padEnd(20)} 序${String(m.orderid).padEnd(3)} ${marks.join(' ')}`);
57
+ }
58
+ }
59
+ return;
35
60
  }
36
- if (!found) {
37
- console.error(`未找到菜单: ${cmdOpts.toggle}`);
38
- process.exit(1);
61
+ const patch = {
62
+ quick: cmdOpts.quick, more: cmdOpts.more,
63
+ enable: cmdOpts.enable, disable: cmdOpts.disable,
64
+ rename: cmdOpts.rename, sign: cmdOpts.sign,
65
+ };
66
+ if (cmdOpts.toggle) {
67
+ const all = [...set.quick, ...set.more];
68
+ const hit = findMenu(all, cmdOpts.toggle);
69
+ if (!hit)
70
+ throw new Error(`找不到菜单「${cmdOpts.toggle}」。可用: ${menuNames(all).join('、')}`);
71
+ const base = (hit.useable ? cmdOpts.disable : cmdOpts.enable) || [];
72
+ if (hit.useable)
73
+ patch.disable = [...base, hit.id];
74
+ else
75
+ patch.enable = [...base, hit.id];
39
76
  }
40
- const changeRows = [cmdOpts.toggle];
41
- const saveRes = await client.post(`${baseUrl}/api/bs/workflow/pathdef/nodeMenu/saveWfpNodeMenuInfo`, {
42
- workflowId, nodeId,
43
- menuStr: JSON.stringify(menus),
44
- changeRows,
45
- deleteMenuIds: [],
46
- });
47
- if (saveRes?.code === 200 && saveRes?.status) {
48
- const msg = opts.json
49
- ? JSON.stringify({ success: true, workflowId, nodeId, toggled: cmdOpts.toggle })
50
- : `操作菜单已切换: ${cmdOpts.toggle}`;
51
- console.log(msg);
77
+ const { next, changed } = applyMenuPatch(set, patch);
78
+ await saveNodeMenus(client, baseUrl, workflowId, nodeId, next, changed);
79
+ if (opts.json) {
80
+ console.log(JSON.stringify({ success: true, workflowId, nodeId, changed, menus: next }, null, 2));
81
+ return;
52
82
  }
53
- else {
54
- console.error(`保存失败: ${saveRes?.msg || '未知错误'}`);
55
- process.exit(1);
83
+ if (!changed.length) {
84
+ console.log('菜单本来就是目标状态,没有改动');
85
+ return;
56
86
  }
57
- return;
58
- }
59
- // List mode
60
- if (opts.json) {
61
- console.log(JSON.stringify({ menus }, null, 2));
62
- }
63
- else {
64
- console.log(`共 ${menus.length} 个操作菜单:\n`);
65
- for (const m of menus) {
66
- const enabled = m.useable === 1 || m.useable === '1' || m.useable === true;
67
- const icon = enabled ? '✅' : '⛔';
68
- const label = m.menutype || m.menuName || m.name || '(未命名)';
69
- console.log(` ${icon} ${m.id || m.menuId} ${label}`);
87
+ const after = await getNodeMenus(client, baseUrl, workflowId, nodeId);
88
+ const byId = new Map([...after.quick, ...after.more].map((m) => [m.id, m]));
89
+ console.log(`已更新 ${changed.length} 个菜单:`);
90
+ for (const id of changed) {
91
+ const m = byId.get(id);
92
+ if (!m)
93
+ continue;
94
+ console.log(` ${menuLabel(m).padEnd(14)} ${m.istop ? '快捷菜单' : '更多菜单'} ${m.useable ? '✅ 启用' : '⛔ 关闭'}${m.title ? ` 改名「${m.title}」` : ''}`);
70
95
  }
71
96
  }
97
+ catch (e) {
98
+ console.error(`操作失败: ${e.message}`);
99
+ process.exitCode = 1;
100
+ }
72
101
  });
73
- // ======== node reject ========
102
+ // ======== node reject(已弃用,保留为 node-reject 的别名) ========
103
+ // 旧实现只有 4 个数值开关、拿不到 enableCustom/范围节点/提醒节点;现已共用
104
+ // workflow-node-reject.ts 的读/建/存一套实现,本命令只做数值码翻译 + 提示弃用。
74
105
  nodeCmd.command('reject')
75
- .description('配置节点退回设置')
106
+ .description('[已弃用] 配置节点退回设置,请改用 `workflow node-reject`(get / set)')
76
107
  .argument('<workflowId>', '流程 ID')
77
108
  .argument('<nodeId>', '节点 ID')
78
109
  .option('--remind <n>', '退回提醒: 0=不提醒, 1=提醒所有参与人, 2=选择提醒节点, 3=用户设置')
@@ -86,59 +117,55 @@ export function registerWorkflowNodeCommands(wf, program) {
86
117
  process.exit(1);
87
118
  const client = new ApiClient(auth);
88
119
  const baseUrl = auth.getBaseUrl();
89
- // 1. Get current settings
90
- const getRes = await client.get(`${baseUrl}/api/bs/workflow/pathdef/rejectset/getNodeRejectSetForm?workflowId=${workflowId}&nodeId=${nodeId}`);
91
- if (getRes?.code !== 200 || !getRes?.status) {
92
- console.error(`查询失败: ${getRes?.msg || '未知错误'}`);
93
- process.exit(1);
94
- }
95
- const form = getRes?.data?.data || getRes?.data || {};
120
+ console.error('⚠ `workflow node reject` 已弃用,请改用 `workflow node-reject`(get / set)。');
121
+ console.error(' 本次仍按新实现执行,行为与 node-reject 一致。');
122
+ const hasChange = cmdOpts.remind || cmdOpts.type || cmdOpts.checkedNode || cmdOpts.submitType;
123
+ const form = await readRejectForm(client, baseUrl, workflowId, nodeId)
124
+ .catch((e) => { console.error(e.message); process.exit(1); });
96
125
  // Read-only: show current
97
- if (!cmdOpts.remind && !cmdOpts.type && !cmdOpts.checkedNode && !cmdOpts.submitType) {
98
- const remindLabels = { '0': '不提醒', '1': '提醒所有参与人', '2': '选择提醒节点', '3': '用户设置' };
99
- const typeLabels = { '0': '自由', '1': '逐级', '2': '指定范围', '3': '按出口', '4': '上一审批人' };
100
- const checkedLabels = { '0': '上一节点', '1': '发起节点', '2': '指定节点' };
101
- const submitLabels = { '0': '逐级', '1': '直达本节点', '2': '直达分叉起始节点', '3': '操作者选择' };
126
+ if (!hasChange) {
102
127
  if (opts.json) {
103
128
  console.log(JSON.stringify(form, null, 2));
129
+ return;
104
130
  }
105
- else {
106
- console.log(`退回提醒: ${remindLabels[form.rejectRemind] || form.rejectRemind || '-'}`);
107
- console.log(`退回方式: ${typeLabels[form.rejectType] || form.rejectType || '-'}`);
108
- console.log(`默认选中: ${checkedLabels[form.rejectCheckedNode] || form.rejectCheckedNode || '-'}`);
109
- console.log(`退回后提交: ${submitLabels[form.rejectSubmitType] || form.rejectSubmitType || '-'}`);
110
- }
131
+ for (const line of formatRejectForm(form))
132
+ console.log(line);
111
133
  return;
112
134
  }
113
- // Update mode
114
- if (cmdOpts.remind)
115
- form.rejectRemind = cmdOpts.remind;
116
- if (cmdOpts.type)
117
- form.rejectType = cmdOpts.type;
118
- if (cmdOpts.checkedNode)
119
- form.rejectCheckedNode = cmdOpts.checkedNode;
120
- if (cmdOpts.submitType)
121
- form.rejectSubmitType = cmdOpts.submitType;
122
- const saveRes = await client.post(`${baseUrl}/api/bs/workflow/pathdef/rejectset/saveNodeRejectSetInfo`, { workflowId, nodeId, ...form });
123
- if (saveRes?.code === 200 && saveRes?.status) {
124
- const msg = opts.json
125
- ? JSON.stringify({ success: true, workflowId, nodeId })
126
- : '退回设置已保存';
127
- console.log(msg);
128
- }
129
- else {
130
- console.error(`保存失败: ${saveRes?.msg || '未知错误'}`);
131
- process.exit(1);
135
+ // Update mode:数值码 → 键名,交给共用实现合并保存
136
+ for (const [flag, map, code] of [
137
+ ['--remind', REJECT_REMINDS, cmdOpts.remind],
138
+ ['--type', REJECT_TYPES, cmdOpts.type],
139
+ ['--checked-node', CHECKED_NODES, cmdOpts.checkedNode],
140
+ ['--submit-type', SUBMIT_TYPES, cmdOpts.submitType],
141
+ ]) {
142
+ if (code && !codeToKey(map, code)) {
143
+ console.error(`不支持的 ${flag}: ${code}(可选: ${Object.values(map).join(' / ')})`);
144
+ process.exit(1);
145
+ }
132
146
  }
147
+ await saveRejectSet(client, baseUrl, form, {
148
+ rejectRemind: codeToKey(REJECT_REMINDS, cmdOpts.remind),
149
+ rejectType: codeToKey(REJECT_TYPES, cmdOpts.type),
150
+ defaultNode: codeToKey(CHECKED_NODES, cmdOpts.checkedNode),
151
+ submitType: codeToKey(SUBMIT_TYPES, cmdOpts.submitType),
152
+ }, workflowId, nodeId).catch((e) => { console.error(e.message); process.exit(1); });
153
+ console.log(opts.json ? JSON.stringify({ success: true, workflowId, nodeId }) : '退回设置已保存');
133
154
  });
134
- // ======== node timeout ========
155
+ // ======== node timeout(已弃用,保留为 node-overtime 的别名) ========
156
+ // 旧实现按 `overtime` 发超时时长、`remindTime` 发提醒偏移,平台都不认:
157
+ // 规则建得出来但超时时间落成 0天0小时0分钟,提醒步骤直接报「系统错误」。
158
+ // 现已改为共用 services/workflow-overtime.ts 的一套报文,本命令只做参数翻译 + 提示弃用。
135
159
  nodeCmd.command('timeout')
136
- .description('配置节点超时处理(列表/新增)')
160
+ .description('[已弃用] 配置节点超时处理,请改用 `workflow node-overtime`(set / remind / list)')
137
161
  .argument('<workflowId>', '流程 ID')
138
162
  .argument('<nodeId>', '节点 ID')
139
- .option('--time-type <n>', '超时来源: 1=指定时间, 2=表单字段')
163
+ .option('--time-type <n>', '超时来源: 1=指定时间(2=表单字段暂不支持)')
140
164
  .option('--time-value <n>', '超时小时数(time-type=1 时使用)')
141
165
  .option('--flow-type <n>', '处理方式: 1=下一操作者, 2=退回节点, 3=提交节点, 4=干预对象, 6=指定操作者')
166
+ .option('--flow-node <nodeId>', '退回/提交的目标节点 ID(flow-type=2|3 时需要)')
167
+ .option('--intervene-ids <userIds>', '干预对象用户 ID 列表,逗号分隔(flow-type=4 时需要)')
168
+ .option('--operator-group <groupId>', '新增操作者的操作组 ID(flow-type=6 时需要)')
142
169
  .option('--remind-type <n>', '提醒时机: 0=超时前, 1=超时后')
143
170
  .option('--remind-hours <n>', '提前/延后小时数')
144
171
  .action(async (workflowId, nodeId, cmdOpts) => {
@@ -148,95 +175,89 @@ export function registerWorkflowNodeCommands(wf, program) {
148
175
  process.exit(1);
149
176
  const client = new ApiClient(auth);
150
177
  const baseUrl = auth.getBaseUrl();
151
- // 1. Get current timeout list
152
- const listRes = await client.get(`${baseUrl}/api/bs/workflow/pathdef/nodeOvertime/getOvertimeList?workflowId=${workflowId}&nodeId=${nodeId}`);
153
- if (listRes?.code !== 200 || !listRes?.status) {
154
- console.error(`查询失败: ${listRes?.msg || '未知错误'}`);
155
- process.exit(1);
156
- }
157
- const rules = listRes?.data?.data || listRes?.data || [];
178
+ console.error('⚠ `workflow node timeout` 已弃用,请改用 `workflow node-overtime`(set / remind / list)。');
179
+ console.error(' 本次仍按新实现执行,行为与 node-overtime 一致。');
158
180
  // Read-only: show current
159
181
  if (!cmdOpts.timeType) {
160
- const flowLabels = { '1': '下一操作者', '2': '退回节点', '3': '提交节点', '4': '干预对象', '6': '指定操作者' };
161
- const typeLabels = { '1': '指定时间', '2': '表单字段' };
182
+ const rules = await listOvertimeRules(client, baseUrl, workflowId, nodeId).catch((e) => {
183
+ console.error(e.message);
184
+ process.exit(1);
185
+ });
162
186
  if (opts.json) {
163
187
  console.log(JSON.stringify({ rules }, null, 2));
188
+ return;
164
189
  }
165
- else {
166
- console.log(`共 ${Array.isArray(rules) ? rules.length : 0} 条超时规则:\n`);
167
- for (const r of (Array.isArray(rules) ? rules : [])) {
168
- const flowLabel = flowLabels[r.flowType] || r.flowType || '-';
169
- const typeLabel = typeLabels[r.overTimeType] || r.overTimeType || '-';
170
- console.log(` ${r.id || ''} ${typeLabel} ${flowLabel} 延时${r.overTime || r.overtime || '-'}h`);
171
- }
190
+ console.log(`共 ${rules.length} 条超时规则:\n`);
191
+ for (const r of rules) {
192
+ const used = r.isUsed === true || r.isUsed === 1;
193
+ console.log(` [${r.id}] ${used ? '✅ 已启用' : '⛔ 未启用'} ${r.overtimeSet || ''}`);
172
194
  }
173
195
  return;
174
196
  }
175
- // Add mode: call getOvertimeSetCondition first, then save
176
- const condRes = await client.get(`${baseUrl}/api/bs/workflow/pathdef/nodeOvertime/getOvertimeSetCondition?workflowId=${workflowId}&nodeId=${nodeId}`);
177
- const condData = condRes?.data?.data || condRes?.data || {};
178
- const payload = {
179
- ...condData,
180
- workflowId, nodeId,
181
- id: '',
182
- overTimeType: cmdOpts.timeType || '1',
183
- flowType: cmdOpts.flowType || '1',
184
- overtime: cmdOpts.timeValue || '',
185
- };
186
- const saveRes = await client.post(`${baseUrl}/api/bs/workflow/pathdef/nodeOvertime/saveOvertime`, payload);
187
- if (saveRes?.code !== 200 || !saveRes?.status) {
188
- console.error(`保存超时规则失败: ${saveRes?.msg || '未知错误'}`);
197
+ if (cmdOpts.timeType !== '1') {
198
+ console.error(`--time-type ${cmdOpts.timeType} 暂不支持(仅有「指定时间」的报文形状,表单字段取值需先确认平台字段名)`);
189
199
  process.exit(1);
190
200
  }
191
- const overtimeId = saveRes?.data?.entity?.id || saveRes?.data?.id || '';
192
- // Save remind if requested
193
- if (cmdOpts.remindType && overtimeId) {
194
- const remindPayload = {
195
- workflowId, nodeId, overTimeId: overtimeId, id: '',
196
- remindType: cmdOpts.remindType || '0',
197
- remindTime: cmdOpts.remindHours || '1',
198
- ...condData,
199
- };
200
- // D12: 不再吞错——remind 保存失败必须显式报错,不能假成功
201
- const remindRes = await client.post(`${baseUrl}/api/bs/workflow/pathdef/nodeOvertime/saveRemind`, remindPayload).catch((e) => ({ code: -1, status: false, msg: e?.message || '网络错误' }));
202
- if (remindRes?.code !== 200 || !remindRes?.status) {
203
- console.error(`保存超时提醒失败: ${remindRes?.msg || '未知错误'}`);
204
- process.exit(1);
205
- }
206
- // Save overtime list (batch + enable):真实结构为裸数组,每项 {id, batchOrder, isUsed:0|1, workflowId, nodeId}
207
- // (isUsed=1 启用 / 0 停用;batchOrder 该规则的批次,缺失取 0)。
208
- let batchOrder = 0;
209
- try {
210
- const listBack = await client.get(`${baseUrl}/api/bs/workflow/pathdef/nodeOvertime/getOvertimeList?workflowId=${workflowId}&nodeId=${nodeId}`);
211
- const found = (listBack?.data?.data || listBack?.data || []).find((x) => String(x.id) === String(overtimeId));
212
- if (found && found.batchOrder !== undefined)
213
- batchOrder = Number(found.batchOrder) || 0;
214
- }
215
- catch { /* 批次读不到用 0 */ }
216
- const listRes = await client.post(`${baseUrl}/api/bs/workflow/pathdef/nodeOvertime/saveOvertimeList`, [{ id: overtimeId, batchOrder, isUsed: 1, workflowId, nodeId }]).catch((e) => ({ code: -1, status: false, msg: e?.message || '网络错误' }));
217
- if (listRes?.code !== 200 || !listRes?.status) {
218
- console.error(`启用超时规则失败(规则已创建但未启用): ${listRes?.msg || '未知错误'}`);
219
- process.exit(1);
220
- }
201
+ // 旧参数 → 新服务参数:小时数 → 天:时:分;数值 flowType → 键
202
+ const hours = Number(cmdOpts.timeValue);
203
+ if (!Number.isFinite(hours) || hours < 0) {
204
+ console.error(`--time-value 须为小时数(非负数),收到: ${cmdOpts.timeValue}`);
205
+ process.exit(1);
206
+ }
207
+ const duration = { day: Math.floor(hours / 24), hour: hours % 24, minute: 0 };
208
+ const flowType = FLOW_TYPE_BY_ID[cmdOpts.flowType || '1'];
209
+ if (!flowType) {
210
+ console.error(`不支持的 --flow-type: ${cmdOpts.flowType},可选: ${Object.keys(FLOW_TYPE_BY_ID).join(', ')}`);
211
+ process.exit(1);
221
212
  }
222
- // D12: 保存后读回核对实际状态(新建规则默认 isUsed=false 未启用)
223
- let actualUsed = null;
213
+ let overtimeId;
224
214
  try {
225
- const back = await client.get(`${baseUrl}/api/bs/workflow/pathdef/nodeOvertime/getOvertimeList?workflowId=${workflowId}&nodeId=${nodeId}`);
226
- const found = (back?.data?.data || back?.data || []).find((r) => String(r.id) === String(overtimeId));
227
- if (found)
228
- actualUsed = found.isUsed === true || found.isUsed === 1;
215
+ overtimeId = await saveOvertimeRule(client, baseUrl, {
216
+ workflowId, nodeId, flowType, duration,
217
+ flowNodeId: cmdOpts.flowNode,
218
+ interveneIds: cmdOpts.interveneIds,
219
+ operatorGroupId: cmdOpts.operatorGroup,
220
+ });
221
+ // 新建规则默认未启用,显式打开后再回读核对
222
+ await setOvertimeRuleUsed(client, baseUrl, workflowId, nodeId, overtimeId, 1);
229
223
  }
230
- catch { /* 读回失败不阻断 */ }
231
- if (opts.json) {
232
- console.log(JSON.stringify({ success: true, workflowId, nodeId, overtimeId, isUsed: actualUsed }, null, 2));
224
+ catch (e) {
225
+ console.error(e.message);
226
+ process.exit(1);
233
227
  }
234
- else {
235
- console.log(`超时规则已保存: ${overtimeId}${actualUsed === null ? '' : `(启用状态: ${actualUsed ? '已启用' : '未启用'})`}`);
228
+ const { mismatches } = await verifyOvertimeRule(client, baseUrl, workflowId, nodeId, overtimeId, { duration, isUsed: 1 });
229
+ if (mismatches.length) {
230
+ console.error(`超时规则已提交但回读不符(规则 ID ${overtimeId}):`);
231
+ for (const m of mismatches)
232
+ console.error(` ⚠ ${m}`);
233
+ process.exit(1);
236
234
  }
237
- if (actualUsed === false) {
238
- console.error(' ⚠ 规则当前「未启用」(isUsed=false):新建默认不启用,请用启用的配置路径后再用。');
235
+ // 可选:顺带设提醒(沿用新的 remindDay/Hour/Minute 报文)
236
+ if (cmdOpts.remindType) {
237
+ const rh = Number(cmdOpts.remindHours);
238
+ const offset = {
239
+ day: Number.isFinite(rh) ? Math.floor(rh / 24) : 0,
240
+ hour: Number.isFinite(rh) ? rh % 24 : 1,
241
+ minute: 0,
242
+ };
243
+ try {
244
+ await saveOvertimeRemind(client, baseUrl, {
245
+ workflowId, nodeId, overtimeId,
246
+ name: '超时提醒',
247
+ type: Number(cmdOpts.remindType),
248
+ offset,
249
+ });
250
+ }
251
+ catch (e) {
252
+ console.error(e.message);
253
+ process.exit(1);
254
+ }
255
+ console.log(` 提醒: ${cmdOpts.remindType === '0' ? '超时前' : '超时后'} ${formatDhm(offset)}`);
239
256
  }
257
+ console.log(`超时规则已保存: ${overtimeId}`);
258
+ console.log(` 超时时长: ${formatDhm(duration)}`);
259
+ console.log(` 处理方式: ${OVERTIME_FLOW_TYPES[flowType].label}`);
260
+ console.log(` 状态: 已启用`);
240
261
  });
241
262
  // ======== node field-permission ========
242
263
  // 节点级字段权限:控制各字段在节点上的 显示/只读/必填。
@@ -535,5 +556,253 @@ export function registerWorkflowNodeCommands(wf, program) {
535
556
  process.exit(1);
536
557
  }
537
558
  });
559
+ // ======== node layout ========
560
+ // 节点独立布局:节点上挂一套自己的表单布局,与表单默认布局并存。
561
+ // 一个节点同时只属于一套布局,换布局时服务端自动从旧的那套摘掉、回落默认。
562
+ const layoutCmd = nodeCmd
563
+ .command('layout')
564
+ .description('节点独立布局(挂哪套布局 / 新建布局 / 查引用节点)');
565
+ /** 建 client + base。与本文件其它子命令保持同款写法。 */
566
+ async function conn() {
567
+ const opts = program.opts();
568
+ const auth = await AuthSession.fromOptions(opts);
569
+ if (!auth)
570
+ throw new Error('无法加载认证');
571
+ return { client: new ApiClient(auth), baseUrl: auth.getBaseUrl(), json: !!opts.json };
572
+ }
573
+ layoutCmd
574
+ .command('list')
575
+ .description('列出该工作流表单的布局,以及每套被哪些节点引用')
576
+ .argument('<workflowId>', '工作流 ID')
577
+ .option('--terminal <t>', '终端:PC(默认) / MOBILE', 'PC')
578
+ .action(async (workflowId, o) => {
579
+ try {
580
+ const { client, json } = await conn();
581
+ const terminal = (o.terminal || 'PC').toUpperCase();
582
+ // formId 从任一节点的布局设置里反查(表单级接口需要它)
583
+ const refer = await getLayoutReferNodes(client, workflowId, terminal);
584
+ if (!refer.formId)
585
+ throw new Error(`读不到该工作流的表单信息(workflowId=${workflowId})`);
586
+ const rows = await listLayoutsWithNodes(client, refer.formId, workflowId, terminal);
587
+ if (json) {
588
+ console.log(JSON.stringify({ workflowId, formId: refer.formId, pcDefaultLayoutId: refer.pcDefaultLayoutId, layouts: rows }, null, 2));
589
+ return;
590
+ }
591
+ console.log(`工作流 ${workflowId} 表单 ${refer.formId} ${terminal} 端布局 ${rows.length} 套`);
592
+ for (const r of rows) {
593
+ console.log(` ${r.id}\t${r.name}\t${r.layoutType}${r.isDefault ? '\t[默认]' : ''}\t引用 ${r.nodeIds.length} 个节点` +
594
+ (r.nodeNames.length ? `(${r.nodeNames.join('、')})` : ''));
595
+ }
596
+ }
597
+ catch (e) {
598
+ console.error(`读取布局失败: ${e.message}`);
599
+ process.exitCode = 1;
600
+ }
601
+ });
602
+ layoutCmd
603
+ .command('get')
604
+ .description('查看某个节点挂的是哪套布局')
605
+ .argument('<workflowId>', '工作流 ID')
606
+ .argument('<nodeId>', '节点 ID')
607
+ .action(async (workflowId, nodeId) => {
608
+ try {
609
+ const { client, json } = await conn();
610
+ const s = await getNodeLayout(client, workflowId, nodeId);
611
+ if (json) {
612
+ console.log(JSON.stringify(s, null, 2));
613
+ return;
614
+ }
615
+ const custom = !!s.layoutId && s.layoutId !== s.defaultLayoutId;
616
+ console.log(`节点 ${s.nodeId} ${s.nodeName}`);
617
+ console.log(` PC 端布局: ${s.layoutId || '(默认)'}${custom ? ' ← 独立布局' : ' ← 跟随表单默认'}`);
618
+ console.log(` 表单默认布局: ${s.defaultLayoutId}`);
619
+ console.log(` 移动端: 模式=${s.mLayoutMode || '(未设)'}(0=独立布局 1=读取PC端) 独立布局=${s.mLayoutId || '(无)'}`);
620
+ console.log(` 字段权限: ${s.hasNodePermissionSet ? '已设置' : '未设置'}`);
621
+ }
622
+ catch (e) {
623
+ console.error(`读取节点布局失败: ${e.message}`);
624
+ process.exitCode = 1;
625
+ }
626
+ });
627
+ layoutCmd
628
+ .command('bind')
629
+ .description('把节点挂到指定布局上(自动从原来那套摘掉,不残留)')
630
+ .argument('<workflowId>', '工作流 ID')
631
+ .argument('<nodeId>', '节点 ID')
632
+ .requiredOption('--layout-id <id>', '目标布局 ID(node layout list 可查)')
633
+ .option('--terminal <t>', '终端:PC(默认) / MOBILE', 'PC')
634
+ .action(async (workflowId, nodeId, o) => {
635
+ try {
636
+ const { client, json } = await conn();
637
+ const r = await bindNodeLayout(client, {
638
+ workflowId, nodeId, layoutId: o.layoutId,
639
+ terminal: (o.terminal || 'PC').toUpperCase(),
640
+ });
641
+ if (json) {
642
+ console.log(JSON.stringify({ success: true, ...r, workflowId, nodeId, layoutId: o.layoutId }, null, 2));
643
+ return;
644
+ }
645
+ console.log(r.changed
646
+ ? `节点 ${nodeId} 已挂到布局 ${o.layoutId}(该布局现引用 ${r.nodeIds.length} 个节点)`
647
+ : `节点 ${nodeId} 本来就在布局 ${o.layoutId} 上,未改动`);
648
+ }
649
+ catch (e) {
650
+ console.error(`绑定失败: ${e.message}`);
651
+ process.exitCode = 1;
652
+ }
653
+ });
654
+ layoutCmd
655
+ .command('unbind')
656
+ .description('把节点从独立布局上摘下来,回落到表单默认布局')
657
+ .argument('<workflowId>', '工作流 ID')
658
+ .argument('<nodeId>', '节点 ID')
659
+ .option('--terminal <t>', '终端:PC(默认) / MOBILE', 'PC')
660
+ .action(async (workflowId, nodeId, o) => {
661
+ try {
662
+ const { client, json } = await conn();
663
+ const r = await unbindNodeLayout(client, {
664
+ workflowId, nodeId,
665
+ terminal: (o.terminal || 'PC').toUpperCase(),
666
+ });
667
+ if (json) {
668
+ console.log(JSON.stringify({ success: true, ...r, workflowId, nodeId }, null, 2));
669
+ return;
670
+ }
671
+ console.log(r.changed
672
+ ? `节点 ${nodeId} 已从布局 ${r.layoutId} 摘下,回落表单默认布局(该布局现引用 ${r.nodeIds.length} 个节点)`
673
+ : `节点 ${nodeId} 本来就没挂独立布局,未改动`);
674
+ }
675
+ catch (e) {
676
+ console.error(`解绑失败: ${e.message}`);
677
+ process.exitCode = 1;
678
+ }
679
+ });
680
+ layoutCmd
681
+ .command('init')
682
+ .description('重建某套布局的排版(只动这一套,默认布局与其它布局不受影响);可只摆指定字段')
683
+ .argument('<workflowId>', '工作流 ID')
684
+ .argument('<layoutId>', '目标布局 ID(node layout list 可查)')
685
+ .option('--fields <names...>', '只摆这些字段(显示名);不传 = 摆全部字段')
686
+ .option('--list-fields', '只列出该表单可用的字段清单,不重建')
687
+ .option('--style-template <name|id>', '样式模板;缺省按布局类型取(流式=标准版 / 表格式=表格版)')
688
+ .option('--required', '字段必填')
689
+ .option('--readonly', '字段只读')
690
+ .option('--single-row', '字段独占一行')
691
+ .action(async (workflowId, layoutId, o) => {
692
+ try {
693
+ const { client, json } = await conn();
694
+ const refer = await getLayoutReferNodes(client, workflowId, 'PC');
695
+ if (!refer.formId)
696
+ throw new Error(`读不到该工作流的表单信息(workflowId=${workflowId})`);
697
+ if (o.listFields) {
698
+ const list = await listLayoutFields(client, refer.formId);
699
+ if (json) {
700
+ console.log(JSON.stringify(list, null, 2));
701
+ return;
702
+ }
703
+ console.log(`表单 ${refer.formId} 可摆字段 ${list.filter((x) => !x.system).length} 个(业务):`);
704
+ list.filter((x) => !x.system).forEach((x) => console.log(` ${x.label} ${x.id}`));
705
+ return;
706
+ }
707
+ const r = await initNodeLayout(client, {
708
+ formId: refer.formId,
709
+ workflowId,
710
+ layoutId,
711
+ fields: o.fields,
712
+ styleTemplateId: o.styleTemplate,
713
+ required: o.required,
714
+ readOnly: o.readonly,
715
+ singleRow: o.singleRow,
716
+ });
717
+ if (json) {
718
+ console.log(JSON.stringify({ success: true, formId: refer.formId, layoutId, ...r }, null, 2));
719
+ return;
720
+ }
721
+ console.log(`布局 ${layoutId} 已重建: ${r.comps} 个组件 · 类型 ${r.layoutType} · 模板 ${r.styleTemplateId}`);
722
+ if (r.placed.length)
723
+ console.log(` 摆了: ${r.placed.join('、')}`);
724
+ }
725
+ catch (e) {
726
+ console.error(`重建布局失败: ${e.message}`);
727
+ process.exitCode = 1;
728
+ }
729
+ });
730
+ layoutCmd
731
+ .command('create')
732
+ .description('新建一套布局(FLOW 流式 / EXCEL 表格式);可同时挂上若干节点')
733
+ .argument('<workflowId>', '工作流 ID')
734
+ .requiredOption('--name <name>', '布局名称')
735
+ .option('--layout-type <t>', '布局类型:FLOW 流式 / EXCEL 表格式(默认跟随复制来源;不复制时 FLOW)')
736
+ .option('--terminal <t>', '终端:PC(默认) / MOBILE', 'PC')
737
+ .option('--describe <text>', '布局描述', '')
738
+ .option('--nodes <ids...>', '建完直接把这些节点挂上去')
739
+ .option('--from <layoutId>', '复制这套布局的内容(默认复制表单默认布局)。不传 = 建空白布局')
740
+ .option('--empty', '建空白布局,不复制任何内容(与 --from 互斥)')
741
+ .option('--init', '建完立即重建一次布局(按字段清单排版),免去手工在设计器里摆')
742
+ .option('--fields <names...>', '配合 --init:只摆这些字段(显示名)。不传 = 摆全部字段')
743
+ .option('--style-template <name|id>', '配合 --init:样式模板;缺省按布局类型取')
744
+ .option('--required', '配合 --init:字段必填')
745
+ .option('--readonly', '配合 --init:字段只读')
746
+ .option('--single-row', '配合 --init:字段独占一行')
747
+ .action(async (workflowId, o) => {
748
+ try {
749
+ const { client, json } = await conn();
750
+ if (o.from && o.empty)
751
+ throw new Error('--from 与 --empty 互斥,二选一。');
752
+ const terminal = (o.terminal || 'PC').toUpperCase();
753
+ const refer = await getLayoutReferNodes(client, workflowId, terminal);
754
+ if (!refer.formId)
755
+ throw new Error(`读不到该工作流的表单信息(workflowId=${workflowId})`);
756
+ // 不指定就复制表单默认布局 —— 空布局节点上什么都显示不出来,几乎不会是想要的结果
757
+ const from = o.empty ? undefined : String(o.from || refer.pcDefaultLayoutId || '');
758
+ if (!o.empty && !from) {
759
+ throw new Error('该表单没有默认布局可供复制,请显式指定 --from <layoutId> 或加 --empty 建空白布局。');
760
+ }
761
+ const layout = await createFormLayout(client, {
762
+ formId: refer.formId,
763
+ workflowId,
764
+ name: o.name,
765
+ layoutType: o.layoutType ? o.layoutType.toUpperCase() : undefined,
766
+ terminal,
767
+ describe: o.describe,
768
+ nodeIds: o.nodes,
769
+ from,
770
+ });
771
+ if (json) {
772
+ console.log(JSON.stringify({ success: true, formId: refer.formId, copiedFrom: from || null, layout, nodes: o.nodes || [] }, null, 2));
773
+ return;
774
+ }
775
+ console.log(`布局已新建: ${layout.name}(${layout.layoutType === 'FLOW' ? '流式' : '表格式'})layoutId=${layout.id}`);
776
+ console.log(from ? ` 已从布局 ${from} 复制内容` : ' ⚠ 建的是空白布局:字段与排版都需要重新配');
777
+ if (o.nodes?.length)
778
+ console.log(` 已挂节点: ${o.nodes.join(', ')}`);
779
+ if (o.init) {
780
+ const layoutFields = await listLayoutFields(client, refer.formId);
781
+ // 复制模式下本来就已经排好版;再 init 会把内容按字段清单重排,只有显式 --init 才做
782
+ const r = await initNodeLayout(client, {
783
+ formId: refer.formId,
784
+ workflowId,
785
+ layoutId: layout.id,
786
+ fields: o.fields,
787
+ styleTemplateId: o.styleTemplate,
788
+ required: o.required,
789
+ readOnly: o.readonly,
790
+ singleRow: o.singleRow,
791
+ });
792
+ if (json) {
793
+ console.log(JSON.stringify({ success: true, formId: refer.formId, copiedFrom: from || null, layout, nodes: o.nodes || [], init: { ...r, availableFields: layoutFields.length } }, null, 2));
794
+ return;
795
+ }
796
+ console.log(` 已排版: ${r.comps} 个组件 · 模板 ${r.styleTemplateId}${o.fields?.length ? ` · 只摆 ${o.fields.join('、')}` : ' · 全部字段'}`);
797
+ if (o.fields?.length && layoutFields.length) {
798
+ console.log(` (其余 ${layoutFields.filter((x) => !x.system).length - r.comps} 个业务字段只是这套布局不显示,表单上仍在)`);
799
+ }
800
+ }
801
+ }
802
+ catch (e) {
803
+ console.error(`新建布局失败: ${e.message}`);
804
+ process.exitCode = 1;
805
+ }
806
+ });
538
807
  }
539
808
  //# sourceMappingURL=workflow-node.js.map