weaver-e10-builder 1.0.2-beta

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 (301) hide show
  1. package/README.md +200 -0
  2. package/dist/commands/app.d.ts +3 -0
  3. package/dist/commands/app.d.ts.map +1 -0
  4. package/dist/commands/app.js +305 -0
  5. package/dist/commands/app.js.map +1 -0
  6. package/dist/commands/auth.d.ts +3 -0
  7. package/dist/commands/auth.d.ts.map +1 -0
  8. package/dist/commands/auth.js +386 -0
  9. package/dist/commands/auth.js.map +1 -0
  10. package/dist/commands/check.d.ts +3 -0
  11. package/dist/commands/check.d.ts.map +1 -0
  12. package/dist/commands/check.js +106 -0
  13. package/dist/commands/check.js.map +1 -0
  14. package/dist/commands/compile.d.ts +3 -0
  15. package/dist/commands/compile.d.ts.map +1 -0
  16. package/dist/commands/compile.js +134 -0
  17. package/dist/commands/compile.js.map +1 -0
  18. package/dist/commands/docx.d.ts +3 -0
  19. package/dist/commands/docx.d.ts.map +1 -0
  20. package/dist/commands/docx.js +54 -0
  21. package/dist/commands/docx.js.map +1 -0
  22. package/dist/commands/form-button.d.ts +3 -0
  23. package/dist/commands/form-button.d.ts.map +1 -0
  24. package/dist/commands/form-button.js +441 -0
  25. package/dist/commands/form-button.js.map +1 -0
  26. package/dist/commands/form-data.d.ts +3 -0
  27. package/dist/commands/form-data.d.ts.map +1 -0
  28. package/dist/commands/form-data.js +197 -0
  29. package/dist/commands/form-data.js.map +1 -0
  30. package/dist/commands/form-ebuilder-columns.d.ts +3 -0
  31. package/dist/commands/form-ebuilder-columns.d.ts.map +1 -0
  32. package/dist/commands/form-ebuilder-columns.js +118 -0
  33. package/dist/commands/form-ebuilder-columns.js.map +1 -0
  34. package/dist/commands/form-ebuilder-filter.d.ts +3 -0
  35. package/dist/commands/form-ebuilder-filter.d.ts.map +1 -0
  36. package/dist/commands/form-ebuilder-filter.js +135 -0
  37. package/dist/commands/form-ebuilder-filter.js.map +1 -0
  38. package/dist/commands/form-ebuilder-scope.d.ts +3 -0
  39. package/dist/commands/form-ebuilder-scope.d.ts.map +1 -0
  40. package/dist/commands/form-ebuilder-scope.js +321 -0
  41. package/dist/commands/form-ebuilder-scope.js.map +1 -0
  42. package/dist/commands/form-ebuilder-search.d.ts +3 -0
  43. package/dist/commands/form-ebuilder-search.d.ts.map +1 -0
  44. package/dist/commands/form-ebuilder-search.js +252 -0
  45. package/dist/commands/form-ebuilder-search.js.map +1 -0
  46. package/dist/commands/form-formula.d.ts +12 -0
  47. package/dist/commands/form-formula.d.ts.map +1 -0
  48. package/dist/commands/form-formula.js +252 -0
  49. package/dist/commands/form-formula.js.map +1 -0
  50. package/dist/commands/form-layout-init.d.ts +15 -0
  51. package/dist/commands/form-layout-init.d.ts.map +1 -0
  52. package/dist/commands/form-layout-init.js +162 -0
  53. package/dist/commands/form-layout-init.js.map +1 -0
  54. package/dist/commands/form-layout.d.ts +3 -0
  55. package/dist/commands/form-layout.d.ts.map +1 -0
  56. package/dist/commands/form-layout.js +236 -0
  57. package/dist/commands/form-layout.js.map +1 -0
  58. package/dist/commands/form-list-click.d.ts +3 -0
  59. package/dist/commands/form-list-click.d.ts.map +1 -0
  60. package/dist/commands/form-list-click.js +154 -0
  61. package/dist/commands/form-list-click.js.map +1 -0
  62. package/dist/commands/form-list-event.d.ts +3 -0
  63. package/dist/commands/form-list-event.d.ts.map +1 -0
  64. package/dist/commands/form-list-event.js +203 -0
  65. package/dist/commands/form-list-event.js.map +1 -0
  66. package/dist/commands/form-list-filter.d.ts +9 -0
  67. package/dist/commands/form-list-filter.d.ts.map +1 -0
  68. package/dist/commands/form-list-filter.js +107 -0
  69. package/dist/commands/form-list-filter.js.map +1 -0
  70. package/dist/commands/form-list-group.d.ts +11 -0
  71. package/dist/commands/form-list-group.d.ts.map +1 -0
  72. package/dist/commands/form-list-group.js +100 -0
  73. package/dist/commands/form-list-group.js.map +1 -0
  74. package/dist/commands/form-list-permission.d.ts +3 -0
  75. package/dist/commands/form-list-permission.d.ts.map +1 -0
  76. package/dist/commands/form-list-permission.js +127 -0
  77. package/dist/commands/form-list-permission.js.map +1 -0
  78. package/dist/commands/form-list-search-group.d.ts +3 -0
  79. package/dist/commands/form-list-search-group.d.ts.map +1 -0
  80. package/dist/commands/form-list-search-group.js +132 -0
  81. package/dist/commands/form-list-search-group.js.map +1 -0
  82. package/dist/commands/form-list-stats.d.ts +11 -0
  83. package/dist/commands/form-list-stats.d.ts.map +1 -0
  84. package/dist/commands/form-list-stats.js +139 -0
  85. package/dist/commands/form-list-stats.js.map +1 -0
  86. package/dist/commands/form-list-unit.d.ts +3 -0
  87. package/dist/commands/form-list-unit.d.ts.map +1 -0
  88. package/dist/commands/form-list-unit.js +95 -0
  89. package/dist/commands/form-list-unit.js.map +1 -0
  90. package/dist/commands/form-list-utils.d.ts +32 -0
  91. package/dist/commands/form-list-utils.d.ts.map +1 -0
  92. package/dist/commands/form-list-utils.js +76 -0
  93. package/dist/commands/form-list-utils.js.map +1 -0
  94. package/dist/commands/form-list.d.ts +3 -0
  95. package/dist/commands/form-list.d.ts.map +1 -0
  96. package/dist/commands/form-list.js +624 -0
  97. package/dist/commands/form-list.js.map +1 -0
  98. package/dist/commands/form-permission.d.ts +3 -0
  99. package/dist/commands/form-permission.d.ts.map +1 -0
  100. package/dist/commands/form-permission.js +193 -0
  101. package/dist/commands/form-permission.js.map +1 -0
  102. package/dist/commands/form-relate.d.ts +14 -0
  103. package/dist/commands/form-relate.d.ts.map +1 -0
  104. package/dist/commands/form-relate.js +140 -0
  105. package/dist/commands/form-relate.js.map +1 -0
  106. package/dist/commands/form-serial-mark.d.ts +18 -0
  107. package/dist/commands/form-serial-mark.d.ts.map +1 -0
  108. package/dist/commands/form-serial-mark.js +167 -0
  109. package/dist/commands/form-serial-mark.js.map +1 -0
  110. package/dist/commands/form-table-view.d.ts +3 -0
  111. package/dist/commands/form-table-view.d.ts.map +1 -0
  112. package/dist/commands/form-table-view.js +217 -0
  113. package/dist/commands/form-table-view.js.map +1 -0
  114. package/dist/commands/form-validate.d.ts +3 -0
  115. package/dist/commands/form-validate.d.ts.map +1 -0
  116. package/dist/commands/form-validate.js +122 -0
  117. package/dist/commands/form-validate.js.map +1 -0
  118. package/dist/commands/form-view-permission.d.ts +3 -0
  119. package/dist/commands/form-view-permission.d.ts.map +1 -0
  120. package/dist/commands/form-view-permission.js +86 -0
  121. package/dist/commands/form-view-permission.js.map +1 -0
  122. package/dist/commands/form-view.d.ts +3 -0
  123. package/dist/commands/form-view.d.ts.map +1 -0
  124. package/dist/commands/form-view.js +145 -0
  125. package/dist/commands/form-view.js.map +1 -0
  126. package/dist/commands/form.d.ts +3 -0
  127. package/dist/commands/form.d.ts.map +1 -0
  128. package/dist/commands/form.js +2467 -0
  129. package/dist/commands/form.js.map +1 -0
  130. package/dist/commands/icon.d.ts +3 -0
  131. package/dist/commands/icon.d.ts.map +1 -0
  132. package/dist/commands/icon.js +82 -0
  133. package/dist/commands/icon.js.map +1 -0
  134. package/dist/commands/matrix.d.ts +3 -0
  135. package/dist/commands/matrix.d.ts.map +1 -0
  136. package/dist/commands/matrix.js +587 -0
  137. package/dist/commands/matrix.js.map +1 -0
  138. package/dist/commands/menu-permission.d.ts +3 -0
  139. package/dist/commands/menu-permission.d.ts.map +1 -0
  140. package/dist/commands/menu-permission.js +188 -0
  141. package/dist/commands/menu-permission.js.map +1 -0
  142. package/dist/commands/menu.d.ts +16 -0
  143. package/dist/commands/menu.d.ts.map +1 -0
  144. package/dist/commands/menu.js +269 -0
  145. package/dist/commands/menu.js.map +1 -0
  146. package/dist/commands/project.d.ts +3 -0
  147. package/dist/commands/project.d.ts.map +1 -0
  148. package/dist/commands/project.js +345 -0
  149. package/dist/commands/project.js.map +1 -0
  150. package/dist/commands/role.d.ts +3 -0
  151. package/dist/commands/role.d.ts.map +1 -0
  152. package/dist/commands/role.js +224 -0
  153. package/dist/commands/role.js.map +1 -0
  154. package/dist/commands/user.d.ts +3 -0
  155. package/dist/commands/user.d.ts.map +1 -0
  156. package/dist/commands/user.js +49 -0
  157. package/dist/commands/user.js.map +1 -0
  158. package/dist/commands/workflow-action.d.ts +3 -0
  159. package/dist/commands/workflow-action.d.ts.map +1 -0
  160. package/dist/commands/workflow-action.js +1821 -0
  161. package/dist/commands/workflow-action.js.map +1 -0
  162. package/dist/commands/workflow-advanced.d.ts +3 -0
  163. package/dist/commands/workflow-advanced.d.ts.map +1 -0
  164. package/dist/commands/workflow-advanced.js +290 -0
  165. package/dist/commands/workflow-advanced.js.map +1 -0
  166. package/dist/commands/workflow-condition.d.ts +7 -0
  167. package/dist/commands/workflow-condition.d.ts.map +1 -0
  168. package/dist/commands/workflow-condition.js +562 -0
  169. package/dist/commands/workflow-condition.js.map +1 -0
  170. package/dist/commands/workflow-message.d.ts +3 -0
  171. package/dist/commands/workflow-message.d.ts.map +1 -0
  172. package/dist/commands/workflow-message.js +399 -0
  173. package/dist/commands/workflow-message.js.map +1 -0
  174. package/dist/commands/workflow-node-overtime.d.ts +3 -0
  175. package/dist/commands/workflow-node-overtime.d.ts.map +1 -0
  176. package/dist/commands/workflow-node-overtime.js +150 -0
  177. package/dist/commands/workflow-node-overtime.js.map +1 -0
  178. package/dist/commands/workflow-node-reject.d.ts +3 -0
  179. package/dist/commands/workflow-node-reject.d.ts.map +1 -0
  180. package/dist/commands/workflow-node-reject.js +115 -0
  181. package/dist/commands/workflow-node-reject.js.map +1 -0
  182. package/dist/commands/workflow-node-sign.d.ts +15 -0
  183. package/dist/commands/workflow-node-sign.d.ts.map +1 -0
  184. package/dist/commands/workflow-node-sign.js +100 -0
  185. package/dist/commands/workflow-node-sign.js.map +1 -0
  186. package/dist/commands/workflow-node-validate.d.ts +16 -0
  187. package/dist/commands/workflow-node-validate.d.ts.map +1 -0
  188. package/dist/commands/workflow-node-validate.js +169 -0
  189. package/dist/commands/workflow-node-validate.js.map +1 -0
  190. package/dist/commands/workflow-node.d.ts +3 -0
  191. package/dist/commands/workflow-node.d.ts.map +1 -0
  192. package/dist/commands/workflow-node.js +347 -0
  193. package/dist/commands/workflow-node.js.map +1 -0
  194. package/dist/commands/workflow-numbering.d.ts +17 -0
  195. package/dist/commands/workflow-numbering.d.ts.map +1 -0
  196. package/dist/commands/workflow-numbering.js +191 -0
  197. package/dist/commands/workflow-numbering.js.map +1 -0
  198. package/dist/commands/workflow-plan-range.d.ts +3 -0
  199. package/dist/commands/workflow-plan-range.d.ts.map +1 -0
  200. package/dist/commands/workflow-plan-range.js +116 -0
  201. package/dist/commands/workflow-plan-range.js.map +1 -0
  202. package/dist/commands/workflow-setting.d.ts +3 -0
  203. package/dist/commands/workflow-setting.d.ts.map +1 -0
  204. package/dist/commands/workflow-setting.js +440 -0
  205. package/dist/commands/workflow-setting.js.map +1 -0
  206. package/dist/commands/workflow-title.d.ts +14 -0
  207. package/dist/commands/workflow-title.d.ts.map +1 -0
  208. package/dist/commands/workflow-title.js +106 -0
  209. package/dist/commands/workflow-title.js.map +1 -0
  210. package/dist/commands/workflow.d.ts +26 -0
  211. package/dist/commands/workflow.d.ts.map +1 -0
  212. package/dist/commands/workflow.js +2359 -0
  213. package/dist/commands/workflow.js.map +1 -0
  214. package/dist/core/auth.d.ts +36 -0
  215. package/dist/core/auth.d.ts.map +1 -0
  216. package/dist/core/auth.js +351 -0
  217. package/dist/core/auth.js.map +1 -0
  218. package/dist/core/client.d.ts +27 -0
  219. package/dist/core/client.d.ts.map +1 -0
  220. package/dist/core/client.js +100 -0
  221. package/dist/core/client.js.map +1 -0
  222. package/dist/core/crypto.d.ts +11 -0
  223. package/dist/core/crypto.d.ts.map +1 -0
  224. package/dist/core/crypto.js +102 -0
  225. package/dist/core/crypto.js.map +1 -0
  226. package/dist/core/edition.d.ts +4 -0
  227. package/dist/core/edition.d.ts.map +1 -0
  228. package/dist/core/edition.js +19 -0
  229. package/dist/core/edition.js.map +1 -0
  230. package/dist/index.d.ts +3 -0
  231. package/dist/index.d.ts.map +1 -0
  232. package/dist/index.js +118 -0
  233. package/dist/index.js.map +1 -0
  234. package/dist/services/action-detail.d.ts +112 -0
  235. package/dist/services/action-detail.d.ts.map +1 -0
  236. package/dist/services/action-detail.js +443 -0
  237. package/dist/services/action-detail.js.map +1 -0
  238. package/dist/services/condition-rules.d.ts +45 -0
  239. package/dist/services/condition-rules.d.ts.map +1 -0
  240. package/dist/services/condition-rules.js +207 -0
  241. package/dist/services/condition-rules.js.map +1 -0
  242. package/dist/services/form-create.d.ts +102 -0
  243. package/dist/services/form-create.d.ts.map +1 -0
  244. package/dist/services/form-create.js +835 -0
  245. package/dist/services/form-create.js.map +1 -0
  246. package/dist/services/form-ebuilder-filter.d.ts +60 -0
  247. package/dist/services/form-ebuilder-filter.d.ts.map +1 -0
  248. package/dist/services/form-ebuilder-filter.js +562 -0
  249. package/dist/services/form-ebuilder-filter.js.map +1 -0
  250. package/dist/services/form-table-view.d.ts +117 -0
  251. package/dist/services/form-table-view.d.ts.map +1 -0
  252. package/dist/services/form-table-view.js +882 -0
  253. package/dist/services/form-table-view.js.map +1 -0
  254. package/dist/services/form-view-permission.d.ts +30 -0
  255. package/dist/services/form-view-permission.d.ts.map +1 -0
  256. package/dist/services/form-view-permission.js +208 -0
  257. package/dist/services/form-view-permission.js.map +1 -0
  258. package/dist/services/form-view.d.ts +41 -0
  259. package/dist/services/form-view.d.ts.map +1 -0
  260. package/dist/services/form-view.js +334 -0
  261. package/dist/services/form-view.js.map +1 -0
  262. package/dist/services/formula-detail.d.ts +31 -0
  263. package/dist/services/formula-detail.d.ts.map +1 -0
  264. package/dist/services/formula-detail.js +66 -0
  265. package/dist/services/formula-detail.js.map +1 -0
  266. package/dist/services/rich-types.d.ts +35 -0
  267. package/dist/services/rich-types.d.ts.map +1 -0
  268. package/dist/services/rich-types.js +105 -0
  269. package/dist/services/rich-types.js.map +1 -0
  270. package/dist/services/workflow-layout.d.ts +118 -0
  271. package/dist/services/workflow-layout.d.ts.map +1 -0
  272. package/dist/services/workflow-layout.js +279 -0
  273. package/dist/services/workflow-layout.js.map +1 -0
  274. package/dist/services/workflow-operator.d.ts +36 -0
  275. package/dist/services/workflow-operator.d.ts.map +1 -0
  276. package/dist/services/workflow-operator.js +65 -0
  277. package/dist/services/workflow-operator.js.map +1 -0
  278. package/dist/types.d.ts +53 -0
  279. package/dist/types.d.ts.map +1 -0
  280. package/dist/types.js +2 -0
  281. package/dist/types.js.map +1 -0
  282. package/dist/utils/column-name.d.ts +13 -0
  283. package/dist/utils/column-name.d.ts.map +1 -0
  284. package/dist/utils/column-name.js +45 -0
  285. package/dist/utils/column-name.js.map +1 -0
  286. package/ecodecmd/package.json +27 -0
  287. package/ecodecmd/src/build.js +709 -0
  288. package/ecodecmd/src/compile.js +81 -0
  289. package/ecodecmd/src/index.js +48 -0
  290. package/ecodecmd/src/init.js +73 -0
  291. package/ecodecmd/src/lib/@babel/plugin-proposal-object-rest-spread@7.5.5/index.js +1795 -0
  292. package/ecodecmd/src/lib/@babel/plugin-proposal-optional-chaining@7.6.0/index.js +135 -0
  293. package/ecodecmd/src/lib/@babel/preset-env-standalone@7.5.5/babel-preset-env.js +76043 -0
  294. package/ecodecmd/src/lib/@babel/standalone@7.5.5/babel.js +90802 -0
  295. package/ecodecmd/src/lib/exec.js +77 -0
  296. package/ecodecmd/src/loaddep.js +154 -0
  297. package/ecodecmd/src/util/compress.js +58 -0
  298. package/ecodecmd/src/util/crypto-util.js +19 -0
  299. package/ecodecmd/src/util/index.js +153 -0
  300. package/ecodecmd/src/util/snowflake.js +144 -0
  301. package/package.json +43 -0
