weaver-e10-builder 1.0.12-beta → 1.1.1

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 (217) hide show
  1. package/dist/commands/actionflow.d.ts.map +1 -1
  2. package/dist/commands/actionflow.js +17 -3
  3. package/dist/commands/actionflow.js.map +1 -1
  4. package/dist/commands/auth.d.ts.map +1 -1
  5. package/dist/commands/auth.js +3 -0
  6. package/dist/commands/auth.js.map +1 -1
  7. package/dist/commands/form-association-manage.d.ts +3 -0
  8. package/dist/commands/form-association-manage.d.ts.map +1 -0
  9. package/dist/commands/form-association-manage.js +76 -0
  10. package/dist/commands/form-association-manage.js.map +1 -0
  11. package/dist/commands/form-association.d.ts.map +1 -1
  12. package/dist/commands/form-association.js +29 -25
  13. package/dist/commands/form-association.js.map +1 -1
  14. package/dist/commands/form-button.d.ts.map +1 -1
  15. package/dist/commands/form-button.js +71 -159
  16. package/dist/commands/form-button.js.map +1 -1
  17. package/dist/commands/form-field-linkage.d.ts +3 -0
  18. package/dist/commands/form-field-linkage.d.ts.map +1 -0
  19. package/dist/commands/form-field-linkage.js +300 -0
  20. package/dist/commands/form-field-linkage.js.map +1 -0
  21. package/dist/commands/form-list-columns.d.ts +3 -0
  22. package/dist/commands/form-list-columns.d.ts.map +1 -0
  23. package/dist/commands/form-list-columns.js +50 -0
  24. package/dist/commands/form-list-columns.js.map +1 -0
  25. package/dist/commands/form-list-stats.d.ts +0 -8
  26. package/dist/commands/form-list-stats.d.ts.map +1 -1
  27. package/dist/commands/form-list-stats.js +41 -133
  28. package/dist/commands/form-list-stats.js.map +1 -1
  29. package/dist/commands/form-list.d.ts.map +1 -1
  30. package/dist/commands/form-list.js +2 -126
  31. package/dist/commands/form-list.js.map +1 -1
  32. package/dist/commands/form.d.ts.map +1 -1
  33. package/dist/commands/form.js +116 -2
  34. package/dist/commands/form.js.map +1 -1
  35. package/dist/commands/interface.d.ts +3 -0
  36. package/dist/commands/interface.d.ts.map +1 -0
  37. package/dist/commands/interface.js +51 -0
  38. package/dist/commands/interface.js.map +1 -0
  39. package/dist/commands/menu-permission.d.ts.map +1 -1
  40. package/dist/commands/menu-permission.js +133 -82
  41. package/dist/commands/menu-permission.js.map +1 -1
  42. package/dist/commands/skill.js +2 -2
  43. package/dist/commands/skill.js.map +1 -1
  44. package/dist/commands/update.d.ts +13 -0
  45. package/dist/commands/update.d.ts.map +1 -0
  46. package/dist/commands/update.js +101 -0
  47. package/dist/commands/update.js.map +1 -0
  48. package/dist/commands/workflow-node-empty-handle.d.ts +13 -0
  49. package/dist/commands/workflow-node-empty-handle.d.ts.map +1 -0
  50. package/dist/commands/workflow-node-empty-handle.js +137 -0
  51. package/dist/commands/workflow-node-empty-handle.js.map +1 -0
  52. package/dist/commands/workflow.d.ts.map +1 -1
  53. package/dist/commands/workflow.js +90 -18
  54. package/dist/commands/workflow.js.map +1 -1
  55. package/dist/index.js +8 -0
  56. package/dist/index.js.map +1 -1
  57. package/dist/postinstall.d.ts +2 -0
  58. package/dist/postinstall.d.ts.map +1 -0
  59. package/dist/postinstall.js +17 -0
  60. package/dist/postinstall.js.map +1 -0
  61. package/dist/services/actionflow/command_output.d.ts +4 -0
  62. package/dist/services/actionflow/command_output.d.ts.map +1 -1
  63. package/dist/services/actionflow/command_output.js +44 -0
  64. package/dist/services/actionflow/command_output.js.map +1 -1
  65. package/dist/services/actionflow/component_registry.d.ts.map +1 -1
  66. package/dist/services/actionflow/component_registry.js +5 -1
  67. package/dist/services/actionflow/component_registry.js.map +1 -1
  68. package/dist/services/actionflow/components/action_eb_add.js +1 -1
  69. package/dist/services/actionflow/components/action_eb_add.js.map +1 -1
  70. package/dist/services/actionflow/components/approve_trigger.d.ts +5 -0
  71. package/dist/services/actionflow/components/approve_trigger.d.ts.map +1 -1
  72. package/dist/services/actionflow/components/approve_trigger.js +22 -1
  73. package/dist/services/actionflow/components/approve_trigger.js.map +1 -1
  74. package/dist/services/actionflow/components/approve_trigger_compiler.js +2 -2
  75. package/dist/services/actionflow/components/approve_trigger_compiler.js.map +1 -1
  76. package/dist/services/actionflow/components/custom_trigger.d.ts +9 -0
  77. package/dist/services/actionflow/components/custom_trigger.d.ts.map +1 -0
  78. package/dist/services/actionflow/components/custom_trigger.js +47 -0
  79. package/dist/services/actionflow/components/custom_trigger.js.map +1 -0
  80. package/dist/services/actionflow/components/enquiry_form.d.ts.map +1 -1
  81. package/dist/services/actionflow/components/enquiry_form.js +29 -3
  82. package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
  83. package/dist/services/actionflow/components/event_button.d.ts +3 -0
  84. package/dist/services/actionflow/components/event_button.d.ts.map +1 -0
  85. package/dist/services/actionflow/components/event_button.js +32 -0
  86. package/dist/services/actionflow/components/event_button.js.map +1 -0
  87. package/dist/services/actionflow/components/index.d.ts.map +1 -1
  88. package/dist/services/actionflow/components/index.js +10 -0
  89. package/dist/services/actionflow/components/index.js.map +1 -1
  90. package/dist/services/actionflow/components/inner_mq_listener.d.ts +3 -0
  91. package/dist/services/actionflow/components/inner_mq_listener.d.ts.map +1 -0
  92. package/dist/services/actionflow/components/inner_mq_listener.js +40 -0
  93. package/dist/services/actionflow/components/inner_mq_listener.js.map +1 -0
  94. package/dist/services/actionflow/components/inner_mq_send.d.ts +5 -0
  95. package/dist/services/actionflow/components/inner_mq_send.d.ts.map +1 -0
  96. package/dist/services/actionflow/components/inner_mq_send.js +72 -0
  97. package/dist/services/actionflow/components/inner_mq_send.js.map +1 -0
  98. package/dist/services/actionflow/components/send_message.d.ts.map +1 -1
  99. package/dist/services/actionflow/components/send_message.js +7 -4
  100. package/dist/services/actionflow/components/send_message.js.map +1 -1
  101. package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
  102. package/dist/services/actionflow/context_preflight.js +7 -1
  103. package/dist/services/actionflow/context_preflight.js.map +1 -1
  104. package/dist/services/actionflow/design_client.d.ts +13 -2
  105. package/dist/services/actionflow/design_client.d.ts.map +1 -1
  106. package/dist/services/actionflow/design_client.js +56 -8
  107. package/dist/services/actionflow/design_client.js.map +1 -1
  108. package/dist/services/actionflow/enrich_approve_trigger.d.ts.map +1 -1
  109. package/dist/services/actionflow/enrich_approve_trigger.js +31 -0
  110. package/dist/services/actionflow/enrich_approve_trigger.js.map +1 -1
  111. package/dist/services/actionflow/form_source.d.ts +2 -0
  112. package/dist/services/actionflow/form_source.d.ts.map +1 -1
  113. package/dist/services/actionflow/form_source.js +5 -0
  114. package/dist/services/actionflow/form_source.js.map +1 -1
  115. package/dist/services/actionflow/formula_service.d.ts +1 -1
  116. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  117. package/dist/services/actionflow/formula_service.js +118 -12
  118. package/dist/services/actionflow/formula_service.js.map +1 -1
  119. package/dist/services/actionflow/functions_catalog.d.ts +2 -1
  120. package/dist/services/actionflow/functions_catalog.d.ts.map +1 -1
  121. package/dist/services/actionflow/functions_catalog.js +2392 -180
  122. package/dist/services/actionflow/functions_catalog.js.map +1 -1
  123. package/dist/services/actionflow/functions_source.d.ts.map +1 -1
  124. package/dist/services/actionflow/functions_source.js +3 -0
  125. package/dist/services/actionflow/functions_source.js.map +1 -1
  126. package/dist/services/actionflow/generation_service.d.ts +11 -0
  127. package/dist/services/actionflow/generation_service.d.ts.map +1 -1
  128. package/dist/services/actionflow/generation_service.js +66 -23
  129. package/dist/services/actionflow/generation_service.js.map +1 -1
  130. package/dist/services/actionflow/plan_constraints.d.ts +5 -0
  131. package/dist/services/actionflow/plan_constraints.d.ts.map +1 -0
  132. package/dist/services/actionflow/plan_constraints.js +54 -0
  133. package/dist/services/actionflow/plan_constraints.js.map +1 -0
  134. package/dist/services/actionflow/preflight_service.d.ts +3 -0
  135. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  136. package/dist/services/actionflow/preflight_service.js +152 -8
  137. package/dist/services/actionflow/preflight_service.js.map +1 -1
  138. package/dist/services/actionflow/readback_verifier.d.ts.map +1 -1
  139. package/dist/services/actionflow/readback_verifier.js +63 -2
  140. package/dist/services/actionflow/readback_verifier.js.map +1 -1
  141. package/dist/services/actionflow/save_workflow_draft.d.ts.map +1 -1
  142. package/dist/services/actionflow/save_workflow_draft.js +43 -2
  143. package/dist/services/actionflow/save_workflow_draft.js.map +1 -1
  144. package/dist/services/actionflow/update_service.d.ts +41 -0
  145. package/dist/services/actionflow/update_service.d.ts.map +1 -0
  146. package/dist/services/actionflow/update_service.js +767 -0
  147. package/dist/services/actionflow/update_service.js.map +1 -0
  148. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  149. package/dist/services/actionflow/workflow_compiler.js +120 -12
  150. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  151. package/dist/services/esb-interface/document-parser.d.ts +6 -0
  152. package/dist/services/esb-interface/document-parser.d.ts.map +1 -0
  153. package/dist/services/esb-interface/document-parser.js +247 -0
  154. package/dist/services/esb-interface/document-parser.js.map +1 -0
  155. package/dist/services/esb-interface/importer.d.ts +9 -0
  156. package/dist/services/esb-interface/importer.d.ts.map +1 -0
  157. package/dist/services/esb-interface/importer.js +44 -0
  158. package/dist/services/esb-interface/importer.js.map +1 -0
  159. package/dist/services/esb-interface/postman-collection.d.ts +9 -0
  160. package/dist/services/esb-interface/postman-collection.d.ts.map +1 -0
  161. package/dist/services/esb-interface/postman-collection.js +125 -0
  162. package/dist/services/esb-interface/postman-collection.js.map +1 -0
  163. package/dist/services/esb-interface/types.d.ts +91 -0
  164. package/dist/services/esb-interface/types.d.ts.map +1 -0
  165. package/dist/services/esb-interface/types.js +2 -0
  166. package/dist/services/esb-interface/types.js.map +1 -0
  167. package/dist/services/form-association.d.ts +49 -0
  168. package/dist/services/form-association.d.ts.map +1 -0
  169. package/dist/services/form-association.js +279 -0
  170. package/dist/services/form-association.js.map +1 -0
  171. package/dist/services/form-button-position.d.ts +35 -0
  172. package/dist/services/form-button-position.d.ts.map +1 -0
  173. package/dist/services/form-button-position.js +109 -0
  174. package/dist/services/form-button-position.js.map +1 -0
  175. package/dist/services/form-list-columns.d.ts +54 -0
  176. package/dist/services/form-list-columns.d.ts.map +1 -0
  177. package/dist/services/form-list-columns.js +236 -0
  178. package/dist/services/form-list-columns.js.map +1 -0
  179. package/dist/services/form-list-stats.d.ts +44 -0
  180. package/dist/services/form-list-stats.d.ts.map +1 -0
  181. package/dist/services/form-list-stats.js +302 -0
  182. package/dist/services/form-list-stats.js.map +1 -0
  183. package/dist/services/skill-provision.d.ts +6 -1
  184. package/dist/services/skill-provision.d.ts.map +1 -1
  185. package/dist/services/skill-provision.js +12 -2
  186. package/dist/services/skill-provision.js.map +1 -1
  187. package/dist/services/update-check.d.ts +24 -0
  188. package/dist/services/update-check.d.ts.map +1 -0
  189. package/dist/services/update-check.js +108 -0
  190. package/dist/services/update-check.js.map +1 -0
  191. package/package.json +2 -1
  192. package/skill-docs/SKILL.md +29 -107
  193. package/skill-docs/actionflows/references/components/ebuilder/ActionEbAdd.md +61 -39
  194. package/skill-docs/actionflows/references/components/ebuilder/ActionEbDelete.md +23 -21
  195. package/skill-docs/actionflows/references/components/ebuilder/ActionEbUpdate.md +23 -21
  196. package/skill-docs/actionflows/references/components/ebuilder/EnquiryForm.md +101 -75
  197. package/skill-docs/actionflows/references/components/ebuilder/EventButton.md +33 -0
  198. package/skill-docs/actionflows/references/components/logic/Condition.md +23 -23
  199. package/skill-docs/actionflows/references/components/message/InnerMQSend.md +40 -0
  200. package/skill-docs/actionflows/references/components/message/SendMessage.md +2 -2
  201. package/skill-docs/actionflows/references/components/trigger/CustomTrigger.md +45 -0
  202. package/skill-docs/actionflows/references/components/trigger/InnerMQListener.md +40 -0
  203. package/skill-docs/actionflows/references/components/workflow/ApproveTrigger.md +35 -0
  204. package/skill-docs/actionflows/references/condition_rules.md +4 -2
  205. package/skill-docs/actionflows/references/examples/enquiry-form-batch-insert-scene2.json +1043 -1046
  206. package/skill-docs/actionflows/references/trigger_runtime_notes.md +53 -51
  207. package/skill-docs/references/common/guide-plan-template.md +201 -0
  208. package/skill-docs/references/common/ref-cli-commands.md +45 -11
  209. package/skill-docs/references/form/guide-create-form.md +4 -2
  210. package/skill-docs/references/form/guide-field-linkage.md +121 -0
  211. package/skill-docs/references/form/guide-form-association.md +108 -0
  212. package/skill-docs/references/form/guide-form-button.md +54 -0
  213. package/skill-docs/references/form/guide-form-view.md +26 -9
  214. package/skill-docs/references/form/guide-list-columns.md +52 -0
  215. package/skill-docs/references/form/guide-list-stats.md +83 -0
  216. package/skill-docs/references/workflow/guide-workflow-action.md +172 -168
  217. package/skill-docs/references/workflow/guide-workflow.md +16 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-node-empty-handle.d.ts","sourceRoot":"","sources":["../../src/commands/workflow-node-empty-handle.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmBpC,wBAAgB,uCAAuC,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CA0G9F"}
