weaver-e10-builder 1.2.3 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (351) hide show
  1. package/assets/org-employee-template.xlsx +0 -0
  2. package/dist/commands/actionflow.d.ts.map +1 -1
  3. package/dist/commands/actionflow.js +12 -25
  4. package/dist/commands/actionflow.js.map +1 -1
  5. package/dist/commands/designer-css.d.ts +15 -0
  6. package/dist/commands/designer-css.d.ts.map +1 -0
  7. package/dist/commands/designer-css.js +205 -0
  8. package/dist/commands/designer-css.js.map +1 -0
  9. package/dist/commands/form-button.d.ts.map +1 -1
  10. package/dist/commands/form-button.js +28 -5
  11. package/dist/commands/form-button.js.map +1 -1
  12. package/dist/commands/form-field-lang.d.ts.map +1 -1
  13. package/dist/commands/form-field-lang.js +4 -39
  14. package/dist/commands/form-field-lang.js.map +1 -1
  15. package/dist/commands/form-field-linkage.d.ts.map +1 -1
  16. package/dist/commands/form-field-linkage.js +27 -6
  17. package/dist/commands/form-field-linkage.js.map +1 -1
  18. package/dist/commands/form-formula-linkage.d.ts +3 -0
  19. package/dist/commands/form-formula-linkage.d.ts.map +1 -0
  20. package/dist/commands/form-formula-linkage.js +434 -0
  21. package/dist/commands/form-formula-linkage.js.map +1 -0
  22. package/dist/commands/form-formula.d.ts.map +1 -1
  23. package/dist/commands/form-formula.js +22 -3
  24. package/dist/commands/form-formula.js.map +1 -1
  25. package/dist/commands/form-layout-init.d.ts.map +1 -1
  26. package/dist/commands/form-layout-init.js +15 -10
  27. package/dist/commands/form-layout-init.js.map +1 -1
  28. package/dist/commands/form-layout.js +24 -21
  29. package/dist/commands/form-layout.js.map +1 -1
  30. package/dist/commands/form-list-click.d.ts.map +1 -1
  31. package/dist/commands/form-list-click.js +2 -1
  32. package/dist/commands/form-list-click.js.map +1 -1
  33. package/dist/commands/form-native.d.ts.map +1 -1
  34. package/dist/commands/form-native.js +192 -3
  35. package/dist/commands/form-native.js.map +1 -1
  36. package/dist/commands/form-validate.d.ts.map +1 -1
  37. package/dist/commands/form-validate.js +11 -3
  38. package/dist/commands/form-validate.js.map +1 -1
  39. package/dist/commands/form.d.ts.map +1 -1
  40. package/dist/commands/form.js +323 -192
  41. package/dist/commands/form.js.map +1 -1
  42. package/dist/commands/matrix.d.ts.map +1 -1
  43. package/dist/commands/matrix.js +175 -36
  44. package/dist/commands/matrix.js.map +1 -1
  45. package/dist/commands/menu.d.ts.map +1 -1
  46. package/dist/commands/menu.js +170 -23
  47. package/dist/commands/menu.js.map +1 -1
  48. package/dist/commands/org.d.ts +10 -0
  49. package/dist/commands/org.d.ts.map +1 -0
  50. package/dist/commands/org.js +278 -0
  51. package/dist/commands/org.js.map +1 -0
  52. package/dist/commands/role.d.ts.map +1 -1
  53. package/dist/commands/role.js +106 -62
  54. package/dist/commands/role.js.map +1 -1
  55. package/dist/commands/wf-form.d.ts +1 -0
  56. package/dist/commands/wf-form.d.ts.map +1 -1
  57. package/dist/commands/wf-form.js +545 -39
  58. package/dist/commands/wf-form.js.map +1 -1
  59. package/dist/commands/workflow-auth-resp.d.ts.map +1 -1
  60. package/dist/commands/workflow-auth-resp.js +53 -5
  61. package/dist/commands/workflow-auth-resp.js.map +1 -1
  62. package/dist/commands/workflow-create-auth-resp.d.ts.map +1 -1
  63. package/dist/commands/workflow-create-auth-resp.js +5 -1
  64. package/dist/commands/workflow-create-auth-resp.js.map +1 -1
  65. package/dist/commands/workflow-node-assign-flow.d.ts.map +1 -1
  66. package/dist/commands/workflow-node-assign-flow.js +1 -2
  67. package/dist/commands/workflow-node-assign-flow.js.map +1 -1
  68. package/dist/commands/workflow-node.d.ts.map +1 -1
  69. package/dist/commands/workflow-node.js +147 -2
  70. package/dist/commands/workflow-node.js.map +1 -1
  71. package/dist/commands/workflow-odoc.d.ts.map +1 -1
  72. package/dist/commands/workflow-odoc.js +56 -56
  73. package/dist/commands/workflow-odoc.js.map +1 -1
  74. package/dist/commands/workflow-setting.d.ts.map +1 -1
  75. package/dist/commands/workflow-setting.js +77 -1
  76. package/dist/commands/workflow-setting.js.map +1 -1
  77. package/dist/commands/workflow.d.ts.map +1 -1
  78. package/dist/commands/workflow.js +114 -89
  79. package/dist/commands/workflow.js.map +1 -1
  80. package/dist/core/client.d.ts +14 -0
  81. package/dist/core/client.d.ts.map +1 -1
  82. package/dist/core/client.js +28 -12
  83. package/dist/core/client.js.map +1 -1
  84. package/dist/index.js +6 -0
  85. package/dist/index.js.map +1 -1
  86. package/dist/services/action-detail.d.ts.map +1 -1
  87. package/dist/services/action-detail.js +5 -4
  88. package/dist/services/action-detail.js.map +1 -1
  89. package/dist/services/actionflow/command_output.d.ts +7 -0
  90. package/dist/services/actionflow/command_output.d.ts.map +1 -1
  91. package/dist/services/actionflow/command_output.js +46 -0
  92. package/dist/services/actionflow/command_output.js.map +1 -1
  93. package/dist/services/actionflow/components/action_eb_add.d.ts.map +1 -1
  94. package/dist/services/actionflow/components/action_eb_add.js +14 -4
  95. package/dist/services/actionflow/components/action_eb_add.js.map +1 -1
  96. package/dist/services/actionflow/components/action_eb_add_compiler.d.ts.map +1 -1
  97. package/dist/services/actionflow/components/action_eb_add_compiler.js +29 -0
  98. package/dist/services/actionflow/components/action_eb_add_compiler.js.map +1 -1
  99. package/dist/services/actionflow/components/action_eb_update.d.ts.map +1 -1
  100. package/dist/services/actionflow/components/action_eb_update.js +23 -8
  101. package/dist/services/actionflow/components/action_eb_update.js.map +1 -1
  102. package/dist/services/actionflow/components/action_eb_update_compiler.d.ts.map +1 -1
  103. package/dist/services/actionflow/components/action_eb_update_compiler.js +261 -13
  104. package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -1
  105. package/dist/services/actionflow/components/approve_create.d.ts.map +1 -1
  106. package/dist/services/actionflow/components/approve_create.js +6 -3
  107. package/dist/services/actionflow/components/approve_create.js.map +1 -1
  108. package/dist/services/actionflow/components/custom_set_form.d.ts +10 -0
  109. package/dist/services/actionflow/components/custom_set_form.d.ts.map +1 -0
  110. package/dist/services/actionflow/components/custom_set_form.js +99 -0
  111. package/dist/services/actionflow/components/custom_set_form.js.map +1 -0
  112. package/dist/services/actionflow/components/custom_trigger.d.ts +2 -2
  113. package/dist/services/actionflow/components/custom_trigger.d.ts.map +1 -1
  114. package/dist/services/actionflow/components/custom_trigger.js +11 -11
  115. package/dist/services/actionflow/components/custom_trigger.js.map +1 -1
  116. package/dist/services/actionflow/components/dml_execute.d.ts.map +1 -1
  117. package/dist/services/actionflow/components/dml_execute.js +7 -3
  118. package/dist/services/actionflow/components/dml_execute.js.map +1 -1
  119. package/dist/services/actionflow/components/document_actions.d.ts.map +1 -1
  120. package/dist/services/actionflow/components/document_actions.js +7 -3
  121. package/dist/services/actionflow/components/document_actions.js.map +1 -1
  122. package/dist/services/actionflow/components/enquiry_form.js +1 -1
  123. package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
  124. package/dist/services/actionflow/components/hrm_actions.d.ts.map +1 -1
  125. package/dist/services/actionflow/components/hrm_actions.js +7 -3
  126. package/dist/services/actionflow/components/hrm_actions.js.map +1 -1
  127. package/dist/services/actionflow/components/multiple_execution.d.ts.map +1 -1
  128. package/dist/services/actionflow/components/multiple_execution.js +14 -5
  129. package/dist/services/actionflow/components/multiple_execution.js.map +1 -1
  130. package/dist/services/actionflow/components/output.d.ts.map +1 -1
  131. package/dist/services/actionflow/components/output.js +6 -1
  132. package/dist/services/actionflow/components/output.js.map +1 -1
  133. package/dist/services/actionflow/components/send_message.js +2 -2
  134. package/dist/services/actionflow/components/send_message.js.map +1 -1
  135. package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
  136. package/dist/services/actionflow/components/workflow_actions.js +7 -3
  137. package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
  138. package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
  139. package/dist/services/actionflow/context_preflight.js +25 -8
  140. package/dist/services/actionflow/context_preflight.js.map +1 -1
  141. package/dist/services/actionflow/context_provider.d.ts.map +1 -1
  142. package/dist/services/actionflow/context_provider.js +24 -4
  143. package/dist/services/actionflow/context_provider.js.map +1 -1
  144. package/dist/services/actionflow/custom_trigger_context.d.ts +10 -0
  145. package/dist/services/actionflow/custom_trigger_context.d.ts.map +1 -0
  146. package/dist/services/actionflow/custom_trigger_context.js +46 -0
  147. package/dist/services/actionflow/custom_trigger_context.js.map +1 -0
  148. package/dist/services/actionflow/dynamic_resources.d.ts.map +1 -1
  149. package/dist/services/actionflow/dynamic_resources.js +1 -1
  150. package/dist/services/actionflow/dynamic_resources.js.map +1 -1
  151. package/dist/services/actionflow/ebuilder_source.d.ts +19 -0
  152. package/dist/services/actionflow/ebuilder_source.d.ts.map +1 -0
  153. package/dist/services/actionflow/ebuilder_source.js +78 -0
  154. package/dist/services/actionflow/ebuilder_source.js.map +1 -0
  155. package/dist/services/actionflow/filter_rules.js +2 -2
  156. package/dist/services/actionflow/filter_rules.js.map +1 -1
  157. package/dist/services/actionflow/form_source.d.ts +51 -10
  158. package/dist/services/actionflow/form_source.d.ts.map +1 -1
  159. package/dist/services/actionflow/form_source.js +173 -29
  160. package/dist/services/actionflow/form_source.js.map +1 -1
  161. package/dist/services/actionflow/formula_service.d.ts +13 -2
  162. package/dist/services/actionflow/formula_service.d.ts.map +1 -1
  163. package/dist/services/actionflow/formula_service.js +104 -42
  164. package/dist/services/actionflow/formula_service.js.map +1 -1
  165. package/dist/services/actionflow/id_generator.d.ts +2 -0
  166. package/dist/services/actionflow/id_generator.d.ts.map +1 -1
  167. package/dist/services/actionflow/id_generator.js +13 -0
  168. package/dist/services/actionflow/id_generator.js.map +1 -1
  169. package/dist/services/actionflow/preflight_service.d.ts +6 -0
  170. package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
  171. package/dist/services/actionflow/preflight_service.js +217 -4
  172. package/dist/services/actionflow/preflight_service.js.map +1 -1
  173. package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
  174. package/dist/services/actionflow/workflow_compiler.js +172 -50
  175. package/dist/services/actionflow/workflow_compiler.js.map +1 -1
  176. package/dist/services/auth-resp-condition.d.ts +35 -0
  177. package/dist/services/auth-resp-condition.d.ts.map +1 -0
  178. package/dist/services/auth-resp-condition.js +111 -0
  179. package/dist/services/auth-resp-condition.js.map +1 -0
  180. package/dist/services/condition-rules.d.ts.map +1 -1
  181. package/dist/services/condition-rules.js +4 -1
  182. package/dist/services/condition-rules.js.map +1 -1
  183. package/dist/services/designer-css.d.ts +89 -0
  184. package/dist/services/designer-css.d.ts.map +1 -0
  185. package/dist/services/designer-css.js +163 -0
  186. package/dist/services/designer-css.js.map +1 -0
  187. package/dist/services/dom-structure.d.ts +42 -0
  188. package/dist/services/dom-structure.d.ts.map +1 -0
  189. package/dist/services/dom-structure.js +251 -0
  190. package/dist/services/dom-structure.js.map +1 -0
  191. package/dist/services/esb-interface/document-parser.d.ts.map +1 -1
  192. package/dist/services/esb-interface/document-parser.js +62 -5
  193. package/dist/services/esb-interface/document-parser.js.map +1 -1
  194. package/dist/services/form-association.d.ts +19 -0
  195. package/dist/services/form-association.d.ts.map +1 -1
  196. package/dist/services/form-association.js +64 -0
  197. package/dist/services/form-association.js.map +1 -1
  198. package/dist/services/form-button-action.d.ts +7 -0
  199. package/dist/services/form-button-action.d.ts.map +1 -1
  200. package/dist/services/form-button-action.js +11 -1
  201. package/dist/services/form-button-action.js.map +1 -1
  202. package/dist/services/form-create.d.ts +4 -0
  203. package/dist/services/form-create.d.ts.map +1 -1
  204. package/dist/services/form-create.js +18 -12
  205. package/dist/services/form-create.js.map +1 -1
  206. package/dist/services/form-field-patch.d.ts +25 -1
  207. package/dist/services/form-field-patch.d.ts.map +1 -1
  208. package/dist/services/form-field-patch.js +52 -9
  209. package/dist/services/form-field-patch.js.map +1 -1
  210. package/dist/services/form-formula-linkage.d.ts +349 -0
  211. package/dist/services/form-formula-linkage.d.ts.map +1 -0
  212. package/dist/services/form-formula-linkage.js +546 -0
  213. package/dist/services/form-formula-linkage.js.map +1 -0
  214. package/dist/services/form-i18n-label.d.ts +48 -0
  215. package/dist/services/form-i18n-label.d.ts.map +1 -0
  216. package/dist/services/form-i18n-label.js +91 -0
  217. package/dist/services/form-i18n-label.js.map +1 -0
  218. package/dist/services/form-layout-insert.d.ts +84 -0
  219. package/dist/services/form-layout-insert.d.ts.map +1 -0
  220. package/dist/services/form-layout-insert.js +244 -0
  221. package/dist/services/form-layout-insert.js.map +1 -0
  222. package/dist/services/form-linkage-condition.d.ts +159 -0
  223. package/dist/services/form-linkage-condition.d.ts.map +1 -0
  224. package/dist/services/form-linkage-condition.js +307 -0
  225. package/dist/services/form-linkage-condition.js.map +1 -0
  226. package/dist/services/form-style-template.d.ts +6 -2
  227. package/dist/services/form-style-template.d.ts.map +1 -1
  228. package/dist/services/form-style-template.js +8 -4
  229. package/dist/services/form-style-template.js.map +1 -1
  230. package/dist/services/formula-detail.d.ts +98 -6
  231. package/dist/services/formula-detail.d.ts.map +1 -1
  232. package/dist/services/formula-detail.js +208 -26
  233. package/dist/services/formula-detail.js.map +1 -1
  234. package/dist/services/matrix-rows.d.ts +43 -0
  235. package/dist/services/matrix-rows.d.ts.map +1 -0
  236. package/dist/services/matrix-rows.js +104 -0
  237. package/dist/services/matrix-rows.js.map +1 -0
  238. package/dist/services/menu-catalog.d.ts +84 -0
  239. package/dist/services/menu-catalog.d.ts.map +1 -0
  240. package/dist/services/menu-catalog.js +183 -0
  241. package/dist/services/menu-catalog.js.map +1 -0
  242. package/dist/services/org-department.d.ts +114 -0
  243. package/dist/services/org-department.d.ts.map +1 -0
  244. package/dist/services/org-department.js +209 -0
  245. package/dist/services/org-department.js.map +1 -0
  246. package/dist/services/org-employee.d.ts +87 -0
  247. package/dist/services/org-employee.d.ts.map +1 -0
  248. package/dist/services/org-employee.js +219 -0
  249. package/dist/services/org-employee.js.map +1 -0
  250. package/dist/services/role-member.d.ts +99 -0
  251. package/dist/services/role-member.d.ts.map +1 -0
  252. package/dist/services/role-member.js +206 -0
  253. package/dist/services/role-member.js.map +1 -0
  254. package/dist/services/workflow-add-step.d.ts +45 -0
  255. package/dist/services/workflow-add-step.d.ts.map +1 -0
  256. package/dist/services/workflow-add-step.js +122 -0
  257. package/dist/services/workflow-add-step.js.map +1 -0
  258. package/dist/services/workflow-assign-flow.d.ts +1 -6
  259. package/dist/services/workflow-assign-flow.d.ts.map +1 -1
  260. package/dist/services/workflow-assign-flow.js +3 -8
  261. package/dist/services/workflow-assign-flow.js.map +1 -1
  262. package/dist/services/workflow-drawback.d.ts +19 -0
  263. package/dist/services/workflow-drawback.d.ts.map +1 -0
  264. package/dist/services/workflow-drawback.js +59 -0
  265. package/dist/services/workflow-drawback.js.map +1 -0
  266. package/dist/services/workflow-info.d.ts +83 -0
  267. package/dist/services/workflow-info.d.ts.map +1 -0
  268. package/dist/services/workflow-info.js +97 -0
  269. package/dist/services/workflow-info.js.map +1 -0
  270. package/dist/services/workflow-links.d.ts +51 -0
  271. package/dist/services/workflow-links.d.ts.map +1 -0
  272. package/dist/services/workflow-links.js +162 -0
  273. package/dist/services/workflow-links.js.map +1 -0
  274. package/dist/services/workflow-node-layout.d.ts +45 -4
  275. package/dist/services/workflow-node-layout.d.ts.map +1 -1
  276. package/dist/services/workflow-node-layout.js +142 -41
  277. package/dist/services/workflow-node-layout.js.map +1 -1
  278. package/dist/services/workflow-odoc-setting.d.ts +43 -0
  279. package/dist/services/workflow-odoc-setting.d.ts.map +1 -0
  280. package/dist/services/workflow-odoc-setting.js +109 -0
  281. package/dist/services/workflow-odoc-setting.js.map +1 -0
  282. package/dist/services/workflow-tab-config.d.ts +54 -0
  283. package/dist/services/workflow-tab-config.d.ts.map +1 -0
  284. package/dist/services/workflow-tab-config.js +137 -0
  285. package/dist/services/workflow-tab-config.js.map +1 -0
  286. package/dist/types.d.ts +5 -1
  287. package/dist/types.d.ts.map +1 -1
  288. package/dist/utils/column-name.d.ts +24 -0
  289. package/dist/utils/column-name.d.ts.map +1 -1
  290. package/dist/utils/column-name.js +16 -0
  291. package/dist/utils/column-name.js.map +1 -1
  292. package/ecodecmd/package.json +1 -2
  293. package/ecodecmd/src/loaddep.js +19 -9
  294. package/package.json +48 -48
  295. package/skill-docs/SKILL.md +15 -11
  296. package/skill-docs/_catalog.md +85 -79
  297. package/skill-docs/actionflows/SKILL.md +173 -168
  298. package/skill-docs/actionflows/references/components/ebuilder/ActionEbAdd.md +38 -1
  299. package/skill-docs/actionflows/references/components/ebuilder/ActionEbUpdate.md +42 -0
  300. package/skill-docs/actionflows/references/components/ebuilder/EventButton.md +1 -1
  301. package/skill-docs/actionflows/references/components/logic/Output.md +2 -0
  302. package/skill-docs/actionflows/references/components/trigger/CustomTrigger.md +48 -11
  303. package/skill-docs/actionflows/references/components/workflow/ApproveCreate.md +1 -1
  304. package/skill-docs/assets/dom-structure/Bar.json +341 -0
  305. package/skill-docs/assets/dom-structure/BarStack.json +341 -0
  306. package/skill-docs/assets/dom-structure/Bubble.json +323 -0
  307. package/skill-docs/assets/dom-structure/Calendar.json +515 -0
  308. package/skill-docs/assets/dom-structure/Circular.json +337 -0
  309. package/skill-docs/assets/dom-structure/CollapsePanel.json +289 -0
  310. package/skill-docs/assets/dom-structure/Comment.json +617 -0
  311. package/skill-docs/assets/dom-structure/CountDown.json +755 -0
  312. package/skill-docs/assets/dom-structure/DigitalPanel.json +191 -0
  313. package/skill-docs/assets/dom-structure/EbButton.json +387 -0
  314. package/skill-docs/assets/dom-structure/FastCreate.json +242 -0
  315. package/skill-docs/assets/dom-structure/Gauge.json +282 -0
  316. package/skill-docs/assets/dom-structure/HBar.json +336 -0
  317. package/skill-docs/assets/dom-structure/HBarStack.json +337 -0
  318. package/skill-docs/assets/dom-structure/Line.json +341 -0
  319. package/skill-docs/assets/dom-structure/NList.json +712 -0
  320. package/skill-docs/assets/dom-structure/NavBar.json +274 -0
  321. package/skill-docs/assets/dom-structure/NavPanel.json +390 -0
  322. package/skill-docs/assets/dom-structure/NewTab.json +606 -0
  323. package/skill-docs/assets/dom-structure/Nightingale.json +336 -0
  324. package/skill-docs/assets/dom-structure/PageHeader.json +205 -0
  325. package/skill-docs/assets/dom-structure/Picture.json +209 -0
  326. package/skill-docs/assets/dom-structure/Pie.json +338 -0
  327. package/skill-docs/assets/dom-structure/ProgressChart.json +299 -0
  328. package/skill-docs/assets/dom-structure/SearchGlobal.json +628 -0
  329. package/skill-docs/assets/dom-structure/Slide.json +489 -0
  330. package/skill-docs/assets/dom-structure/Treemap.json +324 -0
  331. package/skill-docs/references/common/guide-plan-template.md +10 -4
  332. package/skill-docs/references/common/ref-cli-commands.md +67 -34
  333. package/skill-docs/references/ebuilder-designer/guide-designer-components.md +12 -1
  334. package/skill-docs/references/ebuilder-designer/guide-designer-css.md +127 -0
  335. package/skill-docs/references/ebuilder-designer/guide-designer.md +6 -5
  336. package/skill-docs/references/esb-interface/guide-import.md +4 -1
  337. package/skill-docs/references/form/guide-create-form.md +14 -1
  338. package/skill-docs/references/form/guide-field-linkage.md +2 -0
  339. package/skill-docs/references/form/guide-form-formula-functions.md +36 -0
  340. package/skill-docs/references/form/guide-form-layout-incremental.md +75 -0
  341. package/skill-docs/references/form/guide-form-layout-planning.md +1 -1
  342. package/skill-docs/references/form/guide-form-linkage.md +89 -5
  343. package/skill-docs/references/form/guide-formula-linkage.md +250 -0
  344. package/skill-docs/references/form/ref-form-fields.md +6 -0
  345. package/skill-docs/references/hrm/guide-matrix.md +79 -16
  346. package/skill-docs/references/hrm/guide-org-employee.md +56 -0
  347. package/skill-docs/references/menu/system-menus.md +12 -0
  348. package/skill-docs/references/workflow/guide-workflow-auth-resp.md +48 -22
  349. package/skill-docs/references/workflow/guide-workflow-odoc-setting.md +248 -0
  350. package/skill-docs/references/workflow/guide-workflow-odoc.md +25 -33
  351. package/skill-docs/references/workflow/guide-workflow.md +18 -3
