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.
- package/assets/org-employee-template.xlsx +0 -0
- package/dist/commands/actionflow.d.ts.map +1 -1
- package/dist/commands/actionflow.js +12 -25
- package/dist/commands/actionflow.js.map +1 -1
- package/dist/commands/designer-css.d.ts +15 -0
- package/dist/commands/designer-css.d.ts.map +1 -0
- package/dist/commands/designer-css.js +205 -0
- package/dist/commands/designer-css.js.map +1 -0
- package/dist/commands/form-button.d.ts.map +1 -1
- package/dist/commands/form-button.js +28 -5
- package/dist/commands/form-button.js.map +1 -1
- package/dist/commands/form-field-lang.d.ts.map +1 -1
- package/dist/commands/form-field-lang.js +4 -39
- package/dist/commands/form-field-lang.js.map +1 -1
- package/dist/commands/form-field-linkage.d.ts.map +1 -1
- package/dist/commands/form-field-linkage.js +27 -6
- package/dist/commands/form-field-linkage.js.map +1 -1
- package/dist/commands/form-formula-linkage.d.ts +3 -0
- package/dist/commands/form-formula-linkage.d.ts.map +1 -0
- package/dist/commands/form-formula-linkage.js +434 -0
- package/dist/commands/form-formula-linkage.js.map +1 -0
- package/dist/commands/form-formula.d.ts.map +1 -1
- package/dist/commands/form-formula.js +22 -3
- package/dist/commands/form-formula.js.map +1 -1
- package/dist/commands/form-layout-init.d.ts.map +1 -1
- package/dist/commands/form-layout-init.js +15 -10
- package/dist/commands/form-layout-init.js.map +1 -1
- package/dist/commands/form-layout.js +24 -21
- package/dist/commands/form-layout.js.map +1 -1
- package/dist/commands/form-list-click.d.ts.map +1 -1
- package/dist/commands/form-list-click.js +2 -1
- package/dist/commands/form-list-click.js.map +1 -1
- package/dist/commands/form-native.d.ts.map +1 -1
- package/dist/commands/form-native.js +192 -3
- package/dist/commands/form-native.js.map +1 -1
- package/dist/commands/form-validate.d.ts.map +1 -1
- package/dist/commands/form-validate.js +11 -3
- package/dist/commands/form-validate.js.map +1 -1
- package/dist/commands/form.d.ts.map +1 -1
- package/dist/commands/form.js +323 -192
- package/dist/commands/form.js.map +1 -1
- package/dist/commands/matrix.d.ts.map +1 -1
- package/dist/commands/matrix.js +175 -36
- package/dist/commands/matrix.js.map +1 -1
- package/dist/commands/menu.d.ts.map +1 -1
- package/dist/commands/menu.js +170 -23
- package/dist/commands/menu.js.map +1 -1
- package/dist/commands/org.d.ts +10 -0
- package/dist/commands/org.d.ts.map +1 -0
- package/dist/commands/org.js +278 -0
- package/dist/commands/org.js.map +1 -0
- package/dist/commands/role.d.ts.map +1 -1
- package/dist/commands/role.js +106 -62
- package/dist/commands/role.js.map +1 -1
- package/dist/commands/wf-form.d.ts +1 -0
- package/dist/commands/wf-form.d.ts.map +1 -1
- package/dist/commands/wf-form.js +545 -39
- package/dist/commands/wf-form.js.map +1 -1
- package/dist/commands/workflow-auth-resp.d.ts.map +1 -1
- package/dist/commands/workflow-auth-resp.js +53 -5
- package/dist/commands/workflow-auth-resp.js.map +1 -1
- package/dist/commands/workflow-create-auth-resp.d.ts.map +1 -1
- package/dist/commands/workflow-create-auth-resp.js +5 -1
- package/dist/commands/workflow-create-auth-resp.js.map +1 -1
- package/dist/commands/workflow-node-assign-flow.d.ts.map +1 -1
- package/dist/commands/workflow-node-assign-flow.js +1 -2
- package/dist/commands/workflow-node-assign-flow.js.map +1 -1
- package/dist/commands/workflow-node.d.ts.map +1 -1
- package/dist/commands/workflow-node.js +147 -2
- package/dist/commands/workflow-node.js.map +1 -1
- package/dist/commands/workflow-odoc.d.ts.map +1 -1
- package/dist/commands/workflow-odoc.js +56 -56
- package/dist/commands/workflow-odoc.js.map +1 -1
- package/dist/commands/workflow-setting.d.ts.map +1 -1
- package/dist/commands/workflow-setting.js +77 -1
- package/dist/commands/workflow-setting.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +114 -89
- package/dist/commands/workflow.js.map +1 -1
- package/dist/core/client.d.ts +14 -0
- package/dist/core/client.d.ts.map +1 -1
- package/dist/core/client.js +28 -12
- package/dist/core/client.js.map +1 -1
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -1
- package/dist/services/action-detail.d.ts.map +1 -1
- package/dist/services/action-detail.js +5 -4
- package/dist/services/action-detail.js.map +1 -1
- package/dist/services/actionflow/command_output.d.ts +7 -0
- package/dist/services/actionflow/command_output.d.ts.map +1 -1
- package/dist/services/actionflow/command_output.js +46 -0
- package/dist/services/actionflow/command_output.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_add.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_add.js +14 -4
- package/dist/services/actionflow/components/action_eb_add.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_add_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_add_compiler.js +29 -0
- package/dist/services/actionflow/components/action_eb_add_compiler.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_update.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_update.js +23 -8
- package/dist/services/actionflow/components/action_eb_update.js.map +1 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/components/action_eb_update_compiler.js +261 -13
- package/dist/services/actionflow/components/action_eb_update_compiler.js.map +1 -1
- package/dist/services/actionflow/components/approve_create.d.ts.map +1 -1
- package/dist/services/actionflow/components/approve_create.js +6 -3
- package/dist/services/actionflow/components/approve_create.js.map +1 -1
- package/dist/services/actionflow/components/custom_set_form.d.ts +10 -0
- package/dist/services/actionflow/components/custom_set_form.d.ts.map +1 -0
- package/dist/services/actionflow/components/custom_set_form.js +99 -0
- package/dist/services/actionflow/components/custom_set_form.js.map +1 -0
- package/dist/services/actionflow/components/custom_trigger.d.ts +2 -2
- package/dist/services/actionflow/components/custom_trigger.d.ts.map +1 -1
- package/dist/services/actionflow/components/custom_trigger.js +11 -11
- package/dist/services/actionflow/components/custom_trigger.js.map +1 -1
- package/dist/services/actionflow/components/dml_execute.d.ts.map +1 -1
- package/dist/services/actionflow/components/dml_execute.js +7 -3
- package/dist/services/actionflow/components/dml_execute.js.map +1 -1
- package/dist/services/actionflow/components/document_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/document_actions.js +7 -3
- package/dist/services/actionflow/components/document_actions.js.map +1 -1
- package/dist/services/actionflow/components/enquiry_form.js +1 -1
- package/dist/services/actionflow/components/enquiry_form.js.map +1 -1
- package/dist/services/actionflow/components/hrm_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/hrm_actions.js +7 -3
- package/dist/services/actionflow/components/hrm_actions.js.map +1 -1
- package/dist/services/actionflow/components/multiple_execution.d.ts.map +1 -1
- package/dist/services/actionflow/components/multiple_execution.js +14 -5
- package/dist/services/actionflow/components/multiple_execution.js.map +1 -1
- package/dist/services/actionflow/components/output.d.ts.map +1 -1
- package/dist/services/actionflow/components/output.js +6 -1
- package/dist/services/actionflow/components/output.js.map +1 -1
- package/dist/services/actionflow/components/send_message.js +2 -2
- package/dist/services/actionflow/components/send_message.js.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.d.ts.map +1 -1
- package/dist/services/actionflow/components/workflow_actions.js +7 -3
- package/dist/services/actionflow/components/workflow_actions.js.map +1 -1
- package/dist/services/actionflow/context_preflight.d.ts.map +1 -1
- package/dist/services/actionflow/context_preflight.js +25 -8
- package/dist/services/actionflow/context_preflight.js.map +1 -1
- package/dist/services/actionflow/context_provider.d.ts.map +1 -1
- package/dist/services/actionflow/context_provider.js +24 -4
- package/dist/services/actionflow/context_provider.js.map +1 -1
- package/dist/services/actionflow/custom_trigger_context.d.ts +10 -0
- package/dist/services/actionflow/custom_trigger_context.d.ts.map +1 -0
- package/dist/services/actionflow/custom_trigger_context.js +46 -0
- package/dist/services/actionflow/custom_trigger_context.js.map +1 -0
- package/dist/services/actionflow/dynamic_resources.d.ts.map +1 -1
- package/dist/services/actionflow/dynamic_resources.js +1 -1
- package/dist/services/actionflow/dynamic_resources.js.map +1 -1
- package/dist/services/actionflow/ebuilder_source.d.ts +19 -0
- package/dist/services/actionflow/ebuilder_source.d.ts.map +1 -0
- package/dist/services/actionflow/ebuilder_source.js +78 -0
- package/dist/services/actionflow/ebuilder_source.js.map +1 -0
- package/dist/services/actionflow/filter_rules.js +2 -2
- package/dist/services/actionflow/filter_rules.js.map +1 -1
- package/dist/services/actionflow/form_source.d.ts +51 -10
- package/dist/services/actionflow/form_source.d.ts.map +1 -1
- package/dist/services/actionflow/form_source.js +173 -29
- package/dist/services/actionflow/form_source.js.map +1 -1
- package/dist/services/actionflow/formula_service.d.ts +13 -2
- package/dist/services/actionflow/formula_service.d.ts.map +1 -1
- package/dist/services/actionflow/formula_service.js +104 -42
- package/dist/services/actionflow/formula_service.js.map +1 -1
- package/dist/services/actionflow/id_generator.d.ts +2 -0
- package/dist/services/actionflow/id_generator.d.ts.map +1 -1
- package/dist/services/actionflow/id_generator.js +13 -0
- package/dist/services/actionflow/id_generator.js.map +1 -1
- package/dist/services/actionflow/preflight_service.d.ts +6 -0
- package/dist/services/actionflow/preflight_service.d.ts.map +1 -1
- package/dist/services/actionflow/preflight_service.js +217 -4
- package/dist/services/actionflow/preflight_service.js.map +1 -1
- package/dist/services/actionflow/workflow_compiler.d.ts.map +1 -1
- package/dist/services/actionflow/workflow_compiler.js +172 -50
- package/dist/services/actionflow/workflow_compiler.js.map +1 -1
- package/dist/services/auth-resp-condition.d.ts +35 -0
- package/dist/services/auth-resp-condition.d.ts.map +1 -0
- package/dist/services/auth-resp-condition.js +111 -0
- package/dist/services/auth-resp-condition.js.map +1 -0
- package/dist/services/condition-rules.d.ts.map +1 -1
- package/dist/services/condition-rules.js +4 -1
- package/dist/services/condition-rules.js.map +1 -1
- package/dist/services/designer-css.d.ts +89 -0
- package/dist/services/designer-css.d.ts.map +1 -0
- package/dist/services/designer-css.js +163 -0
- package/dist/services/designer-css.js.map +1 -0
- package/dist/services/dom-structure.d.ts +42 -0
- package/dist/services/dom-structure.d.ts.map +1 -0
- package/dist/services/dom-structure.js +251 -0
- package/dist/services/dom-structure.js.map +1 -0
- package/dist/services/esb-interface/document-parser.d.ts.map +1 -1
- package/dist/services/esb-interface/document-parser.js +62 -5
- package/dist/services/esb-interface/document-parser.js.map +1 -1
- package/dist/services/form-association.d.ts +19 -0
- package/dist/services/form-association.d.ts.map +1 -1
- package/dist/services/form-association.js +64 -0
- package/dist/services/form-association.js.map +1 -1
- package/dist/services/form-button-action.d.ts +7 -0
- package/dist/services/form-button-action.d.ts.map +1 -1
- package/dist/services/form-button-action.js +11 -1
- package/dist/services/form-button-action.js.map +1 -1
- package/dist/services/form-create.d.ts +4 -0
- package/dist/services/form-create.d.ts.map +1 -1
- package/dist/services/form-create.js +18 -12
- package/dist/services/form-create.js.map +1 -1
- package/dist/services/form-field-patch.d.ts +25 -1
- package/dist/services/form-field-patch.d.ts.map +1 -1
- package/dist/services/form-field-patch.js +52 -9
- package/dist/services/form-field-patch.js.map +1 -1
- package/dist/services/form-formula-linkage.d.ts +349 -0
- package/dist/services/form-formula-linkage.d.ts.map +1 -0
- package/dist/services/form-formula-linkage.js +546 -0
- package/dist/services/form-formula-linkage.js.map +1 -0
- package/dist/services/form-i18n-label.d.ts +48 -0
- package/dist/services/form-i18n-label.d.ts.map +1 -0
- package/dist/services/form-i18n-label.js +91 -0
- package/dist/services/form-i18n-label.js.map +1 -0
- package/dist/services/form-layout-insert.d.ts +84 -0
- package/dist/services/form-layout-insert.d.ts.map +1 -0
- package/dist/services/form-layout-insert.js +244 -0
- package/dist/services/form-layout-insert.js.map +1 -0
- package/dist/services/form-linkage-condition.d.ts +159 -0
- package/dist/services/form-linkage-condition.d.ts.map +1 -0
- package/dist/services/form-linkage-condition.js +307 -0
- package/dist/services/form-linkage-condition.js.map +1 -0
- package/dist/services/form-style-template.d.ts +6 -2
- package/dist/services/form-style-template.d.ts.map +1 -1
- package/dist/services/form-style-template.js +8 -4
- package/dist/services/form-style-template.js.map +1 -1
- package/dist/services/formula-detail.d.ts +98 -6
- package/dist/services/formula-detail.d.ts.map +1 -1
- package/dist/services/formula-detail.js +208 -26
- package/dist/services/formula-detail.js.map +1 -1
- package/dist/services/matrix-rows.d.ts +43 -0
- package/dist/services/matrix-rows.d.ts.map +1 -0
- package/dist/services/matrix-rows.js +104 -0
- package/dist/services/matrix-rows.js.map +1 -0
- package/dist/services/menu-catalog.d.ts +84 -0
- package/dist/services/menu-catalog.d.ts.map +1 -0
- package/dist/services/menu-catalog.js +183 -0
- package/dist/services/menu-catalog.js.map +1 -0
- package/dist/services/org-department.d.ts +114 -0
- package/dist/services/org-department.d.ts.map +1 -0
- package/dist/services/org-department.js +209 -0
- package/dist/services/org-department.js.map +1 -0
- package/dist/services/org-employee.d.ts +87 -0
- package/dist/services/org-employee.d.ts.map +1 -0
- package/dist/services/org-employee.js +219 -0
- package/dist/services/org-employee.js.map +1 -0
- package/dist/services/role-member.d.ts +99 -0
- package/dist/services/role-member.d.ts.map +1 -0
- package/dist/services/role-member.js +206 -0
- package/dist/services/role-member.js.map +1 -0
- package/dist/services/workflow-add-step.d.ts +45 -0
- package/dist/services/workflow-add-step.d.ts.map +1 -0
- package/dist/services/workflow-add-step.js +122 -0
- package/dist/services/workflow-add-step.js.map +1 -0
- package/dist/services/workflow-assign-flow.d.ts +1 -6
- package/dist/services/workflow-assign-flow.d.ts.map +1 -1
- package/dist/services/workflow-assign-flow.js +3 -8
- package/dist/services/workflow-assign-flow.js.map +1 -1
- package/dist/services/workflow-drawback.d.ts +19 -0
- package/dist/services/workflow-drawback.d.ts.map +1 -0
- package/dist/services/workflow-drawback.js +59 -0
- package/dist/services/workflow-drawback.js.map +1 -0
- package/dist/services/workflow-info.d.ts +83 -0
- package/dist/services/workflow-info.d.ts.map +1 -0
- package/dist/services/workflow-info.js +97 -0
- package/dist/services/workflow-info.js.map +1 -0
- package/dist/services/workflow-links.d.ts +51 -0
- package/dist/services/workflow-links.d.ts.map +1 -0
- package/dist/services/workflow-links.js +162 -0
- package/dist/services/workflow-links.js.map +1 -0
- package/dist/services/workflow-node-layout.d.ts +45 -4
- package/dist/services/workflow-node-layout.d.ts.map +1 -1
- package/dist/services/workflow-node-layout.js +142 -41
- package/dist/services/workflow-node-layout.js.map +1 -1
- package/dist/services/workflow-odoc-setting.d.ts +43 -0
- package/dist/services/workflow-odoc-setting.d.ts.map +1 -0
- package/dist/services/workflow-odoc-setting.js +109 -0
- package/dist/services/workflow-odoc-setting.js.map +1 -0
- package/dist/services/workflow-tab-config.d.ts +54 -0
- package/dist/services/workflow-tab-config.d.ts.map +1 -0
- package/dist/services/workflow-tab-config.js +137 -0
- package/dist/services/workflow-tab-config.js.map +1 -0
- package/dist/types.d.ts +5 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/column-name.d.ts +24 -0
- package/dist/utils/column-name.d.ts.map +1 -1
- package/dist/utils/column-name.js +16 -0
- package/dist/utils/column-name.js.map +1 -1
- package/ecodecmd/package.json +1 -2
- package/ecodecmd/src/loaddep.js +19 -9
- package/package.json +48 -48
- package/skill-docs/SKILL.md +15 -11
- package/skill-docs/_catalog.md +85 -79
- package/skill-docs/actionflows/SKILL.md +173 -168
- package/skill-docs/actionflows/references/components/ebuilder/ActionEbAdd.md +38 -1
- package/skill-docs/actionflows/references/components/ebuilder/ActionEbUpdate.md +42 -0
- package/skill-docs/actionflows/references/components/ebuilder/EventButton.md +1 -1
- package/skill-docs/actionflows/references/components/logic/Output.md +2 -0
- package/skill-docs/actionflows/references/components/trigger/CustomTrigger.md +48 -11
- package/skill-docs/actionflows/references/components/workflow/ApproveCreate.md +1 -1
- package/skill-docs/assets/dom-structure/Bar.json +341 -0
- package/skill-docs/assets/dom-structure/BarStack.json +341 -0
- package/skill-docs/assets/dom-structure/Bubble.json +323 -0
- package/skill-docs/assets/dom-structure/Calendar.json +515 -0
- package/skill-docs/assets/dom-structure/Circular.json +337 -0
- package/skill-docs/assets/dom-structure/CollapsePanel.json +289 -0
- package/skill-docs/assets/dom-structure/Comment.json +617 -0
- package/skill-docs/assets/dom-structure/CountDown.json +755 -0
- package/skill-docs/assets/dom-structure/DigitalPanel.json +191 -0
- package/skill-docs/assets/dom-structure/EbButton.json +387 -0
- package/skill-docs/assets/dom-structure/FastCreate.json +242 -0
- package/skill-docs/assets/dom-structure/Gauge.json +282 -0
- package/skill-docs/assets/dom-structure/HBar.json +336 -0
- package/skill-docs/assets/dom-structure/HBarStack.json +337 -0
- package/skill-docs/assets/dom-structure/Line.json +341 -0
- package/skill-docs/assets/dom-structure/NList.json +712 -0
- package/skill-docs/assets/dom-structure/NavBar.json +274 -0
- package/skill-docs/assets/dom-structure/NavPanel.json +390 -0
- package/skill-docs/assets/dom-structure/NewTab.json +606 -0
- package/skill-docs/assets/dom-structure/Nightingale.json +336 -0
- package/skill-docs/assets/dom-structure/PageHeader.json +205 -0
- package/skill-docs/assets/dom-structure/Picture.json +209 -0
- package/skill-docs/assets/dom-structure/Pie.json +338 -0
- package/skill-docs/assets/dom-structure/ProgressChart.json +299 -0
- package/skill-docs/assets/dom-structure/SearchGlobal.json +628 -0
- package/skill-docs/assets/dom-structure/Slide.json +489 -0
- package/skill-docs/assets/dom-structure/Treemap.json +324 -0
- package/skill-docs/references/common/guide-plan-template.md +10 -4
- package/skill-docs/references/common/ref-cli-commands.md +67 -34
- package/skill-docs/references/ebuilder-designer/guide-designer-components.md +12 -1
- package/skill-docs/references/ebuilder-designer/guide-designer-css.md +127 -0
- package/skill-docs/references/ebuilder-designer/guide-designer.md +6 -5
- package/skill-docs/references/esb-interface/guide-import.md +4 -1
- package/skill-docs/references/form/guide-create-form.md +14 -1
- package/skill-docs/references/form/guide-field-linkage.md +2 -0
- package/skill-docs/references/form/guide-form-formula-functions.md +36 -0
- package/skill-docs/references/form/guide-form-layout-incremental.md +75 -0
- package/skill-docs/references/form/guide-form-layout-planning.md +1 -1
- package/skill-docs/references/form/guide-form-linkage.md +89 -5
- package/skill-docs/references/form/guide-formula-linkage.md +250 -0
- package/skill-docs/references/form/ref-form-fields.md +6 -0
- package/skill-docs/references/hrm/guide-matrix.md +79 -16
- package/skill-docs/references/hrm/guide-org-employee.md +56 -0
- package/skill-docs/references/menu/system-menus.md +12 -0
- package/skill-docs/references/workflow/guide-workflow-auth-resp.md +48 -22
- package/skill-docs/references/workflow/guide-workflow-odoc-setting.md +248 -0
- package/skill-docs/references/workflow/guide-workflow-odoc.md +25 -33
- 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":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,qCAAqC;AACrC,MAAM,CAAC,MAAM,mBAAmB,GAAG,YAAY,CAAC;AAEhD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAAC,OAAe,EAAE,QAAgB;IAClF,MAAM,GAAG,GAAG,CAAC,MAAM,gBAAgB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC;IACpE,OAAO,MAAM,CAAC,GAAG,EAAE,YAAY,IAAI,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAe,EAAE,QAAgB;IACtE,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,KAAK,CACtB,GAAG,OAAO,oFAAoF,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAC3H,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,cAAc,EAAE,kBAAkB,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,CACpH,CAAC;QACF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,EAAS,CAAC;QACtC,OAAO,IAAI,EAAE,WAAW,IAAI,EAAE,CAAC;IACjC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,EAAE,CAAC;IAAC,CAAC;AACxB,CAAC;AAcD;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,QAAa;IAClD,MAAM,CAAC,GAAG,QAAQ,EAAE,IAAI,EAAE,IAAI,IAAI,QAAQ,EAAE,IAAI,CAAC;IACjD,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC1E,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,IAAI,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;IACzE,IAAI,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,0EAA0E;QAC1E,iDAAiD;QACjD,MAAM,IAAI,KAAK,CACb,8BAA8B,QAAQ,IAAI,GAAG,WAAW,MAAM,IAAI,GAAG,IAAI;cACvE,2CAA2C,CAC9C,CAAC;IACJ,CAAC;IACD,OAAO;QACL,QAAQ;QACR,MAAM;QACN,SAAS;QACT,YAAY;QACZ,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;QACpE,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;QAChF,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC;QACnC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC;KACtC,CAAC;AACJ,CAAC;AAED,6DAA6D;AAC7D,MAAM,UAAU,wBAAwB,CACtC,GAAiD,EACjD,YAAoB,EACpB,gBAAwB;IAExB,OAAO;QACL,MAAM,EAAE,KAAK;QACb,QAAQ,EAAE;YACR,MAAM,EAAE,KAAK;YACb,YAAY,EAAE,GAAG,CAAC,QAAQ;YAC1B,WAAW,EAAE,EAAE;YACf,cAAc,EAAE,KAAK;YACrB,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,QAAQ;YACpB,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,MAAM,EAAE;YACxB,UAAU,EAAE,EAAE,EAAE,EAAE,YAAY,EAAE;YAChC,gBAAgB;SACjB;KACF,CAAC;AACJ,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,eAAe,CAAC,QAAa;IAC3C,MAAM,CAAC,GAAG,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;IAC/B,MAAM,EAAE,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC;IAChE,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IACjE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC;AACpB,CAAC;AAiBD;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAoB,EAAE,KAA4B;IACrF,0CAA0C;IAC1C,uDAAuD;IACvD,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,CAAC;IAC5D,MAAM,UAAU,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,YAAY,CAAC;IACtE,OAAO;QACL,6CAA6C;QAC7C,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ;QACxC,UAAU,EAAE,YAAY;QACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,QAAQ,EAAE;YACR,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,UAAU,EAAE,IAAI;YAChB,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,WAAW,EAAE,IAAI;SAClB;QACD,IAAI,EAAE,mBAAmB;QACzB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,UAAU,EAAE,EAAE;QACd,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE;QACtB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvD,UAAU,EAAE,GAAG,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,QAAQ,EAAE,KAAK;KAChB,CAAC;AACJ,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,4BAA4B,CAAC,EAAU,EAAE,MAAc;IACrE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC;AACzD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,gBAAgB,CAAC,EAAU;IACzC,OAAO,uCAAuC,kBAAkB,CAAC,EAAE,CAAC,6CAA6C,CAAC;AACpH,CAAC;AAYD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,4BAA4B,CAAC,MAAW,EAAE,KAA0B;IAClF,MAAM,CAAC,GAAG,MAAM,EAAE,IAAI,EAAE,IAAI,IAAI,MAAM,EAAE,IAAI,IAAI,MAAM,CAAC;IACvD,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACjD,CAAC;IACD,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,YAAY,IAAI,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3E,uCAAuC;IACvC,MAAM,gBAAgB,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,IAAI,CAAC,gBAAgB,IAAI,YAAY,CAAC,CAAC;IAEpE,MAAM,OAAO,GAA4B;QACvC,MAAM;QACN,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QACxC,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,EAAE;QAClC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,IAAI,EAAE,CAAC;QACnE,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC;QACrC,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,IAAI,CAAC;QAC9C,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,YAAY;QACZ,WAAW,EAAE,KAAK;QAClB,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;QAC7B,aAAa,EAAE,CAAC,CAAC,aAAa,IAAI,EAAE;QACpC,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,EAAE;QAC5B,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;QACvB,IAAI,EAAE,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QACxC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;QACpD,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;QACzB,QAAQ,EAAE,KAAK;KAChB,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -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"}
|