weaver-e10-builder 1.5.10 → 1.5.11

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 (211) hide show
  1. package/dist/commands/app.d.ts.map +1 -1
  2. package/dist/commands/app.js +159 -8
  3. package/dist/commands/app.js.map +1 -1
  4. package/dist/commands/designer-setters.d.ts.map +1 -1
  5. package/dist/commands/designer-setters.js +26 -4
  6. package/dist/commands/designer-setters.js.map +1 -1
  7. package/dist/commands/form-association-manage.d.ts.map +1 -1
  8. package/dist/commands/form-association-manage.js +3 -0
  9. package/dist/commands/form-association-manage.js.map +1 -1
  10. package/dist/commands/form-button-actions-cmd.d.ts +3 -0
  11. package/dist/commands/form-button-actions-cmd.d.ts.map +1 -0
  12. package/dist/commands/form-button-actions-cmd.js +309 -0
  13. package/dist/commands/form-button-actions-cmd.js.map +1 -0
  14. package/dist/commands/form-button-permission-cmd.d.ts +3 -0
  15. package/dist/commands/form-button-permission-cmd.d.ts.map +1 -0
  16. package/dist/commands/form-button-permission-cmd.js +132 -0
  17. package/dist/commands/form-button-permission-cmd.js.map +1 -0
  18. package/dist/commands/form-button-props-cmd.d.ts +3 -0
  19. package/dist/commands/form-button-props-cmd.d.ts.map +1 -0
  20. package/dist/commands/form-button-props-cmd.js +236 -0
  21. package/dist/commands/form-button-props-cmd.js.map +1 -0
  22. package/dist/commands/form-button.d.ts.map +1 -1
  23. package/dist/commands/form-button.js +82 -55
  24. package/dist/commands/form-button.js.map +1 -1
  25. package/dist/commands/form-formula-linkage.d.ts.map +1 -1
  26. package/dist/commands/form-formula-linkage.js +154 -63
  27. package/dist/commands/form-formula-linkage.js.map +1 -1
  28. package/dist/commands/form-list-permission.d.ts.map +1 -1
  29. package/dist/commands/form-list-permission.js +29 -3
  30. package/dist/commands/form-list-permission.js.map +1 -1
  31. package/dist/commands/form-list-search-group.d.ts.map +1 -1
  32. package/dist/commands/form-list-search-group.js +66 -3
  33. package/dist/commands/form-list-search-group.js.map +1 -1
  34. package/dist/commands/form-list-utils.d.ts +14 -0
  35. package/dist/commands/form-list-utils.d.ts.map +1 -1
  36. package/dist/commands/form-list-utils.js +65 -4
  37. package/dist/commands/form-list-utils.js.map +1 -1
  38. package/dist/commands/form-message.d.ts.map +1 -1
  39. package/dist/commands/form-message.js +16 -4
  40. package/dist/commands/form-message.js.map +1 -1
  41. package/dist/commands/form-permission.d.ts +20 -0
  42. package/dist/commands/form-permission.d.ts.map +1 -1
  43. package/dist/commands/form-permission.js +69 -11
  44. package/dist/commands/form-permission.js.map +1 -1
  45. package/dist/commands/menu-permission.d.ts.map +1 -1
  46. package/dist/commands/menu-permission.js +6 -7
  47. package/dist/commands/menu-permission.js.map +1 -1
  48. package/dist/commands/menu.d.ts.map +1 -1
  49. package/dist/commands/menu.js +63 -40
  50. package/dist/commands/menu.js.map +1 -1
  51. package/dist/commands/wf-form.d.ts.map +1 -1
  52. package/dist/commands/wf-form.js +56 -36
  53. package/dist/commands/wf-form.js.map +1 -1
  54. package/dist/commands/workflow-function-management.d.ts +5 -0
  55. package/dist/commands/workflow-function-management.d.ts.map +1 -0
  56. package/dist/commands/workflow-function-management.js +91 -0
  57. package/dist/commands/workflow-function-management.js.map +1 -0
  58. package/dist/commands/workflow-node-assign-flow.d.ts.map +1 -1
  59. package/dist/commands/workflow-node-assign-flow.js +1 -0
  60. package/dist/commands/workflow-node-assign-flow.js.map +1 -1
  61. package/dist/commands/workflow-node-sign.d.ts +0 -12
  62. package/dist/commands/workflow-node-sign.d.ts.map +1 -1
  63. package/dist/commands/workflow-node-sign.js +31 -102
  64. package/dist/commands/workflow-node-sign.js.map +1 -1
  65. package/dist/commands/workflow-opinion-settings.d.ts +5 -0
  66. package/dist/commands/workflow-opinion-settings.d.ts.map +1 -0
  67. package/dist/commands/workflow-opinion-settings.js +51 -0
  68. package/dist/commands/workflow-opinion-settings.js.map +1 -0
  69. package/dist/commands/workflow-subprocess.d.ts.map +1 -1
  70. package/dist/commands/workflow-subprocess.js +370 -20
  71. package/dist/commands/workflow-subprocess.js.map +1 -1
  72. package/dist/commands/workflow.d.ts.map +1 -1
  73. package/dist/commands/workflow.js +35 -61
  74. package/dist/commands/workflow.js.map +1 -1
  75. package/dist/index.js +4 -0
  76. package/dist/index.js.map +1 -1
  77. package/dist/services/actionflow/calendar_mapper.d.ts.map +1 -1
  78. package/dist/services/actionflow/calendar_mapper.js +30 -4
  79. package/dist/services/actionflow/calendar_mapper.js.map +1 -1
  80. package/dist/services/actionflow/component_registry.d.ts.map +1 -1
  81. package/dist/services/actionflow/component_registry.js +6 -0
  82. package/dist/services/actionflow/component_registry.js.map +1 -1
  83. package/dist/services/actionflow/components/meeting_create.d.ts.map +1 -1
  84. package/dist/services/actionflow/components/meeting_create.js +5 -1
  85. package/dist/services/actionflow/components/meeting_create.js.map +1 -1
  86. package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
  87. package/dist/services/actionflow/components/workflow_actions.js +15 -3
  88. package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
  89. package/dist/services/actionflow/formula_service.d.ts +7 -0
  90. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  91. package/dist/services/actionflow/formula_service.js +25 -0
  92. package/dist/services/actionflow/formula_service.js.map +1 -1
  93. package/dist/services/app-publish.d.ts +25 -0
  94. package/dist/services/app-publish.d.ts.map +1 -1
  95. package/dist/services/app-publish.js +38 -0
  96. package/dist/services/app-publish.js.map +1 -1
  97. package/dist/services/app-range.d.ts +66 -0
  98. package/dist/services/app-range.d.ts.map +1 -0
  99. package/dist/services/app-range.js +137 -0
  100. package/dist/services/app-range.js.map +1 -0
  101. package/dist/services/form-association.d.ts +13 -0
  102. package/dist/services/form-association.d.ts.map +1 -1
  103. package/dist/services/form-association.js +42 -0
  104. package/dist/services/form-association.js.map +1 -1
  105. package/dist/services/form-button-action.d.ts +82 -0
  106. package/dist/services/form-button-action.d.ts.map +1 -1
  107. package/dist/services/form-button-action.js +194 -2
  108. package/dist/services/form-button-action.js.map +1 -1
  109. package/dist/services/form-button-condition.d.ts +45 -0
  110. package/dist/services/form-button-condition.d.ts.map +1 -0
  111. package/dist/services/form-button-condition.js +106 -0
  112. package/dist/services/form-button-condition.js.map +1 -0
  113. package/dist/services/form-button-context.d.ts +41 -0
  114. package/dist/services/form-button-context.d.ts.map +1 -0
  115. package/dist/services/form-button-context.js +54 -0
  116. package/dist/services/form-button-context.js.map +1 -0
  117. package/dist/services/form-button-logicflow.d.ts +30 -0
  118. package/dist/services/form-button-logicflow.d.ts.map +1 -0
  119. package/dist/services/form-button-logicflow.js +59 -0
  120. package/dist/services/form-button-logicflow.js.map +1 -0
  121. package/dist/services/form-button-org.d.ts +30 -0
  122. package/dist/services/form-button-org.d.ts.map +1 -0
  123. package/dist/services/form-button-org.js +80 -0
  124. package/dist/services/form-button-org.js.map +1 -0
  125. package/dist/services/form-button-permission.d.ts +65 -0
  126. package/dist/services/form-button-permission.d.ts.map +1 -0
  127. package/dist/services/form-button-permission.js +113 -0
  128. package/dist/services/form-button-permission.js.map +1 -0
  129. package/dist/services/form-button-position.d.ts +4 -18
  130. package/dist/services/form-button-position.d.ts.map +1 -1
  131. package/dist/services/form-button-position.js +4 -36
  132. package/dist/services/form-button-position.js.map +1 -1
  133. package/dist/services/form-button-props.d.ts +55 -0
  134. package/dist/services/form-button-props.d.ts.map +1 -0
  135. package/dist/services/form-button-props.js +90 -0
  136. package/dist/services/form-button-props.js.map +1 -0
  137. package/dist/services/form-button-save.d.ts +49 -0
  138. package/dist/services/form-button-save.d.ts.map +1 -0
  139. package/dist/services/form-button-save.js +54 -0
  140. package/dist/services/form-button-save.js.map +1 -0
  141. package/dist/services/form-formula-linkage.d.ts +116 -20
  142. package/dist/services/form-formula-linkage.d.ts.map +1 -1
  143. package/dist/services/form-formula-linkage.js +250 -38
  144. package/dist/services/form-formula-linkage.js.map +1 -1
  145. package/dist/services/form-list-search-group.d.ts +17 -2
  146. package/dist/services/form-list-search-group.d.ts.map +1 -1
  147. package/dist/services/form-list-search-group.js +29 -12
  148. package/dist/services/form-list-search-group.js.map +1 -1
  149. package/dist/services/form-list-search.d.ts.map +1 -1
  150. package/dist/services/form-list-search.js +4 -0
  151. package/dist/services/form-list-search.js.map +1 -1
  152. package/dist/services/form-list-stats.d.ts.map +1 -1
  153. package/dist/services/form-list-stats.js +9 -2
  154. package/dist/services/form-list-stats.js.map +1 -1
  155. package/dist/services/form-message.d.ts +26 -7
  156. package/dist/services/form-message.d.ts.map +1 -1
  157. package/dist/services/form-message.js +52 -5
  158. package/dist/services/form-message.js.map +1 -1
  159. package/dist/services/form-permission-archive.d.ts +9 -1
  160. package/dist/services/form-permission-archive.d.ts.map +1 -1
  161. package/dist/services/form-permission-archive.js +38 -22
  162. package/dist/services/form-permission-archive.js.map +1 -1
  163. package/dist/services/form-view-populate.d.ts.map +1 -1
  164. package/dist/services/form-view-populate.js +7 -0
  165. package/dist/services/form-view-populate.js.map +1 -1
  166. package/dist/services/icon-path.d.ts +70 -0
  167. package/dist/services/icon-path.d.ts.map +1 -0
  168. package/dist/services/icon-path.js +80 -0
  169. package/dist/services/icon-path.js.map +1 -0
  170. package/dist/services/matrix-condition.d.ts +161 -0
  171. package/dist/services/matrix-condition.d.ts.map +1 -0
  172. package/dist/services/matrix-condition.js +403 -0
  173. package/dist/services/matrix-condition.js.map +1 -0
  174. package/dist/services/menu-catalog.d.ts +33 -0
  175. package/dist/services/menu-catalog.d.ts.map +1 -1
  176. package/dist/services/menu-catalog.js +56 -0
  177. package/dist/services/menu-catalog.js.map +1 -1
  178. package/dist/services/permission-entity.d.ts +55 -0
  179. package/dist/services/permission-entity.d.ts.map +1 -0
  180. package/dist/services/permission-entity.js +79 -0
  181. package/dist/services/permission-entity.js.map +1 -0
  182. package/dist/services/workflow-assign-flow.d.ts.map +1 -1
  183. package/dist/services/workflow-assign-flow.js.map +1 -1
  184. package/dist/services/workflow-function-management.d.ts +123 -0
  185. package/dist/services/workflow-function-management.d.ts.map +1 -0
  186. package/dist/services/workflow-function-management.js +425 -0
  187. package/dist/services/workflow-function-management.js.map +1 -0
  188. package/dist/services/workflow-matrix-rule.d.ts +34 -0
  189. package/dist/services/workflow-matrix-rule.d.ts.map +1 -0
  190. package/dist/services/workflow-matrix-rule.js +94 -0
  191. package/dist/services/workflow-matrix-rule.js.map +1 -0
  192. package/dist/services/workflow-opinion-settings.d.ts +67 -0
  193. package/dist/services/workflow-opinion-settings.d.ts.map +1 -0
  194. package/dist/services/workflow-opinion-settings.js +328 -0
  195. package/dist/services/workflow-opinion-settings.js.map +1 -0
  196. package/package.json +1 -1
  197. package/skill-docs/SKILL.md +5 -5
  198. package/skill-docs/_catalog.md +3 -0
  199. package/skill-docs/actionflows/references/components/calendar/MeetingCreate.md +2 -0
  200. package/skill-docs/actionflows/references/components/workflow/ApproveDelete.md +1 -1
  201. package/skill-docs/references/common/ref-cli-commands.md +60 -22
  202. package/skill-docs/references/ebuilder-designer/guide-designer-components.md +9 -0
  203. package/skill-docs/references/form/guide-form-archive-permission.md +55 -2
  204. package/skill-docs/references/form/guide-form-association.md +13 -0
  205. package/skill-docs/references/form/guide-form-button.md +87 -0
  206. package/skill-docs/references/form/guide-form-message.md +19 -2
  207. package/skill-docs/references/form/guide-form-view.md +23 -3
  208. package/skill-docs/references/form/guide-formula-linkage.md +42 -11
  209. package/skill-docs/references/workflow/guide-function-management.md +154 -0
  210. package/skill-docs/references/workflow/guide-opinion-settings.md +126 -0
  211. package/skill-docs/references/workflow/guide-workflow.md +22 -6
