weaver-e10-builder 1.5.9 → 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 (249) 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 +31 -12
  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 +442 -6
  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 +2 -2
  49. package/dist/commands/menu.d.ts.map +1 -1
  50. package/dist/commands/menu.js +107 -51
  51. package/dist/commands/menu.js.map +1 -1
  52. package/dist/commands/wf-form.d.ts.map +1 -1
  53. package/dist/commands/wf-form.js +56 -36
  54. package/dist/commands/wf-form.js.map +1 -1
  55. package/dist/commands/workflow-function-management.d.ts +5 -0
  56. package/dist/commands/workflow-function-management.d.ts.map +1 -0
  57. package/dist/commands/workflow-function-management.js +91 -0
  58. package/dist/commands/workflow-function-management.js.map +1 -0
  59. package/dist/commands/workflow-node-assign-flow.d.ts.map +1 -1
  60. package/dist/commands/workflow-node-assign-flow.js +1 -0
  61. package/dist/commands/workflow-node-assign-flow.js.map +1 -1
  62. package/dist/commands/workflow-node-sign.d.ts +0 -12
  63. package/dist/commands/workflow-node-sign.d.ts.map +1 -1
  64. package/dist/commands/workflow-node-sign.js +31 -102
  65. package/dist/commands/workflow-node-sign.js.map +1 -1
  66. package/dist/commands/workflow-opinion-settings.d.ts +5 -0
  67. package/dist/commands/workflow-opinion-settings.d.ts.map +1 -0
  68. package/dist/commands/workflow-opinion-settings.js +51 -0
  69. package/dist/commands/workflow-opinion-settings.js.map +1 -0
  70. package/dist/commands/workflow-subprocess.d.ts.map +1 -1
  71. package/dist/commands/workflow-subprocess.js +370 -20
  72. package/dist/commands/workflow-subprocess.js.map +1 -1
  73. package/dist/commands/workflow.d.ts.map +1 -1
  74. package/dist/commands/workflow.js +35 -61
  75. package/dist/commands/workflow.js.map +1 -1
  76. package/dist/index.js +4 -0
  77. package/dist/index.js.map +1 -1
  78. package/dist/services/actionflow/calendar_mapper.d.ts.map +1 -1
  79. package/dist/services/actionflow/calendar_mapper.js +44 -13
  80. package/dist/services/actionflow/calendar_mapper.js.map +1 -1
  81. package/dist/services/actionflow/component_registry.d.ts.map +1 -1
  82. package/dist/services/actionflow/component_registry.js +6 -0
  83. package/dist/services/actionflow/component_registry.js.map +1 -1
  84. package/dist/services/actionflow/components/custom_set_form.d.ts.map +1 -1
  85. package/dist/services/actionflow/components/custom_set_form.js +9 -7
  86. package/dist/services/actionflow/components/custom_set_form.js.map +1 -1
  87. package/dist/services/actionflow/components/index.d.ts.map +1 -1
  88. package/dist/services/actionflow/components/index.js +2 -1
  89. package/dist/services/actionflow/components/index.js.map +1 -1
  90. package/dist/services/actionflow/components/inner_mq_listener.d.ts +6 -0
  91. package/dist/services/actionflow/components/inner_mq_listener.d.ts.map +1 -1
  92. package/dist/services/actionflow/components/inner_mq_listener.js +50 -2
  93. package/dist/services/actionflow/components/inner_mq_listener.js.map +1 -1
  94. package/dist/services/actionflow/components/meeting_create.d.ts.map +1 -1
  95. package/dist/services/actionflow/components/meeting_create.js +6 -2
  96. package/dist/services/actionflow/components/meeting_create.js.map +1 -1
  97. package/dist/services/actionflow/components/multiple_execution.d.ts.map +1 -1
  98. package/dist/services/actionflow/components/multiple_execution.js +20 -19
  99. package/dist/services/actionflow/components/multiple_execution.js.map +1 -1
  100. package/dist/services/actionflow/components/output.d.ts.map +1 -1
  101. package/dist/services/actionflow/components/output.js +3 -10
  102. package/dist/services/actionflow/components/output.js.map +1 -1
  103. package/dist/services/actionflow/components/schedule_create.js +2 -2
  104. package/dist/services/actionflow/components/schedule_create.js.map +1 -1
  105. package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
  106. package/dist/services/actionflow/components/workflow_actions.js +48 -19
  107. package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
  108. package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
  109. package/dist/services/actionflow/context_preflight.js +47 -10
  110. package/dist/services/actionflow/context_preflight.js.map +1 -1
  111. package/dist/services/actionflow/custom_trigger_context.d.ts.map +1 -1
  112. package/dist/services/actionflow/custom_trigger_context.js +1 -0
  113. package/dist/services/actionflow/custom_trigger_context.js.map +1 -1
  114. package/dist/services/actionflow/formula_service.d.ts +7 -0
  115. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  116. package/dist/services/actionflow/formula_service.js +39 -9
  117. package/dist/services/actionflow/formula_service.js.map +1 -1
  118. package/dist/services/actionflow/machine_key.d.ts +13 -0
  119. package/dist/services/actionflow/machine_key.d.ts.map +1 -0
  120. package/dist/services/actionflow/machine_key.js +62 -0
  121. package/dist/services/actionflow/machine_key.js.map +1 -0
  122. package/dist/services/actionflow/param_group_dto.d.ts.map +1 -1
  123. package/dist/services/actionflow/param_group_dto.js +14 -5
  124. package/dist/services/actionflow/param_group_dto.js.map +1 -1
  125. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  126. package/dist/services/actionflow/preflight_service.js +9 -3
  127. package/dist/services/actionflow/preflight_service.js.map +1 -1
  128. package/dist/services/app-publish.d.ts +25 -0
  129. package/dist/services/app-publish.d.ts.map +1 -1
  130. package/dist/services/app-publish.js +38 -0
  131. package/dist/services/app-publish.js.map +1 -1
  132. package/dist/services/app-range.d.ts +66 -0
  133. package/dist/services/app-range.d.ts.map +1 -0
  134. package/dist/services/app-range.js +137 -0
  135. package/dist/services/app-range.js.map +1 -0
  136. package/dist/services/form-association.d.ts +13 -0
  137. package/dist/services/form-association.d.ts.map +1 -1
  138. package/dist/services/form-association.js +42 -0
  139. package/dist/services/form-association.js.map +1 -1
  140. package/dist/services/form-button-action.d.ts +82 -0
  141. package/dist/services/form-button-action.d.ts.map +1 -1
  142. package/dist/services/form-button-action.js +194 -2
  143. package/dist/services/form-button-action.js.map +1 -1
  144. package/dist/services/form-button-condition.d.ts +45 -0
  145. package/dist/services/form-button-condition.d.ts.map +1 -0
  146. package/dist/services/form-button-condition.js +106 -0
  147. package/dist/services/form-button-condition.js.map +1 -0
  148. package/dist/services/form-button-context.d.ts +41 -0
  149. package/dist/services/form-button-context.d.ts.map +1 -0
  150. package/dist/services/form-button-context.js +54 -0
  151. package/dist/services/form-button-context.js.map +1 -0
  152. package/dist/services/form-button-logicflow.d.ts +30 -0
  153. package/dist/services/form-button-logicflow.d.ts.map +1 -0
  154. package/dist/services/form-button-logicflow.js +59 -0
  155. package/dist/services/form-button-logicflow.js.map +1 -0
  156. package/dist/services/form-button-org.d.ts +30 -0
  157. package/dist/services/form-button-org.d.ts.map +1 -0
  158. package/dist/services/form-button-org.js +80 -0
  159. package/dist/services/form-button-org.js.map +1 -0
  160. package/dist/services/form-button-permission.d.ts +65 -0
  161. package/dist/services/form-button-permission.d.ts.map +1 -0
  162. package/dist/services/form-button-permission.js +113 -0
  163. package/dist/services/form-button-permission.js.map +1 -0
  164. package/dist/services/form-button-position.d.ts +4 -18
  165. package/dist/services/form-button-position.d.ts.map +1 -1
  166. package/dist/services/form-button-position.js +4 -36
  167. package/dist/services/form-button-position.js.map +1 -1
  168. package/dist/services/form-button-props.d.ts +55 -0
  169. package/dist/services/form-button-props.d.ts.map +1 -0
  170. package/dist/services/form-button-props.js +90 -0
  171. package/dist/services/form-button-props.js.map +1 -0
  172. package/dist/services/form-button-save.d.ts +49 -0
  173. package/dist/services/form-button-save.d.ts.map +1 -0
  174. package/dist/services/form-button-save.js +54 -0
  175. package/dist/services/form-button-save.js.map +1 -0
  176. package/dist/services/form-formula-linkage.d.ts +116 -20
  177. package/dist/services/form-formula-linkage.d.ts.map +1 -1
  178. package/dist/services/form-formula-linkage.js +250 -38
  179. package/dist/services/form-formula-linkage.js.map +1 -1
  180. package/dist/services/form-list-search-group.d.ts +17 -2
  181. package/dist/services/form-list-search-group.d.ts.map +1 -1
  182. package/dist/services/form-list-search-group.js +29 -12
  183. package/dist/services/form-list-search-group.js.map +1 -1
  184. package/dist/services/form-list-search.d.ts.map +1 -1
  185. package/dist/services/form-list-search.js +4 -0
  186. package/dist/services/form-list-search.js.map +1 -1
  187. package/dist/services/form-list-stats.d.ts.map +1 -1
  188. package/dist/services/form-list-stats.js +9 -2
  189. package/dist/services/form-list-stats.js.map +1 -1
  190. package/dist/services/form-message.d.ts +26 -7
  191. package/dist/services/form-message.d.ts.map +1 -1
  192. package/dist/services/form-message.js +52 -5
  193. package/dist/services/form-message.js.map +1 -1
  194. package/dist/services/form-permission-archive.d.ts +121 -0
  195. package/dist/services/form-permission-archive.d.ts.map +1 -0
  196. package/dist/services/form-permission-archive.js +375 -0
  197. package/dist/services/form-permission-archive.js.map +1 -0
  198. package/dist/services/form-view-populate.d.ts.map +1 -1
  199. package/dist/services/form-view-populate.js +7 -0
  200. package/dist/services/form-view-populate.js.map +1 -1
  201. package/dist/services/icon-path.d.ts +70 -0
  202. package/dist/services/icon-path.d.ts.map +1 -0
  203. package/dist/services/icon-path.js +80 -0
  204. package/dist/services/icon-path.js.map +1 -0
  205. package/dist/services/matrix-condition.d.ts +161 -0
  206. package/dist/services/matrix-condition.d.ts.map +1 -0
  207. package/dist/services/matrix-condition.js +403 -0
  208. package/dist/services/matrix-condition.js.map +1 -0
  209. package/dist/services/menu-catalog.d.ts +46 -0
  210. package/dist/services/menu-catalog.d.ts.map +1 -1
  211. package/dist/services/menu-catalog.js +80 -0
  212. package/dist/services/menu-catalog.js.map +1 -1
  213. package/dist/services/permission-entity.d.ts +55 -0
  214. package/dist/services/permission-entity.d.ts.map +1 -0
  215. package/dist/services/permission-entity.js +79 -0
  216. package/dist/services/permission-entity.js.map +1 -0
  217. package/dist/services/workflow-assign-flow.d.ts.map +1 -1
  218. package/dist/services/workflow-assign-flow.js.map +1 -1
  219. package/dist/services/workflow-function-management.d.ts +123 -0
  220. package/dist/services/workflow-function-management.d.ts.map +1 -0
  221. package/dist/services/workflow-function-management.js +425 -0
  222. package/dist/services/workflow-function-management.js.map +1 -0
  223. package/dist/services/workflow-matrix-rule.d.ts +34 -0
  224. package/dist/services/workflow-matrix-rule.d.ts.map +1 -0
  225. package/dist/services/workflow-matrix-rule.js +94 -0
  226. package/dist/services/workflow-matrix-rule.js.map +1 -0
  227. package/dist/services/workflow-opinion-settings.d.ts +67 -0
  228. package/dist/services/workflow-opinion-settings.d.ts.map +1 -0
  229. package/dist/services/workflow-opinion-settings.js +328 -0
  230. package/dist/services/workflow-opinion-settings.js.map +1 -0
  231. package/package.json +1 -1
  232. package/skill-docs/SKILL.md +5 -5
  233. package/skill-docs/_catalog.md +5 -1
  234. package/skill-docs/actionflows/SKILL.md +1 -0
  235. package/skill-docs/actionflows/references/components/calendar/MeetingCreate.md +2 -0
  236. package/skill-docs/actionflows/references/components/logic/Output.md +1 -1
  237. package/skill-docs/actionflows/references/components/workflow/ApproveDelete.md +1 -1
  238. package/skill-docs/actionflows/references/dynamic_capability_matrix.md +3 -3
  239. package/skill-docs/references/common/ref-cli-commands.md +63 -23
  240. package/skill-docs/references/ebuilder-designer/guide-designer-components.md +9 -0
  241. package/skill-docs/references/form/guide-form-archive-permission.md +175 -0
  242. package/skill-docs/references/form/guide-form-association.md +13 -0
  243. package/skill-docs/references/form/guide-form-button.md +87 -0
  244. package/skill-docs/references/form/guide-form-message.md +19 -2
  245. package/skill-docs/references/form/guide-form-view.md +23 -3
  246. package/skill-docs/references/form/guide-formula-linkage.md +42 -11
  247. package/skill-docs/references/workflow/guide-function-management.md +154 -0
  248. package/skill-docs/references/workflow/guide-opinion-settings.md +126 -0
  249. package/skill-docs/references/workflow/guide-workflow.md +22 -6
