weaver-e10-builder 1.2.2 → 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 (106) hide show
  1. package/README.md +8 -19
  2. package/dist/commands/actionflow.d.ts.map +1 -1
  3. package/dist/commands/actionflow.js +26 -0
  4. package/dist/commands/actionflow.js.map +1 -1
  5. package/dist/commands/form-add-detail-table.d.ts.map +1 -1
  6. package/dist/commands/form-add-detail-table.js +127 -7
  7. package/dist/commands/form-add-detail-table.js.map +1 -1
  8. package/dist/commands/form-ebuilder-columns.d.ts +7 -0
  9. package/dist/commands/form-ebuilder-columns.d.ts.map +1 -1
  10. package/dist/commands/form-ebuilder-columns.js +2 -24
  11. package/dist/commands/form-ebuilder-columns.js.map +1 -1
  12. package/dist/commands/form-formula.d.ts.map +1 -1
  13. package/dist/commands/form-formula.js +35 -11
  14. package/dist/commands/form-formula.js.map +1 -1
  15. package/dist/commands/form-nlist.d.ts +1 -1
  16. package/dist/commands/form-nlist.d.ts.map +1 -1
  17. package/dist/commands/form-nlist.js +5 -3
  18. package/dist/commands/form-nlist.js.map +1 -1
  19. package/dist/commands/form.d.ts.map +1 -1
  20. package/dist/commands/form.js +93 -72
  21. package/dist/commands/form.js.map +1 -1
  22. package/dist/commands/workflow-auth-resp.d.ts.map +1 -1
  23. package/dist/commands/workflow-auth-resp.js +69 -8
  24. package/dist/commands/workflow-auth-resp.js.map +1 -1
  25. package/dist/commands/workflow-node-assign-flow.d.ts +3 -0
  26. package/dist/commands/workflow-node-assign-flow.d.ts.map +1 -0
  27. package/dist/commands/workflow-node-assign-flow.js +342 -0
  28. package/dist/commands/workflow-node-assign-flow.js.map +1 -0
  29. package/dist/commands/workflow-node.d.ts +2 -0
  30. package/dist/commands/workflow-node.d.ts.map +1 -1
  31. package/dist/commands/workflow-node.js +75 -49
  32. package/dist/commands/workflow-node.js.map +1 -1
  33. package/dist/core/auth.js +1 -1
  34. package/dist/index.js +2 -0
  35. package/dist/index.js.map +1 -1
  36. package/dist/services/actionflow/components/assign_var.d.ts +12 -0
  37. package/dist/services/actionflow/components/assign_var.d.ts.map +1 -0
  38. package/dist/services/actionflow/components/assign_var.js +133 -0
  39. package/dist/services/actionflow/components/assign_var.js.map +1 -0
  40. package/dist/services/actionflow/components/index.d.ts.map +1 -1
  41. package/dist/services/actionflow/components/index.js +9 -0
  42. package/dist/services/actionflow/components/index.js.map +1 -1
  43. package/dist/services/actionflow/dynamic_resources.d.ts +7 -1
  44. package/dist/services/actionflow/dynamic_resources.d.ts.map +1 -1
  45. package/dist/services/actionflow/dynamic_resources.js +64 -7
  46. package/dist/services/actionflow/dynamic_resources.js.map +1 -1
  47. package/dist/services/actionflow/form_source.d.ts +35 -0
  48. package/dist/services/actionflow/form_source.d.ts.map +1 -1
  49. package/dist/services/actionflow/form_source.js +50 -0
  50. package/dist/services/actionflow/form_source.js.map +1 -1
  51. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  52. package/dist/services/actionflow/formula_service.js +51 -1
  53. package/dist/services/actionflow/formula_service.js.map +1 -1
  54. package/dist/services/form-create.d.ts +2 -1
  55. package/dist/services/form-create.d.ts.map +1 -1
  56. package/dist/services/form-create.js.map +1 -1
  57. package/dist/services/form-ebuilder-columns.d.ts +50 -0
  58. package/dist/services/form-ebuilder-columns.d.ts.map +1 -0
  59. package/dist/services/form-ebuilder-columns.js +68 -0
  60. package/dist/services/form-ebuilder-columns.js.map +1 -0
  61. package/dist/services/form-field-drop.d.ts +30 -1
  62. package/dist/services/form-field-drop.d.ts.map +1 -1
  63. package/dist/services/form-field-drop.js +60 -0
  64. package/dist/services/form-field-drop.js.map +1 -1
  65. package/dist/services/form-field-patch.d.ts +47 -0
  66. package/dist/services/form-field-patch.d.ts.map +1 -0
  67. package/dist/services/form-field-patch.js +88 -0
  68. package/dist/services/form-field-patch.js.map +1 -0
  69. package/dist/services/form-nlist.d.ts +1 -0
  70. package/dist/services/form-nlist.d.ts.map +1 -1
  71. package/dist/services/form-nlist.js +32 -5
  72. package/dist/services/form-nlist.js.map +1 -1
  73. package/dist/services/form-sub-detail.d.ts +51 -3
  74. package/dist/services/form-sub-detail.d.ts.map +1 -1
  75. package/dist/services/form-sub-detail.js +183 -20
  76. package/dist/services/form-sub-detail.js.map +1 -1
  77. package/dist/services/formula-detail.d.ts +68 -5
  78. package/dist/services/formula-detail.d.ts.map +1 -1
  79. package/dist/services/formula-detail.js +110 -44
  80. package/dist/services/formula-detail.js.map +1 -1
  81. package/dist/services/rich-text.d.ts +33 -0
  82. package/dist/services/rich-text.d.ts.map +1 -0
  83. package/dist/services/rich-text.js +134 -0
  84. package/dist/services/rich-text.js.map +1 -0
  85. package/dist/services/workflow-assign-flow.d.ts +114 -0
  86. package/dist/services/workflow-assign-flow.d.ts.map +1 -0
  87. package/dist/services/workflow-assign-flow.js +311 -0
  88. package/dist/services/workflow-assign-flow.js.map +1 -0
  89. package/dist/services/workflow-node-menu.d.ts +57 -0
  90. package/dist/services/workflow-node-menu.d.ts.map +1 -0
  91. package/dist/services/workflow-node-menu.js +144 -0
  92. package/dist/services/workflow-node-menu.js.map +1 -0
  93. package/package.json +48 -48
  94. package/skill-docs/SKILL.md +6 -5
  95. package/skill-docs/_catalog.md +79 -77
  96. package/skill-docs/actionflows/SKILL.md +168 -167
  97. package/skill-docs/actionflows/references/components/ebuilder/ActionEbAdd.md +1 -1
  98. package/skill-docs/actionflows/references/components/ebuilder/EventButton.md +33 -33
  99. package/skill-docs/references/common/guide-plan-template.md +254 -251
  100. package/skill-docs/references/common/ref-cli-commands.md +529 -519
  101. package/skill-docs/references/form/guide-create-form.md +233 -232
  102. package/skill-docs/references/form/guide-form-formula-functions.md +11 -1
  103. package/skill-docs/references/form/guide-form-sub-detail.md +82 -0
  104. package/skill-docs/references/form/guide-list-custom-text.md +52 -0
  105. package/skill-docs/references/workflow/guide-workflow-auth-resp.md +198 -190
  106. package/skill-docs/references/workflow/guide-workflow.md +7 -0