@@ -3,6 +3,10 @@
3
3
  * - `{主表.字段名}` / `{明细表名.字段名}` —— 平台存储格式
4
4
  * - `[字段名]` / `[表名.字段名]` —— 设计器编辑器的写法
5
5
  *
6
+ * **三段式是「选项引用」**:`{主表.性别.男}` 指「性别」字段里那个叫「男」的**选项**,
7
+ * 不是某个叫「性别.男」的字段。按第一个点切分会把字段读成 `性别.男`,然后报「未找到字段」——
8
+ * 那正是「用 CLI 表达不了选项比较」的老毛病(参数要的是选项的 valueKey,平台比的是选项对象)。
9
+ *
6
10
  * 重复出现**不去重** —— 每个出现位置都要单独一个参数(见文件头说明)。
7
11
  * 不做字符串字面量剔除:公式里写 `"["` 这种极端情况不在支持范围,误判会在解析阶段
8
12
  * 报「未找到字段」,比静默错绑安全。
@@ -15,11 +19,17 @@ export function parseFormulaRefs(expression) {
15
19
  const inner = (m[1] ?? m[2] ?? '').trim();
16
20
  if (!inner)
17
21
  continue;
18
- const dot = inner.indexOf('.');
19
- const hasTable = dot > 0 && dot < inner.length - 1;
22
+ // 按点切段(最多三段:表 / 字段 / 选项)。字段名带点的情形在这套平台里不存在,
23
+ // 而「第一个点之后全是字段名」会把三段式读坏,所以这里必须整段切开看。
24
+ // ⚠ 选项引用必须写**完整三段**:`[性别.男]` 只有两段,仍然按「明细表.字段名」读 ——
25
+ // 这与既有的方括号写法天然撞车,没法从段数之外再区分,所以不给它开后门。
26
+ const parts = inner.split('.').map((s) => s.trim());
27
+ const hasTable = parts.length >= 2 && parts[0] !== '' && parts[1] !== '';
28
+ const tail = hasTable ? parts.slice(2).join('.').trim() : '';
20
29
  refs.push({
21
- table: hasTable ? inner.slice(0, dot).trim() : null,
22
- field: (hasTable ? inner.slice(dot + 1) : inner).trim(),
30
+ table: hasTable ? parts[0] : null,
31
+ field: hasTable ? parts[1] : inner,
32
+ ...(hasTable && tail ? { option: tail } : {}),
23
33
  raw: m[0],
24
34
  index: m.index,
25
35
  length: m[0].length,
@@ -27,6 +37,52 @@ export function parseFormulaRefs(expression) {
27
37
  }
28
38
  return refs;
29
39
  }
40
+ /** 选项型控件的 componentKey —— 这些字段的值是选项,能写三段式引用。 */
41
+ const OPTION_FIELD_KEYS = ['Select', 'SelectMultiple', 'RadioBox', 'CheckBox'];
42
+ function isOptionField(field) {
43
+ return OPTION_FIELD_KEYS.includes(String(field?.componentKey || field?.fieldKey || field?.type || ''));
44
+ }
45
+ /**
46
+ * 取字段的选项表。`getEbField` 把选项放在 **`fieldConfig.options`**(`{name, valueKey, …}`);
47
+ * 其余几个位置是别的路由/老版本留下的可能落点,一并兜住,取到第一个非空数组为止。
48
+ */
49
+ function optionsOf(field) {
50
+ const cands = [
51
+ field?.fieldConfig?.options,
52
+ field?.otherPropertiesObj?.options,
53
+ Array.isArray(field?.selectData) ? field.selectData : field?.selectData?.options,
54
+ ];
55
+ for (const c of cands)
56
+ if (Array.isArray(c) && c.length)
57
+ return c;
58
+ return [];
59
+ }
60
+ /**
61
+ * 选项的参数对象(形状实测自设计器落库的报文)。
62
+ *
63
+ * ⚠ `id` 是选项的 **valueKey**,不是选项记录自己的 id —— 同一份数据里这两个值相邻但不同
64
+ * (`valueKey=…7601` / 记录 `id=…2674`),发错了平台不报错,只是永远比对不上。
65
+ * 平台比的是**选项对象**,不是选项名的字符串,所以这种引用**没有 `fieldId`/`title`/`appId`**。
66
+ */
67
+ function buildOptionParam(fieldId, optionName, optionValueKey, properKey, formId, module) {
68
+ return {
69
+ parent: '',
70
+ properKey,
71
+ formulaParentVarList: [],
72
+ dataTemplateId: '',
73
+ module,
74
+ direct: true,
75
+ del: false,
76
+ middleFieldIds: [fieldId],
77
+ dataSourceField: false,
78
+ repeat: false,
79
+ name: optionName,
80
+ directFormId: formId,
81
+ id: optionValueKey,
82
+ fieldType: 'option',
83
+ groupData: false,
84
+ };
85
+ }
30
86
  /**
31
87
  * 按目标字段的类型给出合适的公式返回类型。
32
88
  *
@@ -42,7 +98,48 @@ export function defaultReturnType(fieldKey) {
42
98
  return 'Date';
43
99
  return 'String';
44
100
  }
45
- export async function buildFormulaParameters(client, baseUrl, objId, appId, formId, expression) {
101
+ /**
102
+ * 反查模块字段。**命中多条不取首条**,返回候选让调用方报错 ——
103
+ * 语义键 `name` 的标签就叫「名称」,与业务字段撞名是可预期的。
104
+ */
105
+ function findModuleColumn(moduleColumns, name) {
106
+ if (!moduleColumns?.length)
107
+ return {};
108
+ const byId = moduleColumns.filter((c) => c.id === name);
109
+ if (byId.length)
110
+ return byId.length === 1 ? { col: byId[0] } : { candidates: byId };
111
+ const byName = moduleColumns.filter((c) => c.name === name);
112
+ if (byName.length)
113
+ return byName.length === 1 ? { col: byName[0] } : { candidates: byName };
114
+ return {};
115
+ }
116
+ /**
117
+ * 参数对象拼装。业务字段与模块字段共用这一处,将来补平台默认键只改这里。
118
+ * `module` 与 `appId` 由路由决定:`appId` 为 `undefined` 时**整个键不出现**
119
+ * —— 流程表单那条路由的 parameter 里就没有这个键,写个空串是另一回事。
120
+ */
121
+ function buildParam(src, formId, module, appId) {
122
+ return {
123
+ dataTemplateId: '', fieldId: src.fieldId, formId, module,
124
+ properKey: src.properKey,
125
+ ...(src.sFormId ? { sFormId: src.sFormId, sFormName: src.sFormName } : {}),
126
+ title: src.title, name: src.name,
127
+ ...(appId === undefined ? {} : { appId }),
128
+ id: null,
129
+ };
130
+ }
131
+ /** 没给 `hint` 时的兜底指路。 */
132
+ const DEFAULT_COLUMNS_HINT = 'form formula-linkage columns';
133
+ /**
134
+ * 引用解析与参数构建的**纯核** —— 不碰网络,字段来源由调用方注入。
135
+ *
136
+ * 两条路由共用它(eb 表的字段来源是 `getEbField`,流程表单是 `getConfig`),所以这里只放
137
+ * **与路由无关**的规则:方括号归一化成花括号、逐出现位置各给一份参数、明细引用带
138
+ * `sFormId`/`sFormName`、模块字段一律写裸标签、业务字段与模块字段撞名时业务字段胜出。
139
+ */
140
+ export function resolveFormulaRefs(expression, ctx) {
141
+ const { mainFields, detailTables, moduleColumns, formId, module, appId } = ctx;
142
+ const hint = ctx.hint || DEFAULT_COLUMNS_HINT;
46
143
  const errors = [];
47
144
  const warnings = [];
48
145
  const parameters = [];
@@ -53,15 +150,6 @@ export async function buildFormulaParameters(client, baseUrl, objId, appId, form
53
150
  // 早期版本在这里直接报错退出,把「平台允许的用法」当成非法输入拦掉了。
54
151
  warnings.push('表达式中没有字段引用(纯常量公式)。平台允许这种写法,将按原样保存。');
55
152
  }
56
- // getEbField 取主表 + 明细结构(主表字段用于反查不带表名的 `[字段]`)
57
- let mainFields = [];
58
- let detailTables = [];
59
- try {
60
- const eb = await client.post(`${baseUrl}/api/bs/esb/setting/component/getEbField`, { tableId: objId, appId });
61
- mainFields = eb?.data?.main || [];
62
- detailTables = eb?.data?.detail || [];
63
- }
64
- catch { /* 拉取失败由解析报错兜底 */ }
65
153
  const mainFind = (name) => mainFields.find((f) => String(f.id) === name || f.showName === name || f.dataKey === name);
66
154
  const detailOf = (table) => detailTables.find((d) => d.tableName === table || String(d.detailTableId) === table);
67
155
  const fieldIn = (dt, name) => (dt?.fields || []).find((x) => String(x.id) === name || x.showName === name || x.dataKey === name);
@@ -71,6 +159,7 @@ export async function buildFormulaParameters(client, baseUrl, objId, appId, form
71
159
  for (const ref of refs) {
72
160
  let table = ref.table;
73
161
  let resolved;
162
+ let moduleCol = null;
74
163
  if (table === '主表' || table === null) {
75
164
  resolved = mainFind(ref.field);
76
165
  if (!resolved && table === null) {
@@ -87,6 +176,23 @@ export async function buildFormulaParameters(client, baseUrl, objId, appId, form
87
176
  }
88
177
  if (resolved && (table === null || table === '主表')) {
89
178
  table = '主表';
179
+ // 业务字段赢了同名的模块字段:不报错、不静默换源,只提示一句怎么强制指定
180
+ const sameName = moduleColumns?.filter((c) => c.name === ref.field) || [];
181
+ if (sameName.length) {
182
+ warnings.push(`「${ref.field}」已按业务字段解析;若要引用系统模块字段,请写成 [${sameName[0].id}]`);
183
+ }
184
+ }
185
+ // 主表里没有 → 找模块字段(调用方没传 moduleColumns 时这里恒不命中,等价于原有报错)
186
+ if (!resolved) {
187
+ const hit = findModuleColumn(moduleColumns, ref.field);
188
+ if (hit.candidates) {
189
+ errors.push(`模块字段「${ref.field}」有多个候选(${hit.candidates.map((c) => c.id).join('、')}),请写成 [<语义键>] 指明是哪个`);
190
+ continue;
191
+ }
192
+ if (hit.col) {
193
+ moduleCol = hit.col;
194
+ table = '主表';
195
+ }
90
196
  }
91
197
  }
92
198
  else {
@@ -98,29 +204,86 @@ export async function buildFormulaParameters(client, baseUrl, objId, appId, form
98
204
  resolved = fieldIn(dt, ref.field);
99
205
  table = dt.tableName;
100
206
  }
101
- if (!resolved) {
207
+ if (!resolved && !moduleCol) {
102
208
  const where = ref.table === '主表' ? '主表' : ref.table ? `明细表「${ref.table}」` : '主表或任一明细表';
103
209
  const avail = ref.table && ref.table !== '主表'
104
210
  ? (detailOf(ref.table)?.fields || []).map((x) => x.showName).join(', ')
105
211
  : mainFields.map((x) => x.showName).join(', ');
106
- errors.push(`在${where}中未找到字段: "${ref.field}",可用: ${avail}`);
212
+ // 传了 moduleColumns 才提示模块字段写法;没传时错误文案与加这个参数之前逐字相同
213
+ const moduleHint = moduleColumns?.length
214
+ ? `;若是系统模块字段(${moduleColumns.slice(0, 3).map((c) => c.name).join('、')} 等),可写成 [<语义键>],语义键见 ${hint}`
215
+ : '';
216
+ errors.push(`在${where}中未找到字段: "${ref.field}",可用: ${avail}${moduleHint}`);
107
217
  continue;
108
218
  }
219
+ // ── 护栏:选项型字段 与 **字符串字面量** 比较 ──────────────────────
220
+ // 选项存的是 valueKey,拿它跟选项**名字**比**恒不成立**;而平台照收、不报错、回 200 ——
221
+ // 这是最容易被写出来、又最难查的错法(写完看着全绿,只是结果永远不对)。
222
+ // 不阻断(表达式最终合不合法由平台定),但必须出声。
223
+ if (resolved && !ref.option && isOptionField(resolved)) {
224
+ const lit = /^\s*(==|!=)\s*(['"])([^'"]*)\2/.exec(expression.slice(ref.index + ref.length));
225
+ if (lit) {
226
+ // 建议按**字面量本身**去找同名的选项(`'女'` 就建议「女」),找不到才退而拿第一个当例子。
227
+ const opts = optionsOf(resolved);
228
+ const matched = opts.find((o) => String(o.name) === lit[3]);
229
+ const suggest = matched ? matched.name : (opts[0] ? opts[0].name : '<选项名>');
230
+ warnings.push(`「${ref.field}」是选项型控件,这里却拿它跟字符串 ${lit[2]}${lit[3]}${lit[2]} 比较 —— `
231
+ + '选项存的是 valueKey,与选项名比**恒不成立**,平台也不报错。正确写法是引用选项本身:'
232
+ + `{${ref.table || '主表'}.${ref.field}.${suggest}}`);
233
+ }
234
+ }
235
+ // ── 选项引用 `{主表.性别.男}` ─────────────────────────────────
236
+ // 平台比的是**选项对象**(参数里带选项的 valueKey),不是选项名的字符串 ——
237
+ // 所以这种引用必须解析出 valueKey,光把三段式原样发下去是不行的。
238
+ let optionHit = null;
239
+ if (ref.option) {
240
+ if (moduleCol) {
241
+ errors.push(`模块字段「${moduleCol.name}」没有选项,不能写成 {${ref.table || '主表'}.${moduleCol.name}.${ref.option}}`);
242
+ continue;
243
+ }
244
+ const opts = optionsOf(resolved);
245
+ if (!opts.length) {
246
+ errors.push(`字段「${ref.field}」不是选项型控件(${resolved.componentKey || resolved.fieldKey || '未知类型'}),`
247
+ + `不能写成 {${ref.table || '主表'}.${ref.field}.${ref.option}}`);
248
+ continue;
249
+ }
250
+ const byName = opts.filter((o) => String(o.name) === ref.option);
251
+ const hit = byName.length ? byName : opts.filter((o) => String(o.valueKey) === ref.option);
252
+ if (!hit.length) {
253
+ errors.push(`字段「${ref.field}」里没有选项「${ref.option}」,可选: ${opts.map((o) => o.name).join(', ')}`);
254
+ continue;
255
+ }
256
+ if (hit.length > 1) {
257
+ errors.push(`选项「${ref.option}」在字段「${ref.field}」里有多个同名候选,请改用它的 valueKey 指定`);
258
+ continue;
259
+ }
260
+ optionHit = hit[0];
261
+ }
109
262
  // 走到这里 table 必然已定型:要么 '主表',要么是某个明细表名(带表名的引用校验过、不带表名的已反查过)
110
263
  const tableName = table;
111
264
  const isDetail = tableName !== '主表';
112
265
  const dt = isDetail ? detailOf(tableName) : null;
113
- parameters.push({
114
- dataTemplateId: '', fieldId: String(resolved.id), formId, module: 'ebuilderform',
115
- properKey: resolved.componentKey || resolved.fieldKey || 'Text',
116
- ...(dt ? { sFormId: String(dt.detailTableId), sFormName: dt.tableName } : {}),
117
- title: resolved.showName || resolved.title || ref.field,
118
- name: resolved.showName || resolved.field || ref.field,
119
- appId, id: null,
120
- });
121
- refNames.push(`${table}.${ref.field}`);
266
+ // 归一化用的字段名:模块字段与选项一律写**裸标签**(`{主表.主表数据id}` / `{主表.性别.男}`),
267
+ // 与平台落库形态一致,免得用户写 [formDataId] 时下发一个平台不认的 `{主表.formDataId}`
268
+ const normField = moduleCol ? moduleCol.name : optionHit ? `${ref.field}.${optionHit.name}` : ref.field;
269
+ if (moduleCol) {
270
+ parameters.push(buildParam({ fieldId: moduleCol.id, properKey: moduleCol.descType, title: moduleCol.name, name: moduleCol.name }, formId, module, appId));
271
+ }
272
+ else if (optionHit) {
273
+ parameters.push(buildOptionParam(String(resolved.id), String(optionHit.name), String(optionHit.valueKey), resolved.componentKey || resolved.fieldKey || 'Select', formId, module));
274
+ }
275
+ else {
276
+ parameters.push(buildParam({
277
+ fieldId: String(resolved.id),
278
+ properKey: resolved.componentKey || resolved.fieldKey || 'Text',
279
+ title: resolved.showName || resolved.title || ref.field,
280
+ name: resolved.showName || resolved.field || ref.field,
281
+ ...(dt ? { sFormId: String(dt.detailTableId), sFormName: dt.tableName } : {}),
282
+ }, formId, module, appId));
283
+ }
284
+ refNames.push(`${table}.${normField}`);
122
285
  pieces.push(expression.slice(cursor, ref.index));
123
- pieces.push(`{${table}.${ref.field}}`);
286
+ pieces.push(`{${table}.${normField}}`);
124
287
  cursor = ref.index + ref.length;
125
288
  }
126
289
  pieces.push(expression.slice(cursor));
@@ -129,4 +292,23 @@ export async function buildFormulaParameters(client, baseUrl, objId, appId, form
129
292
  normalizedExpression: errors.length ? expression : pieces.join(''),
130
293
  };
131
294
  }
295
+ /**
296
+ * eb 表那条路由:先取字段来源(`getEbField`)再调解析核。
297
+ *
298
+ * @param moduleColumns 模块字段(系统字段)候选。只有函数联动会传;**不传时行为与加这个参数之前完全一致**。
299
+ */
300
+ export async function buildFormulaParameters(client, baseUrl, objId, appId, formId, expression, moduleColumns) {
301
+ // getEbField 取主表 + 明细结构(主表字段用于反查不带表名的 `[字段]`)
302
+ let mainFields = [];
303
+ let detailTables = [];
304
+ try {
305
+ const eb = await client.post(`${baseUrl}/api/bs/esb/setting/component/getEbField`, { tableId: objId, appId });
306
+ mainFields = eb?.data?.main || [];
307
+ detailTables = eb?.data?.detail || [];
308
+ }
309
+ catch { /* 拉取失败由解析报错兜底 */ }
310
+ return resolveFormulaRefs(expression, {
311
+ mainFields, detailTables, moduleColumns, formId, module: 'ebuilderform', appId,
312
+ });
313
+ }
132
314
  //# sourceMappingURL=formula-detail.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"formula-detail.js","sourceRoot":"","sources":["../../src/services/formula-detail.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"formula-detail.js","sourceRoot":"","sources":["../../src/services/formula-detail.ts"],"names":[],"mappings":"AA0HA;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,gBAAgB,CAAC,UAAkB;IACjD,MAAM,IAAI,GAAiB,EAAE,CAAC;IAC9B,MAAM,EAAE,GAAG,8BAA8B,CAAC;IAC1C,IAAI,CAAyB,CAAC;IAC9B,OAAO,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,4CAA4C;QAC5C,qCAAqC;QACrC,mDAAmD;QACnD,wCAAwC;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QACzE,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,IAAI,CAAC,IAAI,CAAC;YACR,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;YACjC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;YAClC,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACT,KAAK,EAAE,CAAC,CAAC,KAAK;YACd,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;SACpB,CAAC,CAAC;IACL,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gDAAgD;AAChD,MAAM,iBAAiB,GAAG,CAAC,QAAQ,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;AAE/E,SAAS,aAAa,CAAC,KAAU;IAC/B,OAAO,iBAAiB,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,YAAY,IAAI,KAAK,EAAE,QAAQ,IAAI,KAAK,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;AACzG,CAAC;AAED;;;GAGG;AACH,SAAS,SAAS,CAAC,KAAU;IAC3B,MAAM,KAAK,GAAG;QACZ,KAAK,EAAE,WAAW,EAAE,OAAO;QAC3B,KAAK,EAAE,kBAAkB,EAAE,OAAO;QAClC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO;KACjF,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM;YAAE,OAAO,CAAC,CAAC;IAClE,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,gBAAgB,CACvB,OAAe,EAAE,UAAkB,EAAE,cAAsB,EAC3D,SAAiB,EAAE,MAAc,EAAE,MAAc;IAEjD,OAAO;QACL,MAAM,EAAE,EAAE;QACV,SAAS;QACT,oBAAoB,EAAE,EAAE;QACxB,cAAc,EAAE,EAAE;QAClB,MAAM;QACN,MAAM,EAAE,IAAI;QACZ,GAAG,EAAE,KAAK;QACV,cAAc,EAAE,CAAC,OAAO,CAAC;QACzB,eAAe,EAAE,KAAK;QACtB,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,UAAU;QAChB,YAAY,EAAE,MAAM;QACpB,EAAE,EAAE,cAAc;QAClB,SAAS,EAAE,QAAQ;QACnB,SAAS,EAAE,KAAK;KACjB,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAA4B;IAC5D,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACjC,IAAI,4BAA4B,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC1D,IAAI,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IACnD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAmBD;;;GAGG;AACH,SAAS,gBAAgB,CACvB,aAAgD,EAChD,IAAY;IAEZ,IAAI,CAAC,aAAa,EAAE,MAAM;QAAE,OAAO,EAAE,CAAC;IACtC,MAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC;IACxD,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;IACpF,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IAC5D,IAAI,MAAM,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAC5F,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;GAIG;AACH,SAAS,UAAU,CACjB,GAA8G,EAC9G,MAAc,EAAE,MAAc,EAAE,KAAyB;IAEzD,OAAO;QACL,cAAc,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM;QACxD,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1E,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI;QAChC,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;QACzC,EAAE,EAAE,IAAI;KACT,CAAC;AACJ,CAAC;AAmBD,wBAAwB;AACxB,MAAM,oBAAoB,GAAG,8BAA8B,CAAC;AAE5D;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB,EAAE,GAAsB;IAC3E,MAAM,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC;IAC/E,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,oBAAoB,CAAC;IAC9C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,UAAU,GAAmB,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,IAAI,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAE1C,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,gDAAgD;QAChD,qCAAqC;QACrC,QAAQ,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAC5D,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,KAAK,CAAC,CAAC;IAC9H,MAAM,OAAO,GAAG,CAAC,EAAO,EAAE,IAAY,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAC5E,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;IAEtE,8CAA8C;IAC9C,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;QACtB,IAAI,QAAa,CAAC;QAClB,IAAI,SAAS,GAA+B,IAAI,CAAC;QAEjD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACrC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,CAAC,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;gBAChC,yBAAyB;gBACzB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBACtE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,cAAc,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,eAAe,GAAG,CAAC,KAAK,SAAS,CAAC,CAAC;oBACzH,SAAS;gBACX,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACxB,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;oBAC5B,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC3C,CAAC;YACH,CAAC;YACD,IAAI,QAAQ,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC;gBACnD,KAAK,GAAG,IAAI,CAAC;gBACb,sCAAsC;gBACtC,MAAM,QAAQ,GAAG,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC1E,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;oBACpB,QAAQ,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,6BAA6B,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC7E,CAAC;YACH,CAAC;YACD,qDAAqD;YACrD,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,GAAG,GAAG,gBAAgB,CAAC,aAAa,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;gBACvD,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,UAAU,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;oBACvG,SAAS;gBACX,CAAC;gBACD,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;oBACZ,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC;oBACpB,KAAK,GAAG,IAAI,CAAC;gBACf,CAAC;YACH,CAAC;QACH,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,EAAE,EAAE,CAAC;gBACR,MAAM,CAAC,IAAI,CAAC,YAAY,KAAK,SAAS,YAAY,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC9F,SAAS;YACX,CAAC;YACD,QAAQ,GAAG,OAAO,CAAC,EAAE,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YAClC,KAAK,GAAG,EAAE,CAAC,SAAS,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS,EAAE,CAAC;YAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;YACvF,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,KAAK,IAAI;gBAC3C,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;gBAC5E,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtD,iDAAiD;YACjD,MAAM,UAAU,GAAG,aAAa,EAAE,MAAM;gBACtC,CAAC,CAAC,aAAa,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,wBAAwB,IAAI,EAAE;gBACnG,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,YAAY,GAAG,CAAC,KAAK,SAAS,KAAK,GAAG,UAAU,EAAE,CAAC,CAAC;YACzE,SAAS;QACX,CAAC;QAED,qDAAqD;QACrD,yDAAyD;QACzD,sCAAsC;QACtC,4BAA4B;QAC5B,IAAI,QAAQ,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvD,MAAM,GAAG,GAAG,gCAAgC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;YAC5F,IAAI,GAAG,EAAE,CAAC;gBACR,mDAAmD;gBACnD,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;gBACjC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACjE,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBAC5E,QAAQ,CAAC,IAAI,CACX,IAAI,GAAG,CAAC,KAAK,qBAAqB,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,SAAS;sBACjE,kDAAkD;sBAClD,IAAI,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,KAAK,IAAI,OAAO,GAAG,CACnD,CAAC;YACJ,CAAC;QACH,CAAC;QAED,wDAAwD;QACxD,+CAA+C;QAC/C,uCAAuC;QACvC,IAAI,SAAS,GAAQ,IAAI,CAAC;QAC1B,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,QAAQ,SAAS,CAAC,IAAI,eAAe,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,SAAS,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;gBACvG,SAAS;YACX,CAAC;YACD,MAAM,IAAI,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YACjC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,YAAY,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,QAAQ,IAAI,MAAM,IAAI;sBAC3F,SAAS,GAAG,CAAC,KAAK,IAAI,IAAI,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;gBAC9D,SAAS;YACX,CAAC;YACD,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;YACtE,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,CAAC;YAChG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,KAAK,UAAU,GAAG,CAAC,MAAM,SAAS,IAAI,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACnG,SAAS;YACX,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnB,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAK,6BAA6B,CAAC,CAAC;gBAC5E,SAAS;YACX,CAAC;YACD,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC;QAED,0DAA0D;QAC1D,MAAM,SAAS,GAAG,KAAe,CAAC;QAClC,MAAM,QAAQ,GAAG,SAAS,KAAK,IAAI,CAAC;QACpC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACjD,2DAA2D;QAC3D,4DAA4D;QAC5D,MAAM,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;QACxG,IAAI,SAAS,EAAE,CAAC;YACd,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAC5J,CAAC;aAAM,IAAI,SAAS,EAAE,CAAC;YACrB,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAC9B,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EACvE,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,QAAQ,IAAI,QAAQ,EAAE,MAAM,EAAE,MAAM,CACvE,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC;gBACzB,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,SAAS,EAAE,QAAQ,CAAC,YAAY,IAAI,QAAQ,CAAC,QAAQ,IAAI,MAAM;gBAC/D,KAAK,EAAE,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK;gBACvD,IAAI,EAAE,QAAQ,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK;gBACtD,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC9E,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7B,CAAC;QACD,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC;QAEvC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,SAAS,GAAG,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC;IAClC,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IAEtC,OAAO;QACL,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ;QACtC,oBAAoB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;KACnE,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,MAAiB,EAAE,OAAe,EAClC,KAAa,EAAE,KAAa,EAAE,MAAc,EAC5C,UAAkB,EAClB,aAAqC;IAErC,8CAA8C;IAC9C,IAAI,UAAU,GAAU,EAAE,CAAC;IAC3B,IAAI,YAAY,GAAU,EAAE,CAAC;IAC7B,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,0CAA0C,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9G,UAAU,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC;QAClC,YAAY,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,IAAI,EAAE,CAAC;IACxC,CAAC;IAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;IAE7B,OAAO,kBAAkB,CAAC,UAAU,EAAE;QACpC,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK;KAC/E,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { ApiClient } from '../core/client.js';
2
+ /**
3
+ * HRM 矩阵数据行的形状处理。
4
+ *
5
+ * 平台的 `data/save` 收的是:
6
+ * { matrixId, rowData: [ { id?, data: [ {dataIndex, conditionAble, value: ["<实体ID>"]} ] } ] }
7
+ *
8
+ * 两个要点:
9
+ *
10
+ * 1. **带 `id` 是改,不带是增。** 行 id 用 `matrix data list` 拿。同步型矩阵(`syncType=1`,
11
+ * 如部门矩阵)的行是组织架构同步出来的、不可增删,**行 id 就是部门 id**;手工维护的矩阵
12
+ * 行 id 是平台发号的雪花。
13
+ *
14
+ * 2. **平台整行覆盖**,不是按列合并。只给值列去改一行,条件列会被清空 —— 所以改行时必须
15
+ * 先读回该行、把没给的列补上再发。
16
+ */
17
+ /** 简写数据行里代表「行 id」的键。列键(configId)全是数字串,不会与这两个撞。 */
18
+ export declare const ROW_ID_KEYS: string[];
19
+ /** 拆出简写行里的「行 id」与各列值。 */
20
+ export declare function splitMatrixRow(row: any): {
21
+ rowId?: string;
22
+ cells: Record<string, any>;
23
+ };
24
+ /**
25
+ * 统一成 ID 字符串数组。
26
+ * 两种写法都收:`["<实体ID>"]`(提交用)与 `[{id:"<实体ID>",...}]`(`data list` 读回的实体对象)。
27
+ */
28
+ export declare function toIdList(v: any): string[];
29
+ /** 这一行没给、但列定义里有的列。改行时这些列必须从现有行补回来。 */
30
+ export declare function missingMatrixColumns(row: any, allColumns: string[]): string[];
31
+ /** 行里给了但矩阵没有的列 —— 多半是 configId 抄错了,要报出来而不是静默发出去。 */
32
+ export declare function unknownMatrixColumns(row: any, allColumns: string[]): string[];
33
+ /**
34
+ * 把一行简写展开成平台要的形状。
35
+ *
36
+ * 带了 `rowId` 且该行缺列时,必须传 `existingRow`(该行的现有数据)—— 缺的列会从它取值补上,
37
+ * 否则会被平台整行覆盖清空。`existingRow` 里的值是 `data list` 读回的实体对象数组,
38
+ * 由 [[toIdList]] 统一成 ID。
39
+ */
40
+ export declare function buildMatrixRow(row: any, conditionIds: Set<string>, allColumns: string[], existingRow?: any | null): any;
41
+ /** 按行 id 取一行。`data/page` 没有按行 id 过滤的入参,只能翻页找。 */
42
+ export declare function fetchMatrixRow(client: ApiClient, baseUrl: string, matrixId: string, rowId: string): Promise<any | null>;
43
+ //# sourceMappingURL=matrix-rows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matrix-rows.d.ts","sourceRoot":"","sources":["../../src/services/matrix-rows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;;;;;;;;;;;;GAcG;AAEH,kDAAkD;AAClD,eAAO,MAAM,WAAW,UAAkB,CAAC;AAE3C,yBAAyB;AACzB,wBAAgB,cAAc,CAAC,GAAG,EAAE,GAAG,GAAG;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;CAAE,CAYvF;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,GAAG,GAAG,MAAM,EAAE,CAOzC;AAED,sCAAsC;AACtC,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAG7E;AAED,oDAAoD;AACpD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAG7E;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,GAAG,EACR,YAAY,EAAE,GAAG,CAAC,MAAM,CAAC,EACzB,UAAU,EAAE,MAAM,EAAE,EACpB,WAAW,CAAC,EAAE,GAAG,GAAG,IAAI,GACvB,GAAG,CAqBL;AAED,iDAAiD;AACjD,wBAAsB,cAAc,CAClC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAClE,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAerB"}
@@ -0,0 +1,104 @@
1
+ /**
2
+ * HRM 矩阵数据行的形状处理。
3
+ *
4
+ * 平台的 `data/save` 收的是:
5
+ * { matrixId, rowData: [ { id?, data: [ {dataIndex, conditionAble, value: ["<实体ID>"]} ] } ] }
6
+ *
7
+ * 两个要点:
8
+ *
9
+ * 1. **带 `id` 是改,不带是增。** 行 id 用 `matrix data list` 拿。同步型矩阵(`syncType=1`,
10
+ * 如部门矩阵)的行是组织架构同步出来的、不可增删,**行 id 就是部门 id**;手工维护的矩阵
11
+ * 行 id 是平台发号的雪花。
12
+ *
13
+ * 2. **平台整行覆盖**,不是按列合并。只给值列去改一行,条件列会被清空 —— 所以改行时必须
14
+ * 先读回该行、把没给的列补上再发。
15
+ */
16
+ /** 简写数据行里代表「行 id」的键。列键(configId)全是数字串,不会与这两个撞。 */
17
+ export const ROW_ID_KEYS = ['rowId', 'id'];
18
+ /** 拆出简写行里的「行 id」与各列值。 */
19
+ export function splitMatrixRow(row) {
20
+ const cells = {};
21
+ let rowId;
22
+ for (const [k, v] of Object.entries(row || {})) {
23
+ if (ROW_ID_KEYS.includes(k)) {
24
+ const s = String(v ?? '').trim();
25
+ if (s)
26
+ rowId = s;
27
+ continue;
28
+ }
29
+ cells[k] = v;
30
+ }
31
+ return { rowId, cells };
32
+ }
33
+ /**
34
+ * 统一成 ID 字符串数组。
35
+ * 两种写法都收:`["<实体ID>"]`(提交用)与 `[{id:"<实体ID>",...}]`(`data list` 读回的实体对象)。
36
+ */
37
+ export function toIdList(v) {
38
+ if (v === undefined || v === null || v === '')
39
+ return [];
40
+ const arr = Array.isArray(v) ? v : [v];
41
+ return arr
42
+ .map((e) => (e && typeof e === 'object' ? e.id : e))
43
+ .map((e) => String(e ?? '').trim())
44
+ .filter(Boolean);
45
+ }
46
+ /** 这一行没给、但列定义里有的列。改行时这些列必须从现有行补回来。 */
47
+ export function missingMatrixColumns(row, allColumns) {
48
+ const given = new Set(Object.keys(splitMatrixRow(row).cells));
49
+ return allColumns.filter((c) => !given.has(c));
50
+ }
51
+ /** 行里给了但矩阵没有的列 —— 多半是 configId 抄错了,要报出来而不是静默发出去。 */
52
+ export function unknownMatrixColumns(row, allColumns) {
53
+ const cols = new Set(allColumns);
54
+ return Object.keys(splitMatrixRow(row).cells).filter((k) => !cols.has(k));
55
+ }
56
+ /**
57
+ * 把一行简写展开成平台要的形状。
58
+ *
59
+ * 带了 `rowId` 且该行缺列时,必须传 `existingRow`(该行的现有数据)—— 缺的列会从它取值补上,
60
+ * 否则会被平台整行覆盖清空。`existingRow` 里的值是 `data list` 读回的实体对象数组,
61
+ * 由 [[toIdList]] 统一成 ID。
62
+ */
63
+ export function buildMatrixRow(row, conditionIds, allColumns, existingRow) {
64
+ const { rowId, cells } = splitMatrixRow(row);
65
+ const merged = Object.entries(cells);
66
+ if (rowId) {
67
+ const given = new Set(Object.keys(cells));
68
+ for (const col of allColumns) {
69
+ if (given.has(col))
70
+ continue;
71
+ // 没给又没得补的列留空数组:与平台「整行覆盖」的语义一致,也避免发 undefined。
72
+ merged.push([col, existingRow ? toIdList(existingRow[col]) : []]);
73
+ }
74
+ }
75
+ return {
76
+ ...(rowId ? { id: rowId } : {}),
77
+ data: merged.map(([configId, v]) => ({
78
+ dataIndex: configId,
79
+ conditionAble: conditionIds.has(configId),
80
+ value: toIdList(v),
81
+ })),
82
+ };
83
+ }
84
+ /** 按行 id 取一行。`data/page` 没有按行 id 过滤的入参,只能翻页找。 */
85
+ export async function fetchMatrixRow(client, baseUrl, matrixId, rowId) {
86
+ const size = 500;
87
+ const maxPages = 20;
88
+ for (let page = 1; page <= maxPages; page++) {
89
+ const res = await client.post(`${baseUrl}/api/bs/hrm/matrix2/data/page`, {
90
+ matrixId, current: page, pageSize: size,
91
+ });
92
+ const p = res?.data || {};
93
+ const rows = p.data || p.records || p.datas || [];
94
+ const hit = rows.find((r) => String(r.id) === String(rowId));
95
+ if (hit)
96
+ return hit;
97
+ if (rows.length < size)
98
+ return null; // 没有更多页
99
+ if (typeof p.total === 'number' && p.total <= page * size)
100
+ return null; // 已翻到底
101
+ }
102
+ return null;
103
+ }
104
+ //# sourceMappingURL=matrix-rows.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"matrix-rows.js","sourceRoot":"","sources":["../../src/services/matrix-rows.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * 应用菜单目录:把 `allMenus` 的原始返回**递归展开**成可查询的节点表,并构造改名的写报文。
3
+ *
4
+ * 两件事非做不可,都是踩过的坑:
5
+ *
6
+ * 1. **菜单是棵树,不是一层。** `allMenus` 返回的每条记录带 `children`(实测嵌套到三层,
7
+ * 如「设置 → 个人设置 → 个人菜单设置」)。只映射顶层数组会把嵌套菜单全丢掉 ——
8
+ * 调用方据此断言「这个应用没有这个菜单」,是**没取到 ≠ 不存在**的那类假否定。
9
+ *
10
+ * 2. **改名不能把读回来的那条记录原样写回去。** 读侧是扁平记录,写侧读的是**嵌套的
11
+ * `page: {pageId, pageName, pageType, …}`** 对象;直接回写会把菜单写坏
12
+ * (实测 LINK → EMPTY、pageId 清空、menuType 归零)。必须重建 `page`。
13
+ * `menuUrl` 同理:记录里有就原样带,没有就**整个省略** —— 拿 pageId 顶替会把菜单写脏,
14
+ * 而服务端只在它为空时才肯写这个键。
15
+ */
16
+ /** 读侧派生 / 只读键:回写会造成干扰(与 fields/表单一侧的只读键同理)。 */
17
+ export declare const MENU_READONLY_KEYS: readonly ["children", "createTime", "updateTime", "creator", "tenantKey", "deleteType"];
18
+ /**
19
+ * 改名后**必须原样不变**的字段。任一不等即视为写坏 —— 这正是「扁平记录直接回写」
20
+ * 那次事故的形状(pageType 被改成 EMPTY、menuType 归零)。
21
+ */
22
+ export declare const MENU_GUARD_KEYS: readonly ["pageType", "pageId", "menuUrl", "menuType", "linkType", "openMode", "showType", "showOrder", "pid", "type", "sysMenuId", "tabs", "pageExtend", "filterCondition"];
23
+ export interface MenuNode {
24
+ id: string;
25
+ name: string;
26
+ pageType: string;
27
+ pageId: string;
28
+ menuUrl: string;
29
+ menuType: string;
30
+ sysMenuId: string;
31
+ parentId: string;
32
+ depth: number;
33
+ raw: Record<string, any>;
34
+ }
35
+ export type MenuBucket = 'ebAppMenus' | 'cusAppMenus';
36
+ export declare function menuNameOf(raw: Record<string, any>): string;
37
+ /**
38
+ * 递归展开菜单树。`depth` 从 0 起,`parentId` 取记录自带的 pid/parentId,
39
+ * 缺失时回落到所在层的父节点 id。
40
+ */
41
+ export declare function flattenMenus(nodes: any[], depth?: number, parentId?: string): MenuNode[];
42
+ /**
43
+ * 选桶。两桶装的是同一批菜单的两种形状(`ebAppMenus` 用 `content`/`pid`,
44
+ * `cusAppMenus` 用 `menuName`/`parentId`),**不能合并**(会翻倍)。
45
+ * 优先 `ebAppMenus` —— 它的键集就是写报文(`savePublishMenu` 的 navigation)的形状。
46
+ */
47
+ export declare function pickMenuBucket(data: any): {
48
+ nodes: MenuNode[];
49
+ bucket: MenuBucket;
50
+ };
51
+ /**
52
+ * 按 id 或名称找菜单。id 精确命中优先;否则返回**所有**同名节点
53
+ * (真实数据里同一个应用存在两条「合同门户页面」—— 调用方必须据此报歧义,不能擅自挑一条)。
54
+ */
55
+ export declare function findMenus(nodes: MenuNode[], query: string): MenuNode[];
56
+ /** 按名称模糊找候选(用于「找不到」时给提示)。 */
57
+ export declare function similarMenus(nodes: MenuNode[], query: string, limit?: number): MenuNode[];
58
+ /**
59
+ * 平台系统项(回收站 / 设置 / 个人设置 …)。这些菜单由平台维护、指向内置页面,
60
+ * 改名没有语义,调用方应拒绝。
61
+ */
62
+ export declare function isSystemMenu(node: MenuNode): boolean;
63
+ /**
64
+ * 构造改名的写报文:以读回的记录为底,只动名字,再**补上写侧要的嵌套 `page`**。
65
+ *
66
+ * 关键取舍:
67
+ * - 读侧派生键一律摘掉(`children` 等),它们不是 navigation 的一部分。
68
+ * - `page` 必须重建:记录里没有这个键,而写侧认它。缺了就是「LINK 变 EMPTY」那次事故。
69
+ * - `menuUrl` **只在记录里本来就有非空值时**带上;没有就整个省略。服务端只在它为空时才写它,
70
+ * 拿 pageId 顶替会把菜单写脏。
71
+ * - `filterCondition` / `tabs` / `pageExtend` 等一律沿用记录原值,不重造 ——
72
+ * 改名不该顺手改掉别人的筛选条件。
73
+ */
74
+ export declare function buildRenameNavigation(node: MenuNode, newName: string, appId: string): Record<string, any>;
75
+ /**
76
+ * 比对改名前后,返回**名字之外**发生变化的守卫字段。
77
+ * 返回空数组才算改名干净;非空即调用方应硬失败并点名。
78
+ */
79
+ export declare function diffMenuGuard(before: MenuNode, after: MenuNode): string[];
80
+ /** 把节点表按层级渲染成缩进行(对齐 `role` 命令的树形打印)。 */
81
+ export declare function renderMenuTree(nodes: MenuNode[]): string[];
82
+ /** 嵌套(非顶层)节点数。 */
83
+ export declare function nestedCount(nodes: MenuNode[]): number;
84
+ //# sourceMappingURL=menu-catalog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-catalog.d.ts","sourceRoot":"","sources":["../../src/services/menu-catalog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAMH,+CAA+C;AAC/C,eAAO,MAAM,kBAAkB,yFAOrB,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,eAAe,8KAGlB,CAAC;AAEX,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC1B;AAED,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,aAAa,CAAC;AAWtD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAE3D;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,KAAK,SAAI,EAAE,QAAQ,SAAM,GAAG,QAAQ,EAAE,CAsBhF;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,GAAG;IAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,CAMnF;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE,CAMtE;AAED,6BAA6B;AAC7B,wBAAgB,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,SAAK,GAAG,QAAQ,EAAE,CAOrF;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAEpD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA2BzG;AAOD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,GAAG,MAAM,EAAE,CAQzE;AAED,wCAAwC;AACxC,wBAAgB,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,CAE1D;AAED,kBAAkB;AAClB,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,MAAM,CAErD"}