@@ -0,0 +1,399 @@
1
+ import { AuthSession } from '../core/auth.js';
2
+ import { ApiClient } from '../core/client.js';
3
+ import { tempIdNeg, normalizeActionRow } from './workflow.js';
4
+ export function registerWorkflowMessageCommands(wf, program) {
5
+ const msgCmd = wf.command('message').description('消息提醒动作流');
6
+ function tempId() {
7
+ return String(Date.now() * 1000 + Math.floor(Math.random() * 10000));
8
+ }
9
+ const EVENT_LAYOUT = { "items": { "module": { "readOnly": true, "itemType": "SELECT", "data": [{ "id": "workflow", "content": "流程", "browserModule": "workflow/pathdef", "type": "workflowPathBrowser", "defaultSelected": true, "browserModule4approve": "workflow", "type4approve": "wfcRequest" }], "required": false, "defaultValue": "workflow" }, "workflowPath": { "itemType": "BROWSER", "readOnly": true, "browserBean": { "type": "workflowPathBrowser", "module": "workflow/pathdef", "browserAssociativeProps": { "displayInput": true } }, "requestHeaderParams": { "ebBusinessId": "10000000000000000" }, "required": true, "commonParams": { "checkDetachable": true, "permissionCode": 3, "status": 1 } }, "triggerType": { "itemType": "RADIO", "fieldName": "触发类型", "readOnly": true, "canReversedChoose": false, "data": [{ "id": "singleApprove", "content": "单流程" }, { "id": "multiApprove", "content": "多流程" }] }, "singleApproveConfig": { "itemType": "CUSTOM" }, "approveList": { "itemType": "CUSTOM" }, "approveListFormOpen": { "itemType": "SWITCH", "fieldName": "启用公共表单设置", "canReversedChoose": false }, "approveListFormModule": { "itemType": "RADIO", "fieldName": "表单类型", "canReversedChoose": false, "data": [{ "id": "workflow", "content": "流程表单" }, { "id": "ebuilder", "content": "EB表单" }] }, "approveListFormWF": { "itemType": "BROWSER", "required": true, "browserBean": { "type": "formBrowser", "module": "workflow/core", "browserAssociativeProps": { "displayInput": true, "placeholder": "选择流程表单" }, "commonParams": { "browserMultiple": false, "formState": "enable", "authFilter": true, "formType": "company", "isDelete": "0", "detachable": true, "type": "and" } } }, "approveListFormEB": { "itemType": "BROWSER", "required": true, "browserBean": { "type": "ebuilderForm", "module": "ebuilder/form", "browserAssociativeProps": { "displayInput": true, "placeholder": "选择EB表单" }, "commonParams": { "isTree": true, "from": "flow" } } } }, "layout": [[{ "id": "workflowPath", "label": "选择工作流", "items": ["module", "workflowPath"], "wrapClassName": "weapp-esb-setting-efdesigner-card-approve-trigger-workflowpath", "labelSpan": 6, "hide": false }], [{ "id": "approveListFormOpen", "label": "启用公共表单设置", "items": ["approveListFormOpen"], "labelSpan": 6, "hide": true, "helpTipProps": { "placement": "top" } }], [{ "id": "approveListFormModule", "label": "表单类型", "items": ["approveListFormModule"], "labelSpan": 6, "hide": true, "helpTipProps": { "placement": "top" } }], [{ "id": "approveListFormWF", "label": "选择流程表单", "items": ["approveListFormWF"], "labelSpan": 6, "hide": true, "helpTip": "选择流程表单后,将只能选择该表单的工作流,触发设置中非当前表单的工作流将被清空", "helpTipProps": { "placement": "top" } }], [{ "id": "approveListFormEB", "label": "选择EB表单", "items": ["approveListFormEB"], "labelSpan": 6, "hide": true, "helpTip": "选择EB表单后,将只能选择该表单的工作流,触发设置中非当前表单的工作流将被清空", "helpTipProps": { "placement": "top" } }], [{ "id": "approveList", "label": "", "items": ["approveList"], "labelSpan": 0, "hide": true }], [{ "id": "singleApproveConfig", "label": "触发时机", "items": ["singleApproveConfig"], "labelSpan": 6, "hide": false }]] };
10
+ const MSG_LAYOUT = { "items": { "msgId": { "itemType": "DESCRIPTION", "value": "-1", "className": "weapp-esb-setting-description" }, "channelSetting": { "itemType": "CUSTOM", "required": true }, "person": { "itemType": "CUSTOM", "required": true }, "msgTitle": { "itemType": "CUSTOM", "required": true }, "msgTitlev": { "itemType": "CUSTOM", "required": true }, "msgContent": { "itemType": "CUSTOM", "required": true }, "msgContentv": { "itemType": "CUSTOM", "required": true }, "picLink": { "itemType": "CUSTOM", "required": false }, "pcLink": { "itemType": "CUSTOM", "required": false }, "mobileLink": { "itemType": "CUSTOM", "required": false }, "msgPcLink": { "itemType": "CUSTOM", "required": false }, "msgMobileLink": { "itemType": "CUSTOM", "required": false }, "objectList": { "itemType": "CUSTOM", "required": false }, "remaindObject": { "itemType": "CUSTOM", "required": false }, "businessId": { "itemType": "CUSTOM", "required": false }, "senderType": { "itemType": "CUSTOM" }, "customParams": { "itemType": "CUSTOM" }, "moduleEvent": { "itemType": "CUSTOM", "required": false }, "remaindModule": { "itemType": "CUSTOM", "required": true } }, "layout": [[{ "id": "remaindModule", "label": "提醒模块", "items": ["remaindModule"], "labelSpan": 6, "hide": false }], [{ "id": "moduleEvent", "label": "消息事件", "items": ["moduleEvent"], "labelSpan": 6, "hide": false }], [{ "id": "channelSetting", "label": "推送渠道", "items": ["channelSetting"], "labelSpan": 6, "hide": false, "className": "weapp-esb-setting-channel-setting" }], [{ "id": "msgTitle", "label": "提醒标题", "items": ["msgTitle"], "labelSpan": 6, "hide": true }], [{ "id": "msgTitlev", "label": "提醒标题", "items": ["msgTitlev"], "labelSpan": 6, "hide": false }], [{ "id": "msgContent", "label": "提醒内容", "items": ["msgContent"], "labelSpan": 6, "hide": true }], [{ "id": "msgContentv", "label": "提醒内容", "items": ["msgContentv"], "labelSpan": 6, "hide": false }], [{ "id": "picLink", "label": "推送图片url", "items": ["picLink"], "labelSpan": 6, "hide": false, "helpfulTip": "填写图片url,请注意,如需将消息推送至第三方,请确保url无需登录即可访问", "helpTipPostion": "afterLabel" }], [{ "id": "pcLink", "label": "PC端链接", "items": ["pcLink"], "labelSpan": 6, "hide": true }], [{ "id": "mobileLink", "label": "移动端链接", "items": ["mobileLink"], "labelSpan": 6, "hide": true }], [{ "id": "msgPcLink", "label": "PC端链接", "items": ["msgPcLink"], "labelSpan": 6, "hide": false }], [{ "id": "msgMobileLink", "label": "移动端链接", "items": ["msgMobileLink"], "labelSpan": 6, "hide": false }], [{ "id": "senderType", "label": "发送人", "items": ["senderType"], "labelSpan": 6, "hide": false }], [{ "id": "person", "label": "操作人", "items": ["person"], "labelSpan": 6, "hide": false, "className": "weapp-esb-setting-efdesigner-com-send-message-person" }], [{ "id": "objectList", "label": "提醒对象", "items": ["objectList"], "labelSpan": 6, "hide": false }], [{ "id": "customParams", "label": "自定义参数", "items": ["customParams"], "labelSpan": 6, "hide": false }]] };
11
+ const OUTPUT_LAYOUT = { "items": { "outputStatus": { "placeholder": "状态", "itemType": "RADIO", "defaultValue": "1", "value": "1", "data": [{ "id": "1", "content": "成功" }, { "id": "0", "content": "失败" }], "required": true, "maxLength": 30, "readOnly": false, "canReversedChoose": false }, "reminder": { "itemType": "SELECT", "data": [{ "id": "0", "content": "无" }, { "id": "1", "content": "提醒" }, { "id": "2", "content": "确认" }, { "id": "3", "content": "警告" }], "required": true, "className": "weapp-esb-setting-efdesigner-output-reminder" }, "pageAction": { "itemType": "CUSTOM" }, "jumpUrl": { "itemType": "CUSTOM", "required": true }, "nextAction": { "itemType": "SWITCH" }, "triggerFlag": { "itemType": "CUSTOM" }, "formSetting": { "itemType": "CUSTOM" }, "fixedData": { "itemType": "CUSTOM" }, "customOutputData": { "itemType": "CUSTOM" }, "reminderMsgFormula": { "itemType": "CUSTOM", "required": true }, "reminderContent": { "itemType": "CUSTOM", "required": true, "className": "weapp-esb-setting-page-act-reminderContent" }, "customParamSetting": { "itemType": "CUSTOM" }, "conditionEnable": { "itemType": "SWITCH" }, "conditionInfo": { "itemType": "CUSTOM", "required": true }, "fieldLinkCustomParamSetting": { "itemType": "CUSTOM" } }, "layout": [[{ "id": "formSetting", "label": "内容赋值", "items": ["formSetting"], "labelSpan": 6, "hide": true }], [{ "id": "fixedData", "label": "参数设置", "items": ["fixedData"], "labelSpan": 6, "hide": true }], [{ "id": "customOutputData", "label": "自定义输出内容", "items": ["customOutputData"], "labelSpan": 6, "hide": true }], [{ "id": "customParamSetting", "label": "输出参数设置", "items": ["customParamSetting"], "labelSpan": 6, "hide": true }], [{ "id": "conditionEnable", "label": "启用赋值前提", "items": ["conditionEnable"], "labelSpan": 6, "hide": true }], [{ "id": "conditionInfo", "label": "前提条件设置", "items": ["conditionInfo"], "labelSpan": 6, "hide": true }], [{ "id": "fieldLinkCustomParamSetting", "label": "联动字段设置", "items": ["fieldLinkCustomParamSetting"], "labelSpan": 6, "hide": true }], [{ "id": "outputStatus", "label": "执行结果", "items": ["outputStatus"], "labelSpan": 6, "hide": false }], [{ "id": "triggerFlag", "label": "需要触发页面交互", "items": ["triggerFlag"], "labelSpan": 6, "hide": false }], [{ "id": "pageAction", "label": "触发页面动作", "items": ["pageAction"], "labelSpan": 6, "hide": false }], [{ "id": "jumpUrl", "label": "跳转地址", "items": ["jumpUrl"], "labelSpan": 6, "hide": false }], [{ "id": "reminder", "label": "触发操作反馈类型", "items": ["reminder"], "labelSpan": 6, "hide": false }], [{ "id": "reminderMsgFormula", "label": "提醒内容", "items": ["reminderMsgFormula"], "labelSpan": 6, "hide": false }], [{ "id": "reminderContent", "label": "提醒内容", "items": ["reminderContent"], "labelSpan": 6, "hide": false }], [{ "id": "nextAction", "label": "阻止触发模块后续操作", "items": ["nextAction"], "labelSpan": 6, "hide": false }]] };
12
+ /**
13
+ * Build a fixed-value formula for a user (used in shareList).
14
+ * emp: raw user object from getEmployeeByKeyWords API response
15
+ * effectiveUserId: the resolved numeric user ID (emp.id), used for targetId/value
16
+ */
17
+ function makeUserFormula(effectiveUserId, appId, emp) {
18
+ const displayName = emp?.name || effectiveUserId;
19
+ const department = emp?.department || '';
20
+ const mobile = emp?.mobile || '';
21
+ // emp doesn't have a separate 'userid' field; use emp.id as userid (platform may differ)
22
+ const internalUserId = emp?.id || effectiveUserId;
23
+ const empId = emp?.id || effectiveUserId;
24
+ const cid = emp?.imCid || emp?.cid || '';
25
+ const departmentId = emp?.departmentId || '';
26
+ const avatarUserId = emp?.hrmAvatarInfos?.userId || emp?.avatar?.userId || effectiveUserId;
27
+ return {
28
+ sourceId: tempId(),
29
+ permissionId: "esb",
30
+ permissionType: 1,
31
+ user_type: "1",
32
+ obj_id: {
33
+ formulaType: "string",
34
+ name: effectiveUserId,
35
+ id: tempId(),
36
+ position: tempId(),
37
+ type: "1",
38
+ applicationId: appId,
39
+ value: effectiveUserId,
40
+ fieldType: "string",
41
+ config: {
42
+ switchType: "fixvalue",
43
+ originValue: [{
44
+ templateType: "default",
45
+ stopDepartment: false,
46
+ departmentId,
47
+ mobile,
48
+ originTargetType: "user",
49
+ pid: "",
50
+ richContent: displayName,
51
+ avatar: {
52
+ name: displayName,
53
+ appPreviewPath: "/api/app/file/preview?type=redirect&imgFormat=small&fileId=",
54
+ previewPath: "/api/file/preview?type=redirect&imgFormat=small&fileId=",
55
+ userId: avatarUserId,
56
+ },
57
+ title: displayName,
58
+ contentDesc: displayName,
59
+ leaf: true,
60
+ userid: internalUserId,
61
+ isLeaf: true,
62
+ content: displayName,
63
+ indexType: displayName.charAt(0).toUpperCase(),
64
+ name: displayName,
65
+ id: empId,
66
+ department,
67
+ mainId: empId,
68
+ cid,
69
+ statusCode: emp?.status || emp?.statusCode || "normal",
70
+ }],
71
+ },
72
+ },
73
+ targetId: effectiveUserId,
74
+ sourceType: 1,
75
+ targetType: 1,
76
+ id: tempId(),
77
+ objType: "resource",
78
+ };
79
+ }
80
+ msgCmd.command('create')
81
+ .description('创建消息提醒动作流并绑定到流程节点')
82
+ .argument('<workflowId>', '流程 ID')
83
+ .argument('<nodeId>', '触发节点 ID')
84
+ .argument('<name>', '动作流名称')
85
+ .requiredOption('--title <text>', '提醒标题')
86
+ .requiredOption('--content <text>', '提醒内容')
87
+ .option('--recipients <userIds>', '接收人用户ID,逗号分隔(默认流程发起人)', '')
88
+ .option('--channel <channel>', '推送渠道: im(默认) / yunqiao / email / sms', 'im')
89
+ .option('--event <event>', '触发时机: arrive(到达节点,默认) / leave / delete / save / revert / pause / cancel', 'arrive')
90
+ .option('--node-name <name>', '节点名称(用于 saveAddActionList)', '')
91
+ .action(async (workflowId, nodeId, name, cmdOpts) => {
92
+ const opts = program.opts();
93
+ const auth = await AuthSession.fromOptions(opts);
94
+ if (!auth)
95
+ process.exit(1);
96
+ const client = new ApiClient(auth);
97
+ const baseUrl = auth.getBaseUrl();
98
+ // Channel mapping
99
+ const CHANNEL_MAP = { im: 1, yunqiao: 2, email: 3, sms: 4 };
100
+ const channelCode = CHANNEL_MAP[cmdOpts.channel] || 1;
101
+ // Step 1: Create ESB container
102
+ let orgId = '';
103
+ try {
104
+ const entrance = await client.get(`${baseUrl}/api/bs/ebuilder/app/permit/entrance`);
105
+ if (entrance?.code === 200 && entrance?.status && entrance?.data?.isDetachable) {
106
+ const orgTree = await client.get(`${baseUrl}/api/hrm/common/getOrgTree?menuCode=eBuilder&onlySubcompany=false&containDisableDept=false&moduleCode=EBUILDER&virtualId=1&loadCount=false&isMobile=false`);
107
+ if (orgTree?.code === 200 && orgTree?.status && Array.isArray(orgTree?.data) && orgTree.data.length > 0) {
108
+ orgId = orgTree.data[0].id;
109
+ }
110
+ }
111
+ }
112
+ catch { /* non-detached accounts leave orgId empty */ }
113
+ console.error(`Step 1/3: 创建动作流容器...${orgId ? ` (orgId: ${orgId})` : ''}`);
114
+ const appRes = await client.post(`${baseUrl}/api/bs/esb/setting/application/save`, {
115
+ type: 0,
116
+ name,
117
+ orgId,
118
+ id: '',
119
+ moudle: 'workflow',
120
+ appSources: [
121
+ { module: 'approve', businessObject: 'workflowPath', businessValue: workflowId },
122
+ ],
123
+ lightId: '',
124
+ initData: '',
125
+ templateId: '',
126
+ templateVersionId: '',
127
+ });
128
+ if (appRes?.code !== 200 || !appRes?.status) {
129
+ console.error(`创建容器失败: ${appRes?.msg || '未知错误'}`);
130
+ process.exit(1);
131
+ }
132
+ const appId = appRes?.data?.id || appRes?.data?.appId || '';
133
+ const sceneId = appRes?.data?.activeVersion || appRes?.data?.sceneId || '';
134
+ console.error(` 动作流 ID: ${appId} sceneId: ${sceneId}`);
135
+ // Step 2: Save design
136
+ console.error(`Step 2/3: 保存动作流设计...`);
137
+ const eventId = tempId();
138
+ const msgNodeId = tempId();
139
+ const outputId = tempId();
140
+ // Look up workflow name for event.workflowPath
141
+ let workflowName = name;
142
+ try {
143
+ const wfInfo = await client.post(`${baseUrl}/api/bs/workflow/pathdef/baseSet/getBaseInfoList`, {
144
+ page: 1, pageSize: 1, workflowId,
145
+ });
146
+ const wfList = wfInfo?.data?.list || wfInfo?.data?.data || [];
147
+ if (wfList.length > 0)
148
+ workflowName = wfList[0].name || wfList[0].workflowName || name;
149
+ }
150
+ catch { }
151
+ const recipientIds = cmdOpts.recipients
152
+ ? cmdOpts.recipients.split(',').map(s => s.trim()).filter(Boolean)
153
+ : [];
154
+ // Build shareList with user info from API
155
+ const shareList = [];
156
+ for (const uid of recipientIds) {
157
+ let emp = null;
158
+ let effectiveUserId = uid;
159
+ try {
160
+ const userRes = await client.post(`${baseUrl}/api/hrm/common/getEmployeeByKeyWords`, {
161
+ keyword: uid,
162
+ searchType: 1,
163
+ searchCount: 1,
164
+ appDetachModule: 'EM',
165
+ disableAppDetach: 0,
166
+ pageNo: 1,
167
+ pageSize: 1,
168
+ });
169
+ const userList = userRes?.data?.userList || [];
170
+ emp = userList.find((u) => String(u.id) === String(uid)) || userList[0] || null;
171
+ if (emp?.id)
172
+ effectiveUserId = String(emp.id);
173
+ }
174
+ catch { }
175
+ shareList.push(makeUserFormula(effectiveUserId, appId, emp));
176
+ }
177
+ // Build event node (matching browser structure exactly)
178
+ const eventNode = {
179
+ id: eventId,
180
+ wId: eventId,
181
+ nodeType: "Normal",
182
+ comType: "ApproveTrigger",
183
+ type: "ApproveTrigger",
184
+ previousId: "0",
185
+ parentId: "0",
186
+ name: "流程触发",
187
+ isAdd: true,
188
+ isOpen: false,
189
+ attr: { icon: "Icon-Approval-process02" },
190
+ isControl: true,
191
+ explain: "触发事件说明",
192
+ data: {
193
+ workflowPath: [{ id: workflowId, name: workflowName }],
194
+ module: "workflow",
195
+ triggerType: "singleApprove",
196
+ applicationName: "",
197
+ },
198
+ isShowDelete: false,
199
+ options: {
200
+ type: "ApproveTrigger",
201
+ name: "",
202
+ data: { workflowPath: [{ id: workflowId, name: workflowName }] },
203
+ isShowDelete: false,
204
+ },
205
+ isEvent: true,
206
+ itemAndLayout: EVENT_LAYOUT,
207
+ };
208
+ // Build SendMessage node (matching browser structure exactly)
209
+ const msgNode = {
210
+ id: msgNodeId,
211
+ wId: msgNodeId,
212
+ nodeType: "Normal",
213
+ comType: "SendMessage",
214
+ type: "SendMessage",
215
+ previousId: eventId,
216
+ parentId: "0",
217
+ name: "消息提醒",
218
+ isAdd: true,
219
+ isOpen: false,
220
+ attr: {
221
+ icon: "Icon-Message-center-o",
222
+ isControl: true,
223
+ explain: "触发事件说明",
224
+ },
225
+ componentDesc: "发送IM/云桥/邮件/短信提醒",
226
+ componentName: "消息提醒",
227
+ data: {
228
+ currentApplication: appId,
229
+ msgId: "-1",
230
+ channelSetting: [{ channel: channelCode, config: { aid: 110, code: "" } }],
231
+ person: "",
232
+ msgTitlev: {
233
+ content: Buffer.from(cmdOpts.title, 'utf-8').toString('base64'),
234
+ formulaBeans: [],
235
+ id: "",
236
+ langSet: false,
237
+ },
238
+ msgContentv: {
239
+ content: Buffer.from(cmdOpts.content, 'utf-8').toString('base64'),
240
+ formulaBeans: [],
241
+ id: "",
242
+ langSet: false,
243
+ },
244
+ senderType: "system",
245
+ moduleEvent: "8",
246
+ remaindModule: [{ id: "209", content: "esb" }],
247
+ shareList,
248
+ applicationId: appId,
249
+ },
250
+ options: {
251
+ icon: "Icon-Message-center-o",
252
+ actionName: "消息提醒",
253
+ module: "inner",
254
+ eventName: "消息提醒",
255
+ labelId: 0,
256
+ typeName: "消息提醒",
257
+ des: "发送IM/云桥/邮件/短信提醒",
258
+ displayOrder: 240,
259
+ componentName: "消息提醒",
260
+ componentDesc: "发送IM/云桥/邮件/短信提醒",
261
+ componentNameLabel: 221877,
262
+ componentDescLabel: 221442,
263
+ merge: false,
264
+ isEvent: false,
265
+ },
266
+ branchs: [],
267
+ multKey: "",
268
+ multName: "",
269
+ itemAndLayout: MSG_LAYOUT,
270
+ ignoreFlowCheck: true,
271
+ };
272
+ // Build Output node (matching browser structure exactly)
273
+ const outputNode = {
274
+ id: outputId,
275
+ wId: outputId,
276
+ nodeType: "Normal",
277
+ comType: "Output",
278
+ type: "Output",
279
+ previousId: msgNodeId,
280
+ parentId: "0",
281
+ name: "终止",
282
+ isAdd: true,
283
+ isOpen: false,
284
+ componentDesc: "终止执行动作流",
285
+ componentName: "终止",
286
+ attr: { icon: "Icon-termination-1", iconColor: "var(--danger)" },
287
+ isControl: true,
288
+ data: {
289
+ outputStatus: "1",
290
+ pageAction: "0",
291
+ reminder: "0",
292
+ fixedData: [],
293
+ triggerFlag: false,
294
+ reminderMsgFormula: "",
295
+ nextAction: false,
296
+ customOutputData: "",
297
+ currentApplication: appId,
298
+ applicationId: appId,
299
+ },
300
+ options: { type: "Output" },
301
+ branchs: [],
302
+ multKey: "",
303
+ multName: "",
304
+ sources: [{ wId: msgNodeId }],
305
+ itemAndLayout: OUTPUT_LAYOUT,
306
+ ignoreFlowCheck: true,
307
+ };
308
+ const designPayload = {
309
+ saveAndStart: true,
310
+ appId,
311
+ sceneId,
312
+ event: eventNode,
313
+ actions: [msgNode, outputNode],
314
+ addIds: [msgNodeId],
315
+ deleteActions: [],
316
+ version: 0,
317
+ delCheckMsg: [],
318
+ addCheckMsg: [],
319
+ assistLayer: '{"nodes":[],"layout":{}}',
320
+ versionConfig: '{}',
321
+ };
322
+ const designRes = await client.post(`${baseUrl}/api/bs/esb/setting/flow/design/saveDesign`, designPayload);
323
+ if (designRes?.code !== 200 || !designRes?.status) {
324
+ console.error(`保存设计失败: ${designRes?.msg || '未知错误'}`);
325
+ process.exit(1);
326
+ }
327
+ console.error(` 设计已保存 sceneId: ${sceneId}`);
328
+ // Step 3: Bind to node
329
+ console.error(`Step 3/3: 绑定动作流到节点 ${nodeId}...`);
330
+ const EVENT_MAP = {
331
+ arrive: { triggerType: 'pre', executeTime: ['1'] },
332
+ leave: { triggerType: 'after', executeTime: ['1'] },
333
+ delete: { triggerType: 'delete', executeTime: undefined },
334
+ save: { triggerType: 'save', executeTime: undefined },
335
+ revert: { triggerType: 'revert', executeTime: undefined },
336
+ pause: { triggerType: 'stopAndOpen', executeTime: ['1'] },
337
+ cancel: { triggerType: 'cancelAndRegain', executeTime: ['1'] },
338
+ };
339
+ const EVENT_LABELS = {
340
+ arrive: '到达节点时', leave: '离开节点后', delete: '流程删除时',
341
+ save: '流程保存时', revert: '流程还原时', pause: '暂停/启用时', cancel: '撤销恢复时',
342
+ };
343
+ const evCfg = EVENT_MAP[cmdOpts.event] || EVENT_MAP.arrive;
344
+ const eventLabel = EVENT_LABELS[cmdOpts.event] || cmdOpts.event;
345
+ // Fetch existing actions and merge — never overwrite
346
+ let existingActions = [];
347
+ const existing = await client.post(`${baseUrl}/api/bs/workflow/pathdef/addaction/getAddActionDataList`, {
348
+ workflowId, objId: nodeId, triggerType: 'all', isNodeFlag: '1',
349
+ });
350
+ if (existing?.code === 200 && existing?.status) {
351
+ existingActions = existing?.data?.data || [];
352
+ }
353
+ else {
354
+ console.error(`❌ 无法读取节点已有动作: ${existing?.data?.msg || existing?.msg || '未知错误'}`);
355
+ console.error(' 消息动作流已创建但未绑定,请手动在页面中绑定。');
356
+ console.error(` appId=${appId}`);
357
+ process.exit(1);
358
+ }
359
+ const bindDataId = tempIdNeg();
360
+ // New row always uses the standard write format (matches browser payload).
361
+ const actionData = {
362
+ id: bindDataId, actionName: name, open: true, actionId: appId, esbName: name,
363
+ customName: '', actionType: 2,
364
+ actionData: {
365
+ actionSelect: '1', sysCustomAction: [],
366
+ paramsSet: [{ id: appId, name, eventType: 'WorkflowTrigger', interfaceCreate: false, isKeepDiary: 1 }],
367
+ actionSet: [{ id: appId, name, eventType: 'WorkflowTrigger', interfaceCreate: false, isKeepDiary: 1 }],
368
+ actionName: '', id: bindDataId, customDataId: '',
369
+ },
370
+ async: 0, triggerType: evCfg.triggerType, order: existingActions.length,
371
+ };
372
+ if (evCfg.executeTime)
373
+ actionData.executeTime = evCfg.executeTime;
374
+ actionData.order = existingActions.length;
375
+ // Normalize existing read-format rows back to write format before re-sending.
376
+ const mergedActions = [...existingActions.map(normalizeActionRow), actionData];
377
+ console.error(` 已有 ${existingActions.length} 个动作,归一化合并后 ${mergedActions.length} 个`);
378
+ const bindPayload = {
379
+ workflowId, objId: nodeId, triggerType: 'all',
380
+ data: mergedActions,
381
+ isNodeFlag: '1', objName: cmdOpts.nodeName || nodeId,
382
+ };
383
+ const bindRes = await client.post(`${baseUrl}/api/bs/workflow/pathdef/addaction/saveAddActionList`, bindPayload);
384
+ if (bindRes?.code === 200 && bindRes?.status) {
385
+ console.log(`消息提醒动作流已创建并绑定: ${name}`);
386
+ console.log(` appId: ${appId}`);
387
+ console.log(` sceneId: ${sceneId}`);
388
+ console.log(` 节点: ${nodeId}`);
389
+ console.log(` 触发: ${eventLabel}`);
390
+ console.log(` 渠道: ${cmdOpts.channel}`);
391
+ console.log(` 接收人: ${recipientIds.length > 0 ? recipientIds.join(', ') : '(流程发起人)'}`);
392
+ }
393
+ else {
394
+ console.error(`绑定失败: ${bindRes?.msg || '未知错误'}`);
395
+ process.exit(1);
396
+ }
397
+ });
398
+ }
399
+ //# sourceMappingURL=workflow-message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-message.js","sourceRoot":"","sources":["../../src/commands/workflow-message.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare function registerWorkflowNodeOvertimeCommands(wfCmd: Command, program: Command): void;
3
+ //# sourceMappingURL=workflow-node-overtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-node-overtime.d.ts","sourceRoot":"","sources":["../../src/commands/workflow-node-overtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuBpC,wBAAgB,oCAAoC,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAqK3F"}
@@ -0,0 +1,150 @@
1
+ import { AuthSession } from '../core/auth.js';
2
+ import { ApiClient } from '../core/client.js';
3
+ /**
4
+ * Node overtime settings — 节点超时处理与提醒。
5
+ *
6
+ * APIs:
7
+ * POST /api/bs/workflow/pathdef/nodeOvertime/saveOvertime — 超时规则
8
+ * POST /api/bs/workflow/pathdef/nodeOvertime/saveRemind — 超时提醒
9
+ * POST /api/bs/workflow/pathdef/nodeOvertime/saveOvertimeList — 批量保存/开关
10
+ * POST /api/bs/workflow/pathdef/baseSet/updateDefRemindConfig — 自定义提醒内容
11
+ */
12
+ const FLOW_TYPES = {
13
+ next: { id: '1', label: '下一操作者' },
14
+ reject: { id: '2', label: '退回至指定节点' },
15
+ submit: { id: '3', label: '提交至指定节点' },
16
+ intervene: { id: '4', label: '通知干预对象' },
17
+ operator: { id: '6', label: '新增指定操作者' },
18
+ };
19
+ export function registerWorkflowNodeOvertimeCommands(wfCmd, program) {
20
+ const overtime = wfCmd.command('node-overtime').description('节点超时设置(规则/提醒/开关)');
21
+ // ─── SET ─────────────────────────────────────────────────
22
+ overtime.command('set')
23
+ .description('设置节点超时规则')
24
+ .argument('<workflowId>', '流程 ID')
25
+ .argument('<nodeId>', '节点 ID')
26
+ .option('--duration <d:h:m>', '超时时长 天:时:分(如 0:2:0 即 2 小时)', '0:2:0')
27
+ .option('--flow-type <type>', `超时处理: ${Object.keys(FLOW_TYPES).join('|')}`, 'next')
28
+ .option('--flow-delay <d:h:m>', '处理延时 天:时:分', '0:0:0')
29
+ .option('--flow-node <nodeId>', '退回/提交的目标节点 ID(flow-type=reject|submit 时需要)')
30
+ .option('--intervene-ids <userIds>', '干预对象用户 ID 列表,逗号分隔(flow-type=intervene 时需要)')
31
+ .option('--disabled', '关闭超时处理')
32
+ .option('--skip-required', '存在必填项时仍继续自动处理')
33
+ .action(async (workflowId, nodeId, opts) => {
34
+ const gOpts = program.opts();
35
+ const auth = await AuthSession.fromOptions(gOpts);
36
+ if (!auth)
37
+ process.exit(1);
38
+ const client = new ApiClient(auth);
39
+ const baseUrl = auth.getBaseUrl();
40
+ if (!FLOW_TYPES[opts.flowType]) {
41
+ console.error(`不支持的 flow-type: ${opts.flowType},可选: ${Object.keys(FLOW_TYPES).join(', ')}`);
42
+ process.exit(1);
43
+ }
44
+ const ft = FLOW_TYPES[opts.flowType];
45
+ const [dd, dh, dm] = opts.duration.split(':').map(Number);
46
+ const [fd, fh, fm] = opts.flowDelay.split(':').map(Number);
47
+ const payload = {
48
+ id: '0',
49
+ workflowId,
50
+ nodeId,
51
+ overTimeType: 1,
52
+ overTimeDay: dd || 0,
53
+ overTimeHour: dh || 2,
54
+ overTimeMinute: dm || 0,
55
+ isAutoFlow: opts.disabled ? 0 : 1,
56
+ flowType: Number(ft.id),
57
+ flowDay: fd || 0,
58
+ flowHour: fh || 0,
59
+ flowMinute: fm || 0,
60
+ flowObjectNodeId: '',
61
+ flowObjectIds: '',
62
+ operatorGroupId: '',
63
+ operatorName: '',
64
+ flowRemark: '',
65
+ checkRequired: opts.skipRequired ? 1 : 0,
66
+ dataSrc: 11,
67
+ };
68
+ if (opts.flowType === 'reject' || opts.flowType === 'submit') {
69
+ if (!opts.flowNode) {
70
+ console.error('flow-type=reject|submit 需要 --flow-node <nodeId>');
71
+ process.exit(1);
72
+ }
73
+ payload.flowObjectNodeId = opts.flowNode;
74
+ }
75
+ if (opts.flowType === 'intervene') {
76
+ if (!opts.interveneIds) {
77
+ console.error('flow-type=intervene 需要 --intervene-ids <userIds>');
78
+ process.exit(1);
79
+ }
80
+ payload.flowObjectIds = opts.interveneIds.replace(/\s/g, '');
81
+ }
82
+ const res = await client.post(`${baseUrl}/api/bs/workflow/pathdef/nodeOvertime/saveOvertime`, payload);
83
+ if (res?.code !== 200 || !res?.status) {
84
+ console.error(`保存失败: ${res?.msg || '未知错误'}`);
85
+ process.exit(1);
86
+ }
87
+ const overtimeId = res?.data?.entity?.id || res?.data?.id || '';
88
+ console.log(`超时规则已保存: ${overtimeId}`);
89
+ console.log(` 超时时长: ${dd}天${dh}时${dm}分`);
90
+ console.log(` 处理方式: ${ft.label}`);
91
+ if (opts.disabled)
92
+ console.log(' 状态: 已关闭');
93
+ console.log('');
94
+ console.log(' 下一步: workflow node-overtime remind 设置超时提醒');
95
+ });
96
+ // ─── REMIND ──────────────────────────────────────────────
97
+ overtime.command('remind')
98
+ .description('设置节点超时提醒')
99
+ .argument('<workflowId>', '流程 ID')
100
+ .argument('<nodeId>', '节点 ID')
101
+ .requiredOption('--overtime-id <id>', '超时规则 ID(从 overtime set 返回)')
102
+ .requiredOption('--name <name>', '提醒名称')
103
+ .option('--type <n>', '0=超时前 1=超时后', '0')
104
+ .option('--offset <d:h:m>', '提醒时间偏移 天:时:分', '0:0:30')
105
+ .option('--mode <n>', '0=仅提醒本人 1=逐级提醒', '0')
106
+ .option('--remind-group-id <id>', '提醒人操作组 ID(sourceType=3)')
107
+ .option('--msg', '系统消息提醒', true)
108
+ .option('--no-msg', '不开系统消息')
109
+ .option('--mail', '邮件提醒')
110
+ .option('--no-mail', '不邮件')
111
+ .option('--sms', '短信提醒')
112
+ .option('--no-sms', '不短信')
113
+ .action(async (workflowId, nodeId, opts) => {
114
+ const gOpts = program.opts();
115
+ const auth = await AuthSession.fromOptions(gOpts);
116
+ if (!auth)
117
+ process.exit(1);
118
+ const client = new ApiClient(auth);
119
+ const baseUrl = auth.getBaseUrl();
120
+ const [rd, rh, rm] = opts.offset.split(':').map(Number);
121
+ const payload = {
122
+ id: '0',
123
+ overTimeId: opts.overtimeId,
124
+ workflowId,
125
+ nodeId,
126
+ remindName: opts.name,
127
+ remindType: Number(opts.type),
128
+ remindDay: rd || 0,
129
+ remindHour: rh || 0,
130
+ remindMinute: rm || 30,
131
+ remindMode: Number(opts.mode),
132
+ remindUserGroupId: opts.remindGroupId || '',
133
+ infocenterRemind: opts.msg !== false ? 1 : 0,
134
+ msgRemind: opts.sms ? 1 : 0,
135
+ mailRemind: opts.mail ? 1 : 0,
136
+ appRemind: 1,
137
+ customRemind: 0,
138
+ stopRemind: 0,
139
+ };
140
+ const res = await client.post(`${baseUrl}/api/bs/workflow/pathdef/nodeOvertime/saveRemind`, payload);
141
+ if (res?.code !== 200 || !res?.status) {
142
+ console.error(`保存失败: ${res?.msg || '未知错误'}`);
143
+ process.exit(1);
144
+ }
145
+ const remindId = res?.data?.entity?.id || res?.data?.id || '';
146
+ console.log(`超时提醒已保存: ${remindId}`);
147
+ console.log(` ${opts.type === '0' ? '超时前' : '超时后'} ${rd}天${rh}时${rm}分`);
148
+ });
149
+ }
150
+ //# sourceMappingURL=workflow-node-overtime.js.map