@@ -0,0 +1,30 @@
1
+ /**
2
+ * 按钮权限的「授权对象」解析:名字或 ID → `content`(id) + `contentSpan`(显示名)。
3
+ *
4
+ * 按钮权限条目里主体是**两个键**:`content` 存 id、`contentSpan` 存显示名,
5
+ * 少了 `contentSpan` 界面上那行就是空的。所以**不能只写 id**,必须把名字也取回来。
6
+ *
7
+ * 复用两条既有入口(同 `role add-member`):
8
+ * - **按名字**:人员走 `getEmployeeByKeyWords`;部门/分部走 `browser/data/{kind}`。都过 `pickExact`
9
+ * (精确同名优先,撞名报错并列候选)—— 绝不取首条,否则同名时静默配错对象。
10
+ * - **按 ID**:走 `browser/destData/{kind}` 把对象取回来(`destData` 对不存在的 id
11
+ * **一声不吭地丢掉**,所以必须 `assertAllIdsResolved` 核对)。
12
+ */
13
+ import type { ApiClient } from '../core/client.js';
14
+ type Client = Pick<ApiClient, 'get' | 'post'>;
15
+ /** 按钮权限里认得的三类「具体对象」(不含「全体」,全体没有主体)。 */
16
+ export type PermissionSubjectKind = 'company' | 'department' | 'resource';
17
+ /** 按关键词搜人员。 */
18
+ export declare function searchEmployees(client: Client, base: string, keyword: string): Promise<any[]>;
19
+ /**
20
+ * 解析一个授权对象。
21
+ *
22
+ * 入参是**很长的纯数字**就按 ID 走 `destData`,否则按名字搜。两条路都必须拿到显示名 ——
23
+ * 拿不到就报错,绝不用 id 冒充 `contentSpan`(那样界面上是一行空白,事后没法查)。
24
+ */
25
+ export declare function resolvePermissionSubject(client: Client, base: string, kind: PermissionSubjectKind, nameOrId: string): Promise<{
26
+ id: string;
27
+ name: string;
28
+ }>;
29
+ export {};
30
+ //# sourceMappingURL=form-button-org.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-button-org.d.ts","sourceRoot":"","sources":["../../src/services/form-button-org.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAOnD,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;AAE9C,uCAAuC;AACvC,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,YAAY,GAAG,UAAU,CAAC;AAc1E,eAAe;AACf,wBAAsB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,CAOnG;AAsBD;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,qBAAqB,EAAE,QAAQ,EAAE,MAAM,GAC1E,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAoBvC"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * 按钮权限的「授权对象」解析:名字或 ID → `content`(id) + `contentSpan`(显示名)。
3
+ *
4
+ * 按钮权限条目里主体是**两个键**:`content` 存 id、`contentSpan` 存显示名,
5
+ * 少了 `contentSpan` 界面上那行就是空的。所以**不能只写 id**,必须把名字也取回来。
6
+ *
7
+ * 复用两条既有入口(同 `role add-member`):
8
+ * - **按名字**:人员走 `getEmployeeByKeyWords`;部门/分部走 `browser/data/{kind}`。都过 `pickExact`
9
+ * (精确同名优先,撞名报错并列候选)—— 绝不取首条,否则同名时静默配错对象。
10
+ * - **按 ID**:走 `browser/destData/{kind}` 把对象取回来(`destData` 对不存在的 id
11
+ * **一声不吭地丢掉**,所以必须 `assertAllIdsResolved` 核对)。
12
+ */
13
+ import { ORG_BROWSER_BASE, ORG_BROWSE_LABEL, buildOrgListPayload, extractOrgList } from './org-browser.js';
14
+ import { DEST_DATA_BASE, MEMBER_KIND_LABEL, buildDestDataPayload, extractDestDataItems, assertAllIdsResolved, pickExact, } from './role-member.js';
15
+ /** 按钮权限的 `permissionType` → 组织接口的 `kind`。 */
16
+ const ORG_KIND_OF = {
17
+ company: 'subcompany',
18
+ department: 'department',
19
+ resource: 'resource',
20
+ };
21
+ /** 平台 id 的形态(19 位数字)。够长的纯数字就当 ID,否则当名字。 */
22
+ function looksLikeId(value) {
23
+ return /^\d{10,}$/.test(value);
24
+ }
25
+ /** 按关键词搜人员。 */
26
+ export async function searchEmployees(client, base, keyword) {
27
+ const res = await client.post(`${base}/api/hrm/common/getEmployeeByKeyWords`, {
28
+ keyword, searchType: 1, searchCount: 20, appDetachModule: 'EM',
29
+ disableAppDetach: 0, pageNo: 1, pageSize: 20,
30
+ });
31
+ if (res?.code !== 200)
32
+ throw new Error(`搜索人员「${keyword}」失败: ${res?.msg || '未知错误'}`);
33
+ return res?.data?.userList || [];
34
+ }
35
+ /** 按关键词搜部门/分部。 */
36
+ async function searchOrgs(client, base, kind, keyword) {
37
+ const res = await client.post(`${base}${ORG_BROWSER_BASE}/${kind}`, buildOrgListPayload(kind, { name: keyword, pageSize: 50 }));
38
+ if (res?.code !== 200)
39
+ throw new Error(`搜索${ORG_BROWSE_LABEL[kind]}「${keyword}」失败: ${res?.msg || '未知错误'}`);
40
+ return extractOrgList(res).rows;
41
+ }
42
+ /** 按 ID 取对象(第二条入口)。 */
43
+ async function readByIds(client, base, kind, ids) {
44
+ const label = MEMBER_KIND_LABEL[kind];
45
+ const res = await client.post(`${base}${DEST_DATA_BASE}/${kind}`, buildDestDataPayload(kind, ids));
46
+ if (res?.code !== 200)
47
+ throw new Error(`按 ID 取${label}失败: ${res?.msg || '未知错误'}`);
48
+ const items = extractDestDataItems(res);
49
+ assertAllIdsResolved(ids, items, label);
50
+ return items;
51
+ }
52
+ /**
53
+ * 解析一个授权对象。
54
+ *
55
+ * 入参是**很长的纯数字**就按 ID 走 `destData`,否则按名字搜。两条路都必须拿到显示名 ——
56
+ * 拿不到就报错,绝不用 id 冒充 `contentSpan`(那样界面上是一行空白,事后没法查)。
57
+ */
58
+ export async function resolvePermissionSubject(client, base, kind, nameOrId) {
59
+ const value = String(nameOrId ?? '').trim();
60
+ if (!value)
61
+ throw new Error('授权对象不能为空');
62
+ const orgKind = ORG_KIND_OF[kind];
63
+ const label = MEMBER_KIND_LABEL[orgKind];
64
+ if (looksLikeId(value)) {
65
+ const item = (await readByIds(client, base, orgKind, [value]))[0];
66
+ const name = String(item?.name ?? item?.content ?? '').trim();
67
+ if (!name)
68
+ throw new Error(`${label} ${value} 取回来了但拿不到名称,无法写入按钮权限`);
69
+ return { id: String(item?.id ?? value), name };
70
+ }
71
+ const rows = orgKind === 'resource'
72
+ ? await searchEmployees(client, base, value)
73
+ : await searchOrgs(client, base, orgKind, value);
74
+ const picked = pickExact(rows, value, label, (x) => x?.name);
75
+ const name = String(picked?.name ?? '').trim();
76
+ if (!name)
77
+ throw new Error(`${label}「${value}」搜索到了但没有名称,无法写入按钮权限`);
78
+ return { id: String(picked?.id ?? ''), name };
79
+ }
80
+ //# sourceMappingURL=form-button-org.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-button-org.js","sourceRoot":"","sources":["../../src/services/form-button-org.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAsB,MAAM,kBAAkB,CAAC;AAC/H,OAAO,EACL,cAAc,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,oBAAoB,EAC7E,oBAAoB,EAAE,SAAS,GAChC,MAAM,kBAAkB,CAAC;AAO1B,6CAA6C;AAC7C,MAAM,WAAW,GAA8C;IAC7D,OAAO,EAAE,YAAY;IACrB,UAAU,EAAE,YAAY;IACxB,QAAQ,EAAE,UAAU;CACrB,CAAC;AAEF,2CAA2C;AAC3C,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,eAAe;AACf,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAc,EAAE,IAAY,EAAE,OAAe;IACjF,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,uCAAuC,EAAE;QAC5E,OAAO,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,eAAe,EAAE,IAAI;QAC9D,gBAAgB,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE;KAC7C,CAAC,CAAC;IACH,IAAI,GAAG,EAAE,IAAI,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,QAAQ,OAAO,QAAQ,GAAG,EAAE,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC;IACpF,OAAO,GAAG,EAAE,IAAI,EAAE,QAAQ,IAAI,EAAE,CAAC;AACnC,CAAC;AAED,kBAAkB;AAClB,KAAK,UAAU,UAAU,CAAC,MAAc,EAAE,IAAY,EAAE,IAAmB,EAAE,OAAe;IAC1F,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAC3B,GAAG,IAAI,GAAG,gBAAgB,IAAI,IAAI,EAAE,EACpC,mBAAmB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAC3D,CAAC;IACF,IAAI,GAAG,EAAE,IAAI,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,KAAK,gBAAgB,CAAC,IAAI,CAAC,IAAI,OAAO,QAAQ,GAAG,EAAE,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC;IAC3G,OAAO,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;AAClC,CAAC;AAED,uBAAuB;AACvB,KAAK,UAAU,SAAS,CAAC,MAAc,EAAE,IAAY,EAAE,IAAgB,EAAE,GAAa;IACpF,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,cAAc,IAAI,IAAI,EAAE,EAAE,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC;IACnG,IAAI,GAAG,EAAE,IAAI,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,SAAS,KAAK,OAAO,GAAG,EAAE,GAAG,IAAI,MAAM,EAAE,CAAC,CAAC;IAClF,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;IACxC,oBAAoB,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,MAAc,EAAE,IAAY,EAAE,IAA2B,EAAE,QAAgB;IAE3E,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5C,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,KAAK,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAEzC,IAAI,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,GAAG,CAAC,MAAM,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,IAAI,IAAI,EAAE,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9D,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,KAAK,sBAAsB,CAAC,CAAC;QACpE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IACjD,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,KAAK,UAAU;QACjC,CAAC,CAAC,MAAM,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC;QAC5C,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,EAAE,IAAI,EAAE,OAAwB,EAAE,KAAK,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI,KAAK,qBAAqB,CAAC,CAAC;IACnE,OAAO,EAAE,EAAE,EAAE,MAAM,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;AAChD,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * 按钮权限(`permissionDatas[]`)的构造与识别(纯函数)。
3
+ *
4
+ * ⚠ **这不是表单数据权限那套。** 表单/台账/归档权限走 `permission/addRight`,
5
+ * 对象形状是 `orgType` / `codeType` / `rightType`(见 `src/commands/form-permission.ts`)。
6
+ * 按钮权限是**另一套**:判别键叫 `permissionType`,值形如 `all` / `company` / `department` / `resource`,
7
+ * 主体直接写 `content`(id) + `contentSpan`(显示名),**和 `saveOrUpdate` 一起提交**,没有独立端点。
8
+ *
9
+ * 形状来自真机抓包(设计器往按钮上挂 分部/部门/人员 各一条):
10
+ * 分部 `permissionType:"company"`、部门 `"department"`、人员 `"resource"` + `fieldType:"employee"`。
11
+ * 「全体」的默认行是平台**自己建**的(创建按钮时 `permissionDatas:[]` 也会落一条 `all`)。
12
+ *
13
+ * 条目里那些空键(`jobLevel` / `excludeObj` / `condition` …)都是平台自己的占位,必须原样带上。
14
+ */
15
+ /** 目前支持的授权对象类型(其余类型形状未知,遇到就报错,不猜着写)。 */
16
+ export declare const BUTTON_PERMISSION_TYPES: readonly ["all", "company", "department", "resource"];
17
+ export type ButtonPermissionType = (typeof BUTTON_PERMISSION_TYPES)[number];
18
+ /** 类型的中文名。 */
19
+ export declare const BUTTON_PERMISSION_LABEL: Record<ButtonPermissionType, string>;
20
+ /** 认得出的 `permissionType` 才能继续;其余一律抛错并列出可用的。 */
21
+ export declare function assertKnownPermissionType(value: string): asserts value is ButtonPermissionType;
22
+ export interface PermissionEntryInput {
23
+ permissionType: ButtonPermissionType;
24
+ /** 授权对象的 id(全体为空)。 */
25
+ content?: string;
26
+ /** 授权对象的显示名(全体为空)。 */
27
+ contentSpan?: string;
28
+ /** 是否含下级(部门/分部常见)。 */
29
+ containExtra?: boolean;
30
+ /** 更新既有条目时带上原 id;新增留空串。 */
31
+ id?: string;
32
+ /** 1 总部 / 2 分部 / 3 部门;缺省 `'1'`。 */
33
+ roleLevel?: string;
34
+ /** 「是否启用该行」;抓包里设计器新建的条目是 0,平台自建的 `all` 是 1。 */
35
+ opened?: number;
36
+ }
37
+ /**
38
+ * 造一条按钮权限。
39
+ *
40
+ * 逐键对齐抓包:分部/部门带 `fieldType:''` + `creatorType:'0'` + `fieldtype:''`,
41
+ * 人员则是 `fieldType:'employee'` 且**不带** `creatorType`/`fieldtype`(设计器就是这么发的,照抄)。
42
+ */
43
+ export declare function buildPermissionEntry(input: PermissionEntryInput): Record<string, unknown>;
44
+ /** 「全体」条目 —— 平台自建的那条长这样(`opened:1`)。 */
45
+ export declare function allPermissionEntry(): Record<string, unknown>;
46
+ /** 条目的可读标签,如「分部:泛微北京」。 */
47
+ export declare function permissionLabel(entry: any): string;
48
+ /**
49
+ * 条目的可比签名 —— 回读校验用。
50
+ *
51
+ * 只比「类型 + 主体 + 含不含下级」:平台会给新条目补 `id` / `buttonId` / `index` / `layoutNames`
52
+ * 之类的服务端字段,顺序也可能变,逐字比必然误报。
53
+ */
54
+ export declare function permissionSignature(entry: any): string;
55
+ /** 按签名判断某条权限是否已在列表里(用于幂等去重)。 */
56
+ export declare function hasPermission(entries: any[], entry: any): boolean;
57
+ /**
58
+ * 在列表里找一条权限:选择器是纯数字就当 **1-based 序号**(与 `list` 输出一致),
59
+ * 否则按权限 id 匹配。找不到抛错(静默不删会让人以为删掉了)。
60
+ */
61
+ export declare function findPermission(entries: any[], selector: string): {
62
+ entry: any;
63
+ index: number;
64
+ };
65
+ //# sourceMappingURL=form-button-permission.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-button-permission.d.ts","sourceRoot":"","sources":["../../src/services/form-button-permission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,wCAAwC;AACxC,eAAO,MAAM,uBAAuB,uDAAwD,CAAC;AAE7F,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,cAAc;AACd,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAKxE,CAAC;AAEF,+CAA+C;AAC/C,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,oBAAoB,CAO9F;AAED,MAAM,WAAW,oBAAoB;IACnC,cAAc,EAAE,oBAAoB,CAAC;IACrC,sBAAsB;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sBAAsB;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2BAA2B;IAC3B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,mCAAmC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+CAA+C;IAC/C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0BzF;AAED,wCAAwC;AACxC,wBAAgB,kBAAkB,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAE5D;AAED,0BAA0B;AAC1B,wBAAgB,eAAe,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAKlD;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAMtD;AAED,gCAAgC;AAChC,wBAAgB,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAGjE;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,GAAG,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAa9F"}
@@ -0,0 +1,113 @@
1
+ /**
2
+ * 按钮权限(`permissionDatas[]`)的构造与识别(纯函数)。
3
+ *
4
+ * ⚠ **这不是表单数据权限那套。** 表单/台账/归档权限走 `permission/addRight`,
5
+ * 对象形状是 `orgType` / `codeType` / `rightType`(见 `src/commands/form-permission.ts`)。
6
+ * 按钮权限是**另一套**:判别键叫 `permissionType`,值形如 `all` / `company` / `department` / `resource`,
7
+ * 主体直接写 `content`(id) + `contentSpan`(显示名),**和 `saveOrUpdate` 一起提交**,没有独立端点。
8
+ *
9
+ * 形状来自真机抓包(设计器往按钮上挂 分部/部门/人员 各一条):
10
+ * 分部 `permissionType:"company"`、部门 `"department"`、人员 `"resource"` + `fieldType:"employee"`。
11
+ * 「全体」的默认行是平台**自己建**的(创建按钮时 `permissionDatas:[]` 也会落一条 `all`)。
12
+ *
13
+ * 条目里那些空键(`jobLevel` / `excludeObj` / `condition` …)都是平台自己的占位,必须原样带上。
14
+ */
15
+ /** 目前支持的授权对象类型(其余类型形状未知,遇到就报错,不猜着写)。 */
16
+ export const BUTTON_PERMISSION_TYPES = ['all', 'company', 'department', 'resource'];
17
+ /** 类型的中文名。 */
18
+ export const BUTTON_PERMISSION_LABEL = {
19
+ all: '全体',
20
+ company: '分部',
21
+ department: '部门',
22
+ resource: '人员',
23
+ };
24
+ /** 认得出的 `permissionType` 才能继续;其余一律抛错并列出可用的。 */
25
+ export function assertKnownPermissionType(value) {
26
+ if (!BUTTON_PERMISSION_TYPES.includes(value)) {
27
+ throw new Error(`不认识的按钮权限类型「${value}」;可用:`
28
+ + BUTTON_PERMISSION_TYPES.map((t) => `${BUTTON_PERMISSION_LABEL[t]} ${t}`).join(' / '));
29
+ }
30
+ }
31
+ /**
32
+ * 造一条按钮权限。
33
+ *
34
+ * 逐键对齐抓包:分部/部门带 `fieldType:''` + `creatorType:'0'` + `fieldtype:''`,
35
+ * 人员则是 `fieldType:'employee'` 且**不带** `creatorType`/`fieldtype`(设计器就是这么发的,照抄)。
36
+ */
37
+ export function buildPermissionEntry(input) {
38
+ const { permissionType } = input;
39
+ const entry = {
40
+ roleLevel: input.roleLevel ?? '1',
41
+ };
42
+ if (permissionType === 'resource') {
43
+ entry.fieldType = 'employee';
44
+ }
45
+ else {
46
+ entry.fieldType = '';
47
+ entry.creatorType = '0';
48
+ entry.fieldtype = '';
49
+ }
50
+ entry.id = input.id ?? '';
51
+ entry.permissionType = permissionType;
52
+ entry.contentSpan = input.contentSpan ?? '';
53
+ entry.content = input.content ?? '';
54
+ entry.levelScope = { minShowlevel: '', maxShowlevel: '' };
55
+ entry.relation = '0';
56
+ entry.jobLevel = '';
57
+ entry.jobLevelText = '';
58
+ entry.jobLevelTextSpan = '';
59
+ entry.excludeObj = '';
60
+ entry.containExtra = input.containExtra ? '1' : '0';
61
+ entry.opened = input.opened ?? (permissionType === 'all' ? 1 : 0);
62
+ entry.condition = { conditionsql: '', rootdata: '' };
63
+ return entry;
64
+ }
65
+ /** 「全体」条目 —— 平台自建的那条长这样(`opened:1`)。 */
66
+ export function allPermissionEntry() {
67
+ return buildPermissionEntry({ permissionType: 'all' });
68
+ }
69
+ /** 条目的可读标签,如「分部:泛微北京」。 */
70
+ export function permissionLabel(entry) {
71
+ const type = String(entry?.permissionType ?? '');
72
+ const label = BUTTON_PERMISSION_LABEL[type] ?? (type || '未知');
73
+ const span = String(entry?.contentSpan ?? '').trim();
74
+ return span ? `${label}:${span}` : label;
75
+ }
76
+ /**
77
+ * 条目的可比签名 —— 回读校验用。
78
+ *
79
+ * 只比「类型 + 主体 + 含不含下级」:平台会给新条目补 `id` / `buttonId` / `index` / `layoutNames`
80
+ * 之类的服务端字段,顺序也可能变,逐字比必然误报。
81
+ */
82
+ export function permissionSignature(entry) {
83
+ return JSON.stringify([
84
+ String(entry?.permissionType ?? ''),
85
+ String(entry?.content ?? ''),
86
+ String(entry?.containExtra ?? ''),
87
+ ]);
88
+ }
89
+ /** 按签名判断某条权限是否已在列表里(用于幂等去重)。 */
90
+ export function hasPermission(entries, entry) {
91
+ const target = permissionSignature(entry);
92
+ return (entries ?? []).some((item) => permissionSignature(item) === target);
93
+ }
94
+ /**
95
+ * 在列表里找一条权限:选择器是纯数字就当 **1-based 序号**(与 `list` 输出一致),
96
+ * 否则按权限 id 匹配。找不到抛错(静默不删会让人以为删掉了)。
97
+ */
98
+ export function findPermission(entries, selector) {
99
+ const all = entries ?? [];
100
+ const raw = String(selector).trim();
101
+ if (/^\d+$/.test(raw)) {
102
+ const index = Number(raw) - 1;
103
+ if (index < 0 || index >= all.length) {
104
+ throw new Error(`序号 ${raw} 越界(当前 ${all.length} 条,序号从 1 起)`);
105
+ }
106
+ return { entry: all[index], index };
107
+ }
108
+ const index = all.findIndex((item) => String(item?.id ?? '') === raw);
109
+ if (index < 0)
110
+ throw new Error(`找不到按钮权限 ${raw}(用 form button permission 看现有列表)`);
111
+ return { entry: all[index], index };
112
+ }
113
+ //# sourceMappingURL=form-button-permission.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-button-permission.js","sourceRoot":"","sources":["../../src/services/form-button-permission.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,wCAAwC;AACxC,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,CAAU,CAAC;AAI7F,cAAc;AACd,MAAM,CAAC,MAAM,uBAAuB,GAAyC;IAC3E,GAAG,EAAE,IAAI;IACT,OAAO,EAAE,IAAI;IACb,UAAU,EAAE,IAAI;IAChB,QAAQ,EAAE,IAAI;CACf,CAAC;AAEF,+CAA+C;AAC/C,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,IAAI,CAAE,uBAA6C,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CACb,cAAc,KAAK,OAAO;cACxB,uBAAuB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,uBAAuB,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CACvF,CAAC;IACJ,CAAC;AACH,CAAC;AAkBD;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAA2B;IAC9D,MAAM,EAAE,cAAc,EAAE,GAAG,KAAK,CAAC;IACjC,MAAM,KAAK,GAA4B;QACrC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,GAAG;KAClC,CAAC;IACF,IAAI,cAAc,KAAK,UAAU,EAAE,CAAC;QAClC,KAAK,CAAC,SAAS,GAAG,UAAU,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;QACrB,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;QACxB,KAAK,CAAC,SAAS,GAAG,EAAE,CAAC;IACvB,CAAC;IACD,KAAK,CAAC,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;IAC1B,KAAK,CAAC,cAAc,GAAG,cAAc,CAAC;IACtC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;IAC5C,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;IACpC,KAAK,CAAC,UAAU,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;IAC1D,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC;IACrB,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC;IACpB,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC;IACxB,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC;IAC5B,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC;IACtB,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IACpD,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAClE,KAAK,CAAC,SAAS,GAAG,EAAE,YAAY,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;IACrD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,wCAAwC;AACxC,MAAM,UAAU,kBAAkB;IAChC,OAAO,oBAAoB,CAAC,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,0BAA0B;AAC1B,MAAM,UAAU,eAAe,CAAC,KAAU;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,cAAc,IAAI,EAAE,CAAC,CAAC;IACjD,MAAM,KAAK,GAAI,uBAAkD,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;IAC1F,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,WAAW,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACrD,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAAU;IAC5C,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,MAAM,CAAC,KAAK,EAAE,cAAc,IAAI,EAAE,CAAC;QACnC,MAAM,CAAC,KAAK,EAAE,OAAO,IAAI,EAAE,CAAC;QAC5B,MAAM,CAAC,KAAK,EAAE,YAAY,IAAI,EAAE,CAAC;KAClC,CAAC,CAAC;AACL,CAAC;AAED,gCAAgC;AAChC,MAAM,UAAU,aAAa,CAAC,OAAc,EAAE,KAAU;IACtD,MAAM,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC1C,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC;AAC9E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,OAAc,EAAE,QAAgB;IAC7D,MAAM,GAAG,GAAG,OAAO,IAAI,EAAE,CAAC;IAC1B,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;IACpC,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,MAAM,GAAG,UAAU,GAAG,CAAC,MAAM,aAAa,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;IACtC,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;IACtE,IAAI,KAAK,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,kCAAkC,CAAC,CAAC;IACjF,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC;AACtC,CAAC"}
@@ -1,35 +1,21 @@
1
1
  import type { ApiClient } from '../core/client.js';