@@ -0,0 +1,67 @@
1
+ import { type Client, type Config, type Form } from './workflow-function-management.js';
2
+ export declare const signFields: string[];
3
+ export declare const draftFields: string[];
4
+ export declare const widgetFields: string[];
5
+ export declare function booleanValue(v: any): boolean;
6
+ export declare function resultData(r: any, label: string): any;
7
+ export declare function settings(form: Form): Config;
8
+ export declare function verifySettings(expected: Config, actual: Config, fields: string[]): void;
9
+ /** Endpoint-specific snapshots; GET defaults, explicit patch, single POST, verified readback. */
10
+ export declare class OpinionSettings {
11
+ client: Client;
12
+ base: string;
13
+ constructor(client: Client, base: string);
14
+ get(path: string, query: Config): Promise<any>;
15
+ post(path: string, payload: Config): Promise<any>;
16
+ sign(workflowId: string, nodeId: string): Promise<Form>;
17
+ browserOptions(form: Form, field: string): Promise<Config[]>;
18
+ browserValues(form: Form, field: string, input: any): Promise<Config[]>;
19
+ patchForm(form: Form, patch: Config, allowed: string[]): Promise<Config>;
20
+ private wire;
21
+ saveSign(w: string, n: string, patch: Config): Promise<{
22
+ workflowId: string;
23
+ nodeId: string;
24
+ before: Config;
25
+ after: Config;
26
+ verified: boolean;
27
+ }>;
28
+ forward(w: string, n: string): Promise<Config>;
29
+ saveForward(w: string, n: string, patch: Config): Promise<{
30
+ workflowId: string;
31
+ nodeId: string;
32
+ before: Config;
33
+ after: Config;
34
+ verified: boolean;
35
+ }>;
36
+ draft(w: string): Promise<Form>;
37
+ saveDraft(w: string, patch: Config): Promise<{
38
+ workflowId: string;
39
+ before: Config;
40
+ after: Config;
41
+ verified: boolean;
42
+ }>;
43
+ widgets(w: string): Promise<Config[]>;
44
+ widget(w: string, widgetId: string): Promise<Form>;
45
+ saveWidget(w: string, widgetId: string, patch: Config): Promise<{
46
+ workflowId: string;
47
+ widgetId: string;
48
+ before: Config;
49
+ after: Config;
50
+ verified: boolean;
51
+ }>;
52
+ content(w: string): Promise<any>;
53
+ saveContent(w: string, patch: Config): Promise<{
54
+ workflowId: string;
55
+ before: any;
56
+ after: any;
57
+ verified: boolean;
58
+ }>;
59
+ style(w: string): Promise<any>;
60
+ saveStyle(w: string, patch: Config): Promise<{
61
+ workflowId: string;
62
+ before: any;
63
+ after: any;
64
+ verified: boolean;
65
+ }>;
66
+ }
67
+ //# sourceMappingURL=workflow-opinion-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-opinion-settings.d.ts","sourceRoot":"","sources":["../../src/services/workflow-opinion-settings.ts"],"names":[],"mappings":"AACA,OAAO,EAAM,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,KAAK,IAAI,EAAE,MAAM,mCAAmC,CAAC;AAI5F,eAAO,MAAM,UAAU,UAAkR,CAAC;AAC1S,eAAO,MAAM,WAAW,UAAyJ,CAAC;AAClL,eAAO,MAAM,YAAY,UAA6N,CAAC;AAGvP,wBAAgB,YAAY,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAI5C;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,GAAG,GAAG,CAKrD;AAKD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAQ3C;AAqBD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAGhF;AAED,iGAAiG;AACjG,qBAAa,eAAe;IACP,MAAM,EAAE,MAAM;IAAS,IAAI,EAAE,MAAM;gBAAnC,MAAM,EAAE,MAAM,EAAS,IAAI,EAAE,MAAM;IAChD,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM;IAG/B,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAClC,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAGvD,cAAc,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAgB5D,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAWvE,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAY9E,OAAO,CAAC,IAAI;IAKN,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAC,CAAC,EAAE,MAAM,EAAC,KAAK,EAAE,MAAM;;;;;;;IAc1C,OAAO,CAAC,CAAC,EAAE,MAAM,EAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK7C,WAAW,CAAC,CAAC,EAAE,MAAM,EAAC,CAAC,EAAE,MAAM,EAAC,KAAK,EAAE,MAAM;;;;;;;IAgB7C,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAG/B,SAAS,CAAC,CAAC,EAAE,MAAM,EAAC,KAAK,EAAE,MAAM;;;;;;IASjC,OAAO,CAAC,CAAC,EAAE,MAAM;IAYjB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKjD,UAAU,CAAC,CAAC,EAAE,MAAM,EAAC,QAAQ,EAAE,MAAM,EAAC,KAAK,EAAE,MAAM;;;;;;;IAkBnD,OAAO,CAAC,CAAC,EAAE,MAAM;IACjB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAC,KAAK,EAAE,MAAM;;;;;;IAWnC,KAAK,CAAC,CAAC,EAAE,MAAM;IACf,SAAS,CAAC,CAAC,EAAE,MAAM,EAAC,KAAK,EAAE,MAAM;;;;;;CA0BxC"}
@@ -0,0 +1,328 @@
1
+ import { isDeepStrictEqual } from 'node:util';
2
+ import { id } from './workflow-function-management.js';
3
+ const P = '/api/bs/workflow/pathdef';
4
+ const D = `${P}/pathSet/draftopinion`;
5
+ export const signFields = ['mustInputDto', 'inputOperateTypeSelectDto', 'inputOperateTypeDto', 'hideInput', 'signOperateTypeSelect', 'signOperateTypeList', 'hideArea', 'viewTypeSelectDto', 'viewTypeDto', 'viewEmptyNotShow', 'viewRangeSelectDto', 'viewRangeDto', 'notSeeEachOther', 'feedback', 'nullNotFeedback'];
6
+ export const draftFields = ['openCustomSet', 'openTextarea', 'defautFont', 'defaultFontSize', 'showBlank', 'openSearch', 'opinionOrder', 'showLog', 'pcFillMethod', 'alertEndCountersign'];
7
+ export const widgetFields = ['opinionType', 'enableCountersign', 'conterSignType', 'typeBfSignDepart', 'typeBfSignSubcom', 'typeAfSign', 'enableCopyClear', 'copyClearOperate', 'copyClearNode', 'enableGenerateRecord', 'agentRecordOperate', 'agentRecordNode'];
8
+ const forwardFields = ['isForward', 'allowSubOpt', 'allowForward', 'allowSubOptCusName', 'allowForwardCusName'];
9
+ const scalar = (v) => String(Array.isArray(v) ? v[0] ?? '' : v ?? '');
10
+ export function booleanValue(v) {
11
+ if ([true, 1, '1'].includes(v))
12
+ return true;
13
+ if ([false, 0, '0'].includes(v))
14
+ return false;
15
+ throw Error('开关必须为 true/false 或 0/1');
16
+ }
17
+ export function resultData(r, label) {
18
+ if (!r || r.code !== 200 || r.status === false || r.fail === true || r.data === false || r.data?.status === false || r.data?.status === 'failed') {
19
+ throw Error(`${label}失败: ${r?.data?.errorInfo || r?.msg || '无有效响应'}`);
20
+ }
21
+ return r.data;
22
+ }
23
+ function formOf(v) {
24
+ if (!v?.data || !v?.items || Array.isArray(v.data) || !Object.keys(v.data).length)
25
+ throw Error('未读到服务端配置/默认值,停止写入');
26
+ return v;
27
+ }
28
+ export function settings(form) {
29
+ const d = structuredClone(form.data);
30
+ for (const [k, item] of Object.entries(form.items)) {
31
+ if (!(k in d))
32
+ continue;
33
+ if (item.itemType === 'SWITCH')
34
+ d[k] = booleanValue(d[k]);
35
+ else if (['SELECT', 'RADIO'].includes(item.itemType))
36
+ d[k] = scalar(d[k]);
37
+ }
38
+ return d;
39
+ }
40
+ function keys(p, allowed) {
41
+ if (!p || typeof p !== 'object' || Array.isArray(p))
42
+ throw Error('设置必须是 JSON 对象');
43
+ for (const k of Object.keys(p))
44
+ if (!allowed.includes(k))
45
+ throw Error(`不支持设置 ${k};可用字段:${allowed.join(', ')}`);
46
+ }
47
+ function enumValue(v, item, k) {
48
+ const s = scalar(v), options = item?.options;
49
+ if (!Array.isArray(options) || !options.length)
50
+ throw Error(`${k} 未返回服务端选项`);
51
+ const matches = options.filter((o) => !o.disabled && (String(o.id) === s || o.content === s));
52
+ if (matches.length !== 1)
53
+ throw Error(`${k} 无效或有歧义:${s};允许:${options.filter((o) => !o.disabled).map((o) => `${o.id}=${o.content}`).join(', ')}`);
54
+ return String(matches[0].id);
55
+ }
56
+ function comparable(v) {
57
+ if (Array.isArray(v))
58
+ return v.map(x => x && typeof x === 'object' && 'id' in x ? String(x.id) : comparable(x)).sort();
59
+ if (v && typeof v === 'object') {
60
+ if ('inputValue' in v)
61
+ return v.inputValue;
62
+ return Object.fromEntries(Object.keys(v).sort().map(k => [k, comparable(v[k])]));
63
+ }
64
+ if (v === true || v === false)
65
+ return v ? '1' : '0';
66
+ return v == null ? v : String(v);
67
+ }
68
+ export function verifySettings(expected, actual, fields) {
69
+ const diff = fields.filter(k => k in expected && !isDeepStrictEqual(comparable(expected[k]), comparable(actual[k])));
70
+ if (diff.length)
71
+ throw Error(`保存已发出,但回读不一致:${diff.join(', ')}。请先查询当前状态,不要直接重试。`);
72
+ }
73
+ /** Endpoint-specific snapshots; GET defaults, explicit patch, single POST, verified readback. */
74
+ export class OpinionSettings {
75
+ client;
76
+ base;
77
+ constructor(client, base) {
78
+ this.client = client;
79
+ this.base = base;
80
+ }
81
+ async get(path, query) {
82
+ return resultData(await this.client.get(this.base + path + '?' + new URLSearchParams(Object.entries(query).map(([k, v]) => [k, String(v)]))), path);
83
+ }
84
+ async post(path, payload) { return resultData(await this.client.post(this.base + path, payload), path); }
85
+ async sign(workflowId, nodeId) {
86
+ return formOf(await this.get(`${P}/nodesign/getSignConfigForm`, { workflowId: id(workflowId), nodeId: id(nodeId) }));
87
+ }
88
+ async browserOptions(form, field) {
89
+ const b = form.items[field]?.browserBean;
90
+ // Only the two workflow-owned browser types are needed here; never follow arbitrary URLs.
91
+ if (b?.module !== 'workflow/pathdef' || !['workflowOperateTypeBrowser', 'workflowPathNodeBrowser'].includes(b.type))
92
+ throw Error(`${field} 未返回支持的浏览类型`);
93
+ const all = [], seen = new Set();
94
+ for (let current = 1; current <= 100; current++) {
95
+ const d = await this.post(`/api/${b.module}/common/browser/data/${b.type}`, { ...b.commonParams, ...b.dataParams, current, pageNo: current, pageSize: 100 });
96
+ if (!Array.isArray(d?.data))
97
+ throw Error(`${field} 浏览候选格式异常`);
98
+ const rows = d.data;
99
+ if (rows.some((r) => seen.has(String(r.id))))
100
+ throw Error(`${field} 浏览分页重复,停止写入`);
101
+ rows.forEach((r) => { seen.add(String(r.id)); all.push(r); });
102
+ if (d.total !== undefined ? all.length >= Number(d.total) : rows.length < 100)
103
+ return all;
104
+ if (!rows.length)
105
+ throw Error(`${field} 浏览候选分页不完整`);
106
+ }
107
+ throw Error(`${field} 浏览候选超过分页上限`);
108
+ }
109
+ async browserValues(form, field, input) {
110
+ if (!Array.isArray(input) || input.some(v => typeof v !== 'string'))
111
+ throw Error(`${field} 请传名称或字符串 ID 数组`);
112
+ if (!input.length)
113
+ return [];
114
+ const available = await this.browserOptions(form, field), used = new Set();
115
+ return input.map(v => {
116
+ const found = available.filter(o => String(o.id) === v || (o.name ?? o.content) === v);
117
+ if (found.length !== 1 || found[0].disabled || found[0].isDelete)
118
+ throw Error(`${field} 未找到唯一可选值:${v}`);
119
+ const row = found[0], key = String(row.id);
120
+ if (used.has(key))
121
+ throw Error(`${field} 重复值:${v}`);
122
+ used.add(key);
123
+ return { id: key, dataId: key, content: row.name ?? row.content, isDelete: false, isComplete: false, _entityImId: 0, _secretLevel: 0, _secretLevelEnd: 0 };
124
+ });
125
+ }
126
+ async patchForm(form, patch, allowed) {
127
+ keys(patch, allowed);
128
+ const next = settings(form);
129
+ for (const [k, v] of Object.entries(patch)) {
130
+ const item = form.items[k];
131
+ if (!item || !(k in next) || item.readOnly || item.disable)
132
+ throw Error(`${k} 当前环境不可编辑`);
133
+ if (item.itemType === 'SWITCH')
134
+ next[k] = booleanValue(v);
135
+ else if (['SELECT', 'RADIO'].includes(item.itemType))
136
+ next[k] = enumValue(v, item, k);
137
+ else if (item.itemType === 'BROWSER')
138
+ next[k] = await this.browserValues(form, k, v);
139
+ else
140
+ throw Error(`${k} 不支持直接写入;需使用对应子配置命令`);
141
+ }
142
+ return next;
143
+ }
144
+ wire(form, data) {
145
+ const out = { ...data };
146
+ for (const [k, item] of Object.entries(form.items))
147
+ if (k in out && item.itemType === 'SWITCH')
148
+ out[k] = booleanValue(out[k]) ? 1 : 0;
149
+ return out;
150
+ }
151
+ async saveSign(w, n, patch) {
152
+ const form = await this.sign(w, n), before = settings(form), next = await this.patchForm(form, patch, signFields);
153
+ if (next.mustInputDto === '1' && next.hideInput && ('hideInput' in patch || 'mustInputDto' in patch))
154
+ throw Error('全部必填时不能隐藏意见输入框;请显式设置 hideInput:false');
155
+ for (const [mode, list] of [['inputOperateTypeSelectDto', 'inputOperateTypeDto'], ['viewTypeSelectDto', 'viewTypeDto'], ['viewRangeSelectDto', 'viewRangeDto']]) {
156
+ if ((mode in patch || list in patch) && next[mode] !== '0' && !(next[list]?.length) && (mode !== 'inputOperateTypeSelectDto' || next.mustInputDto === '2'))
157
+ throw Error(`${mode} 为选择/排除时 ${list} 不能为空`);
158
+ }
159
+ // Server clears node selection for mode=all. Make that deliberate, rather than silently discarding it.
160
+ if (next.viewRangeSelectDto === '0' && next.viewRangeDto?.length && 'viewRangeSelectDto' in patch)
161
+ throw Error('全部节点模式须同时显式传 viewRangeDto:[]');
162
+ const payload = { ...this.wire(form, next), workflowId: w, nodeId: n, workflowIdDto: w, nodeIdDto: n, isSync: false };
163
+ delete payload.id;
164
+ await this.post(`${P}/nodesign/saveSignConfig`, payload);
165
+ const after = settings(await this.sign(w, n));
166
+ verifySettings(next, after, signFields);
167
+ return { workflowId: w, nodeId: n, before, after, verified: true };
168
+ }
169
+ async forward(w, n) {
170
+ const d = await this.get(`${P}/nodeForwardSet/getNodeForwardSet`, { workflowId: id(w), nodeId: id(n) });
171
+ for (const k of ['todo', 'done', 'end'])
172
+ if (!d?.[k] || forwardFields.some(f => !(f in d[k])))
173
+ throw Error('节点转发默认值不完整,停止写入');
174
+ return d;
175
+ }
176
+ async saveForward(w, n, patch) {
177
+ keys(patch, ['todo', 'done', 'end']);
178
+ const before = await this.forward(w, n), next = structuredClone(before);
179
+ for (const [stage, changes] of Object.entries(patch)) {
180
+ keys(changes, forwardFields);
181
+ for (const [k, v] of Object.entries(changes)) {
182
+ if (k.endsWith('CusName')) {
183
+ if (typeof v !== 'string')
184
+ throw Error(`${stage}.${k} 应为名称字符串(空串恢复默认名称)`);
185
+ next[stage][k] = { ...next[stage][k], inputValue: v };
186
+ }
187
+ else
188
+ next[stage][k] = booleanValue(v);
189
+ }
190
+ }
191
+ await this.post(`${P}/nodeForwardSet/saveNodeForwardSet`, { ...next, workflowId: w, nodeId: n, isSync: false });
192
+ const after = await this.forward(w, n);
193
+ for (const s of ['todo', 'done', 'end'])
194
+ verifySettings(next[s], after[s], forwardFields);
195
+ return { workflowId: w, nodeId: n, before, after, verified: true };
196
+ }
197
+ async draft(w) {
198
+ return formOf((await this.get(`${D}/getDraftOpinionConfig`, { workflowId: id(w), isGlobal: false }))?.weaForm);
199
+ }
200
+ async saveDraft(w, patch) {
201
+ const form = await this.draft(w), before = settings(form), next = await this.patchForm(form, patch, draftFields);
202
+ const payload = this.wire(form, next);
203
+ // Gear ticks are view state. Sending displayContent:false to the entity's String field would corrupt the template.
204
+ for (const k of ['fieldSet', 'displayContent', 'menuStyle', 'logviewer'])
205
+ delete payload[k];
206
+ await this.post(`${D}/saveDraftOpinionConfig`, { ...payload, workflowid: w, isGlobal: 0 });
207
+ const after = settings(await this.draft(w));
208
+ verifySettings(next, after, draftFields);
209
+ return { workflowId: w, before, after, verified: true };
210
+ }
211
+ async widgets(w) {
212
+ id(w);
213
+ const all = [];
214
+ for (let current = 1; current <= 100; current++) {
215
+ const d = await this.post(`${D}/getDraftOpinionWidgetList`, { workflowId: w, current, pageSize: 100 });
216
+ if (!Array.isArray(d?.data))
217
+ throw Error('拟签字段列表格式异常');
218
+ if (d.data.some((r) => all.some(o => String(o.widgetId) === String(r.widgetId))))
219
+ throw Error('拟签字段分页重复');
220
+ all.push(...d.data);
221
+ if (d.total !== undefined ? all.length >= Number(d.total) : d.data.length < 100)
222
+ return all;
223
+ if (!d.data.length)
224
+ throw Error('拟签字段分页不完整');
225
+ }
226
+ throw Error('拟签字段超出分页上限');
227
+ }
228
+ async widget(w, widgetId) {
229
+ id(widgetId);
230
+ if (!(await this.widgets(w)).some(r => String(r.widgetId) === widgetId))
231
+ throw Error(`拟签控件 ${widgetId} 不属于流程或尚未在布局中保存`);
232
+ return formOf((await this.get(`${D}/getDraftOpinionWidgetConfig`, { workflowId: w, widgetId, isDesign: false }))?.weaForm);
233
+ }
234
+ async saveWidget(w, widgetId, patch) {
235
+ const form = await this.widget(w, widgetId), before = settings(form), next = await this.patchForm(form, patch, widgetFields);
236
+ if (next.opinionType !== '1' && (next.enableCopyClear || next.enableGenerateRecord))
237
+ throw Error('抄清、代录仅支持一人一条意见;切换类型前请显式关闭二者');
238
+ const dimension = ['0', '1'].includes(next.conterSignType) ? 'typeBfSignDepart' : 'typeBfSignSubcom';
239
+ const inactive = dimension === 'typeBfSignDepart' ? 'typeBfSignSubcom' : 'typeBfSignDepart';
240
+ if (inactive in patch && next[inactive] !== next[dimension])
241
+ throw Error(`${inactive} 与当前拟签维度不符,请设置 ${dimension}`);
242
+ if (next.opinionType === '0' && next[dimension] === '2')
243
+ throw Error('多人编辑同一条意见不支持“不允许互相查看”');
244
+ for (const [enabled, mode, list, group] of [['enableCopyClear', 'copyClearOperate', 'copyClearNode', 'copyClearOpGroupid'], ['enableGenerateRecord', 'agentRecordOperate', 'agentRecordNode', 'agentRecordOpGroupid']]) {
245
+ if (next[enabled] && next[mode] === '1' && (!next[list]?.length || !/^[1-9]\d*$/.test(String(next[group]))))
246
+ throw Error(`${enabled} 选择节点操作者需要已设置节点及操作者范围`);
247
+ }
248
+ if (next.enableCountersign && !(next.finishOperator?.length || next.finishNode?.length))
249
+ throw Error('启用组织拟签前需在系统配置结束拟签操作者/节点');
250
+ await this.post(`${D}/saveDraftOpinionWidgetConfig`, { ...this.wire(form, next), workflowid: w, widgetId, isDesign: false });
251
+ const after = settings(await this.widget(w, widgetId));
252
+ // Both UI aliases read the same stored typeBfSign column.
253
+ next.typeBfSignDepart = next.typeBfSignSubcom = next[dimension];
254
+ verifySettings(next, after, [...widgetFields, 'finishNode', 'finishOperator', 'copyClearOpGroupid', 'agentRecordOpGroupid']);
255
+ return { workflowId: w, widgetId, before, after, verified: true };
256
+ }
257
+ async content(w) { return this.get(`${P}/drapOpinionContent/getOpinionContent`, { workflowId: id(w) }); }
258
+ async saveContent(w, patch) {
259
+ keys(patch, ['displayContent']);
260
+ if (typeof patch.displayContent !== 'string')
261
+ throw Error('displayContent 必须为模板 HTML 字符串');
262
+ const before = await this.content(w);
263
+ const known = new Set([...before.contentFieldList, ...before.contentLabelList].map(o => o.key));
264
+ for (const m of patch.displayContent.matchAll(/\$([^$\s]+)\$/g))
265
+ if (!known.has(m[1]))
266
+ throw Error(`未知模板占位符:${m[1]}`);
267
+ // The template endpoint only UPDATEs; the configuration GET initializes a missing workflow record.
268
+ await this.draft(w);
269
+ await this.post(`${P}/drapOpinionContent/saveOpinionContent`, { workflowId: w, displayContent: encodeURIComponent(patch.displayContent) });
270
+ const after = await this.content(w);
271
+ verifySettings(patch, after, ['displayContent']);
272
+ return { workflowId: w, before, after, verified: true };
273
+ }
274
+ async style(w) { return this.get(`${P}/drapOpinionMenuStyle/getOpinionMenuStyle`, { workflowId: id(w) }); }
275
+ async saveStyle(w, patch) {
276
+ keys(patch, ['menuFont', 'fontSize', 'buttons']);
277
+ const before = await this.style(w);
278
+ const stylePatch = { ...patch };
279
+ delete stylePatch.buttons;
280
+ const form = formOf(before.menuStyleForm), next = await this.patchForm(form, stylePatch, ['menuFont', 'fontSize']);
281
+ const rows = structuredClone(before.menuTable.data);
282
+ if (patch.buttons !== undefined) {
283
+ if (!Array.isArray(patch.buttons))
284
+ throw Error('buttons 必须是以 menuKey 定位的局部修改数组');
285
+ const seen = new Set();
286
+ for (const b of patch.buttons) {
287
+ keys(b, ['menuKey', 'customName', 'menuColor', 'menuFontColor', 'menuBorderColor', 'menuOrderNum']);
288
+ const row = rows.find((r) => r.menuKey === b.menuKey);
289
+ if (!row || seen.has(b.menuKey))
290
+ throw Error(`按钮不存在或重复:${b.menuKey}`);
291
+ seen.add(b.menuKey);
292
+ for (const [k, v] of Object.entries(b)) {
293
+ if (k === 'menuKey')
294
+ continue;
295
+ if (k === 'customName') {
296
+ if (typeof v !== 'string')
297
+ throw Error('customName 必须为字符串');
298
+ row.menuNameMultilang = { ...row.menuNameMultilang, inputValue: v };
299
+ }
300
+ else if (k === 'menuOrderNum') {
301
+ if (!Number.isInteger(v) || Number(v) < 0)
302
+ throw Error('menuOrderNum 必须为非负整数');
303
+ row[k] = v;
304
+ }
305
+ else {
306
+ if (typeof v !== 'string' || !/^(-1|transparent|#[0-9a-fA-F]{3,8}|rgba?\([\d\s,.%]+\))$/.test(v))
307
+ throw Error(`${k} 颜色格式不正确`);
308
+ row[k] = v;
309
+ }
310
+ }
311
+ }
312
+ if (new Set(rows.map((r) => r.menuOrderNum)).size !== rows.length)
313
+ throw Error('按钮顺序重复,请同时指定相关按钮的新序号');
314
+ }
315
+ await this.draft(w);
316
+ await this.post(`${P}/drapOpinionMenuStyle/saveOpinionMenuStyle`, { workflowId: w, ...next, tableDatas: rows });
317
+ const after = await this.style(w);
318
+ verifySettings(next, settings(formOf(after.menuStyleForm)), ['menuFont', 'fontSize']);
319
+ for (const row of rows) {
320
+ const actual = after.menuTable.data.find((r) => r.menuKey === row.menuKey);
321
+ if (!actual)
322
+ throw Error(`回读缺少按钮 ${row.menuKey}`);
323
+ verifySettings(row, actual, ['menuColor', 'menuFontColor', 'menuBorderColor', 'menuOrderNum', 'menuNameMultilang']);
324
+ }
325
+ return { workflowId: w, before, after, verified: true };
326
+ }
327
+ }
328
+ //# sourceMappingURL=workflow-opinion-settings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow-opinion-settings.js","sourceRoot":"","sources":["../../src/services/workflow-opinion-settings.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "weaver-e10-builder",
3
- "version": "1.5.10",
3
+ "version": "1.5.11",
4
4
  "description": "Eteams/Ebuilder CLI — 泛微 OA 命令行工具",
5
5
  "type": "module",
6
6
  "files": [
@@ -2,11 +2,11 @@
2
2
  name: weaver-e10-builder
3
3
  display_name: 泛微E10智能搭建Skill
4
4
  display_name_en: E10 Builder
5
- description: 泛微E10智能搭建skill v2(通用版),辅助编写泛微Ebuilder自定义应用,对应CLI版本1.5.10
6
- description_zh: 泛微Ebuilder低代码应用智能搭建工具 v2(通用版),辅助编写自定义应用(表单/流程/列表/动作流/权限/分组/编号等),与 e10-cli 配套使用,当前对应 CLI 版本 1.5.10。
7
- description_en: E10 Ebuilder low-code app builder skill v2 (general) — helps build Weaver E10 custom apps (forms/workflows/lists/actionflows/permissions/groups/numbering) via e10-cli, currently paired with CLI 1.5.10.
5
+ description: 泛微E10智能搭建skill v2(通用版),辅助编写泛微Ebuilder自定义应用,对应CLI版本1.5.11
6
+ description_zh: 泛微Ebuilder低代码应用智能搭建工具 v2(通用版),辅助编写自定义应用(表单/流程/列表/动作流/权限/分组/编号等),与 e10-cli 配套使用,当前对应 CLI 版本 1.5.11。
7
+ description_en: E10 Ebuilder low-code app builder skill v2 (general) — helps build Weaver E10 custom apps (forms/workflows/lists/actionflows/permissions/groups/numbering) via e10-cli, currently paired with CLI 1.5.11.
8
8
  category: coding
9
- version: 1.5.10
9
+ version: 1.5.11
10
10
  author: 泛微网络科技股份有限公司
11
11
  auto: true
12
12
  ---
@@ -15,7 +15,7 @@ auto: true
15
15
 
16
16
  ## 安装与升级
17
17
 
18
- 本 skill 需与 CLI **版本匹配**(当前对应 CLI `1.5.10`)。版本不一致时命令/文档/选项可能对不上——升级前先对齐:
18
+ 本 skill 需与 CLI **版本匹配**(当前对应 CLI `1.5.11`)。版本不一致时命令/文档/选项可能对不上——升级前先对齐:
19
19
 
20
20
  ```shell
21
21
  e10-cli --version # 查 CLI 版本,应与上方 description 标注一致
@@ -25,9 +25,12 @@
25
25
  | 分类搜索、分类筛选、list-search-group、选项配置、日期粒度、选项排序 | `references/common/ref-cli-commands.md` |
26
26
  | 表单消息提醒、数据变动提醒、form message、提醒对象、推送渠道、IM提醒 | `references/form/guide-form-message.md` |
27
27
  | 表单数据读写、form data、写入数据、查询数据、删除数据 | `references/form/guide-form-data.md` |
28
+ | 关联页签、关联视图、数据关联、association、页签显示布局、关联数据筛选、删除关联页签 | `references/form/guide-form-association.md` |
28
29
  | 流程归档权限、归档查看/编辑/删除、归档附件权限、form permission archive、创建人相关、字段相关、矩阵相关、归档卡片 | `references/form/guide-form-archive-permission.md` |
29
30
  | 列表自定义文本列、富文本列、列里插入字段、form nlist、列表式视图 | `references/form/guide-list-custom-text.md` |
30
31
  | 流程、审批、workflow、提交流程、flowpage、预填、URL传参、节点、操作者、审批人、连线 | `references/workflow/guide-workflow.md` |
32
+ | 撤回管理、加审管理、减审管理、接收人范围、指定流转接收人范围、转发传阅抄送收回、功能管理 | `references/workflow/guide-function-management.md` |
33
+ | 拟签意见、draft-opinion、节点转发、forward-setting、节点签字意见、必须签批签名、隐藏意见输入框、意见显示类型 | `references/workflow/guide-opinion-settings.md` |
31
34
  | 流程绑的表、流程关联表单、workflow info、workflowId 查表单、formId 不是 objId | `references/common/ref-cli-commands.md`(`workflow info` 一行) |
32
35
  | 权责表、权责矩阵、权责表方式流程、分支场景、变量映射 | `references/workflow/guide-workflow-auth-resp.md` + `references/workflow/guide-workflow-condition.md` |
33
36
  | 公文流程、公文审批、收文、发文、公文设置、正文设置 | `references/workflow/guide-workflow-odoc.md` + `references/workflow/guide-workflow.md` |
@@ -12,6 +12,8 @@
12
12
 
13
13
  会议标题、密级等普通字段支持固定值和动态赋值;创建人、召集人、联系人支持固定人员对象和动态人员公式。会议类型、会议室、附件、关联流程等设计期资源仍必须使用当前租户真实选择器对象,不能把上下文强行当作资源 ID。
14
14
 
15
+ 也可以直接传入前端 `MeetingPendingCreateEntity` 结构:使用 `type`、`setting` 和 `formSetting`。`setting` 的字段名应来自 `getMeetingField`;其中原生 FormulaBean 会原样保留,语义动态值会编译为 FormulaBean。
16
+
15
17
  ## 最小计划
16
18
 
17
19
  `operators`、`meetingType`,以及需求涉及的会议字段。
@@ -2,7 +2,7 @@
2
2
 
3
3
  ## 何时使用
4
4
 
5
- 将指定流程实例移入回收站。单个动态“数据 ID”可直接作为 `requestId`,CLI 会按平台协议封装成数组公式。
5
+ 将指定流程实例移入回收站。`requestId` 会按前端协议生成一个 `type=8` 的 `multipleSelect` JSON FormulaBean 容器,容器子项可以是固定流程实例或动态公式。
6
6
 
7
7
  当前平台只注册此删除组件;**不支持“彻底删除流程”**。不得生成或使用 `ApproveCompletelyDelete`,否则设计器保存会报组件内部异常。
8
8