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
@@ -0,0 +1,183 @@
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
+ /** 两个桶的字段名不同,取值时两组都要认。 */
17
+ const NAME_KEYS = ['content', 'menuName', 'showName', 'alias', 'nameAlias', 'realName'];
18
+ const PARENT_KEYS = ['pid', 'parentId'];
19
+ /** 读侧派生 / 只读键:回写会造成干扰(与 fields/表单一侧的只读键同理)。 */
20
+ export const MENU_READONLY_KEYS = [
21
+ 'children',
22
+ 'createTime',
23
+ 'updateTime',
24
+ 'creator',
25
+ 'tenantKey',
26
+ 'deleteType',
27
+ ];
28
+ /**
29
+ * 改名后**必须原样不变**的字段。任一不等即视为写坏 —— 这正是「扁平记录直接回写」
30
+ * 那次事故的形状(pageType 被改成 EMPTY、menuType 归零)。
31
+ */
32
+ export const MENU_GUARD_KEYS = [
33
+ 'pageType', 'pageId', 'menuUrl', 'menuType', 'linkType', 'openMode',
34
+ 'showType', 'showOrder', 'pid', 'type', 'sysMenuId', 'tabs', 'pageExtend', 'filterCondition',
35
+ ];
36
+ /** 逐层取值:两个桶的键名不同,谁的先命中用谁。 */
37
+ function firstOf(raw, keys) {
38
+ for (const k of keys) {
39
+ const v = raw?.[k];
40
+ if (v !== undefined && v !== null && String(v) !== '')
41
+ return String(v);
42
+ }
43
+ return '';
44
+ }
45
+ export function menuNameOf(raw) {
46
+ return firstOf(raw, NAME_KEYS);
47
+ }
48
+ /**
49
+ * 递归展开菜单树。`depth` 从 0 起,`parentId` 取记录自带的 pid/parentId,
50
+ * 缺失时回落到所在层的父节点 id。
51
+ */
52
+ export function flattenMenus(nodes, depth = 0, parentId = '0') {
53
+ const out = [];
54
+ for (const raw of nodes || []) {
55
+ if (!raw || typeof raw !== 'object')
56
+ continue;
57
+ const id = String(raw.id ?? '');
58
+ out.push({
59
+ id,
60
+ name: menuNameOf(raw),
61
+ pageType: String(raw.pageType ?? ''),
62
+ pageId: String(raw.pageId ?? ''),
63
+ menuUrl: String(raw.menuUrl ?? ''),
64
+ menuType: String(raw.menuType ?? ''),
65
+ sysMenuId: String(raw.sysMenuId ?? ''),
66
+ parentId: firstOf(raw, PARENT_KEYS) || String(parentId),
67
+ depth,
68
+ raw,
69
+ });
70
+ if (Array.isArray(raw.children) && raw.children.length) {
71
+ out.push(...flattenMenus(raw.children, depth + 1, id));
72
+ }
73
+ }
74
+ return out;
75
+ }
76
+ /**
77
+ * 选桶。两桶装的是同一批菜单的两种形状(`ebAppMenus` 用 `content`/`pid`,
78
+ * `cusAppMenus` 用 `menuName`/`parentId`),**不能合并**(会翻倍)。
79
+ * 优先 `ebAppMenus` —— 它的键集就是写报文(`savePublishMenu` 的 navigation)的形状。
80
+ */
81
+ export function pickMenuBucket(data) {
82
+ const eb = data?.ebAppMenus;
83
+ const cus = data?.cusAppMenus;
84
+ if (Array.isArray(eb) && eb.length)
85
+ return { nodes: flattenMenus(eb), bucket: 'ebAppMenus' };
86
+ if (Array.isArray(cus) && cus.length)
87
+ return { nodes: flattenMenus(cus), bucket: 'cusAppMenus' };
88
+ return { nodes: [], bucket: 'ebAppMenus' };
89
+ }
90
+ /**
91
+ * 按 id 或名称找菜单。id 精确命中优先;否则返回**所有**同名节点
92
+ * (真实数据里同一个应用存在两条「合同门户页面」—— 调用方必须据此报歧义,不能擅自挑一条)。
93
+ */
94
+ export function findMenus(nodes, query) {
95
+ const q = String(query ?? '').trim();
96
+ if (!q)
97
+ return [];
98
+ const byId = nodes.filter((n) => n.id === q);
99
+ if (byId.length)
100
+ return byId;
101
+ return nodes.filter((n) => n.name === q);
102
+ }
103
+ /** 按名称模糊找候选(用于「找不到」时给提示)。 */
104
+ export function similarMenus(nodes, query, limit = 10) {
105
+ const q = String(query ?? '').trim();
106
+ if (!q)
107
+ return [];
108
+ return nodes
109
+ .filter((n) => n.name.includes(q) || q.includes(n.name))
110
+ .filter((n) => n.name)
111
+ .slice(0, limit);
112
+ }
113
+ /**
114
+ * 平台系统项(回收站 / 设置 / 个人设置 …)。这些菜单由平台维护、指向内置页面,
115
+ * 改名没有语义,调用方应拒绝。
116
+ */
117
+ export function isSystemMenu(node) {
118
+ return node.pageType === 'setting' || node.pageType === 'BASE';
119
+ }
120
+ /**
121
+ * 构造改名的写报文:以读回的记录为底,只动名字,再**补上写侧要的嵌套 `page`**。
122
+ *
123
+ * 关键取舍:
124
+ * - 读侧派生键一律摘掉(`children` 等),它们不是 navigation 的一部分。
125
+ * - `page` 必须重建:记录里没有这个键,而写侧认它。缺了就是「LINK 变 EMPTY」那次事故。
126
+ * - `menuUrl` **只在记录里本来就有非空值时**带上;没有就整个省略。服务端只在它为空时才写它,
127
+ * 拿 pageId 顶替会把菜单写脏。
128
+ * - `filterCondition` / `tabs` / `pageExtend` 等一律沿用记录原值,不重造 ——
129
+ * 改名不该顺手改掉别人的筛选条件。
130
+ */
131
+ export function buildRenameNavigation(node, newName, appId) {
132
+ const nav = { ...node.raw };
133
+ for (const k of MENU_READONLY_KEYS)
134
+ delete nav[k];
135
+ nav.id = node.id;
136
+ // 两个桶的名字键名不同,记录里有哪个就改哪个;content 是写侧主键,始终给。
137
+ nav.content = newName;
138
+ for (const k of ['alias', 'nameAlias', 'realName', 'menuName', 'showName']) {
139
+ if (k in nav)
140
+ nav[k] = newName;
141
+ }
142
+ nav.page = {
143
+ pageId: node.pageId,
144
+ pageName: String(node.raw.pageName || newName),
145
+ pageType: node.pageType,
146
+ terminalScopes: String(node.raw.terminalScopes ?? ''),
147
+ appid: appId,
148
+ };
149
+ // 有才带,没有就省略 —— 不要用 pageId 合成
150
+ if (node.raw.menuUrl !== undefined && String(node.raw.menuUrl) !== '') {
151
+ nav.menuUrl = String(node.raw.menuUrl);
152
+ }
153
+ else {
154
+ delete nav.menuUrl;
155
+ }
156
+ return nav;
157
+ }
158
+ /** 归一化比较值:`undefined` 与 `''` 视为等价(键存在与否不代表语义差异)。 */
159
+ function norm(v) {
160
+ return v === undefined || v === null ? '' : String(v);
161
+ }
162
+ /**
163
+ * 比对改名前后,返回**名字之外**发生变化的守卫字段。
164
+ * 返回空数组才算改名干净;非空即调用方应硬失败并点名。
165
+ */
166
+ export function diffMenuGuard(before, after) {
167
+ const changed = [];
168
+ for (const k of MENU_GUARD_KEYS) {
169
+ if (norm(before.raw?.[k]) !== norm(after.raw?.[k])) {
170
+ changed.push(`${k}: ${JSON.stringify(norm(before.raw?.[k]))} → ${JSON.stringify(norm(after.raw?.[k]))}`);
171
+ }
172
+ }
173
+ return changed;
174
+ }
175
+ /** 把节点表按层级渲染成缩进行(对齐 `role` 命令的树形打印)。 */
176
+ export function renderMenuTree(nodes) {
177
+ return nodes.map((n) => `${' '.repeat(n.depth + 1)}${n.name}`);
178
+ }
179
+ /** 嵌套(非顶层)节点数。 */
180
+ export function nestedCount(nodes) {
181
+ return nodes.filter((n) => n.depth > 0).length;
182
+ }
183
+ //# sourceMappingURL=menu-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"menu-catalog.js","sourceRoot":"","sources":["../../src/services/menu-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,114 @@
1
+ /**
2
+ * 组织架构 — 部门的新建与删除。
3
+ *
4
+ * 新建部门是**四步链**,每一步的产出喂给下一步,缺一不可:
5
+ *
6
+ * ① GET `/api/bs/hrm/organization/getForm` 取**保存报文模板**(含现生成的 targetId)
7
+ * ② POST `/api/hrm/form/core/getFormLayout` 取 `formLayout.id` 与 `formLayoutMultiple.id`
8
+ * ③ POST `/api/hrm/form/core/saveFormData` 落表单数据,回吐 `recordId`
9
+ * ④ POST `/api/bs/hrm/organization/saveForm` 部门落进组织树
10
+ *
11
+ * ⚠ **① 给的模板不能直接当 ④ 的报文发** —— 形状对不上:
12
+ * ① 的 `data.parent` 是 `[]`、`data.subcompany` 是**对象数组**,
13
+ * 而 ④ 要的是 `parent: ""`(或父部门 id 字符串)与 `subcompany: "<机构id>"`。
14
+ * 转换集中在 `buildSaveFormPayload`,别在命令层现拼。
15
+ *
16
+ * 删除是单步:`POST /api/bs/hrm/department/delete`。
17
+ */
18
+ /** 保存报文里的组织类型。建部门固定 `department`。 */
19
+ export declare const ORG_TYPE_DEPARTMENT = "department";
20
+ /**
21
+ * 解析当前登录用户所在机构 ID。
22
+ *
23
+ * `teamsCheck` 的 `body.currentUser.department`:优先 `subCompanyId`(公司级机构),
24
+ * 没有就退回 `department.id`(部分环境只有部门 id)。
25
+ *
26
+ * 与 `workflow-create-workflow.ts` 原先内联的那份同源 —— 那边已改为引用这里。
27
+ */
28
+ export declare function resolveCurrentUserSubCompany(baseUrl: string, eteamsId: string): Promise<string>;
29
+ /**
30
+ * `teamsCheck` 拿当前登录用户。取不到就返回 `{}`(调用方各自兜底,这里不抛)。
31
+ *
32
+ * 人员导入要用 `currentUser.id` 当 `customParam.employeeId`,部门那两处要 `department`,
33
+ * 所以把请求这次抽出来共用 —— 不然同一份 teamsCheck 会有三处复制。
34
+ */
35
+ export declare function fetchCurrentUser(baseUrl: string, eteamsId: string): Promise<any>;
36
+ /** ① 的返回里那份模板(只列用得到的键)。 */
37
+ export interface OrgFormTemplate {
38
+ targetId: string;
39
+ formId: string;
40
+ versionId: string;
41
+ subcompanyId: string;
42
+ rightList: string[];
43
+ hideFieldList: string[];
44
+ disporder: number;
45
+ virtualid: string;
46
+ }
47
+ /**
48
+ * 从 ① `getForm` 的返回里抽出模板。
49
+ *
50
+ * 抽不出来就抛 —— **不编默认值**:这四个 id 全是平台现生成的,
51
+ * 硬凑一个只会让后面的步骤以看不懂的方式失败。
52
+ */
53
+ export declare function extractOrgFormTemplate(response: any): OrgFormTemplate;
54
+ /** ③ `saveFormData` 的报文。`presetDataId` 就是模板里的 `targetId`。 */
55
+ export declare function buildSaveFormDataPayload(tpl: Pick<OrgFormTemplate, 'targetId' | 'formId'>, formLayoutId: string, multipleLayoutId: string): Record<string, unknown>;
56
+ /** ③ 的返回里取 `recordId`(④ 要用)。取不到就抛,不编。 */
57
+ export declare function extractRecordId(response: any): string;
58
+ export interface CreateDepartmentInput {
59
+ name: string;
60
+ /** 部门编号。不传就沿用模板里的值(或空)。 */
61
+ code?: string;
62
+ /** 父部门 id。**顶层部门传机构 id**(= `subcompany`),与 `getForm` 的 `parentId` 同一个值。 */
63
+ parentId: string;
64
+ /** 所属机构 id。不传就用模板里带的那个。 */
65
+ subcompanyId?: string;
66
+ /** 直管上级部门名(可选,界面上的「上级部门」展示字段)。 */
67
+ supDepartment?: string;
68
+ /** 部门全称。不传用 name。 */
69
+ fullname?: string;
70
+ recordId: string;
71
+ }
72
+ /**
73
+ * ④ `organization/saveForm` 的报文 —— 把 ① 的模板**转成**平台实际收的形状。
74
+ *
75
+ * 转换点(这三处是踩过的坑,别改回去):
76
+ * - `parent`:模板给的是数组(顶层时为空数组)→ 要 `""` 或父部门 id **字符串**
77
+ * - `subcompany`:模板给的是对象数组 → 要机构 id **字符串**
78
+ * - `formdata.objectId` / `formdataId`:都等于 `targetId`
79
+ */
80
+ export declare function buildSaveFormPayload(tpl: OrgFormTemplate, input: CreateDepartmentInput): Record<string, unknown>;
81
+ /** 删除部门的报文。`parent` 是它的**父**(顶层部门的父就是机构 id)。 */
82
+ export declare function buildDeleteDepartmentPayload(id: string, parent: string): Record<string, unknown>;
83
+ /**
84
+ * 编辑部门时读当前状态:`getForm` 带 **`id=`**(不是 `parentId=`)。
85
+ *
86
+ * 同一个端点两种用法:带 `parentId` 给**新建模板**,带 `id` 给**这个部门的完整现状**。
87
+ * 返回的 `data` 就是编辑报文的模板。
88
+ *
89
+ * ⚠ 这个读接口**不过滤已删记录** —— 删除是软删(`isDelete: true`),删完再读仍能读出来。
90
+ * 所以它不能用来判断「部门还在不在」,判删除要看 `isDelete` 字段或用组织树列表。
91
+ */
92
+ export declare function getOrgDetailPath(id: string): string;
93
+ export interface EditDepartmentInput {
94
+ /** 新名字。不传保持原值。 */
95
+ name?: string;
96
+ code?: string;
97
+ /** 新父部门 id。不传保持原值。 */
98
+ parentId?: string;
99
+ disporder?: number;
100
+ fullname?: string;
101
+ }
102
+ /**
103
+ * **编辑**部门的报文(`organization/saveForm`,与新建同一个端点但形状不同)。
104
+ *
105
+ * 编辑是「**当前完整状态 + 改动**」,不是只发改动,所以必须先用 `getOrgDetailPath` 把现状读回来。
106
+ * 与新建那版的差异(照着抓包对的):
107
+ * - 认 `id`,**没有** `targetId` / `formdata` / `formdataId` / `recordId`
108
+ * - 带 `tenantKey` / `creator` / `subcompanyid` / `datarank` / `createTime` / `updateTime` /
109
+ * `isTop` / `status` / `isDelete` / `usersettings` —— 这些**原样回传**,别自己造
110
+ * - `advanceForm` 是 `false`(新建时是 `true`)
111
+ * - `parent` 要的是**父的 id 字符串**;模板给的是数组,顶层部门则回填 `subcompanyid`
112
+ */
113
+ export declare function buildUpdateDepartmentPayload(detail: any, input: EditDepartmentInput): Record<string, unknown>;
114
+ //# sourceMappingURL=org-department.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-department.d.ts","sourceRoot":"","sources":["../../src/services/org-department.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,qCAAqC;AACrC,eAAO,MAAM,mBAAmB,eAAe,CAAC;AAEhD;;;;;;;GAOG;AACH,wBAAsB,4BAA4B,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAGrG;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAStF;AAED,2BAA2B;AAC3B,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,GAAG,GAAG,eAAe,CAyBrE;AAED,6DAA6D;AAC7D,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,UAAU,GAAG,QAAQ,CAAC,EACjD,YAAY,EAAE,MAAM,EACpB,gBAAgB,EAAE,MAAM,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAezB;AAED,yCAAyC;AACzC,wBAAgB,eAAe,CAAC,QAAQ,EAAE,GAAG,GAAG,MAAM,CAKrD;AAED,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2EAA2E;IAC3E,QAAQ,EAAE,MAAM,CAAC;IACjB,2BAA2B;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAiChH;AAED,gDAAgD;AAChD,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEhG;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,MAAM,WAAW,mBAAmB;IAClC,kBAAkB;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,sBAAsB;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,mBAAmB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoC7G"}
@@ -0,0 +1,209 @@
1
+ /**
2
+ * 组织架构 — 部门的新建与删除。
3
+ *
4
+ * 新建部门是**四步链**,每一步的产出喂给下一步,缺一不可:
5
+ *
6
+ * ① GET `/api/bs/hrm/organization/getForm` 取**保存报文模板**(含现生成的 targetId)
7
+ * ② POST `/api/hrm/form/core/getFormLayout` 取 `formLayout.id` 与 `formLayoutMultiple.id`
8
+ * ③ POST `/api/hrm/form/core/saveFormData` 落表单数据,回吐 `recordId`
9
+ * ④ POST `/api/bs/hrm/organization/saveForm` 部门落进组织树
10
+ *
11
+ * ⚠ **① 给的模板不能直接当 ④ 的报文发** —— 形状对不上:
12
+ * ① 的 `data.parent` 是 `[]`、`data.subcompany` 是**对象数组**,
13
+ * 而 ④ 要的是 `parent: ""`(或父部门 id 字符串)与 `subcompany: "<机构id>"`。
14
+ * 转换集中在 `buildSaveFormPayload`,别在命令层现拼。
15
+ *
16
+ * 删除是单步:`POST /api/bs/hrm/department/delete`。
17
+ */
18
+ /** 保存报文里的组织类型。建部门固定 `department`。 */
19
+ export const ORG_TYPE_DEPARTMENT = 'department';
20
+ /**
21
+ * 解析当前登录用户所在机构 ID。
22
+ *
23
+ * `teamsCheck` 的 `body.currentUser.department`:优先 `subCompanyId`(公司级机构),
24
+ * 没有就退回 `department.id`(部分环境只有部门 id)。
25
+ *
26
+ * 与 `workflow-create-workflow.ts` 原先内联的那份同源 —— 那边已改为引用这里。
27
+ */
28
+ export async function resolveCurrentUserSubCompany(baseUrl, eteamsId) {
29
+ const dep = (await fetchCurrentUser(baseUrl, eteamsId))?.department;
30
+ return String(dep?.subCompanyId || dep?.id || '');
31
+ }
32
+ /**
33
+ * `teamsCheck` 拿当前登录用户。取不到就返回 `{}`(调用方各自兜底,这里不抛)。
34
+ *
35
+ * 人员导入要用 `currentUser.id` 当 `customParam.employeeId`,部门那两处要 `department`,
36
+ * 所以把请求这次抽出来共用 —— 不然同一份 teamsCheck 会有三处复制。
37
+ */
38
+ export async function fetchCurrentUser(baseUrl, eteamsId) {
39
+ try {
40
+ const resp = await fetch(`${baseUrl}/api/baseserver/layout/teamsCheck?clientType=not_xinchuang&client=WEB&domainName=${encodeURIComponent(baseUrl)}`, { method: 'POST', headers: { accept: 'application/json', 'content-type': 'application/json', eteamsid: eteamsId } });
41
+ const body = await resp.json();
42
+ return body?.currentUser ?? {};
43
+ }
44
+ catch {
45
+ return {};
46
+ }
47
+ }
48
+ /**
49
+ * 从 ① `getForm` 的返回里抽出模板。
50
+ *
51
+ * 抽不出来就抛 —— **不编默认值**:这四个 id 全是平台现生成的,
52
+ * 硬凑一个只会让后面的步骤以看不懂的方式失败。
53
+ */
54
+ export function extractOrgFormTemplate(response) {
55
+ const d = response?.data?.data ?? response?.data;
56
+ if (!d || typeof d !== 'object')
57
+ throw new Error('getForm 返回结构异常(拿不到模板)');
58
+ const targetId = String(d.targetId ?? '');
59
+ const formId = String(d.formdata?.formId ?? d.formId ?? '');
60
+ const versionId = String(d.formdata?.versionId ?? d.versionId ?? '');
61
+ const subcompanyId = String(d.subcompany?.[0]?.id ?? d.subcompany ?? '');
62
+ if (!targetId || !formId) {
63
+ // 实测:mulinquan 的 data 里带 `formdata`(含 formId/versionId),eteams 的**不带** ——
64
+ // 同一端点、同样的参数,差别在租户的部门表单配置。缺 formId 就没法走 ③④,直接说清。
65
+ throw new Error(`getForm 模板缺少关键 id(targetId=${targetId || '空'} formId=${formId || '空'}):`
66
+ + '该环境未返回部门表单配置(formdata.formId),当前无法在该环境建部门');
67
+ }
68
+ return {
69
+ targetId,
70
+ formId,
71
+ versionId,
72
+ subcompanyId,
73
+ rightList: Array.isArray(d.rightList) ? d.rightList.map(String) : [],
74
+ hideFieldList: Array.isArray(d.hideFieldList) ? d.hideFieldList.map(String) : [],
75
+ disporder: Number(d.disporder ?? 0),
76
+ virtualid: String(d.virtualid ?? '1'),
77
+ };
78
+ }
79
+ /** ③ `saveFormData` 的报文。`presetDataId` 就是模板里的 `targetId`。 */
80
+ export function buildSaveFormDataPayload(tpl, formLayoutId, multipleLayoutId) {
81
+ return {
82
+ module: 'hrm',
83
+ formData: {
84
+ module: 'hrm',
85
+ presetDataId: tpl.targetId,
86
+ dataDetails: [],
87
+ asyncTableData: false,
88
+ client: 'pc',
89
+ dataStatus: 'submit',
90
+ form: { id: tpl.formId },
91
+ formLayout: { id: formLayoutId },
92
+ multipleLayoutId,
93
+ },
94
+ };
95
+ }
96
+ /** ③ 的返回里取 `recordId`(④ 要用)。取不到就抛,不编。 */
97
+ export function extractRecordId(response) {
98
+ const d = response?.data ?? {};
99
+ const id = d.recordId ?? d.dataId ?? d.id ?? d.formDataId ?? '';
100
+ if (!id)
101
+ throw new Error('saveFormData 未返回 recordId(部门树那步会缺参数)');
102
+ return String(id);
103
+ }
104
+ /**
105
+ * ④ `organization/saveForm` 的报文 —— 把 ① 的模板**转成**平台实际收的形状。
106
+ *
107
+ * 转换点(这三处是踩过的坑,别改回去):
108
+ * - `parent`:模板给的是数组(顶层时为空数组)→ 要 `""` 或父部门 id **字符串**
109
+ * - `subcompany`:模板给的是对象数组 → 要机构 id **字符串**
110
+ * - `formdata.objectId` / `formdataId`:都等于 `targetId`
111
+ */
112
+ export function buildSaveFormPayload(tpl, input) {
113
+ // 所属机构取模板里的(或显式传入)—— **不要用 parentId 顶替**:
114
+ // 建子部门时 parentId 是父部门 id,拿它当 subcompany 会把子部门挂到错误的机构下。
115
+ const subcompanyId = input.subcompanyId || tpl.subcompanyId;
116
+ const isTopLevel = !input.parentId || input.parentId === subcompanyId;
117
+ return {
118
+ // 顶层部门时 parent 是空串(不是机构 id);挂在某个部门下时才写该部门 id
119
+ parent: isTopLevel ? '' : input.parentId,
120
+ subcompany: subcompanyId,
121
+ targetId: tpl.targetId,
122
+ advanceForm: true,
123
+ hideFieldList: tpl.hideFieldList,
124
+ virtualid: tpl.virtualid,
125
+ formdata: {
126
+ objectId: tpl.targetId,
127
+ formId: tpl.formId,
128
+ isEditable: true,
129
+ module: 'hrm',
130
+ versionId: tpl.versionId,
131
+ advanceForm: true,
132
+ },
133
+ type: ORG_TYPE_DEPARTMENT,
134
+ disporder: tpl.disporder,
135
+ rightList: tpl.rightList,
136
+ coadjutant: '',
137
+ code: input.code ?? '',
138
+ name: input.name,
139
+ ...(input.supDepartment ? { supDepartment: input.supDepartment } : {}),
140
+ ...(input.fullname ? { fullname: input.fullname } : {}),
141
+ formdataId: tpl.targetId,
142
+ recordId: input.recordId,
143
+ isMobile: false,
144
+ };
145
+ }
146
+ /** 删除部门的报文。`parent` 是它的**父**(顶层部门的父就是机构 id)。 */
147
+ export function buildDeleteDepartmentPayload(id, parent) {
148
+ return { id, parent, virtualId: '1', isMobile: false };
149
+ }
150
+ /**
151
+ * 编辑部门时读当前状态:`getForm` 带 **`id=`**(不是 `parentId=`)。
152
+ *
153
+ * 同一个端点两种用法:带 `parentId` 给**新建模板**,带 `id` 给**这个部门的完整现状**。
154
+ * 返回的 `data` 就是编辑报文的模板。
155
+ *
156
+ * ⚠ 这个读接口**不过滤已删记录** —— 删除是软删(`isDelete: true`),删完再读仍能读出来。
157
+ * 所以它不能用来判断「部门还在不在」,判删除要看 `isDelete` 字段或用组织树列表。
158
+ */
159
+ export function getOrgDetailPath(id) {
160
+ return `/api/bs/hrm/organization/getForm?id=${encodeURIComponent(id)}&flag=department&virtualId=1&isMobile=false`;
161
+ }
162
+ /**
163
+ * **编辑**部门的报文(`organization/saveForm`,与新建同一个端点但形状不同)。
164
+ *
165
+ * 编辑是「**当前完整状态 + 改动**」,不是只发改动,所以必须先用 `getOrgDetailPath` 把现状读回来。
166
+ * 与新建那版的差异(照着抓包对的):
167
+ * - 认 `id`,**没有** `targetId` / `formdata` / `formdataId` / `recordId`
168
+ * - 带 `tenantKey` / `creator` / `subcompanyid` / `datarank` / `createTime` / `updateTime` /
169
+ * `isTop` / `status` / `isDelete` / `usersettings` —— 这些**原样回传**,别自己造
170
+ * - `advanceForm` 是 `false`(新建时是 `true`)
171
+ * - `parent` 要的是**父的 id 字符串**;模板给的是数组,顶层部门则回填 `subcompanyid`
172
+ */
173
+ export function buildUpdateDepartmentPayload(detail, input) {
174
+ const d = detail?.data?.data ?? detail?.data ?? detail;
175
+ if (!d || typeof d !== 'object' || !d.id) {
176
+ throw new Error('getForm(id) 未返回部门详情(拿不到 id)');
177
+ }
178
+ const subcompanyid = String(d.subcompanyid ?? d.subcompany?.[0]?.id ?? '');
179
+ // 模板 parent 是数组:顶层部门是空数组,此时它的「父」就是所属机构
180
+ const templateParentId = String(d.parent?.[0]?.id ?? d.parent?.[0] ?? '');
181
+ const parent = input.parentId ?? (templateParentId || subcompanyid);
182
+ const payload = {
183
+ parent,
184
+ code: input.code ?? String(d.code ?? ''),
185
+ tenantKey: d.tenantKey,
186
+ type: d.type,
187
+ usersettings: d.usersettings ?? [],
188
+ coadjutant: Array.isArray(d.coadjutant) ? '' : (d.coadjutant ?? ''),
189
+ id: String(d.id),
190
+ virtualid: String(d.virtualid ?? '1'),
191
+ disporder: input.disporder ?? d.disporder ?? 0,
192
+ creator: d.creator,
193
+ subcompanyid,
194
+ advanceForm: false,
195
+ datarank: d.datarank,
196
+ isDelete: Boolean(d.isDelete),
197
+ hideFieldList: d.hideFieldList ?? [],
198
+ updateTime: d.updateTime,
199
+ rightList: d.rightList ?? [],
200
+ createTime: d.createTime,
201
+ isTop: Boolean(d.isTop),
202
+ name: input.name ?? String(d.name ?? ''),
203
+ fullname: input.fullname ?? String(d.fullname ?? ''),
204
+ status: Boolean(d.status),
205
+ isMobile: false,
206
+ };
207
+ return payload;
208
+ }
209
+ //# sourceMappingURL=org-department.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-department.js","sourceRoot":"","sources":["../../src/services/org-department.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ export interface ImportParam {
2
+ bizId: string;
3
+ moduleName: string;
4
+ functionName: string;
5
+ handlerName: string;
6
+ serviceName: string;
7
+ dataType: string;
8
+ }
9
+ /**
10
+ * 抽 ⓪ 的返回。**抽不到就抛** —— 这几个值是 `bizId` 和 ④ 报文的主体,
11
+ * 编一个默认值只会在很远的地方以看不懂的方式失败。
12
+ */
13
+ export declare function extractImportParam(resp: any): ImportParam;
14
+ /** 上传要用的文件元数据 —— 平台按这几个值认文件,得是**真实**的。 */
15
+ export interface FileMeta {
16
+ name: string;
17
+ size: number;
18
+ md5: string;
19
+ lastModified: number;
20
+ }
21
+ /**
22
+ * 读文件的真实元数据。`md5` 现算(平台会拿它校验文件完整性,编不得)。
23
+ *
24
+ * `lastModified` 取文件的 mtime 毫秒数 —— 实测这个值和 `lastModifiedDate` **填同一个数**。
25
+ */
26
+ export declare function readFileMeta(filePath: string): FileMeta;
27
+ /** ① 的报文。 */
28
+ export declare function buildPreUploadForm(meta: FileMeta, employeeId: string, fileBytes: Buffer<ArrayBuffer>): FormData;
29
+ /** ② 的报文 = ① + `preUploadId` + `uploadType`。 */
30
+ export declare function buildUploadForm(meta: FileMeta, employeeId: string, preUploadId: string, fileBytes: Buffer<ArrayBuffer>): FormData;
31
+ /** ① 的返回:预上传 id 藏在 `data.uploadModuleDto.fileid`(**小写 d**)。 */
32
+ export declare function extractPreUploadId(resp: any): string;
33
+ /**
34
+ * ② 的返回:`data.fileid`(**小写 d**)。
35
+ *
36
+ * 这里**只认小写**、不做驼峰回退:平台给的就是 `fileid`(实测),
37
+ * 加个 `fileId` 的兜底等于替平台猜一个不存在的写法,真出问题时反而更难查。
38
+ */
39
+ export declare function extractFileId(resp: any): string;
40
+ /** ④ 的 `uploadSet` —— 决定「怎么导」。 */
41
+ export interface UploadSet {
42
+ /** `add` 新增 / `update` 更新。 */
43
+ importType: string;
44
+ /** 更新时按哪个字段认人(如 `username`)。 */
45
+ empFindField: string;
46
+ /** 文件类型,从扩展名推。 */
47
+ fileType: string;
48
+ }
49
+ export declare function resolveUploadSet(opts?: {
50
+ importType?: string;
51
+ empFindField?: string;
52
+ fileType?: string;
53
+ }): UploadSet;
54
+ /**
55
+ * ④ 的报文。
56
+ *
57
+ * ⚠ `importType` 在报文里出现**两次**:顶层那个是空串、真正生效的在 `uploadSet.customObj` 里。
58
+ * 看着像冗余,但实测两次都是这样,照抄 —— 别「顺手清理」成一处。
59
+ */
60
+ export declare function buildUploadFileIdPayload(param: ImportParam, fileId: string, set: UploadSet, now: number): Record<string, unknown>;
61
+ /** ④ 的返回:`data.data.taskId`(**多一层 data**,这里最容易取空)。 */
62
+ export declare function extractTaskId(resp: any): string;
63
+ /**
64
+ * ⑤ 预览。
65
+ *
66
+ * `rerviewNum` 是**平台把 review 拼错了**,别改成 `reviewNum`(改了就不认)。
67
+ */
68
+ export declare function buildGetExcelDataPath(param: ImportParam, taskId: string, reviewNum?: number): string;
69
+ /** ⑥ 执行导入。 */
70
+ export declare function buildImportExcelDataPath(param: ImportParam, taskId: string): string;
71
+ /** ⑤ 解析出来的预览。 */
72
+ export interface ImportPreview {
73
+ fileName: string;
74
+ sheetNames: string[];
75
+ /** 列名(带「(必填)」后缀 —— 那是表头富文本的一部分,不是我们加的)。 */
76
+ columns: string[];
77
+ /** 每行是「列名 → 值」的对象。 */
78
+ rows: Record<string, unknown>[];
79
+ }
80
+ /**
81
+ * 抽 ⑤ 的预览。
82
+ *
83
+ * ⚠ `weaTable[0].total` 实测是 **-1**,不能拿来当行数 —— 行数看 `data.length`。
84
+ * 而且 `rerviewNum` 限了条数,**这里看到的只是前 N 行,不是全部**。
85
+ */
86
+ export declare function extractPreview(resp: any): ImportPreview;
87
+ //# sourceMappingURL=org-employee.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"org-employee.d.ts","sourceRoot":"","sources":["../../src/services/org-employee.ts"],"names":[],"mappings":"AAoCA,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,GAAG,GAAG,WAAW,CAiBzD;AAED,0CAA0C;AAC1C,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAQvD;AAiBD,aAAa;AACb,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,QAAQ,CAK/G;AAED,gDAAgD;AAChD,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,WAAW,CAAC,GAAG,QAAQ,CAOjI;AAED,+DAA+D;AAC/D,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,CAIpD;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,CAI/C;AAED,kCAAkC;AAClC,MAAM,WAAW,SAAS;IACxB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,gCAAgC;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,gBAAgB,CAAC,IAAI,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,SAAS,CAMxH;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,WAAW,EAClB,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,SAAS,EACd,GAAG,EAAE,MAAM,GACV,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA+BzB;AAED,sDAAsD;AACtD,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,MAAM,CAK/C;AAYD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,MAAM,CAOjG;AAED,cAAc;AACd,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEnF;AAED,iBAAiB;AACjB,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,2CAA2C;IAC3C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,GAAG,GAAG,aAAa,CAWvD"}