2
+ import { readButton, readButtonContext, type ButtonContext, type ButtonViews } from './form-button-context.js';
3
+ export { readButton, readButtonContext };
4
+ export type { ButtonContext, ButtonViews };
2
5
  type Client = Pick<ApiClient, 'get' | 'post'>;
3
6
  export type Positions = Record<string, string[]>;
4
- export interface ButtonViews {
5
- table?: Array<{
6
- id: string;
7
- name: string;
8
- }>;
9
- form?: Array<{
10
- id: string;
11
- name: string;
12
- }>;
13
- }
14
7
  export declare function parsePositions(value: unknown): Positions;
15
8
  export declare function resolveButtonView(view: string, catalog: ButtonViews): string;
16
9
  export declare function buildButtonPosition(existing: unknown, patch: Positions, catalog: ButtonViews, replace?: boolean): {
17
10
  showPosition: string;
18
11
  showPositionSpan: any;
19
12
  };
20
- export declare function readButton(client: Client, base: string, appId: string, objId: string, buttonId: string): Promise<any>;
21
- export declare function readButtonContext(client: Client, base: string, appId: string, objId: string, buttonId: string): Promise<{
22
- button: any;
23
- details: any;
24
- views: ButtonViews;
25
- }>;
26
13
  export declare function samePositions(a: unknown, b: unknown): boolean;