@@ -0,0 +1,137 @@
1
+ import { AuthSession } from '../core/auth.js';
2
+ import { ApiClient } from '../core/client.js';
3
+ const HANDLE_WAY_OPTIONS = [
4
+ { id: '1', content: '由指定人员处理', disabled: false, separator: false },
5
+ { id: '3', content: '由流程发起人处理', disabled: false, separator: false },
6
+ { id: '4', content: '自动流转至下一节点', disabled: false, separator: false },
7
+ { id: '5', content: '提交至指定节点', disabled: false, separator: false },
8
+ { id: '2', content: '由用户指定操作者', disabled: false, separator: false },
9
+ ];
10
+ const WAY_LABEL = { '1': '由指定人员处理', '2': '由用户指定操作者', '3': '由流程发起人处理', '4': '自动流转至下一节点', '5': '提交至指定节点' };
11
+ async function readForm(client, baseUrl, wf, node) {
12
+ const r = await client.get(`${baseUrl}/api/bs/workflow/pathdef/emptyhandleset/getEmptyHandleForm?workflowId=${wf}&nodeId=${node}&isMobile=0`);
13
+ return r?.data?.data || {};
14
+ }
15
+ export function registerWorkflowNodeEmptyHandleCommands(wfCmd, program) {
16
+ const nodeCmd = wfCmd.commands.find((c) => c.name() === 'node')
17
+ || wfCmd.command('node').description('节点维度设置');
18
+ const eh = nodeCmd.command('empty-handle')
19
+ .description('节点流程异常处理(空处理:无可处理人时怎么办)');
20
+ eh.command('get')
21
+ .description('查看节点流程异常处理配置')
22
+ .argument('<workflowId>', '流程 ID')
23
+ .argument('<nodeId>', '节点 ID')
24
+ .action(async (workflowId, nodeId) => {
25
+ const opts = program.opts();
26
+ const auth = await AuthSession.fromOptions(opts);
27
+ if (!auth)
28
+ process.exit(1);
29
+ const client = new ApiClient(auth);
30
+ const d = await readForm(client, auth.getBaseUrl(), workflowId, nodeId);
31
+ const ho = d.handleWayObj || {};
32
+ console.log(`节点 ${d.nodeName || nodeId} 流程异常处理: ${d.isOpen ? '✅ 启用' : '未启用'}`);
33
+ console.log(` 处理方式: ${WAY_LABEL[ho.handleWay] || ho.handleWay || '-'} (id=${d.id || 0}) ccType=${d.ccType} sync=${d.sync}`);
34
+ if (ho.handleWay === '5' && (ho.assignNode || []).length)
35
+ console.log(` 提交至节点: ${ho.assignNode.map((n) => n.content || n.name || n.id).join(', ')}`);
36
+ if (ho.handleWay === '1' && (ho.assignPerson || []).length)
37
+ console.log(` 指定人员: ${ho.assignPerson.map((p) => p.content || p.name || p.id).join(', ')}`);
38
+ });
39
+ eh.command('set')
40
+ .description('设置节点流程异常处理(handle-way 1指定人员/2用户指定/3发起人/4自动流转下一节点/5提交指定节点)')
41
+ .argument('<workflowId>', '流程 ID')
42
+ .argument('<nodeId>', '节点 ID')
43
+ .option('--handle-way <n>', '处理方式: 1/2/3/4/5(默认读原值或 1)')
44
+ .option('--person <name|id>', '指定人员(--handle-way 1 用;名称或 ID)')
45
+ .option('--assign-node <id|name>', '指定节点(--handle-way 5 用;节点 ID)')
46
+ .option('--cc-type <0|1>', '节点抄送人:0 不启用(默认) / 1 节点操作者设置', '0')
47
+ .option('--sync', '同步到所有节点')
48
+ .option('--off', '关闭流程异常处理(isOpen=false)')
49
+ .action(async (workflowId, nodeId, o) => {
50
+ const opts = program.opts();
51
+ const auth = await AuthSession.fromOptions(opts);
52
+ if (!auth)
53
+ process.exit(1);
54
+ const client = new ApiClient(auth);
55
+ const baseUrl = auth.getBaseUrl();
56
+ const cur = await readForm(client, baseUrl, workflowId, nodeId);
57
+ const curHo = cur.handleWayObj || {};
58
+ const handleWay = o.handleWay || curHo.handleWay || '1';
59
+ if (!HANDLE_WAY_OPTIONS.find((h) => h.id === handleWay)) {
60
+ console.error(`不支持的处理方式: ${handleWay}(1/2/3/4/5)`);
61
+ process.exit(1);
62
+ }
63
+ const assignNode = [];
64
+ const assignPerson = [];
65
+ let assignNodeId = '';
66
+ let assignPersonId = '';
67
+ if (!o.off) {
68
+ if (handleWay === '5') {
69
+ let nid = o.assignNode || '';
70
+ let nname = o.assignNode || '';
71
+ if (!/^\d+$/.test(nid) && nid) {
72
+ // 按名称找节点:遍历该流程节点
73
+ const meta = await client.get(`${baseUrl}/api/bs/workflow/pathdef/nodeBase/getWorkflowNodesByWorkflowId?workflowId=${workflowId}`).catch(() => null);
74
+ const list = meta?.data?.nodes || meta?.data || [];
75
+ const hit = (Array.isArray(list) ? list : []).find((n) => n.nodeName === nid || String(n.id) === nid);
76
+ if (!hit) {
77
+ console.error(`未找到节点: ${o.assignNode}`);
78
+ process.exit(1);
79
+ }
80
+ nid = hit.id;
81
+ nname = hit.nodeName;
82
+ }
83
+ if (!nid) {
84
+ console.error('--handle-way 5 需要 --assign-node <节点ID/名称>');
85
+ process.exit(1);
86
+ }
87
+ assignNodeId = nid;
88
+ assignNode.push({ content: nname, isDelete: false, isComplete: false, _entityImId: 0, _secretLevel: 0, _secretLevelEnd: 0, id: nid, dataId: nid });
89
+ }
90
+ else if (handleWay === '1') {
91
+ if (!o.person) {
92
+ console.error('--handle-way 1 需要 --person <名称/ID>');
93
+ process.exit(1);
94
+ }
95
+ const uid = /^\d+$/.test(o.person) ? o.person : '';
96
+ let userObj = null;
97
+ if (uid) {
98
+ userObj = { id: uid, name: o.person, content: o.person, title: o.person };
99
+ }
100
+ else {
101
+ const r = await client.post(`${baseUrl}/api/hrm/common/getEmployeeByKeyWords`, { keyword: o.person, searchType: 1, searchCount: 1, appDetachModule: 'EM', disableAppDetach: 0, pageNo: 1, pageSize: 1 });
102
+ const u = (r?.data?.userList || []).find((x) => x.name === o.person || x.content === o.person) || r?.data?.userList?.[0];
103
+ if (!u?.id) {
104
+ console.error(`未找到人员: ${o.person}`);
105
+ process.exit(1);
106
+ }
107
+ userObj = u;
108
+ }
109
+ assignPersonId = userObj.id;
110
+ assignPerson.push(userObj);
111
+ }
112
+ }
113
+ const payload = {
114
+ workflowId, nodeId,
115
+ nodeName: cur.nodeName || nodeId,
116
+ ccType: o.ccType ?? (cur.ccType ?? '0'),
117
+ isOpen: !o.off,
118
+ handleWayOption: HANDLE_WAY_OPTIONS,
119
+ handleWayObj: { handleWay, assignNode, assignPerson },
120
+ id: cur.id || 0,
121
+ sync: o.sync || false,
122
+ assignNode: assignNodeId,
123
+ assignPerson: assignPersonId,
124
+ handleWay,
125
+ };
126
+ const r = await client.post(`${baseUrl}/api/bs/workflow/pathdef/emptyhandleset/saveEmptyHandleSet`, payload);
127
+ if (r?.code !== 200 || !r?.status) {
128
+ console.error(`保存失败: ${r?.msg || '未知错误'}`);
129
+ process.exit(1);
130
+ }
131
+ const on = o.off ? '已关闭' : `已启用(${WAY_LABEL[handleWay]}${assignPersonId ? `:${o.person}` : ''}${assignNodeId ? `:${o.assignNode}` : ''})`;
132
+ console.log(`节点 ${nodeId} 流程异常处理 ${on}`);
133
+ if (o.sync)
134
+ console.log(' 已同步到所有节点');
135
+ });
136
+ }
137
+ //# sourceMappingURL=workflow-node-empty-handle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-node-empty-handle.js","sourceRoot":"","sources":["../../src/commands/workflow-node-empty-handle.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAyDhD;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CA0gFlE"}
1
+ {"version":3,"file":"workflow.d.ts","sourceRoot":"","sources":["../../src/commands/workflow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,GAAG,GAAG,GAAG,CAyDhD;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAgkFlE"}
@@ -91,7 +91,7 @@ export function registerWorkflowCommands(program) {
91
91
  .argument('<name>', '流程名称')
92
92
  .argument('[desc]', '流程描述', '')
93
93
  .option('--workflow-type <type>', '工作流类型:名称(如"公文审批")或 ID(默认 -1=其它)', '-1')
94
- .option('--no-menu', '不自动添加发起菜单(默认建流程后自动加,指向表单新建页)')
94
+ .option('--menu', '建流程后添加发起菜单(默认不加;漏加可用 `e10-cli menu add-start` 补)')
95
95
  .option('--no-auto-layout', '跳过建后自动排版节点(默认建完跑 auto-layout)')
96
96
  .action(async (appId, formObjId, name, desc, cmdOpts) => {
97
97
  const opts = program.opts();
@@ -207,7 +207,7 @@ export function registerWorkflowCommands(program) {
207
207
  const workflowUrl = `${baseUrl}/sp/workflow/flowpage/create/${workflowId}`;
208
208
  // Auto-add 发起 menu (LAYOUT → form create page, triggers bound workflow)
209
209
  let menuId = null;
210
- if (cmdOpts.menu !== false) {
210
+ if (cmdOpts.menu) {
211
211
  try {
212
212
  const { addFormStartMenu } = await import('./menu.js');
213
213
  menuId = await addFormStartMenu(client, baseUrl, appId, formObjId, name);
@@ -475,6 +475,9 @@ export function registerWorkflowCommands(program) {
475
475
  .option('--sign-order <order>', '签署顺序: 会签(默认) / 非会签 / 竞签 / 依次处理(默认倒序) / 抄送 / 抄送需批注', '会签')
476
476
  .option('--execute-order <spec>', '依次处理的执行顺序码: 2-2 人员显示顺序-倒序(默认) / 2-1 正序 / 1-1,2-2 安全级别正序+人员显示倒序', '')
477
477
  .option('--dept-scope <scope>', '指定部门的范围: 本部门 / 本及下级(默认)', '本及下级')
478
+ .option('--org-non-sign', '指定部门时:单个部门内非会签(跨部门仍按 --sign-order;对齐设计器"单个部门内非会签")')
479
+ .option('--pos-scope <scope>', '指定岗位的范围: 全部机构(默认) / 发起人同部门(岗位限定发起人所在部门,如"部门主管/财务经理(本部门)")', '全部机构')
480
+ .option('--superior-scope <scope>', '上级/本人的范围(仅 --type superior): 直接上级(默认) / 所有上级(整条上级链,如抄送所有上级)', '直接上级')
478
481
  .option('--orders <orders>', '批次号(两位小数,如 0.00 / 1.00)', '0.00')
479
482
  .option('--workflow-form <objId>', '流程绑定的表单 objId(valueFieldId 引用字段时在此表单查找)')
480
483
  .option('--matrix-id <id>', '矩阵 ID(--type matrix 必填)')
@@ -495,6 +498,47 @@ export function registerWorkflowCommands(program) {
495
498
  const baseUrl = auth.getBaseUrl();
496
499
  // 追加模式(--append)下提示语用「追加」,否则「设置」
497
500
  const verb = cmdOpts.append ? '已追加操作者组' : '已设置操作者';
501
+ // 0b. 先解析目标关键词(dept/position/role/user 需按名解析)——解析失败直接退出,**不先清空旧组**
502
+ // (否则节点操作者会被清成"无",footgun:找不到部门名时节点无人可处理)。
503
+ if (!cmdOpts.append && ['dept', 'position', 'role', 'user'].includes(cmdOpts.type)) {
504
+ if (!keyword) {
505
+ console.error(`--type ${cmdOpts.type} 需要关键词`);
506
+ process.exit(1);
507
+ }
508
+ if (cmdOpts.type === 'dept') {
509
+ for (const dn of keyword.split(',').map((s) => s.trim()).filter(Boolean)) {
510
+ const r = await client.post(`${baseUrl}/api/workflow/pathdef/common/browser/complete/department`, { browserMultiple: true, virtualType: 'All', showSanYuan: true, newly: 0, searchValue: dn });
511
+ if (!r?.data?.data?.[0]) {
512
+ console.error(`未找到部门: ${dn}(未改动节点操作者)`);
513
+ process.exit(1);
514
+ }
515
+ }
516
+ }
517
+ else if (cmdOpts.type === 'position') {
518
+ const r = await client.post(`${baseUrl}/api/workflow/pathdef/common/browser/complete/position`, { browserMultiple: true, newly: 0, searchValue: keyword });
519
+ if (!r?.data?.data?.[0]) {
520
+ console.error(`未找到岗位: ${keyword}(未改动节点操作者)`);
521
+ process.exit(1);
522
+ }
523
+ }
524
+ else if (cmdOpts.type === 'role') {
525
+ const { findRolesByKeywords } = await import('../services/workflow-operator.js');
526
+ const treeData = await client.get(`${baseUrl}/api/bs/auth/role/tree?menuCode=roleSettings`);
527
+ const roles = treeData?.data?.data || [];
528
+ const { missing } = findRolesByKeywords(roles, keyword);
529
+ if (missing) {
530
+ console.error(`未找到角色: ${missing}(未改动节点操作者)`);
531
+ process.exit(1);
532
+ }
533
+ }
534
+ else if (cmdOpts.type === 'user') {
535
+ const r = await client.post(`${baseUrl}/api/hrm/common/getEmployeeByKeyWords`, { keyword, searchType: 1, searchCount: 5, appDetachModule: 'EM', disableAppDetach: 0, pageNo: 1, pageSize: 5 });
536
+ if (!(r?.data?.userList || []).length) {
537
+ console.error(`未找到人员: ${keyword}(未改动节点操作者)`);
538
+ process.exit(1);
539
+ }
540
+ }
541
+ }
498
542
  // 0. 清理节点已有的操作者组(防止重复设置堆积多组,全量重建)。
499
543
  // --append 时跳过清理:新组追加到已有组之后(如 部门领导矩阵 + 门店经理矩阵 双组会签)。
500
544
  if (!cmdOpts.append) {
@@ -524,13 +568,25 @@ export function registerWorkflowCommands(program) {
524
568
  // 区别(抓包 2026-08-24):本人 includeType=12+itemName=本人+isSuportVirtualId/openProjectOrganization=true;
525
569
  // 上级 includeType=13+itemName=直接上级+这两个 false。
526
570
  const isInitiator = cmdOpts.type === 'initiator';
571
+ // 上级/本人组也跟随 --sign-order(对齐设计器:可直接上级会签,或依次逐个处理=逐级审批,或抄送)——不再写死会签
572
+ const SUPERIOR_SIGN = {
573
+ '会签': { code: '1', cn: '会签' }, '非会签': { code: '0', cn: '非会签' },
574
+ '竞签': { code: '0', cn: '非会签' }, '依次处理': { code: '2', cn: '依次逐个处理' },
575
+ '抄送': { code: '3', cn: '抄送' }, '抄送需批注': { code: '4', cn: '抄送' },
576
+ };
577
+ const sOpt = SUPERIOR_SIGN[cmdOpts.signOrder || '会签'] || SUPERIOR_SIGN['会签'];
578
+ // 上级范围:直接上级(includeType 13) / 所有上级(includeType 14,整条上级链,常用于抄送)
579
+ const supAll = !isInitiator && cmdOpts.superiorScope === '所有上级';
580
+ const supInclude = isInitiator ? '12' : (supAll ? '14' : '13');
581
+ const supIncludeCN = isInitiator ? '本人' : (supAll ? '所有上级' : '上级');
582
+ const supName = isInitiator ? '本人' : (supAll ? '所有上级' : '直接上级');
527
583
  targetId = '';
528
- targetName = isInitiator ? '本人' : '直接上级';
584
+ targetName = supName;
529
585
  groupType = '流程发起人';
530
586
  groupTypeId = '114';
531
- itemName = isInitiator ? '本人' : '直接上级';
587
+ itemName = supName;
532
588
  // Build payload directly — superior/initiator has no browserData
533
- console.error(` 操作者: ${isInitiator ? '流程发起人(本人)' : '发起人上级(直接上级)'} 类型: ${groupType}`);
589
+ console.error(` 操作者: ${isInitiator ? '流程发起人(本人)' : (supAll ? '发起人上级(所有上级)' : '发起人上级(直接上级)')} 类型: ${groupType}${cmdOpts.signOrder !== '会签' ? `,${sOpt.cn}` : ''}`);
534
590
  const rg = await client.post(`${baseUrl}/api/bs/workflow/pathdef/nodeOperator/getLayoutConfigInfo`, {
535
591
  groupId: '', workflowId, nodeId, sourceType: '1', isOperatorRuleAuth: true,
536
592
  });
@@ -538,16 +594,18 @@ export function registerWorkflowCommands(program) {
538
594
  const payload = {
539
595
  workflowId, nodeId, groupId: '', isCreate: '', reserveGroupId,
540
596
  itemDatas: [{
541
- includeType: isInitiator ? '12' : '13',
542
- includeTypeCN: isInitiator ? '本人' : '上级',
543
- virtualId: '',
544
- virtualIdCN: '',
597
+ includeType: supInclude,
598
+ includeTypeCN: supIncludeCN,
599
+ virtualId: '1',
600
+ virtualIdCN: '行政组织',
545
601
  objLevelType: '1',
546
602
  objLevelTypeCN: '全部机构',
547
603
  objectId: '1',
548
604
  objectIdCN: '直接上级',
549
- signOrder: '1',
550
- signOrderCN: '会签',
605
+ signOrder: sOpt.code,
606
+ signOrderCN: sOpt.cn,
607
+ ...(cmdOpts.signOrder === '竞签' ? { competeSignOrder: '1', competeSignOrderCN: '竞签' } : {}),
608
+ ...(cmdOpts.signOrder === '依次处理' && cmdOpts.executeOrder ? { executeOrders: cmdOpts.executeOrder } : {}),
551
609
  isOut: false,
552
610
  isSaveHrmOperator: false,
553
611
  id: '1',
@@ -566,8 +624,8 @@ export function registerWorkflowCommands(program) {
566
624
  condition: '',
567
625
  groupCondition: '',
568
626
  level: '',
569
- isSuportVirtualId: isInitiator,
570
- openProjectOrganization: isInitiator,
627
+ isSuportVirtualId: true,
628
+ openProjectOrganization: true,
571
629
  isExtendType: 0,
572
630
  }],
573
631
  oldGroupName: '',
@@ -579,7 +637,7 @@ export function registerWorkflowCommands(program) {
579
637
  };
580
638
  const data = await client.post(`${baseUrl}/api/bs/workflow/pathdef/nodeOperator/saveOperatorGroup`, payload);
581
639
  if (data?.code === 200 && data?.status) {
582
- const label = isInitiator ? '流程发起人(本人)' : '发起人上级(直接上级)';
640
+ const label = isInitiator ? '流程发起人(本人)' : (supAll ? '发起人上级(所有上级)' : '发起人上级(直接上级)');
583
641
  const msg = opts.json
584
642
  ? JSON.stringify({ success: true, workflowId, nodeId, operator: label, type: groupType, append: !!cmdOpts.append })
585
643
  : `${verb}: ${label} → 节点 ${nodeId}`;
@@ -890,10 +948,15 @@ export function registerWorkflowCommands(program) {
890
948
  itemData.hrmOperatorsCN = depts.map((d) => d.name).join(',');
891
949
  itemData.includeType = includeType;
892
950
  itemData.includeTypeCN = includeTypeCN;
951
+ // 对齐设计器「单个部门内非会签」:organizeSignOrder=1(跨部门仍按 signOrder,外层会签则=跨部门会签)
952
+ if (cmdOpts.orgNonSign) {
953
+ itemData.organizeSignOrder = '1';
954
+ itemData.organizeSignOrderCN = '单个部门内非会签';
955
+ }
893
956
  itemData.level = '10~90';
894
957
  itemData.itemLevel = '10~90';
895
958
  itemData.hrmBrowserDataDtos = depts.map((d) => ({ id: d.id, name: d.name, _entityType: 'department' }));
896
- console.error(` 操作者: ${depts.map((d) => d.name).join(',')} 类型: 指定部门(${includeTypeCN})`);
959
+ console.error(` 操作者: ${depts.map((d) => d.name).join(',')} 类型: 指定部门(${includeTypeCN})${cmdOpts.orgNonSign ? ',单个部门内非会签' : ''}`);
897
960
  }
898
961
  else if (cmdOpts.type === 'position') {
899
962
  if (!keyword) {
@@ -913,10 +976,19 @@ export function registerWorkflowCommands(program) {
913
976
  itemName = pos.name || keyword;
914
977
  itemData.hrmOperators = pos.id || '';
915
978
  itemData.hrmOperatorsCN = pos.name || '';
916
- itemData.objLevelType = '1';
917
- itemData.objLevelTypeCN = '全部机构';
979
+ // 岗位范围:全部机构(1) / 发起人同部门(4, objLevelType=4 + virtualId=1行政组织 + includeType本部门)
980
+ const posDept = cmdOpts.posScope === '发起人同部门';
981
+ itemData.objLevelType = posDept ? '4' : '1';
982
+ itemData.objLevelTypeCN = posDept ? '发起人同部门' : '全部机构';
983
+ if (posDept) {
984
+ itemData.virtualId = '1';
985
+ itemData.virtualIdCN = '行政组织';
986
+ itemData.includeType = '1';
987
+ itemData.includeTypeCN = '本部门';
988
+ itemData.itemLevel = '发起人同部门(行政组织)';
989
+ }
918
990
  itemData.hrmBrowserDataDtos = [{ id: pos.id, name: pos.name, _entityType: 'position' }];
919
- console.error(` 操作者: ${pos.name} (${pos.id}) 类型: 指定岗位(全部机构)`);
991
+ console.error(` 操作者: ${pos.name} (${pos.id}) 类型: 指定岗位(${posDept ? '发起人同部门' : '全部机构'})`);
920
992
  }
921
993
  else if (cmdOpts.type === 'all') {
922
994
  // 对齐浏览器:level/itemLevel 用全量 -999~999(eteams 浏览器实发、sjrdemo 也接受),