@@ -0,0 +1,311 @@
1
+ /**
2
+ * 节点指定流转(工作流术语:开一窗流转)。
3
+ *
4
+ * 页面在「基础设置」和「目标节点通用设置」两个页签,各有一份动态 Form;
5
+ * **保存时必须合并成一个 JSON** 发 `assignFlow/saveBaseSetForm`,分两次发会互相覆盖。
6
+ *
7
+ * 这里最大的坑是**读写形状不对称**(2026-09-22 对 eteams 逐项二分出来的):
8
+ *
9
+ * | 字段 | GET 回读形状 | 写入要求 |
10
+ * |---|---|---|
11
+ * | `nodeBrowser` / `mustMultiNode` | 对象数组 `[{id,dataId,content,…}]` | **逗号分隔字符串**,写数组直接 500 |
12
+ * | `ccRequired` | 数组 `["0"]` | **标量** `0/1`,写数组直接 500 |
13
+ * | `singleOperator` | 数组 `["0"]` | **数组**(`["1"]` 开 / `[]` 关)—— 这个两个方向都是数组 |
14
+ *
15
+ * 所以「读回来原样写回去」在这三个字段上必挂。读回后必须按上表归一。
16
+ */
17
+ const BASE = '/api/bs/workflow/pathdef';
18
+ /** 目标节点选择范围 */
19
+ export const RANGE_TYPES = {
20
+ out: '0', // 按出口选择
21
+ free: '1', // 自由选择
22
+ nodes: '2', // 指定节点范围
23
+ };
24
+ export const RANGE_TYPE_LABELS = {
25
+ '0': '按出口选择', '1': '自由选择', '2': '指定节点范围',
26
+ };
27
+ /** 按出口时,可选出口范围 */
28
+ export const NODE_RANGE_TYPES = {
29
+ all: '0', // 所有出口
30
+ condition: '1', // 满足条件的出口
31
+ };
32
+ export const NODE_RANGE_TYPE_LABELS = {
33
+ '0': '所有出口', '1': '满足条件的出口',
34
+ };
35
+ /** 自动流转 */
36
+ export const AUTO_FLOW_TYPES = {
37
+ none: '0', // 不启用
38
+ must: '1', // 自动流转至必经节点
39
+ first: '2', // 自动流转至第一个满足出口条件的节点
40
+ };
41
+ export const AUTO_FLOW_TYPE_LABELS = {
42
+ '0': '不启用', '1': '自动流转至必经节点', '2': '自动流转至第一个满足出口条件的节点',
43
+ };
44
+ /** 会签关系(新字段,页面以它为准) */
45
+ export const SIGN_RELATION_TYPES = {
46
+ user: '0', // 用户选择
47
+ countersign: '1', // 会签
48
+ non: '2', // 非会签
49
+ order: '3', // 依次
50
+ node: '4', // 节点设置
51
+ parallel: '5', // 并行分流
52
+ };
53
+ export const SIGN_RELATION_LABELS = {
54
+ '0': '用户选择', '1': '会签', '2': '非会签', '3': '依次', '4': '节点设置', '5': '并行分流',
55
+ };
56
+ /** 抄送方式 */
57
+ export const CC_TYPES = {
58
+ user: '0', // 用户选择
59
+ off: '1', // 不启用
60
+ submit: '2', // 需提交
61
+ auto: '3', // 不需提交
62
+ };
63
+ export const CC_TYPE_LABELS = {
64
+ '0': '用户选择', '1': '不启用', '2': '需提交', '3': '不需提交',
65
+ };
66
+ /** 节点类型里真正能配指定流转的(排除结束节点与分流/合流点) */
67
+ export const ASSIGN_FLOW_NODE_TYPES = new Set(['0', '1', '2', '5', '7', '8']);
68
+ /** 浏览器节点对象 / 数组 → 逗号分隔 ID 串 */
69
+ function toIdList(value) {
70
+ if (typeof value === 'string')
71
+ return value;
72
+ if (!Array.isArray(value))
73
+ return '';
74
+ return value
75
+ .map((v) => String(v?.id ?? v?.dataId ?? v ?? ''))
76
+ .filter(Boolean)
77
+ .join(',');
78
+ }
79
+ /** 数组取首元素;别的原样 */
80
+ function toScalar(value) {
81
+ if (Array.isArray(value))
82
+ return String(value[0] ?? '0');
83
+ if (value === undefined || value === null)
84
+ return '0';
85
+ return String(value);
86
+ }
87
+ const asBool = (v) => v === true || v === 1 || v === '1';
88
+ /** 合并两份 Form 的 data,并按写入要求归一形状 */
89
+ export function normalizeSettings(baseData, commonData) {
90
+ const b = baseData || {};
91
+ const c = commonData || {};
92
+ return {
93
+ enable: asBool(b.enable),
94
+ rangeType: String(b.rangeType ?? '0'),
95
+ nodeBrowser: toIdList(b.nodeBrowser),
96
+ nodeRangeType: String(b.nodeRangeType ?? '0'),
97
+ autoFirstNode: asBool(b.autoFirstNode),
98
+ forbidModifyTargetNode: asBool(b.forbidModifyTargetNode),
99
+ enableNodeAlone: asBool(b.enableNodeAlone),
100
+ enableOpenDialog: asBool(b.enableOpenDialog),
101
+ enableComments: asBool(b.enableComments),
102
+ alwaysShowComments: asBool(b.alwaysShowComments),
103
+ enableAutoFlow: String(b.enableAutoFlow ?? '0'),
104
+ mustMultiNode: toIdList(b.mustMultiNode),
105
+ useCommonDestination: asBool(b.useCommonDestination),
106
+ modifyOperator: asBool(c.modifyOperator),
107
+ autoOperator: asBool(c.autoOperator),
108
+ signRelationship: String(c.signRelationship ?? '0'),
109
+ signRelationshipNew: String(c.signRelationshipNew ?? '0'),
110
+ singleOperator: Array.isArray(c.singleOperator) ? c.singleOperator.map(String) : [],
111
+ useCc: asBool(c.useCc),
112
+ autoCcOperator: asBool(c.autoCcOperator),
113
+ modifyCcOperator: asBool(c.modifyCcOperator),
114
+ ccType: String(c.ccType ?? '0'),
115
+ ccRequired: toScalar(c.ccRequired),
116
+ defaultCcType: String(c.defaultCcType ?? '2'),
117
+ autoFlowSignType: String(c.autoFlowSignType ?? '4'),
118
+ autoFlowCCType: String(c.autoFlowCCType ?? '4'),
119
+ };
120
+ }
121
+ export async function getAssignFlowSettings(client, baseUrl, workflowId, nodeId) {
122
+ const [b, c] = await Promise.all([
123
+ client.get(`${baseUrl}${BASE}/assignFlow/getBaseSetForm?workflowId=${workflowId}&nodeId=${nodeId}`),
124
+ client.get(`${baseUrl}${BASE}/assignFlow/getCommonSetForm?workflowId=${workflowId}&nodeId=${nodeId}`),
125
+ ]);
126
+ if (b?.code !== 200 || !b?.status)
127
+ throw new Error(`读取指定流转基础设置失败: ${b?.msg || '未知错误'}`);
128
+ if (c?.code !== 200 || !c?.status)
129
+ throw new Error(`读取指定流转通用设置失败: ${c?.msg || '未知错误'}`);
130
+ return normalizeSettings(b?.data?.data, c?.data?.data);
131
+ }
132
+ /** 归一后的设置 → 保存报文。基础与通用合并成一个 JSON。 */
133
+ export function buildSavePayload(workflowId, nodeId, s) {
134
+ return {
135
+ workflowId, nodeId,
136
+ enable: s.enable,
137
+ rangeType: s.rangeType,
138
+ nodeBrowser: s.nodeBrowser,
139
+ nodeRangeType: s.nodeRangeType,
140
+ autoFirstNode: s.autoFirstNode,
141
+ forbidModifyTargetNode: s.forbidModifyTargetNode,
142
+ enableNodeAlone: s.enableNodeAlone,
143
+ enableOpenDialog: s.enableOpenDialog,
144
+ enableComments: s.enableComments,
145
+ alwaysShowComments: s.alwaysShowComments,
146
+ enableAutoFlow: s.enableAutoFlow,
147
+ mustMultiNode: s.mustMultiNode,
148
+ useCommonDestination: s.useCommonDestination,
149
+ modifyOperator: s.modifyOperator,
150
+ autoOperator: s.autoOperator,
151
+ signRelationship: s.signRelationship,
152
+ signRelationshipNew: s.signRelationshipNew,
153
+ singleOperator: s.singleOperator,
154
+ useCc: s.useCc,
155
+ autoCcOperator: s.autoCcOperator,
156
+ modifyCcOperator: s.modifyCcOperator,
157
+ ccType: s.ccType,
158
+ ccRequired: s.ccRequired,
159
+ defaultCcType: s.defaultCcType,
160
+ autoFlowSignType: s.autoFlowSignType,
161
+ autoFlowCCType: s.autoFlowCCType,
162
+ isChanged: true,
163
+ isSync: false,
164
+ };
165
+ }
166
+ /**
167
+ * 清掉当前取值下不再适用的字段。
168
+ *
169
+ * 只清 `nodeBrowser` —— 范围类型不是「指定节点范围」时**平台自己也会把它清成空**
170
+ * (实测:发 rangeType=0 + 残留节点清单,平台收下、回读是空串)。我们跟上这一步,
171
+ * 否则本地以为写的是 A、回读是 B,保存后的回读比对会误报。
172
+ *
173
+ * `mustMultiNode` **不清**:实测平台会原样保留,浏览器也一样 —— 页面报文里
174
+ * `enableAutoFlow` 是 `"0"`、`mustMultiNode` 却带着值。用户临时关掉自动流转再打开,
175
+ * 必经节点还得在。这里"顺手清掉"等于悄悄吃掉配置。
176
+ */
177
+ export function coerceSettings(s) {
178
+ return { ...s, nodeBrowser: s.rangeType === '2' ? s.nodeBrowser : '' };
179
+ }
180
+ /** 提交前的组合校验。返回错误文案数组(空 = 通过)。 */
181
+ export function validateSettings(s) {
182
+ const errors = [];
183
+ if (s.rangeType === '2' && !s.nodeBrowser) {
184
+ errors.push('目标节点选择范围为「指定节点范围」时必须给 --nodes 指定至少一个节点');
185
+ }
186
+ if (s.enableAutoFlow === '1' && !s.mustMultiNode) {
187
+ errors.push('自动流转为「自动流转至必经节点」时必须给 --must-nodes 指定至少一个节点');
188
+ }
189
+ if (!(s.rangeType in RANGE_TYPE_LABELS))
190
+ errors.push(`未知的目标节点选择范围: ${s.rangeType}`);
191
+ if (!(s.nodeRangeType in NODE_RANGE_TYPE_LABELS))
192
+ errors.push(`未知的出口范围: ${s.nodeRangeType}`);
193
+ if (!(s.enableAutoFlow in AUTO_FLOW_TYPE_LABELS))
194
+ errors.push(`未知的自动流转类型: ${s.enableAutoFlow}`);
195
+ if (!(s.signRelationshipNew in SIGN_RELATION_LABELS))
196
+ errors.push(`未知的会签关系: ${s.signRelationshipNew}`);
197
+ if (!(s.ccType in CC_TYPE_LABELS))
198
+ errors.push(`未知的抄送方式: ${s.ccType}`);
199
+ return errors;
200
+ }
201
+ /** 保存。返回**实际写出去的**设置(已按取值归一),调用方拿它做回读比对。 */
202
+ export async function saveAssignFlowSettings(client, baseUrl, workflowId, nodeId, raw) {
203
+ const s = coerceSettings(raw);
204
+ const errors = validateSettings(s);
205
+ if (errors.length)
206
+ throw new Error(errors.join(';'));
207
+ const res = await client.post(`${baseUrl}${BASE}/assignFlow/saveBaseSetForm`, buildSavePayload(workflowId, nodeId, s));
208
+ if (res?.code !== 200 || res?.status === false || res?.data === false) {
209
+ throw new Error(`保存指定流转设置失败: ${res?.msg || '未知错误'}`);
210
+ }
211
+ return s;
212
+ }
213
+ /** 保存后回读比对,返回不一致的字段说明。 */
214
+ export function diffSettings(before, after) {
215
+ const out = [];
216
+ for (const key of Object.keys(before)) {
217
+ const a = before[key];
218
+ const b = after[key];
219
+ const same = Array.isArray(a) ? JSON.stringify(a) === JSON.stringify(b) : a === b;
220
+ if (!same)
221
+ out.push(`${key}: 期望 ${JSON.stringify(a)},回读 ${JSON.stringify(b)}`);
222
+ }
223
+ return out;
224
+ }
225
+ export async function listAssignTargetNodes(client, baseUrl, workflowId, nodeId) {
226
+ const res = await client.get(`${baseUrl}${BASE}/assignFlow/getTargetNodeList?workflowId=${workflowId}&nodeId=${nodeId}&current=1&pageSize=200`);
227
+ if (res?.code !== 200 || !res?.status)
228
+ throw new Error(`读取指定流转目标节点失败: ${res?.msg || '未知错误'}`);
229
+ const rows = res?.data?.datas || [];
230
+ return rows.map((r) => ({
231
+ id: String(r.id ?? ''),
232
+ targetNodeId: String(r.targetNodeId ?? ''),
233
+ targetNodeName: String(r.targetNodeName ?? ''),
234
+ receiverRangeKey: String(r.receiverRangeKey ?? ''),
235
+ raw: r,
236
+ }));
237
+ }
238
+ /** 新增目标节点独立设置。已存在的目标节点会被跳过(不重复新增)。 */
239
+ export async function addAssignTargetNodes(client, baseUrl, workflowId, nodeId, targetNodeIds) {
240
+ const existing = await listAssignTargetNodes(client, baseUrl, workflowId, nodeId);
241
+ const have = new Set(existing.map((t) => t.targetNodeId));
242
+ const added = targetNodeIds.map(String).filter((id) => !have.has(id));
243
+ const skipped = targetNodeIds.map(String).filter((id) => have.has(id));
244
+ if (!added.length)
245
+ return { added, skipped };
246
+ const res = await client.post(`${baseUrl}${BASE}/assignFlow/batchAddTargetNodeSet`, {
247
+ workflowId, nodeId, targetNodeIds: added.join(','),
248
+ modifyOperator: true, autoOperator: true,
249
+ signRelationship: 0, signRelationshipNew: 0, singleOperator: false,
250
+ useCc: true, autoCcOperator: true, modifyCcOperator: true,
251
+ ccType: 0, ccRequired: 0, defaultCcType: 2, autoFlowSignType: 4, autoFlowCCType: 4,
252
+ });
253
+ if (res?.code !== 200 || res?.status === false || res?.data === false) {
254
+ throw new Error(`新增目标节点失败: ${res?.msg || '未知错误'}`);
255
+ }
256
+ return { added, skipped };
257
+ }
258
+ export function normalizeReceiverRange(data) {
259
+ const d = data || {};
260
+ return {
261
+ mainId: String(d.mainId ?? ''),
262
+ isopen: asBool(d.isopen),
263
+ modetype: String(d.modetype ?? '0'),
264
+ limitOperatorRange: asBool(d.limitOperatorRange),
265
+ enableSecurityLevel: asBool(d.enableSecurityLevel),
266
+ isUpgrade: asBool(d.isUpgrade),
267
+ };
268
+ }
269
+ /**
270
+ * 读指定流转目标节点的接收范围。
271
+ *
272
+ * `mainId` 优先用调用方给的 `receiverRangeKey`(目标节点列表里回读到的稳定值);
273
+ * 它是 `"0"` 或空时说明这条记录还没有自己的范围设置,再按 scene=7 现读一份。
274
+ */
275
+ export async function getReceiverRange(client, baseUrl, workflowId, nodeId) {
276
+ const res = await client.get(`${baseUrl}${BASE}/receiverRange/getBaseSetForm?workflowId=${workflowId}&nodeId=${nodeId}&scene=7`);
277
+ if (res?.code !== 200 || !res?.status)
278
+ throw new Error(`读取接收人可选范围失败: ${res?.msg || '未知错误'}`);
279
+ return normalizeReceiverRange(res?.data?.data);
280
+ }
281
+ export async function saveReceiverRange(client, baseUrl, workflowId, nodeId, r) {
282
+ if (!r.mainId || r.mainId === '0') {
283
+ throw new Error('缺少接收范围 mainId,请先读取当前场景设置(不要用 0 覆盖已有设置)');
284
+ }
285
+ const res = await client.post(`${baseUrl}${BASE}/receiverRange/saveBaseSetForm`, {
286
+ mainId: r.mainId, workflowId, nodeId, scene: 7,
287
+ isopen: r.isopen, modetype: r.modetype, limitOperatorRange: r.limitOperatorRange,
288
+ enableSecurityLevel: r.enableSecurityLevel, isUpgrade: r.isUpgrade,
289
+ isChanged: true,
290
+ });
291
+ if (res?.code !== 200 || res?.status === false || res?.data === false) {
292
+ throw new Error(`保存接收人可选范围失败: ${res?.msg || '未知错误'}`);
293
+ }
294
+ }
295
+ /** 取全流程节点(含类型),供 --all-nodes 用。 */
296
+ export async function listWorkflowNodes(client, baseUrl, workflowId) {
297
+ const res = await client.get(`${baseUrl}${BASE}/nodeBase/getNodeEditTable?workflowId=${workflowId}`);
298
+ if (res?.code !== 200 || !res?.status)
299
+ throw new Error(`读取流程节点失败: ${res?.msg || '未知错误'}`);
300
+ const rows = res?.data?.data || [];
301
+ return rows.map((n) => ({
302
+ id: String(n.id ?? n.nodeId ?? ''),
303
+ name: String(n.nodeName ?? n.name ?? ''),
304
+ nodeType: String(n.nodeType ?? ''),
305
+ }));
306
+ }
307
+ /** 能配指定流转的节点(排除结束节点、分流/合流点) */
308
+ export function assignFlowCapableNodes(nodes) {
309
+ return nodes.filter((n) => ASSIGN_FLOW_NODE_TYPES.has(n.nodeType) && n.id);
310
+ }
311
+ //# sourceMappingURL=workflow-assign-flow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-assign-flow.js","sourceRoot":"","sources":["../../src/services/workflow-assign-flow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ import type { ApiClient } from '../core/client.js';
2
+ export interface NodeMenu {
3
+ id: string;
4
+ /** 自定义显示名;空 = 用 defaultName */
5
+ title: string;
6
+ /** 内置默认名(批准 / 保存 / 退回 …) */
7
+ defaultName: string;
8
+ /** 稳定类型码(AGREE / SAVE_DATA / REJECT …),**按它匹配最稳** */
9
+ menutype: string;
10
+ useable: boolean;
11
+ /** true = 快捷菜单,false = 更多菜单 */
12
+ istop: boolean;
13
+ orderid: number;
14
+ defaultSign: string;
15
+ raw: Record<string, any>;
16
+ }
17
+ export interface NodeMenuSet {
18
+ quick: NodeMenu[];
19
+ more: NodeMenu[];
20
+ }
21
+ /** 展示名:有自定义名用自定义名,否则用内置名 */
22
+ export declare function menuLabel(m: NodeMenu): string;
23
+ export declare function getNodeMenus(client: ApiClient, baseUrl: string, workflowId: string, nodeId: string): Promise<NodeMenuSet>;
24
+ /**
25
+ * 按 ID / 类型码 / 自定义名 / 内置名 找菜单。全都找不到返回 undefined。
26
+ *
27
+ * 名字可能撞车(内置名与某个自定义名相同),这时按顺序优先取**类型码**命中的那个 ——
28
+ * 用户写「批准」时想要的是内置的批准按钮,不是恰好也叫「批准」的自定义按钮。
29
+ */
30
+ export declare function findMenu(all: NodeMenu[], ref: string): NodeMenu | undefined;
31
+ /** 菜单名前缀有多少个候选(用于「找不到 / 有歧义」时给候选清单) */
32
+ export declare function menuNames(all: NodeMenu[]): string[];
33
+ export interface MenuPatch {
34
+ /** 快捷菜单分组:只启用这些(其余快捷菜单关闭);undefined = 不动这一组 */
35
+ quick?: string[];
36
+ /** 更多菜单分组:只启用这些(其余更多菜单关闭);undefined = 不动这一组 */
37
+ more?: string[];
38
+ enable?: string[];
39
+ disable?: string[];
40
+ /** 菜单引用 → 新显示名(空串 = 恢复默认名) */
41
+ rename?: Map<string, string>;
42
+ /** 菜单引用 → 默认签字意见 */
43
+ sign?: Map<string, string>;
44
+ }
45
+ /**
46
+ * 应用改动。返回新的菜单集与**真正变了的** id 列表(平台要求 changeRows 只放变化的)。
47
+ *
48
+ * `quick` / `more` 的语义是「这一组就启用这些」:点名到的启用(必要时从另一组挪过来),
49
+ * 这一组里没点名的全部关闭。没给这一组就整组不动。
50
+ */
51
+ export declare function applyMenuPatch(set: NodeMenuSet, patch: MenuPatch): {
52
+ next: NodeMenuSet;
53
+ changed: string[];
54
+ };
55
+ /** 保存。`changeRows` 只放真正变了的 id;没变化就不发请求。 */
56
+ export declare function saveNodeMenus(client: ApiClient, baseUrl: string, workflowId: string, nodeId: string, set: NodeMenuSet, changed: string[]): Promise<void>;
57
+ //# sourceMappingURL=workflow-node-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-node-menu.d.ts","sourceRoot":"","sources":["../../src/services/workflow-node-menu.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAkBnD,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,4BAA4B;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,+BAA+B;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC1B;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,IAAI,EAAE,QAAQ,EAAE,CAAC;CAClB;AAkBD,4BAA4B;AAC5B,wBAAgB,SAAS,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAE7C;AAED,wBAAsB,YAAY,CAChC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GACrE,OAAO,CAAC,WAAW,CAAC,CAQtB;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAM3E;AAED,uCAAuC;AACvC,wBAAgB,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAEnD;AAED,MAAM,WAAW,SAAS;IACxB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,8BAA8B;IAC9B,MAAM,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,oBAAoB;IACpB,IAAI,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B;AAOD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,SAAS,GAAG;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CAiD3G;AAED,2CAA2C;AAC3C,wBAAsB,aAAa,CACjC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EACtE,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,EAAE,GAClC,OAAO,CAAC,IAAI,CAAC,CAmBf"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * 节点操作菜单(快捷菜单 / 更多菜单)。
3
+ *
4
+ * 平台 GET `getWfpNodeMenuInfo` 把菜单**分两个数组**返回:
5
+ * - `topmenu` —— 快捷菜单(批准 / 保存 / 退回 / 强制收回 / 加签 …)
6
+ * - `moremenu` —— 更多菜单(转办 / 转发 / 传阅 / 意见征询 / 催办 / 打印 …)
7
+ * - `hidemenu` —— 占位数组,元素字段全是 undefined,丢掉
8
+ *
9
+ * **保存时 `menuStr` 要的是两组合并后的完整数组**(实测:只发 moremenu 会丢快捷菜单)。
10
+ *
11
+ * 字段名注意:线上是 `menutype`(小写 t),不是文档里写的 `menuType`。
12
+ * `title` 是自定义显示名(空 = 用 `defaultName`),改名改的就是它。
13
+ */
14
+ const BASE = '/api/bs/workflow/pathdef';
15
+ const asBool = (v) => v === 1 || v === '1' || v === true;
16
+ function toMenu(raw) {
17
+ return {
18
+ id: String(raw?.id ?? ''),
19
+ title: String(raw?.title ?? ''),
20
+ defaultName: String(raw?.defaultName ?? ''),
21
+ menutype: String(raw?.menutype ?? raw?.menuType ?? ''),
22
+ useable: asBool(raw?.useable),
23
+ istop: asBool(raw?.istop),
24
+ orderid: Number(raw?.orderid ?? 0),
25
+ defaultSign: String(raw?.defaultSign ?? ''),
26
+ raw,
27
+ };
28
+ }
29
+ /** 展示名:有自定义名用自定义名,否则用内置名 */
30
+ export function menuLabel(m) {
31
+ return m.title || m.defaultName || m.menutype || m.id;
32
+ }
33
+ export async function getNodeMenus(client, baseUrl, workflowId, nodeId) {
34
+ const res = await client.get(`${baseUrl}${BASE}/nodeMenu/getWfpNodeMenuInfo?workflowId=${workflowId}&nodeId=${nodeId}`);
35
+ if (res?.code !== 200 || !res?.status)
36
+ throw new Error(`读取节点操作菜单失败: ${res?.msg || '未知错误'}`);
37
+ const d = res?.data || {};
38
+ const clean = (arr) => (arr || []).filter((m) => m && m.id).map(toMenu);
39
+ return { quick: clean(d.topmenu), more: clean(d.moremenu) };
40
+ }
41
+ /**
42
+ * 按 ID / 类型码 / 自定义名 / 内置名 找菜单。全都找不到返回 undefined。
43
+ *
44
+ * 名字可能撞车(内置名与某个自定义名相同),这时按顺序优先取**类型码**命中的那个 ——
45
+ * 用户写「批准」时想要的是内置的批准按钮,不是恰好也叫「批准」的自定义按钮。
46
+ */
47
+ export function findMenu(all, ref) {
48
+ const s = String(ref);
49
+ return all.find((m) => m.id === s)
50
+ || all.find((m) => m.menutype.toLowerCase() === s.toLowerCase())
51
+ || all.find((m) => m.defaultName === s)
52
+ || all.find((m) => m.title === s);
53
+ }
54
+ /** 菜单名前缀有多少个候选(用于「找不到 / 有歧义」时给候选清单) */
55
+ export function menuNames(all) {
56
+ return all.map((m) => `${menuLabel(m)}${m.menutype ? `(${m.menutype})` : ''}`);
57
+ }
58
+ /** 某组里下一个可用的 orderid */
59
+ function nextOrder(group) {
60
+ return group.reduce((max, m) => Math.max(max, m.orderid), -1) + 1;
61
+ }
62
+ /**
63
+ * 应用改动。返回新的菜单集与**真正变了的** id 列表(平台要求 changeRows 只放变化的)。
64
+ *
65
+ * `quick` / `more` 的语义是「这一组就启用这些」:点名到的启用(必要时从另一组挪过来),
66
+ * 这一组里没点名的全部关闭。没给这一组就整组不动。
67
+ */
68
+ export function applyMenuPatch(set, patch) {
69
+ // raw 原样带着(保存时才从包装字段重建报文),不在这里改它
70
+ const quick = set.quick.map((m) => ({ ...m }));
71
+ const more = set.more.map((m) => ({ ...m }));
72
+ const before = new Map([...quick, ...more].map((m) => [m.id, JSON.stringify({ u: m.useable, i: m.istop, t: m.title, o: m.orderid, s: m.defaultSign })]));
73
+ const all = () => [...quick, ...more];
74
+ /** 把 ref 解析成菜单;找不到直接抛,避免拼错名字静默成功 */
75
+ const resolve = (ref, where) => {
76
+ const hit = findMenu(all(), ref);
77
+ if (!hit) {
78
+ throw new Error(`${where} 里找不到菜单「${ref}」。可用: ${menuNames(all()).join('、')}`);
79
+ }
80
+ return hit;
81
+ };
82
+ /** 把菜单移到目标组(同组不动) */
83
+ const moveTo = (m, toQuick) => {
84
+ if (m.istop === toQuick)
85
+ return m;
86
+ const from = m.istop ? quick : more;
87
+ const to = toQuick ? quick : more;
88
+ from.splice(from.indexOf(m), 1);
89
+ const copy = { ...m, istop: toQuick, orderid: nextOrder(to) };
90
+ to.push(copy);
91
+ return copy;
92
+ };
93
+ /** 一组「只启用这些」 */
94
+ const applyGroup = (refs, toQuick, where) => {
95
+ const named = new Set();
96
+ for (const ref of refs)
97
+ named.add(moveTo(resolve(ref, where), toQuick));
98
+ // 点名到的启用;这一组其余全部关闭
99
+ for (const m of toQuick ? quick : more)
100
+ m.useable = named.has(m);
101
+ };
102
+ if (patch.quick !== undefined)
103
+ applyGroup(patch.quick, true, '--quick');
104
+ if (patch.more !== undefined)
105
+ applyGroup(patch.more, false, '--more');
106
+ for (const ref of patch.enable || [])
107
+ resolve(ref, '--enable').useable = true;
108
+ for (const ref of patch.disable || [])
109
+ resolve(ref, '--disable').useable = false;
110
+ for (const [ref, name] of patch.rename || [])
111
+ resolve(ref, '--rename').title = name;
112
+ for (const [ref, sign] of patch.sign || [])
113
+ resolve(ref, '--sign').defaultSign = sign;
114
+ const changed = [];
115
+ for (const m of [...quick, ...more]) {
116
+ const after = JSON.stringify({ u: m.useable, i: m.istop, t: m.title, o: m.orderid, s: m.defaultSign });
117
+ if (before.get(m.id) !== after)
118
+ changed.push(m.id);
119
+ }
120
+ return { next: { quick, more }, changed };
121
+ }
122
+ /** 保存。`changeRows` 只放真正变了的 id;没变化就不发请求。 */
123
+ export async function saveNodeMenus(client, baseUrl, workflowId, nodeId, set, changed) {
124
+ if (!changed.length)
125
+ return;
126
+ // 从包装字段重建报文,不用 raw:raw 是「读回来的原样」,改动写在包装字段上。
127
+ // 直接序列化 raw 会把所有改动静默丢掉(保存成功、回读照旧),改名那次之所以看得出效果,
128
+ // 只是因为改名顺手同步了 raw。
129
+ const menuStr = JSON.stringify([...set.quick, ...set.more].map((m) => ({
130
+ ...m.raw,
131
+ useable: m.useable ? 1 : 0,
132
+ istop: m.istop ? 1 : 0,
133
+ title: m.title,
134
+ defaultSign: m.defaultSign,
135
+ orderid: m.orderid,
136
+ })));
137
+ const res = await client.post(`${baseUrl}${BASE}/nodeMenu/saveWfpNodeMenuInfo`, {
138
+ workflowId, nodeId, menuStr, changeRows: changed, deleteMenuIds: [],
139
+ });
140
+ if (res?.code !== 200 || res?.status === false || res?.data === false) {
141
+ throw new Error(`保存节点操作菜单失败: ${res?.msg || '未知错误'}`);
142
+ }
143
+ }
144
+ //# sourceMappingURL=workflow-node-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-node-menu.js","sourceRoot":"","sources":["../../src/services/workflow-node-menu.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,48 +1,48 @@
1
- {
2
- "name": "weaver-e10-builder",
3
- "version": "1.2.2",
4
- "description": "Eteams/Ebuilder CLI — 泛微 OA 命令行工具",
5
- "type": "module",
6
- "files": [
7
- "dist",
8
- "ecodecmd",
9
- "skill-docs"
10
- ],
11
- "bin": {
12
- "e10-cli": "./dist/index.js",
13
- "ecodecmd": "./ecodecmd/src/index.js"
14
- },
15
- "scripts": {
16
- "dev": "tsx src/index.ts",
17
- "build": "tsc",
18
- "postinstall": "node ./dist/postinstall.js",
19
- "pack:all": "node scripts/pack-editions.mjs",
20
- "sync:docs": "node scripts/sync-skill-docs.mjs",
21
- "start": "node dist/index.js",
22
- "test": "tsx --test \"test/**/*.test.ts\""
23
- },
24
- "dependencies": {
25
- "@napi-rs/keyring": "^1.3.0",
26
- "archiver": "^5.3.1",
27
- "axios": "^1.3.4",
28
- "chalk": "^5.0.1",
29
- "chokidar": "^3.5.3",
30
- "commander": "^13.0.0",
31
- "debug": "^4.3.4",
32
- "fs-extra": "^10.1.0",
33
- "js-base64": "^3.7.2",
34
- "mammoth": "^1.12.0",
35
- "minimist": "^1.2.6",
36
- "node-html-markdown": "^2.0.0",
37
- "request": "^2.88.2",
38
- "sql.js": "^1.11.0",
39
- "tiny-pinyin": "^1.3.2",
40
- "xlsx": "^0.18.5"
41
- },
42
- "devDependencies": {
43
- "@types/node": "^22.0.0",
44
- "@types/sql.js": "^1.4.11",
45
- "tsx": "^4.19.0",
46
- "typescript": "^5.6.0"
47
- }
48
- }
1
+ {
2
+ "name": "weaver-e10-builder",
3
+ "version": "1.2.3",
4
+ "description": "Eteams/Ebuilder CLI — 泛微 OA 命令行工具",
5
+ "type": "module",
6
+ "files": [
7
+ "dist",
8
+ "ecodecmd",
9
+ "skill-docs"
10
+ ],
11
+ "bin": {
12
+ "e10-cli": "./dist/index.js",
13
+ "ecodecmd": "./ecodecmd/src/index.js"
14
+ },
15
+ "scripts": {
16
+ "dev": "tsx src/index.ts",
17
+ "build": "tsc",
18
+ "postinstall": "node ./dist/postinstall.js",
19
+ "pack:all": "node scripts/pack-editions.mjs",
20
+ "sync:docs": "node scripts/sync-skill-docs.mjs",
21
+ "start": "node dist/index.js",
22
+ "test": "tsx --test \"test/**/*.test.ts\""
23
+ },
24
+ "dependencies": {
25
+ "@napi-rs/keyring": "^1.3.0",
26
+ "archiver": "^5.3.1",
27
+ "axios": "^1.3.4",
28
+ "chalk": "^5.0.1",
29
+ "chokidar": "^3.5.3",
30
+ "commander": "^13.0.0",
31
+ "debug": "^4.3.4",
32
+ "fs-extra": "^10.1.0",
33
+ "js-base64": "^3.7.2",
34
+ "mammoth": "^1.12.0",
35
+ "minimist": "^1.2.6",
36
+ "node-html-markdown": "^2.0.0",
37
+ "request": "^2.88.2",
38
+ "sql.js": "^1.11.0",
39
+ "tiny-pinyin": "^1.3.2",
40
+ "xlsx": "^0.18.5"
41
+ },
42
+ "devDependencies": {
43
+ "@types/node": "^22.0.0",
44
+ "@types/sql.js": "^1.4.11",
45
+ "tsx": "^4.19.0",
46
+ "typescript": "^5.6.0"
47
+ }
48
+ }