27
- export declare function saveButtonPosition(client: Client, base: string, appId: string, objId: string, context: Awaited<ReturnType<typeof readButtonContext>>, config: ReturnType<typeof buildButtonPosition>): Promise<{
14
+ export declare function saveButtonPosition(client: Client, base: string, appId: string, objId: string, context: ButtonContext, config: ReturnType<typeof buildButtonPosition>): Promise<{
28
15
  showPosition: string;
29
16
  showPositionSpan: any;
30
17
  success: boolean;
31
18
  verified: boolean;
32
19
  buttonId: any;
33
20
  }>;
34
- export {};
35
21
  //# sourceMappingURL=form-button-position.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"form-button-position.d.ts","sourceRoot":"","sources":["../../src/services/form-button-position.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;AAC9C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AACjD,MAAM,WAAW,WAAW;IAAG,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,IAAI,CAAC,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE;AAQxH,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAaxD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM,CAS5E;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,UAAQ;;;EAmB7G;AAOD,wBAAsB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,gBAW5G;AAED,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM;;;;GAcnH;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAG7D;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC;;;;;;GAY1M"}
1
+ {"version":3,"file":"form-button-position.d.ts","sourceRoot":"","sources":["../../src/services/form-button-position.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAW,UAAU,EAAE,iBAAiB,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAIxH,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,CAAC;AACzC,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,CAAC;AAE3C,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;AAC9C,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAQjD,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,CAaxD;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM,CAS5E;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,UAAQ;;;EAmB7G;AAED,wBAAgB,aAAa,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAG7D;AAED,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,CAAC,OAAO,mBAAmB,CAAC;;;;;;GAY1K"}
@@ -1,3 +1,7 @@
1
+ import { checked, readButton, readButtonContext } from './form-button-context.js';
2
+ // 读上下文的两个函数住在 `form-button-context.ts`(公共保存链路也要用),这里原样转出去:
3
+ // 既保持既有 import 路径不变,也避免两个 service 互相 import 成环。
4
+ export { readButton, readButtonContext };
1
5
  const aliases = {
2
6
  '右上': 'rightTop', '右上角': 'rightTop', righttop: 'rightTop',
3
7
  '右上下拉': 'rightTopDropDown', righttopdropdown: 'rightTopDropDown',
@@ -55,42 +59,6 @@ export function buildButtonPosition(existing, patch, catalog, replace = false) {
55
59
  }
56
60
  return { showPosition: JSON.stringify(merged), showPositionSpan: span };
57
61
  }
58
- function checked(result, operation) {
59
- if (result?.code !== 200 || result?.status === false || result?.data == null)
60
- throw new Error(`${operation}失败: ${result?.msg || '返回结构无效'}`);
61
- return result.data;
62
- }
63
- export async function readButton(client, base, appId, objId, buttonId) {
64
- for (let current = 1;; current++) {
65
- const data = checked(await client.post(`${base}/api/bs/ebuilder/form/button/getButtonList?apid=${appId}&objId=${objId}`, { objId, searchVal: '', current, pageSize: 50, searchParamData: {} }, { ebBusinessId: appId }), '读取按钮');
66
- if (!Array.isArray(data.datas))
67
- throw new Error('按钮列表返回结构无效');
68
- const button = data.datas.find((b) => String(b.id) === buttonId);
69
- if (button)
70
- return button;
71
- if (!data.datas.length || current * 50 >= Number(data.total))
72
- break;
73
- if (current >= 1000)
74
- throw new Error('按钮分页超出上限');
75
- }
76
- throw new Error(`按钮 ${buttonId} 不存在`);
77
- }
78
- export async function readButtonContext(client, base, appId, objId, buttonId) {
79
- const button = await readButton(client, base, appId, objId, buttonId);
80
- // `buttonKey` 只在按钮**有**这个键时才带 —— 界面自己建的自定义按钮记录里根本没有它,
81
- // 硬拼会发一个 `buttonKey=undefined`。
82
- const query = new URLSearchParams({
83
- apid: appId, objId, tpaid: objId, buttonId, buttonType: button.buttonType,
84
- thirdPartyFlag: String(button.thirdPartyFlag || 0),
85
- ...(button.buttonKey ? { buttonKey: String(button.buttonKey) } : {}),
86
- });
87
- const headers = { ebBusinessId: appId };
88
- const details = checked(await client.get(`${base}/api/bs/ebuilder/form/button/getActionAndPermission?${query}`, headers), '读取动作权限');
89
- if (!Array.isArray(details.actions) || !Array.isArray(details.permissions))
90
- throw new Error('动作/权限返回不完整,停止保存');
91
- const views = checked(await client.get(`${base}/api/bs/ebuilder/form/button/getViewDatas?${query}`, headers), '读取可选视图');
92
- return { button, details, views };
93
- }
94
62
  export function samePositions(a, b) {
95
63
  const canonical = (v) => JSON.stringify(Object.entries(parsePositions(v)).sort(([a], [b]) => a.localeCompare(b)).map(([k, p]) => [k, [...p].sort()]));
96
64
  return canonical(a) === canonical(b);
@@ -1 +1 @@
1
- {"version":3,"file":"form-button-position.js","sourceRoot":"","sources":["../../src/services/form-button-position.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form-button-position.js","sourceRoot":"","sources":["../../src/services/form-button-position.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * 按钮「基础属性」的构造/解析(纯函数)。
3
+ *
4
+ * 平台侧这些值都挂在 `button` 记录上,`saveOrUpdate` 时整个 `button` 一起提交:
5
+ * - `iconPath` 图标 —— **存的是 JSON 字符串**,不是对象(`{"path":"#Icon-xxx","style":{...}}`)
6
+ * - `onlyIcon` 只显示图标(0/1)
7
+ * - `tipsMessage` 提示内容(纯文本;与 `customTips` 那套「动态提示」不是一回事)
8
+ * - `buttonDescription` 备注(纯文本)
9
+ * - `logMessage` 点击日志 `{ enableLog, message }`
10
+ *
11
+ * 读回的形状与写入一致(`iconPath` 也是字符串),所以这一层只做「对象 ⇄ 字符串」的搬运。
12
+ */
13
+ /** 图标的描述(对应 `iconPath` JSON 串里的三个键)。 */
14
+ export interface IconSpec {
15
+ /** 图标名,如 `Icon-N-Authorized-Administrator`;不带 `#` 会自动补。 */
16
+ path: string;
17
+ /** 线条/文字颜色,缺省 `#999`(平台自己给系统图标用的就是这个)。 */
18
+ color?: string;
19
+ /** 背景色;空串表示无背景。 */
20
+ bgColor?: string;
21
+ /** `line` 描边 / `fill` 填充。不传就不写这个键(系统图标存的也没有它)。 */
22
+ display?: 'line' | 'fill';
23
+ }
24
+ /** 平台给图标描边的缺省色,与系统按钮一致。 */
25
+ export declare const DEFAULT_ICON_COLOR = "#999";
26
+ /**
27
+ * 组装 `iconPath`。
28
+ *
29
+ * ⚠ 那是**字符串**:直接发对象会被平台按空图标存下(按钮上什么都不显示)。
30
+ * 设计器发的是 `{"path":"#Icon-N-Authorized-Administrator","style":{"color":"#999","bgColor":""},"iconDisplayType":"line"}` ——
31
+ * `iconDisplayType` 只在选过描边/填充时才出现,没选就没有这个键。
32
+ */
33
+ export declare function buildIconPath(spec: IconSpec): string;
34
+ /** 解析 `iconPath`(读回也是字符串)。空/坏串一律回 `null` —— 读侧不该因为历史脏数据让整条命令失败。 */
35
+ export declare function parseIconPath(raw?: string): IconSpec | null;
36
+ /** 图标的可比签名 —— 回读校验用(平台可能补 `style.fillType` 之类的键,只比我们给过的几样)。 */
37
+ export declare function iconSignature(raw?: string): string;
38
+ /** 默认日志文案 —— 平台自己建按钮时用的就是这个格式(中文引号,别换成英文引号)。 */
39
+ export declare function defaultLogMessage(buttonName: string): {
40
+ enableLog: number;
41
+ message: string;
42
+ };
43
+ /**
44
+ * 组装 `logMessage`。
45
+ *
46
+ * 关掉日志时**文案照样保留**(读回里 `enableLog:0` 的记录仍带着 message),
47
+ * 所以 `message` 优先用传进来的,其次沿用旧值,最后才回落默认文案。
48
+ */
49
+ export declare function buildLogMessage(enable: 0 | 1, buttonName: string, message?: string, previous?: string): {
50
+ enableLog: number;
51
+ message: string;
52
+ };
53
+ /** 布尔 → 平台的 0/1。 */
54
+ export declare function toFlag(value: boolean | undefined): 0 | 1;
55
+ //# sourceMappingURL=form-button-props.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-button-props.d.ts","sourceRoot":"","sources":["../../src/services/form-button-props.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,wCAAwC;AACxC,MAAM,WAAW,QAAQ;IACvB,2DAA2D;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mBAAmB;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC3B;AAED,2BAA2B;AAC3B,eAAO,MAAM,kBAAkB,SAAS,CAAC;AAEzC;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAWpD;AAED,mEAAmE;AACnE,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI,CAiB3D;AAED,+DAA+D;AAC/D,wBAAgB,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,MAAM,CASlD;AAED,gDAAgD;AAChD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAE5F;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GACrE;IAAE,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAGxC;AAED,oBAAoB;AACpB,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,GAAG,CAAC,GAAG,CAAC,CAExD"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * 按钮「基础属性」的构造/解析(纯函数)。
3
+ *
4
+ * 平台侧这些值都挂在 `button` 记录上,`saveOrUpdate` 时整个 `button` 一起提交:
5
+ * - `iconPath` 图标 —— **存的是 JSON 字符串**,不是对象(`{"path":"#Icon-xxx","style":{...}}`)
6
+ * - `onlyIcon` 只显示图标(0/1)
7
+ * - `tipsMessage` 提示内容(纯文本;与 `customTips` 那套「动态提示」不是一回事)
8
+ * - `buttonDescription` 备注(纯文本)
9
+ * - `logMessage` 点击日志 `{ enableLog, message }`
10
+ *
11
+ * 读回的形状与写入一致(`iconPath` 也是字符串),所以这一层只做「对象 ⇄ 字符串」的搬运。
12
+ */
13
+ import { normalizeIconPath } from './icon-path.js';
14
+ /** 平台给图标描边的缺省色,与系统按钮一致。 */
15
+ export const DEFAULT_ICON_COLOR = '#999';
16
+ /**
17
+ * 组装 `iconPath`。
18
+ *
19
+ * ⚠ 那是**字符串**:直接发对象会被平台按空图标存下(按钮上什么都不显示)。
20
+ * 设计器发的是 `{"path":"#Icon-N-Authorized-Administrator","style":{"color":"#999","bgColor":""},"iconDisplayType":"line"}` ——
21
+ * `iconDisplayType` 只在选过描边/填充时才出现,没选就没有这个键。
22
+ */
23
+ export function buildIconPath(spec) {
24
+ const path = String(spec.path ?? '').trim();
25
+ if (!path)
26
+ throw new Error('图标名不能为空(要清空图标请用 --icon-none)');
27
+ const icon = {
28
+ // 补 `#` 前缀的规则与页面设计器那几处**共用一份**(见 services/icon-path.ts):
29
+ // 漏了 `#` 平台会把图标名当图片路径去加载,静默不显示。
30
+ path: normalizeIconPath(path),
31
+ style: { color: spec.color || DEFAULT_ICON_COLOR, bgColor: spec.bgColor ?? '' },
32
+ };
33
+ if (spec.display)
34
+ icon.iconDisplayType = spec.display;
35
+ return JSON.stringify(icon);
36
+ }
37
+ /** 解析 `iconPath`(读回也是字符串)。空/坏串一律回 `null` —— 读侧不该因为历史脏数据让整条命令失败。 */
38
+ export function parseIconPath(raw) {
39
+ if (raw == null)
40
+ return null;
41
+ const text = String(raw).trim();
42
+ if (!text)
43
+ return null;
44
+ let parsed;
45
+ try {
46
+ parsed = JSON.parse(text);
47
+ }
48
+ catch {
49
+ return null;
50
+ }
51
+ if (!parsed || typeof parsed !== 'object' || !parsed.path)
52
+ return null;
53
+ return {
54
+ path: String(parsed.path),
55
+ color: parsed.style?.color,
56
+ bgColor: parsed.style?.bgColor,
57
+ display: parsed.iconDisplayType,
58
+ };
59
+ }
60
+ /** 图标的可比签名 —— 回读校验用(平台可能补 `style.fillType` 之类的键,只比我们给过的几样)。 */
61
+ export function iconSignature(raw) {
62
+ const spec = parseIconPath(raw);
63
+ if (!spec)
64
+ return '';
65
+ return JSON.stringify({
66
+ path: spec.path,
67
+ color: spec.color ?? '',
68
+ bgColor: spec.bgColor ?? '',
69
+ display: spec.display ?? '',
70
+ });
71
+ }
72
+ /** 默认日志文案 —— 平台自己建按钮时用的就是这个格式(中文引号,别换成英文引号)。 */
73
+ export function defaultLogMessage(buttonName) {
74
+ return { enableLog: 1, message: `点击了“${buttonName}”` };
75
+ }
76
+ /**
77
+ * 组装 `logMessage`。
78
+ *
79
+ * 关掉日志时**文案照样保留**(读回里 `enableLog:0` 的记录仍带着 message),
80
+ * 所以 `message` 优先用传进来的,其次沿用旧值,最后才回落默认文案。
81
+ */
82
+ export function buildLogMessage(enable, buttonName, message, previous) {
83
+ const text = message ?? previous ?? defaultLogMessage(buttonName).message;
84
+ return { enableLog: enable, message: text };
85
+ }
86
+ /** 布尔 → 平台的 0/1。 */
87
+ export function toFlag(value) {
88
+ return value ? 1 : 0;
89
+ }
90
+ //# sourceMappingURL=form-button-props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-button-props.js","sourceRoot":"","sources":["../../src/services/form-button-props.ts"],"names":[],"mappings":"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"}