weaver-e10-builder 1.5.10 → 1.5.12

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 (352) hide show
  1. package/README.md +212 -189
  2. package/assets/image-style-observation.schema.json +1355 -0
  3. package/assets/layout-spec.schema.json +52 -0
  4. package/dist/commands/app.d.ts.map +1 -1
  5. package/dist/commands/app.js +159 -8
  6. package/dist/commands/app.js.map +1 -1
  7. package/dist/commands/designer-setters.d.ts.map +1 -1
  8. package/dist/commands/designer-setters.js +26 -4
  9. package/dist/commands/designer-setters.js.map +1 -1
  10. package/dist/commands/form-association-manage.d.ts.map +1 -1
  11. package/dist/commands/form-association-manage.js +3 -0
  12. package/dist/commands/form-association-manage.js.map +1 -1
  13. package/dist/commands/form-button-actions-cmd.d.ts +3 -0
  14. package/dist/commands/form-button-actions-cmd.d.ts.map +1 -0
  15. package/dist/commands/form-button-actions-cmd.js +309 -0
  16. package/dist/commands/form-button-actions-cmd.js.map +1 -0
  17. package/dist/commands/form-button-permission-cmd.d.ts +3 -0
  18. package/dist/commands/form-button-permission-cmd.d.ts.map +1 -0
  19. package/dist/commands/form-button-permission-cmd.js +132 -0
  20. package/dist/commands/form-button-permission-cmd.js.map +1 -0
  21. package/dist/commands/form-button-props-cmd.d.ts +3 -0
  22. package/dist/commands/form-button-props-cmd.d.ts.map +1 -0
  23. package/dist/commands/form-button-props-cmd.js +236 -0
  24. package/dist/commands/form-button-props-cmd.js.map +1 -0
  25. package/dist/commands/form-button.d.ts.map +1 -1
  26. package/dist/commands/form-button.js +82 -55
  27. package/dist/commands/form-button.js.map +1 -1
  28. package/dist/commands/form-field-linkage.d.ts +55 -0
  29. package/dist/commands/form-field-linkage.d.ts.map +1 -1
  30. package/dist/commands/form-field-linkage.js +1026 -12
  31. package/dist/commands/form-field-linkage.js.map +1 -1
  32. package/dist/commands/form-formula-linkage.d.ts +36 -0
  33. package/dist/commands/form-formula-linkage.d.ts.map +1 -1
  34. package/dist/commands/form-formula-linkage.js +256 -65
  35. package/dist/commands/form-formula-linkage.js.map +1 -1
  36. package/dist/commands/form-layout-restore.d.ts +3 -0
  37. package/dist/commands/form-layout-restore.d.ts.map +1 -0
  38. package/dist/commands/form-layout-restore.js +217 -0
  39. package/dist/commands/form-layout-restore.js.map +1 -0
  40. package/dist/commands/form-layout.d.ts.map +1 -1
  41. package/dist/commands/form-layout.js +11 -1
  42. package/dist/commands/form-layout.js.map +1 -1
  43. package/dist/commands/form-list-permission.d.ts.map +1 -1
  44. package/dist/commands/form-list-permission.js +29 -3
  45. package/dist/commands/form-list-permission.js.map +1 -1
  46. package/dist/commands/form-list-search-group.d.ts.map +1 -1
  47. package/dist/commands/form-list-search-group.js +66 -3
  48. package/dist/commands/form-list-search-group.js.map +1 -1
  49. package/dist/commands/form-list-utils.d.ts +14 -0
  50. package/dist/commands/form-list-utils.d.ts.map +1 -1
  51. package/dist/commands/form-list-utils.js +65 -4
  52. package/dist/commands/form-list-utils.js.map +1 -1
  53. package/dist/commands/form-message.d.ts.map +1 -1
  54. package/dist/commands/form-message.js +16 -4
  55. package/dist/commands/form-message.js.map +1 -1
  56. package/dist/commands/form-obj-meta.d.ts +12 -0
  57. package/dist/commands/form-obj-meta.d.ts.map +1 -0
  58. package/dist/commands/form-obj-meta.js +116 -0
  59. package/dist/commands/form-obj-meta.js.map +1 -0
  60. package/dist/commands/form-permission.d.ts +20 -0
  61. package/dist/commands/form-permission.d.ts.map +1 -1
  62. package/dist/commands/form-permission.js +69 -11
  63. package/dist/commands/form-permission.js.map +1 -1
  64. package/dist/commands/form-validate.d.ts.map +1 -1
  65. package/dist/commands/form-validate.js +167 -35
  66. package/dist/commands/form-validate.js.map +1 -1
  67. package/dist/commands/form.d.ts.map +1 -1
  68. package/dist/commands/form.js +26 -2
  69. package/dist/commands/form.js.map +1 -1
  70. package/dist/commands/menu-permission.d.ts.map +1 -1
  71. package/dist/commands/menu-permission.js +6 -7
  72. package/dist/commands/menu-permission.js.map +1 -1
  73. package/dist/commands/menu.d.ts.map +1 -1
  74. package/dist/commands/menu.js +68 -43
  75. package/dist/commands/menu.js.map +1 -1
  76. package/dist/commands/wf-form.d.ts.map +1 -1
  77. package/dist/commands/wf-form.js +269 -47
  78. package/dist/commands/wf-form.js.map +1 -1
  79. package/dist/commands/workflow-function-management.d.ts +5 -0
  80. package/dist/commands/workflow-function-management.d.ts.map +1 -0
  81. package/dist/commands/workflow-function-management.js +91 -0
  82. package/dist/commands/workflow-function-management.js.map +1 -0
  83. package/dist/commands/workflow-node-assign-flow.d.ts.map +1 -1
  84. package/dist/commands/workflow-node-assign-flow.js +1 -0
  85. package/dist/commands/workflow-node-assign-flow.js.map +1 -1
  86. package/dist/commands/workflow-node-sign.d.ts +0 -12
  87. package/dist/commands/workflow-node-sign.d.ts.map +1 -1
  88. package/dist/commands/workflow-node-sign.js +31 -102
  89. package/dist/commands/workflow-node-sign.js.map +1 -1
  90. package/dist/commands/workflow-opinion-settings.d.ts +5 -0
  91. package/dist/commands/workflow-opinion-settings.d.ts.map +1 -0
  92. package/dist/commands/workflow-opinion-settings.js +51 -0
  93. package/dist/commands/workflow-opinion-settings.js.map +1 -0
  94. package/dist/commands/workflow-subprocess.d.ts.map +1 -1
  95. package/dist/commands/workflow-subprocess.js +370 -20
  96. package/dist/commands/workflow-subprocess.js.map +1 -1
  97. package/dist/commands/workflow.d.ts.map +1 -1
  98. package/dist/commands/workflow.js +35 -61
  99. package/dist/commands/workflow.js.map +1 -1
  100. package/dist/core/client.d.ts +2 -1
  101. package/dist/core/client.d.ts.map +1 -1
  102. package/dist/core/client.js +4 -2
  103. package/dist/core/client.js.map +1 -1
  104. package/dist/index.js +6 -0
  105. package/dist/index.js.map +1 -1
  106. package/dist/services/actionflow/calendar_mapper.d.ts.map +1 -1
  107. package/dist/services/actionflow/calendar_mapper.js +64 -18
  108. package/dist/services/actionflow/calendar_mapper.js.map +1 -1
  109. package/dist/services/actionflow/component_registry.d.ts.map +1 -1
  110. package/dist/services/actionflow/component_registry.js +6 -0
  111. package/dist/services/actionflow/component_registry.js.map +1 -1
  112. package/dist/services/actionflow/components/document_actions.d.ts.map +1 -1
  113. package/dist/services/actionflow/components/document_actions.js +113 -4
  114. package/dist/services/actionflow/components/document_actions.js.map +1 -1
  115. package/dist/services/actionflow/components/eb_get_data_by_id.d.ts.map +1 -1
  116. package/dist/services/actionflow/components/eb_get_data_by_id.js +18 -1
  117. package/dist/services/actionflow/components/eb_get_data_by_id.js.map +1 -1
  118. package/dist/services/actionflow/components/index.d.ts.map +1 -1
  119. package/dist/services/actionflow/components/index.js +2 -1
  120. package/dist/services/actionflow/components/index.js.map +1 -1
  121. package/dist/services/actionflow/components/meeting_create.d.ts.map +1 -1
  122. package/dist/services/actionflow/components/meeting_create.js +5 -1
  123. package/dist/services/actionflow/components/meeting_create.js.map +1 -1
  124. package/dist/services/actionflow/components/schedule_create.d.ts.map +1 -1
  125. package/dist/services/actionflow/components/schedule_create.js +22 -6
  126. package/dist/services/actionflow/components/schedule_create.js.map +1 -1
  127. package/dist/services/actionflow/components/workflow_actions.d.ts +1 -0
  128. package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
  129. package/dist/services/actionflow/components/workflow_actions.js +44 -7
  130. package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
  131. package/dist/services/actionflow/document_source.d.ts +5 -0
  132. package/dist/services/actionflow/document_source.d.ts.map +1 -1
  133. package/dist/services/actionflow/document_source.js +16 -0
  134. package/dist/services/actionflow/document_source.js.map +1 -1
  135. package/dist/services/actionflow/formula_service.d.ts +7 -0
  136. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  137. package/dist/services/actionflow/formula_service.js +44 -8
  138. package/dist/services/actionflow/formula_service.js.map +1 -1
  139. package/dist/services/actionflow/preflight_service.d.ts +5 -0
  140. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  141. package/dist/services/actionflow/preflight_service.js +127 -2
  142. package/dist/services/actionflow/preflight_service.js.map +1 -1
  143. package/dist/services/actionflow/save_workflow_draft.d.ts +7 -0
  144. package/dist/services/actionflow/save_workflow_draft.d.ts.map +1 -1
  145. package/dist/services/actionflow/save_workflow_draft.js +1 -1
  146. package/dist/services/actionflow/save_workflow_draft.js.map +1 -1
  147. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  148. package/dist/services/actionflow/workflow_compiler.js +26 -0
  149. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  150. package/dist/services/app-publish.d.ts +25 -0
  151. package/dist/services/app-publish.d.ts.map +1 -1
  152. package/dist/services/app-publish.js +38 -0
  153. package/dist/services/app-publish.js.map +1 -1
  154. package/dist/services/app-range.d.ts +66 -0
  155. package/dist/services/app-range.d.ts.map +1 -0
  156. package/dist/services/app-range.js +137 -0
  157. package/dist/services/app-range.js.map +1 -0
  158. package/dist/services/form-association.d.ts +13 -0
  159. package/dist/services/form-association.d.ts.map +1 -1
  160. package/dist/services/form-association.js +42 -0
  161. package/dist/services/form-association.js.map +1 -1
  162. package/dist/services/form-button-action.d.ts +82 -0
  163. package/dist/services/form-button-action.d.ts.map +1 -1
  164. package/dist/services/form-button-action.js +194 -2
  165. package/dist/services/form-button-action.js.map +1 -1
  166. package/dist/services/form-button-condition.d.ts +45 -0
  167. package/dist/services/form-button-condition.d.ts.map +1 -0
  168. package/dist/services/form-button-condition.js +106 -0
  169. package/dist/services/form-button-condition.js.map +1 -0
  170. package/dist/services/form-button-context.d.ts +41 -0
  171. package/dist/services/form-button-context.d.ts.map +1 -0
  172. package/dist/services/form-button-context.js +54 -0
  173. package/dist/services/form-button-context.js.map +1 -0
  174. package/dist/services/form-button-logicflow.d.ts +30 -0
  175. package/dist/services/form-button-logicflow.d.ts.map +1 -0
  176. package/dist/services/form-button-logicflow.js +59 -0
  177. package/dist/services/form-button-logicflow.js.map +1 -0
  178. package/dist/services/form-button-org.d.ts +30 -0
  179. package/dist/services/form-button-org.d.ts.map +1 -0
  180. package/dist/services/form-button-org.js +80 -0
  181. package/dist/services/form-button-org.js.map +1 -0
  182. package/dist/services/form-button-permission.d.ts +65 -0
  183. package/dist/services/form-button-permission.d.ts.map +1 -0
  184. package/dist/services/form-button-permission.js +113 -0
  185. package/dist/services/form-button-permission.js.map +1 -0
  186. package/dist/services/form-button-position.d.ts +4 -18
  187. package/dist/services/form-button-position.d.ts.map +1 -1
  188. package/dist/services/form-button-position.js +4 -36
  189. package/dist/services/form-button-position.js.map +1 -1
  190. package/dist/services/form-button-props.d.ts +55 -0
  191. package/dist/services/form-button-props.d.ts.map +1 -0
  192. package/dist/services/form-button-props.js +90 -0
  193. package/dist/services/form-button-props.js.map +1 -0
  194. package/dist/services/form-button-save.d.ts +49 -0
  195. package/dist/services/form-button-save.d.ts.map +1 -0
  196. package/dist/services/form-button-save.js +54 -0
  197. package/dist/services/form-button-save.js.map +1 -0
  198. package/dist/services/form-formula-linkage.d.ts +120 -20
  199. package/dist/services/form-formula-linkage.d.ts.map +1 -1
  200. package/dist/services/form-formula-linkage.js +253 -39
  201. package/dist/services/form-formula-linkage.js.map +1 -1
  202. package/dist/services/form-layout-io.d.ts +18 -0
  203. package/dist/services/form-layout-io.d.ts.map +1 -0
  204. package/dist/services/form-layout-io.js +89 -0
  205. package/dist/services/form-layout-io.js.map +1 -0
  206. package/dist/services/form-layout-source/artifact.d.ts +8 -0
  207. package/dist/services/form-layout-source/artifact.d.ts.map +1 -0
  208. package/dist/services/form-layout-source/artifact.js +52 -0
  209. package/dist/services/form-layout-source/artifact.js.map +1 -0
  210. package/dist/services/form-layout-source/binding.d.ts +10 -0
  211. package/dist/services/form-layout-source/binding.d.ts.map +1 -0
  212. package/dist/services/form-layout-source/binding.js +43 -0
  213. package/dist/services/form-layout-source/binding.js.map +1 -0
  214. package/dist/services/form-layout-source/compile.d.ts +7 -0
  215. package/dist/services/form-layout-source/compile.d.ts.map +1 -0
  216. package/dist/services/form-layout-source/compile.js +262 -0
  217. package/dist/services/form-layout-source/compile.js.map +1 -0
  218. package/dist/services/form-layout-source/creation.d.ts +18 -0
  219. package/dist/services/form-layout-source/creation.d.ts.map +1 -0
  220. package/dist/services/form-layout-source/creation.js +42 -0
  221. package/dist/services/form-layout-source/creation.js.map +1 -0
  222. package/dist/services/form-layout-source/excel-extractor.d.ts +7 -0
  223. package/dist/services/form-layout-source/excel-extractor.d.ts.map +1 -0
  224. package/dist/services/form-layout-source/excel-extractor.js +342 -0
  225. package/dist/services/form-layout-source/excel-extractor.js.map +1 -0
  226. package/dist/services/form-layout-source/image-border.d.ts +9 -0
  227. package/dist/services/form-layout-source/image-border.d.ts.map +1 -0
  228. package/dist/services/form-layout-source/image-border.js +128 -0
  229. package/dist/services/form-layout-source/image-border.js.map +1 -0
  230. package/dist/services/form-layout-source/image-observation.d.ts +14 -0
  231. package/dist/services/form-layout-source/image-observation.d.ts.map +1 -0
  232. package/dist/services/form-layout-source/image-observation.js +90 -0
  233. package/dist/services/form-layout-source/image-observation.js.map +1 -0
  234. package/dist/services/form-layout-source/image-review.d.ts +32 -0
  235. package/dist/services/form-layout-source/image-review.d.ts.map +1 -0
  236. package/dist/services/form-layout-source/image-review.js +266 -0
  237. package/dist/services/form-layout-source/image-review.js.map +1 -0
  238. package/dist/services/form-layout-source/image-style.d.ts +16 -0
  239. package/dist/services/form-layout-source/image-style.d.ts.map +1 -0
  240. package/dist/services/form-layout-source/image-style.js +539 -0
  241. package/dist/services/form-layout-source/image-style.js.map +1 -0
  242. package/dist/services/form-layout-source/json.d.ts +3 -0
  243. package/dist/services/form-layout-source/json.d.ts.map +1 -0
  244. package/dist/services/form-layout-source/json.js +33 -0
  245. package/dist/services/form-layout-source/json.js.map +1 -0
  246. package/dist/services/form-layout-source/presentation.d.ts +23 -0
  247. package/dist/services/form-layout-source/presentation.d.ts.map +1 -0
  248. package/dist/services/form-layout-source/presentation.js +174 -0
  249. package/dist/services/form-layout-source/presentation.js.map +1 -0
  250. package/dist/services/form-layout-source/preview.d.ts +4 -0
  251. package/dist/services/form-layout-source/preview.d.ts.map +1 -0
  252. package/dist/services/form-layout-source/preview.js +49 -0
  253. package/dist/services/form-layout-source/preview.js.map +1 -0
  254. package/dist/services/form-layout-source/schema.d.ts +20 -0
  255. package/dist/services/form-layout-source/schema.d.ts.map +1 -0
  256. package/dist/services/form-layout-source/schema.js +149 -0
  257. package/dist/services/form-layout-source/schema.js.map +1 -0
  258. package/dist/services/form-layout-source/source-grid.d.ts +8 -0
  259. package/dist/services/form-layout-source/source-grid.d.ts.map +1 -0
  260. package/dist/services/form-layout-source/source-grid.js +61 -0
  261. package/dist/services/form-layout-source/source-grid.js.map +1 -0
  262. package/dist/services/form-layout-source/types.d.ts +242 -0
  263. package/dist/services/form-layout-source/types.d.ts.map +1 -0
  264. package/dist/services/form-layout-source/types.js +2 -0
  265. package/dist/services/form-layout-source/types.js.map +1 -0
  266. package/dist/services/form-layout-source/verify.d.ts +14 -0
  267. package/dist/services/form-layout-source/verify.d.ts.map +1 -0
  268. package/dist/services/form-layout-source/verify.js +226 -0
  269. package/dist/services/form-layout-source/verify.js.map +1 -0
  270. package/dist/services/form-list-search-group.d.ts +17 -2
  271. package/dist/services/form-list-search-group.d.ts.map +1 -1
  272. package/dist/services/form-list-search-group.js +29 -12
  273. package/dist/services/form-list-search-group.js.map +1 -1
  274. package/dist/services/form-list-search.d.ts.map +1 -1
  275. package/dist/services/form-list-search.js +4 -0
  276. package/dist/services/form-list-search.js.map +1 -1
  277. package/dist/services/form-list-stats.d.ts.map +1 -1
  278. package/dist/services/form-list-stats.js +9 -2
  279. package/dist/services/form-list-stats.js.map +1 -1
  280. package/dist/services/form-message.d.ts +26 -7
  281. package/dist/services/form-message.d.ts.map +1 -1
  282. package/dist/services/form-message.js +52 -5
  283. package/dist/services/form-message.js.map +1 -1
  284. package/dist/services/form-obj-meta.d.ts +72 -0
  285. package/dist/services/form-obj-meta.d.ts.map +1 -0
  286. package/dist/services/form-obj-meta.js +103 -0
  287. package/dist/services/form-obj-meta.js.map +1 -0
  288. package/dist/services/form-permission-archive.d.ts +9 -1
  289. package/dist/services/form-permission-archive.d.ts.map +1 -1
  290. package/dist/services/form-permission-archive.js +38 -22
  291. package/dist/services/form-permission-archive.js.map +1 -1
  292. package/dist/services/form-view-populate.d.ts.map +1 -1
  293. package/dist/services/form-view-populate.js +7 -0
  294. package/dist/services/form-view-populate.js.map +1 -1
  295. package/dist/services/icon-path.d.ts +70 -0
  296. package/dist/services/icon-path.d.ts.map +1 -0
  297. package/dist/services/icon-path.js +80 -0
  298. package/dist/services/icon-path.js.map +1 -0
  299. package/dist/services/matrix-condition.d.ts +161 -0
  300. package/dist/services/matrix-condition.d.ts.map +1 -0
  301. package/dist/services/matrix-condition.js +403 -0
  302. package/dist/services/matrix-condition.js.map +1 -0
  303. package/dist/services/menu-catalog.d.ts +33 -0
  304. package/dist/services/menu-catalog.d.ts.map +1 -1
  305. package/dist/services/menu-catalog.js +56 -0
  306. package/dist/services/menu-catalog.js.map +1 -1
  307. package/dist/services/permission-entity.d.ts +55 -0
  308. package/dist/services/permission-entity.d.ts.map +1 -0
  309. package/dist/services/permission-entity.js +79 -0
  310. package/dist/services/permission-entity.js.map +1 -0
  311. package/dist/services/validate-help.d.ts +25 -0
  312. package/dist/services/validate-help.d.ts.map +1 -0
  313. package/dist/services/validate-help.js +29 -0
  314. package/dist/services/validate-help.js.map +1 -0
  315. package/dist/services/workflow-assign-flow.d.ts.map +1 -1
  316. package/dist/services/workflow-assign-flow.js.map +1 -1
  317. package/dist/services/workflow-function-management.d.ts +123 -0
  318. package/dist/services/workflow-function-management.d.ts.map +1 -0
  319. package/dist/services/workflow-function-management.js +425 -0
  320. package/dist/services/workflow-function-management.js.map +1 -0
  321. package/dist/services/workflow-matrix-rule.d.ts +34 -0
  322. package/dist/services/workflow-matrix-rule.d.ts.map +1 -0
  323. package/dist/services/workflow-matrix-rule.js +94 -0
  324. package/dist/services/workflow-matrix-rule.js.map +1 -0
  325. package/dist/services/workflow-opinion-settings.d.ts +67 -0
  326. package/dist/services/workflow-opinion-settings.d.ts.map +1 -0
  327. package/dist/services/workflow-opinion-settings.js +328 -0
  328. package/dist/services/workflow-opinion-settings.js.map +1 -0
  329. package/package.json +3 -1
  330. package/skill-docs/SKILL.md +15 -6
  331. package/skill-docs/_catalog.md +4 -0
  332. package/skill-docs/actionflows/references/components/calendar/MeetingCreate.md +2 -0
  333. package/skill-docs/actionflows/references/components/document/DocumentSave.md +17 -17
  334. package/skill-docs/actionflows/references/components/workflow/ApproveCompletelyDelete.md +29 -0
  335. package/skill-docs/actionflows/references/components/workflow/ApproveDelete.md +2 -2
  336. package/skill-docs/assets/schemas/image-style-observation.schema.json +1355 -0
  337. package/skill-docs/references/common/guide-plan-template.md +3 -0
  338. package/skill-docs/references/common/ref-cli-commands.md +77 -26
  339. package/skill-docs/references/ebuilder-designer/guide-designer-components.md +9 -0
  340. package/skill-docs/references/form/guide-create-form.md +2 -0
  341. package/skill-docs/references/form/guide-field-linkage.md +140 -55
  342. package/skill-docs/references/form/guide-form-archive-permission.md +55 -2
  343. package/skill-docs/references/form/guide-form-association.md +13 -0
  344. package/skill-docs/references/form/guide-form-button.md +87 -0
  345. package/skill-docs/references/form/guide-form-layout-planning.md +6 -0
  346. package/skill-docs/references/form/guide-form-layout-source.md +366 -0
  347. package/skill-docs/references/form/guide-form-message.md +19 -2
  348. package/skill-docs/references/form/guide-form-view.md +24 -4
  349. package/skill-docs/references/form/guide-formula-linkage.md +86 -12
  350. package/skill-docs/references/workflow/guide-function-management.md +154 -0
  351. package/skill-docs/references/workflow/guide-opinion-settings.md +126 -0
  352. package/skill-docs/references/workflow/guide-workflow.md +22 -6
@@ -0,0 +1,30 @@
1
+ /**
2
+ * 逻辑流(前端逻辑编排)按名字解析 —— 给按钮的「触发逻辑流」动作找 `id`。
3
+ *
4
+ * 端点:`POST /api/bs/component/logic/flow/page`,body `{current, size, appId, type:'FRONTEND'}`,
5
+ * 返回 `data.records[]`(`id` / `name` / `scene` / `isEnable` …)。
6
+ *
7
+ * ⚠ **流的 `ecodeId` 这里查不到** —— 它只在逻辑流 `create` 返回里。
8
+ * 好在运行时不消费它(`ExecLogicFlow.ts` 只读 `data[0].id`),绑定时留空即可,
9
+ * 已经绑过的可以沿用旧 action 里的值。这一条是同事 `logic-flow-composer` skill 的实测结论。
10
+ */
11
+ import type { ApiClient } from '../core/client.js';
12
+ type Client = Pick<ApiClient, 'get' | 'post'>;
13
+ /** 列表里的一行(只取绑定用得到的字段)。 */
14
+ export interface LogicFlowOption {
15
+ id: string;
16
+ name: string;
17
+ scene: string;
18
+ isEnable: number;
19
+ }
20
+ /** 拉全量前端逻辑流(分页翻完;`page` 上限兜底防死循环)。 */
21
+ export declare function listLogicFlows(client: Client, base: string, appId: string, pageSize?: number): Promise<LogicFlowOption[]>;
22
+ /**
23
+ * 按 **id 或名字** 解析出一条逻辑流。
24
+ *
25
+ * 名字必须**精确同名**:撞名不取首条(取错流等于把按钮绑到别的流程上,事后很难查),
26
+ * 报错时并列候选 id;找不到时列出该应用现有的流名,省一次来回。
27
+ */
28
+ export declare function resolveLogicFlow(client: Client, base: string, appId: string, nameOrId: string): Promise<LogicFlowOption>;
29
+ export {};
30
+ //# sourceMappingURL=form-button-logicflow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-button-logicflow.d.ts","sourceRoot":"","sources":["../../src/services/form-button-logicflow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,GAAG,MAAM,CAAC,CAAC;AAE9C,0BAA0B;AAC1B,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID,sCAAsC;AACtC,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,SAAM,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAkB5H;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAgB9H"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * 逻辑流(前端逻辑编排)按名字解析 —— 给按钮的「触发逻辑流」动作找 `id`。
3
+ *
4
+ * 端点:`POST /api/bs/component/logic/flow/page`,body `{current, size, appId, type:'FRONTEND'}`,
5
+ * 返回 `data.records[]`(`id` / `name` / `scene` / `isEnable` …)。
6
+ *
7
+ * ⚠ **流的 `ecodeId` 这里查不到** —— 它只在逻辑流 `create` 返回里。
8
+ * 好在运行时不消费它(`ExecLogicFlow.ts` 只读 `data[0].id`),绑定时留空即可,
9
+ * 已经绑过的可以沿用旧 action 里的值。这一条是同事 `logic-flow-composer` skill 的实测结论。
10
+ */
11
+ const LOGIC_FLOW_PAGE = '/api/bs/component/logic/flow/page';
12
+ /** 拉全量前端逻辑流(分页翻完;`page` 上限兜底防死循环)。 */
13
+ export async function listLogicFlows(client, base, appId, pageSize = 100) {
14
+ const all = [];
15
+ for (let current = 1; current <= 100; current += 1) {
16
+ const response = await client.post(`${base}${LOGIC_FLOW_PAGE}`, {
17
+ current, size: pageSize, appId, type: 'FRONTEND',
18
+ });
19
+ if (response?.code !== 200)
20
+ throw new Error(`读取逻辑流列表失败: ${response?.msg || '未知错误'}`);
21
+ const records = Array.isArray(response?.data?.records) ? response.data.records : [];
22
+ all.push(...records.map((r) => ({
23
+ id: String(r?.id ?? ''),
24
+ name: String(r?.name ?? ''),
25
+ scene: String(r?.scene ?? ''),
26
+ isEnable: Number(r?.isEnable ?? 0),
27
+ })));
28
+ const pages = Number(response?.data?.pages ?? 1);
29
+ if (!records.length || current >= pages)
30
+ break;
31
+ }
32
+ return all.filter((f) => f.id);
33
+ }
34
+ /**
35
+ * 按 **id 或名字** 解析出一条逻辑流。
36
+ *
37
+ * 名字必须**精确同名**:撞名不取首条(取错流等于把按钮绑到别的流程上,事后很难查),
38
+ * 报错时并列候选 id;找不到时列出该应用现有的流名,省一次来回。
39
+ */
40
+ export async function resolveLogicFlow(client, base, appId, nameOrId) {
41
+ const value = String(nameOrId ?? '').trim();
42
+ if (!value)
43
+ throw new Error('逻辑流不能为空');
44
+ const flows = await listLogicFlows(client, base, appId);
45
+ const byId = flows.filter((f) => f.id === value);
46
+ if (byId.length === 1)
47
+ return byId[0];
48
+ const exact = flows.filter((f) => f.name === value);
49
+ if (exact.length === 1)
50
+ return exact[0];
51
+ if (exact.length > 1) {
52
+ throw new Error(`逻辑流「${value}」匹配到 ${exact.length} 条同名记录,无法确定是哪一个:`
53
+ + `${exact.map((f) => f.id).join('、')}。改用 --logic-id 指定`);
54
+ }
55
+ if (!flows.length)
56
+ throw new Error(`应用 ${appId} 下没有任何前端逻辑流`);
57
+ throw new Error(`未找到逻辑流「${value}」。应用下现有:${flows.map((f) => f.name).join('、')}`);
58
+ }
59
+ //# sourceMappingURL=form-button-logicflow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"form-button-logicflow.js","sourceRoot":"","sources":["../../src/services/form-button-logicflow.ts"],"names":[],"mappings":"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"}
@@ -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":"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"}
@@ -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"}