@ximatai/muyun-web-app 0.26.10 → 0.26.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (172) hide show
  1. package/dist/ModuleActionManagementView-BHEooZ5L.js +672 -0
  2. package/dist/ModuleGovernanceView-DB3TWlMy.js +28521 -0
  3. package/dist/RoleDetailWorkspaceView-D6X7pAj5.js +1379 -0
  4. package/dist/index.css +1 -1
  5. package/dist/index.js +1929 -351
  6. package/dist/moduleGovernanceWorkspaceView-C5pqJOEJ.js +40 -0
  7. package/dist/platform-workbench-DJj42YQP.js +22911 -0
  8. package/dist/rolldown-runtime-DPVXH0ON.js +17 -0
  9. package/dist/types/app/CurrentUserProfileDialog.vue.d.ts +0 -2
  10. package/dist/types/app/LoginView.vue.d.ts +1 -1
  11. package/dist/types/app/workbenchRouteSync.d.ts +10 -1
  12. package/dist/types/app/workbenchSessionTabs.d.ts +22 -0
  13. package/dist/types/app/workbenchStartup.d.ts +7 -0
  14. package/dist/types/consumer/AppWorkbenchShell.vue.d.ts +4 -1
  15. package/dist/types/consumer/index.d.ts +2 -1
  16. package/dist/types/dynamic-page-runtime/ModulePageDetailRelations.vue.d.ts +1 -1
  17. package/dist/types/dynamic-page-runtime/ModulePageHost.vue.d.ts +12 -1
  18. package/dist/types/dynamic-page-runtime/ModuleRecordDetailActions.vue.d.ts +17 -0
  19. package/dist/types/dynamic-page-runtime/NavigatorPanelActions.vue.d.ts +22 -0
  20. package/dist/types/dynamic-page-runtime/PageNavigatorExplorer.vue.d.ts +11 -11
  21. package/dist/types/dynamic-page-runtime/childAggregateContext.d.ts +11 -0
  22. package/dist/types/dynamic-page-runtime/composables/useModulePageDetailExtensionRuntime.d.ts +3 -1
  23. package/dist/types/dynamic-page-runtime/composables/useModulePageFormContributionRuntime.d.ts +5 -3
  24. package/dist/types/dynamic-page-runtime/composables/useNavigatorRuntime.d.ts +82 -28
  25. package/dist/types/dynamic-page-runtime/composables/useRecordEditingSession.d.ts +1 -1
  26. package/dist/types/dynamic-page-runtime/formActionResult.d.ts +5 -0
  27. package/dist/types/dynamic-page-runtime/formComputeCoordinator.d.ts +7 -4
  28. package/dist/types/dynamic-page-runtime/formValidationCoordinator.d.ts +17 -0
  29. package/dist/types/dynamic-page-runtime/index.d.ts +1 -2
  30. package/dist/types/dynamic-page-runtime/modulePageEnhancements.d.ts +75 -1
  31. package/dist/types/dynamic-page-runtime/pageActionInvocation.d.ts +7 -0
  32. package/dist/types/dynamic-page-runtime/pageActionPlacement.d.ts +14 -0
  33. package/dist/types/dynamic-page-runtime/recordMutationPayload.d.ts +3 -0
  34. package/dist/types/formula/FormulaRuntime.d.ts +9 -0
  35. package/dist/types/{dynamic-page-runtime/DynamicModuleHost.vue.d.ts → platform-admin-runtime/module-menu/ModuleMenuDrawer.vue.d.ts} +2 -2
  36. package/dist/types/platform-admin-runtime/module-menu/ModuleMenuEntriesSection.vue.d.ts +7 -0
  37. package/dist/types/platform-admin-runtime/module-menu/moduleMenuClient.d.ts +16 -0
  38. package/dist/types/platform-admin-runtime/platformModulePageEnhancement.d.ts +2 -0
  39. package/dist/types/platform-admin-runtime/role/RoleAccountGrantDrawerSurface.vue.d.ts +7 -0
  40. package/dist/types/platform-admin-runtime/role/RoleAuthorizationDrawerSurface.vue.d.ts +7 -0
  41. package/dist/types/platform-admin-runtime/role/RoleEmploymentGrantDrawerSurface.vue.d.ts +7 -0
  42. package/dist/types/platform-admin-runtime/role/RoleEnumTitleCell.vue.d.ts +8 -0
  43. package/dist/types/platform-admin-runtime/role/RoleGroupMemberFormField.vue.d.ts +7 -0
  44. package/dist/types/platform-admin-runtime/role/RoleScopeTree.vue.d.ts +7 -0
  45. package/dist/types/platform-admin-runtime/roleModulePageEnhancement.d.ts +7 -0
  46. package/dist/types/platform-components/AdaptiveHeaderActionBar.vue.d.ts +24 -0
  47. package/dist/types/platform-components/BusinessNotificationPanel.vue.d.ts +15 -1
  48. package/dist/types/platform-components/CrudRecordListExplorer.vue.d.ts +9 -4
  49. package/dist/types/platform-components/DetailRelationListPanel.vue.d.ts +1 -1
  50. package/dist/types/platform-components/DrawerOperationBar.vue.d.ts +4 -2
  51. package/dist/types/platform-components/FormulaExpressionEditor.vue.d.ts +54 -0
  52. package/dist/types/platform-components/ManagementExplorerColumn.vue.d.ts +15 -3
  53. package/dist/types/platform-components/ManagementPanelHeader.vue.d.ts +5 -3
  54. package/dist/types/platform-components/ManagementWorkspace.vue.d.ts +11 -0
  55. package/dist/types/platform-components/ModuleActionButton.vue.d.ts +3 -3
  56. package/dist/types/platform-components/QueryGroupedSummary.vue.d.ts +21 -0
  57. package/dist/types/platform-components/RecordDetailDrawer.vue.d.ts +1 -0
  58. package/dist/types/platform-components/RecordDetailExtensionSection.vue.d.ts +2 -0
  59. package/dist/types/platform-components/RecordDetailFields.vue.d.ts +41 -2
  60. package/dist/types/platform-components/RecordDetailLayout.vue.d.ts +8 -3
  61. package/dist/types/platform-components/RecordDetailPanel.vue.d.ts +2 -0
  62. package/dist/types/platform-components/RecordExplorerCreateButton.vue.d.ts +16 -0
  63. package/dist/types/platform-components/RecordExplorerPanel.vue.d.ts +16 -5
  64. package/dist/types/platform-components/RecordFieldLabel.vue.d.ts +16 -0
  65. package/dist/types/platform-components/RecordFormFields.vue.d.ts +21 -2
  66. package/dist/types/platform-components/RecordFormGrid.vue.d.ts +24 -0
  67. package/dist/types/platform-components/RecordListExplorer.vue.d.ts +23 -1
  68. package/dist/types/platform-components/RecordMultiPicker.vue.d.ts +2 -2
  69. package/dist/types/platform-components/RecordPanelButton.vue.d.ts +9 -3
  70. package/dist/types/platform-components/RecordPermissionDialog.vue.d.ts +15 -0
  71. package/dist/types/platform-components/RecordPicker.vue.d.ts +2 -2
  72. package/dist/types/platform-components/RecordQueryEnumFilter.vue.d.ts +17 -0
  73. package/dist/types/platform-components/RecordQueryListCell.vue.d.ts +12 -0
  74. package/dist/types/platform-components/RecordQueryListPanel.vue.d.ts +110 -64
  75. package/dist/types/platform-components/RecordQueryListSurface.vue.d.ts +124 -0
  76. package/dist/types/platform-components/RecordRelationTable.vue.d.ts +62 -0
  77. package/dist/types/platform-components/RecordRelationValue.vue.d.ts +9 -0
  78. package/dist/types/platform-components/RecordStatusSwitch.vue.d.ts +3 -3
  79. package/dist/types/platform-components/StaticManagementLayout.vue.d.ts +2 -0
  80. package/dist/types/platform-components/TreeRecordExplorer.vue.d.ts +15 -4
  81. package/dist/types/platform-components/adaptiveHeaderActionLayout.d.ts +22 -0
  82. package/dist/types/platform-components/formulaExpressionTokens.d.ts +18 -0
  83. package/dist/types/platform-components/index.d.ts +20 -1
  84. package/dist/types/platform-components/managementExplorerContext.d.ts +11 -0
  85. package/dist/types/platform-components/managementWorkspaceContext.d.ts +20 -0
  86. package/dist/types/platform-components/managementWorkspaceLayout.d.ts +14 -0
  87. package/dist/types/platform-components/optionFieldOptionCache.d.ts +1 -1
  88. package/dist/types/platform-components/recordActionBarModel.d.ts +3 -0
  89. package/dist/types/platform-components/recordQueryListColumnModel.d.ts +42 -0
  90. package/dist/types/platform-components/scopedTreeModuleContext.d.ts +2 -2
  91. package/dist/types/platform-components/selectionRefresh.d.ts +9 -0
  92. package/dist/types/platform-components/sortPartitionKey.d.ts +5 -0
  93. package/dist/types/platform-components/staticTreeResourceModuleContext.d.ts +3 -3
  94. package/dist/types/platform-workbench/index.d.ts +2 -0
  95. package/dist/types/platform-workbench/useWorkspaceViewUnsavedState.d.ts +5 -0
  96. package/dist/types/platform-workbench/workbenchNavigation.d.ts +5 -1
  97. package/dist/types/platform-workbench/workspaceViewContract.d.ts +5 -0
  98. package/dist/types/platform-workbench/workspaceViewHost.d.ts +5 -0
  99. package/dist/types/platform-workbench/workspaceViewNavigation.d.ts +9 -0
  100. package/dist/types/platform-workbench/workspaceViewUnsavedState.d.ts +3 -0
  101. package/dist/types/views/BusinessRuleGovernanceSurface.vue.d.ts +10 -0
  102. package/dist/types/views/EmployeeEmploymentTable.vue.d.ts +5 -0
  103. package/dist/types/views/{UserDetailRouteView.vue.d.ts → MetadataGovernanceSurface.vue.d.ts} +3 -3
  104. package/dist/types/views/MetadataSourceTree.vue.d.ts +44 -0
  105. package/dist/types/views/ModuleBusinessPreview.vue.d.ts +7 -0
  106. package/dist/types/views/ModuleExperienceProfileOverview.vue.d.ts +7 -0
  107. package/dist/types/views/ModuleGovernanceView.vue.d.ts +9 -0
  108. package/dist/types/views/PageCompositionDescriptorPreview.vue.d.ts +54 -0
  109. package/dist/types/views/PageCompositionTree.vue.d.ts +103 -0
  110. package/dist/types/views/PageCompositionWorkspace.vue.d.ts +7 -0
  111. package/dist/types/views/PageQuerySummaryEditor.vue.d.ts +48 -0
  112. package/dist/types/views/RoleAccountGrantDrawer.vue.d.ts +6 -2
  113. package/dist/types/views/RoleAuthorizationView.vue.d.ts +7 -0
  114. package/dist/types/views/RoleEmploymentGrantDrawer.vue.d.ts +5 -1
  115. package/dist/types/views/businessRuleGovernance.d.ts +201 -0
  116. package/dist/types/views/metadataModelEditSession.d.ts +75 -0
  117. package/dist/types/views/metadataModelTree.d.ts +40 -0
  118. package/dist/types/views/metadataNaming.d.ts +7 -0
  119. package/dist/types/views/metadataOrchestrationState.d.ts +161 -6
  120. package/dist/types/views/metadataSourceTree.d.ts +10 -0
  121. package/dist/types/views/moduleGovernanceWorkspaceView.d.ts +9 -0
  122. package/dist/types/views/pageCompositionDraftState.d.ts +375 -0
  123. package/dist/types/views/pageCompositionDragPayload.d.ts +26 -0
  124. package/dist/types/views/pageCompositionMode.d.ts +86 -0
  125. package/dist/types/views/pageCompositionPlacement.d.ts +48 -0
  126. package/dist/types/views/pageCompositionTransport.d.ts +9 -0
  127. package/dist/types/views/roleGrantClient.d.ts +8 -5
  128. package/dist/types/views/usePageCompositionActionPreviewDrag.d.ts +41 -0
  129. package/dist/types/views/usePageCompositionPreviewDrag.d.ts +48 -0
  130. package/dist/types/vue-ui-antdv/components/UiActionButton.vue.d.ts +2 -2
  131. package/dist/types/vue-ui-antdv/components/UiButton.vue.d.ts +6 -3
  132. package/dist/types/vue-ui-antdv/components/UiDataTable.vue.d.ts +5 -2
  133. package/dist/types/vue-ui-antdv/components/UiIcon.vue.d.ts +1 -1
  134. package/dist/types/vue-ui-antdv/components/UiPopover.vue.d.ts +22 -0
  135. package/dist/types/vue-ui-antdv/components/UiRecordExplorerItem.vue.d.ts +1 -1
  136. package/dist/types/vue-ui-antdv/components/UiSelect.vue.d.ts +5 -1
  137. package/dist/types/vue-ui-antdv/components/UiSwitch.vue.d.ts +1 -1
  138. package/dist/types/vue-ui-antdv/components/UiTable.vue.d.ts +1 -0
  139. package/dist/types/vue-ui-antdv/components/UiTextArea.vue.d.ts +38 -1
  140. package/dist/types/vue-ui-antdv/components/UiTokenInput.vue.d.ts +62 -0
  141. package/dist/types/vue-ui-antdv/components/UiTree.vue.d.ts +76 -3
  142. package/dist/types/vue-ui-antdv/components/UiTreeSelect.vue.d.ts +1 -1
  143. package/dist/types/vue-ui-antdv/index.d.ts +6 -1
  144. package/dist/types/vue-ui-antdv/treeStructure.d.ts +18 -0
  145. package/dist/types/vue-ui-antdv/types.d.ts +70 -0
  146. package/dist/types/vue-ui-antdv/useTreeLoader.d.ts +21 -0
  147. package/dist/types/vue-ui-antdv/useTreeMotion.d.ts +9 -0
  148. package/dist/types/vue-ui-antdv/useUiTreeDrag.d.ts +32 -0
  149. package/dist/types/web-contracts/index.d.ts +75 -8
  150. package/dist/types/web-core/module/index.d.ts +1 -0
  151. package/dist/types/web-core/module/moduleContext.d.ts +15 -0
  152. package/dist/types/web-core/module/pageActionEntries.d.ts +21 -0
  153. package/dist/types/web-core/module/runtimeContext.d.ts +7 -3
  154. package/dist/types/web-core/module/staticModuleClient.d.ts +29 -6
  155. package/dist/workspaceViews-DI_1vYX9.js +3518 -0
  156. package/package.json +1 -1
  157. package/dist/MetadataOrchestrationView-BhtVwJII.js +0 -661
  158. package/dist/ModuleActionManagementView-DpZS-xAD.js +0 -597
  159. package/dist/RoleAuthorizationView-8lilhtMB.js +0 -646
  160. package/dist/RoleDetailWorkspaceView-CFha6JHn.js +0 -26
  161. package/dist/RoleManagementView-0_KDrzgh.js +0 -1948
  162. package/dist/platform-components-oRIsIoxu.js +0 -12371
  163. package/dist/types/dynamic-page-runtime/DynamicRecordDetailActions.vue.d.ts +0 -39
  164. package/dist/types/dynamic-page-runtime/dynamicModuleDetailStateModel.d.ts +0 -5
  165. package/dist/types/views/UserDetailContent.vue.d.ts +0 -32
  166. package/dist/types/views/UserManagementListView.vue.d.ts +0 -3
  167. package/dist/types/views/UserManagementView.vue.d.ts +0 -3
  168. package/dist/types/views/metadataOrchestrationWorkspaceView.d.ts +0 -6
  169. package/dist/types/views/useUserSessionRows.d.ts +0 -28
  170. package/dist/types/views/userDetailStateModel.d.ts +0 -9
  171. package/dist/types/views/userManagementRouteState.d.ts +0 -11
  172. package/dist/workspaceViews-D-RiJ64o.js +0 -9078
@@ -0,0 +1,1379 @@
1
+ import { $t as e, B as t, D as n, Dn as r, E as i, Et as a, F as ee, G as te, I as ne, J as re, N as o, O as ie, Rn as ae, Tn as oe, Y as se, Zt as ce, an as le, bn as ue, bt as de, en as fe, et as pe, f as me, j as he, on as ge, q as _e, vt as s, xn as c, z as ve } from "./platform-workbench-DJj42YQP.js";
2
+ import { a as l, c as ye, i as be, o as xe, r as Se, s as Ce, t as we, x as Te } from "./workspaceViews-DI_1vYX9.js";
3
+ import { Fragment as Ee, computed as u, createBlock as d, createCommentVNode as f, createElementBlock as p, createElementVNode as m, createTextVNode as De, createVNode as h, defineComponent as g, normalizeClass as Oe, onBeforeUnmount as ke, onMounted as Ae, openBlock as _, ref as v, unref as y, watch as je, withCtx as b, withModifiers as Me } from "vue";
4
+ //#region src/platform-components/recordDraftNormalizer.ts
5
+ function Ne(e, t) {
6
+ return {
7
+ ...e,
8
+ ...t
9
+ };
10
+ }
11
+ //#endregion
12
+ //#region src/views/roleDetailWorkspaceSession.ts
13
+ function Pe(e, t) {
14
+ return Se(Te, e, {
15
+ ...t,
16
+ selectedRole: { ...t.selectedRole },
17
+ draft: { ...t.draft },
18
+ scope: {
19
+ ...t.scope,
20
+ tenant: t.scope.tenant ? { ...t.scope.tenant } : void 0,
21
+ organization: t.scope.organization ? { ...t.scope.organization } : void 0
22
+ }
23
+ });
24
+ }
25
+ function Fe(e, t) {
26
+ return be(Te, e, t);
27
+ }
28
+ function Ie(e) {
29
+ return l(Te, e);
30
+ }
31
+ //#endregion
32
+ //#region src/views/RoleGroupMemberSelector.vue?vue&type=script&setup=true&lang.ts
33
+ var x = { class: "role-group-member-selector" }, Le = /*#__PURE__*/ r(/* @__PURE__ */ g({
34
+ name: "RoleGroupMemberSelector",
35
+ __name: "RoleGroupMemberSelector",
36
+ props: {
37
+ value: { default: void 0 },
38
+ candidates: {},
39
+ currentRoleId: { default: void 0 },
40
+ disabled: {
41
+ type: Boolean,
42
+ default: !1
43
+ }
44
+ },
45
+ emits: ["update:value"],
46
+ setup(e, { emit: t }) {
47
+ let n = e, r = t, i = u(() => ne(n.value)), a = u(() => new Set(n.candidates.filter((e) => e.roleKind === "dataGrant" && e.id && i.value.includes(e.id)).map((e) => e.id))), ee = u(() => n.candidates.filter((e) => e.id && e.id !== n.currentRoleId).map((e) => ({
48
+ label: `${re(e)} / ${o(e.roleKind)}`,
49
+ value: e.id,
50
+ disabled: e.roleKind === "dataGrant" && a.value.size > 0 && !i.value.includes(e.id)
51
+ })));
52
+ function te(e) {
53
+ if (!Array.isArray(e)) {
54
+ r("update:value", void 0);
55
+ return;
56
+ }
57
+ let t = e.map((e) => String(e).trim()).filter(Boolean);
58
+ r("update:value", t.length > 0 ? t.join(",") : void 0);
59
+ }
60
+ function ne(e) {
61
+ return Array.isArray(e) ? e.map((e) => String(e).trim()).filter(Boolean) : typeof e == "string" ? e.split(",").map((e) => e.trim()).filter(Boolean) : [];
62
+ }
63
+ function re(e) {
64
+ return String(e?.title ?? e?.id ?? "角色");
65
+ }
66
+ function o(e) {
67
+ return e === "dataGrant" ? "数据授权角色" : "标准角色";
68
+ }
69
+ return (t, n) => (_(), p("label", x, [n[0] ||= m("span", { class: "role-group-member-selector-label" }, "成员角色", -1), h(y(c), {
70
+ mode: "multiple",
71
+ value: i.value,
72
+ options: ee.value,
73
+ placeholder: "请选择成员角色",
74
+ disabled: e.disabled,
75
+ "allow-clear": !0,
76
+ "onUpdate:value": te
77
+ }, null, 8, [
78
+ "value",
79
+ "options",
80
+ "disabled"
81
+ ])]));
82
+ }
83
+ }), [["__scopeId", "data-v-91d9ae10"]]), Re = {
84
+ key: 1,
85
+ class: "role-detail-state"
86
+ }, ze = {
87
+ key: 1,
88
+ class: "role-detail-state"
89
+ }, Be = /*#__PURE__*/ r(/* @__PURE__ */ g({
90
+ name: "RoleManagementView",
91
+ __name: "RoleManagementView",
92
+ props: {
93
+ recordId: {},
94
+ scopeKind: {},
95
+ scopeId: {}
96
+ },
97
+ setup(r) {
98
+ let c = r, l = me(), be = ae({ moduleAlias: "iam.tenant" }), Se = ae({ moduleAlias: "iam.organization" }), g = ae({ moduleAlias: "iam.role" }), x = a(), Be = v(""), S = v(null), C = v(0), w = v(), T = v(), E = v(), D = v(), O = v(!1), k = v("view"), A = v(!1), j = v(!1), M = v(!1), N = v(), P = v(!1), F = v(!1), Ve = v(), He = v(!1), I = v(0), L = v(Z(void 0)), R = v(re(void 0)), z = v([]), B = u(() => !!(c.recordId && c.scopeKind)), V = u(() => B.value && l?.presentation === "drawer"), Ue = u(() => !B.value || V.value), H = v([]), U = ge({
99
+ nodes: () => H.value,
100
+ loader: () => xt,
101
+ version: () => H.value
102
+ }), We = U.states, Ge = v([]), Ke = v(!1), W = /* @__PURE__ */ new Map(), qe = /* @__PURE__ */ new Map(), Je = /* @__PURE__ */ new Map(), Ye = u(() => In(U.nodes.value, Be.value)), Xe = u(() => x?.value?.system === !0), Ze = u(() => x?.value?.system === !0), Qe = u(() => {
103
+ let e = x?.value?.tenantId;
104
+ if (x?.value?.system !== !0 && e) return {
105
+ id: e,
106
+ title: e,
107
+ alias: e,
108
+ enabled: !0
109
+ };
110
+ }), $e = u(() => gt(g, T.value)), et = u(() => [
111
+ {
112
+ key: "title",
113
+ title: "角色名称",
114
+ width: "22%"
115
+ },
116
+ {
117
+ key: "assignmentType",
118
+ title: "授权层级",
119
+ width: "13%",
120
+ render: (e) => wn(e, "assignmentType", bn(e.assignmentType))
121
+ },
122
+ {
123
+ key: "roleKind",
124
+ title: "角色类型",
125
+ width: "13%",
126
+ render: (e) => wn(e, "roleKind", xn(e.roleKind))
127
+ },
128
+ {
129
+ key: "sharePolicy",
130
+ title: "公开策略",
131
+ width: "15%",
132
+ render: (e) => wn(e, "sharePolicy", Sn(e.sharePolicy))
133
+ },
134
+ {
135
+ key: "systemManaged",
136
+ title: "系统托管",
137
+ width: "12%",
138
+ render: (e) => Cn(e.systemManaged)
139
+ },
140
+ {
141
+ key: "enabled",
142
+ title: "状态",
143
+ type: "enabledStatus",
144
+ width: "10%"
145
+ }
146
+ ]), tt = u(() => !!T.value), nt = u(() => k.value === "create" ? "新建角色" : $(D.value ?? L.value)), rt = u(() => T.value?.title ?? "角色详情"), G = u(() => M.value || A.value), it = u(() => A.value || !T.value ? !1 : k.value === "create" ? g.can("create") === !0 : !!D.value?.id && g.can("update") === !0 && !D.value?.systemManaged), at = u(() => {
147
+ let e = D.value;
148
+ return !!(e?.id && e.systemManaged !== !0 && g.can(kn(e)) === !0);
149
+ }), ot = u(() => k.value === "view" ? D.value?.id ? [
150
+ {
151
+ key: "edit",
152
+ actionCode: "update",
153
+ title: "编辑",
154
+ iconName: "edit",
155
+ disabled: M.value || D.value.systemManaged === !0
156
+ },
157
+ {
158
+ key: "bind",
159
+ actionCode: Dn(D.value),
160
+ title: On(D.value),
161
+ iconName: "lock",
162
+ visible: Tn(D.value),
163
+ disabled: M.value || D.value.systemManaged === !0
164
+ },
165
+ {
166
+ key: "delete",
167
+ actionCode: "delete",
168
+ title: "删除",
169
+ iconName: "delete",
170
+ danger: !0,
171
+ disabled: M.value || D.value.systemManaged === !0
172
+ }
173
+ ] : [] : [{
174
+ key: "cancel",
175
+ title: "取消",
176
+ iconName: "close",
177
+ disabled: M.value
178
+ }, {
179
+ key: "save",
180
+ actionCode: k.value === "create" ? "create" : "update",
181
+ title: "保存",
182
+ iconName: "save",
183
+ primary: !0,
184
+ loading: M.value,
185
+ disabled: !it.value
186
+ }]), st = u(() => ot.value), ct = u(() => ot.value), lt = xe({
187
+ view: Te,
188
+ input: u(() => {
189
+ let e = D.value?.id, t = T.value, n = k.value;
190
+ if (e && t && (n === "view" || n === "edit")) return {
191
+ recordId: e,
192
+ scopeKind: t.kind,
193
+ ...t.kind === "platform" ? {} : { scopeId: t.id }
194
+ };
195
+ }),
196
+ title: u(() => $(D.value)),
197
+ eligibility: u(() => ({
198
+ hasStableIdentity: !!(D.value?.id && T.value) && !A.value,
199
+ busy: M.value
200
+ })),
201
+ beforePromote: async (e) => {
202
+ let t = D.value, n = T.value;
203
+ if (t && n) return await Pe(e, {
204
+ selectedRole: t,
205
+ draft: L.value,
206
+ scope: n,
207
+ mode: k.value === "edit" ? "edit" : "view"
208
+ }) === "accepted";
209
+ },
210
+ onPromoted: qt
211
+ }), K = u(() => ({
212
+ title: {
213
+ label: "角色名称",
214
+ required: !0,
215
+ visible: !0,
216
+ placeholder: "请输入角色名称"
217
+ },
218
+ assignmentType: {
219
+ label: "授权层级",
220
+ required: !0,
221
+ visible: !0,
222
+ controlType: "select",
223
+ options: mn(L.value.roleKind)
224
+ },
225
+ roleKind: {
226
+ label: "角色类型",
227
+ required: !0,
228
+ visible: !0,
229
+ controlType: "select",
230
+ options: hn(L.value.assignmentType)
231
+ },
232
+ memberRoleIds: {
233
+ label: "成员角色",
234
+ visible: L.value.roleKind === "group"
235
+ },
236
+ ownerScopeType: {
237
+ label: "归属范围",
238
+ required: !0,
239
+ visible: !0,
240
+ readOnly: !0,
241
+ controlType: "select",
242
+ options: [
243
+ {
244
+ label: "平台",
245
+ value: "platform"
246
+ },
247
+ {
248
+ label: "租户",
249
+ value: "tenant"
250
+ },
251
+ {
252
+ label: "机构",
253
+ value: "organization"
254
+ }
255
+ ]
256
+ },
257
+ ownerScopeId: {
258
+ label: "归属对象",
259
+ visible: !0,
260
+ readOnly: !0
261
+ },
262
+ sharePolicy: {
263
+ label: "公开策略",
264
+ required: !0,
265
+ visible: !0,
266
+ controlType: "select",
267
+ options: yn(T.value?.kind ?? L.value.ownerScopeType)
268
+ },
269
+ description: {
270
+ label: "说明",
271
+ visible: !0,
272
+ placeholder: "请输入角色说明"
273
+ },
274
+ enabled: {
275
+ label: "启用状态",
276
+ visible: !0,
277
+ controlType: "enabledStatus"
278
+ },
279
+ sortOrder: {
280
+ label: "排序号",
281
+ visible: !0,
282
+ placeholder: "请输入排序号"
283
+ }
284
+ })), ut = [
285
+ "title",
286
+ "assignmentType",
287
+ "roleKind"
288
+ ], dt = [
289
+ "ownerScopeType",
290
+ "ownerScopeId",
291
+ "sharePolicy",
292
+ "description",
293
+ "enabled",
294
+ "sortOrder"
295
+ ], ft = u(() => {
296
+ let e = [
297
+ "title",
298
+ "assignmentType",
299
+ "roleKind"
300
+ ];
301
+ return L.value.roleKind === "group" && e.push("memberRoleIds"), e.push("ownerScopeType", "ownerScopeId", "sharePolicy", "description", "enabled", "sortOrder"), e;
302
+ }), pt;
303
+ Ae(() => {
304
+ if (ht(), (!B.value || V.value) && yt(), !B.value || !c.recordId || !c.scopeKind) return;
305
+ let e = rn();
306
+ e && !V.value && (pt = Fe(e, mt)), nn();
307
+ }), ke(() => pt?.());
308
+ function mt(e) {
309
+ return k.value !== "edit" && (sn(e), !0);
310
+ }
311
+ je(D, (e) => {
312
+ B.value && e && l?.setTitle($(e));
313
+ }, { immediate: !0 }), je(Qe, jt, { immediate: !0 }), je(T, () => {
314
+ B.value || (E.value = void 0, D.value = void 0, L.value = Z(T.value), qt(), C.value += 1, q());
315
+ });
316
+ async function ht() {
317
+ try {
318
+ let e = await g.runtime.ready;
319
+ R.value = re(e.uiDescriptor);
320
+ } catch (e) {
321
+ s(e, {
322
+ source: "role-management",
323
+ phase: "load"
324
+ });
325
+ }
326
+ }
327
+ async function q(e = T.value) {
328
+ if (!e) {
329
+ z.value = [];
330
+ return;
331
+ }
332
+ try {
333
+ let t = await g.crud.query(_t({
334
+ page: {
335
+ pageNum: 0,
336
+ pageSize: 500
337
+ },
338
+ conditions: [
339
+ {
340
+ fieldName: "assignmentType",
341
+ operator: "EQ",
342
+ values: ["employment"]
343
+ },
344
+ {
345
+ fieldName: "roleKind",
346
+ operator: "IN",
347
+ values: ["standard", "dataGrant"]
348
+ },
349
+ {
350
+ fieldName: "enabled",
351
+ operator: "EQ",
352
+ values: [!0]
353
+ }
354
+ ],
355
+ sorts: [{ field: "sortOrder" }, { field: "title" }]
356
+ }, e));
357
+ z.value = t.records;
358
+ } catch (e) {
359
+ z.value = [], s(e, {
360
+ source: "role-management",
361
+ phase: "load"
362
+ });
363
+ }
364
+ }
365
+ function gt(e, t) {
366
+ return {
367
+ ...e,
368
+ crud: {
369
+ ...e.crud,
370
+ query: (n) => t ? e.crud.query(_t(n, t)) : e.crud.query(n)
371
+ }
372
+ };
373
+ }
374
+ function _t(e, t) {
375
+ let n = [...e?.conditions ?? [], {
376
+ fieldName: "ownerScopeType",
377
+ operator: "EQ",
378
+ values: [t.kind]
379
+ }];
380
+ return t.kind !== "platform" && t.id && n.push({
381
+ fieldName: "ownerScopeId",
382
+ operator: "EQ",
383
+ values: [t.id]
384
+ }), {
385
+ ...e,
386
+ conditions: n
387
+ };
388
+ }
389
+ function vt(e) {
390
+ return e === "ownerScopeType" || e === "ownerScopeId" || k.value === "edit" && ["assignmentType", "roleKind"].includes(e) ? !0 : D.value?.systemManaged === !0;
391
+ }
392
+ function J(e, t) {
393
+ let n = {
394
+ ...L.value,
395
+ [e]: t
396
+ };
397
+ e === "roleKind" && (t === "group" || t === "dataGrant") && (n.assignmentType = "employment"), e === "roleKind" && t !== "group" && (n.memberRoleIds = void 0), e === "assignmentType" && t === "account" && pn(n.roleKind) && (n.roleKind = "standard", n.memberRoleIds = void 0), L.value = n;
398
+ }
399
+ async function yt() {
400
+ if (!B.value || V.value) {
401
+ if (!Ze.value) {
402
+ let e = Qe.value;
403
+ if (!e?.id) return;
404
+ W.set(e.id, e), H.value = [bt(e)], jt(e);
405
+ return;
406
+ }
407
+ Ke.value = !0;
408
+ try {
409
+ await be.runtime.ready;
410
+ let e = await be.abilities.crud().query({ page: {
411
+ pageNum: 1,
412
+ pageSize: 200
413
+ } });
414
+ W.clear(), e.records.forEach((e) => {
415
+ e.id && W.set(e.id, e);
416
+ }), H.value = e.records.map(bt), !T.value && Xe.value && Mt();
417
+ } catch (e) {
418
+ H.value = [], s(e, {
419
+ source: "role-management",
420
+ phase: "load"
421
+ });
422
+ } finally {
423
+ Ke.value = !1;
424
+ }
425
+ }
426
+ }
427
+ function bt(e) {
428
+ return {
429
+ key: Tt(e.id),
430
+ title: jn(e),
431
+ secondary: e.alias ?? e.id,
432
+ muted: e.enabled === !1,
433
+ isLeaf: !1
434
+ };
435
+ }
436
+ async function xt(e, t) {
437
+ let n = Ot(e.key), r = n ? W.get(n) : void 0;
438
+ if (!n || !r) throw Error("租户已失效");
439
+ try {
440
+ let e = ie(Se, {
441
+ scopeFieldName: "tenantId",
442
+ scopeValue: n,
443
+ treePath: "/iam.organization/tree"
444
+ });
445
+ await e.runtime.ready;
446
+ let i = await e.abilities.tree().tree();
447
+ return t.signal.throwIfAborted(), {
448
+ mode: "replace",
449
+ nodes: [St(r), ...i.records.map((e) => Ct(e, n))],
450
+ hasMore: !1
451
+ };
452
+ } catch (e) {
453
+ throw t.signal.aborted || s(e, {
454
+ source: "role-management",
455
+ phase: "load"
456
+ }), e;
457
+ }
458
+ }
459
+ function St(e) {
460
+ return {
461
+ key: Et(e.id),
462
+ title: jn(e),
463
+ secondary: "租户本级角色",
464
+ isLeaf: !0
465
+ };
466
+ }
467
+ function Ct(e, t) {
468
+ let n = e.record;
469
+ return n.id && (qe.set(n.id, n), Je.set(n.id, t)), {
470
+ key: Dt(n.id),
471
+ title: Mn(n),
472
+ secondary: n.code ?? n.id,
473
+ muted: n.enabled === !1,
474
+ isLeaf: e.children.length === 0,
475
+ children: e.children.map((e) => Ct(e, t))
476
+ };
477
+ }
478
+ function wt(e) {
479
+ let t = Ot(e.key);
480
+ if (t) {
481
+ let e = W.get(t);
482
+ e && Pt(e);
483
+ return;
484
+ }
485
+ let n = kt(e.key);
486
+ if (n) {
487
+ let e = W.get(n);
488
+ e && Pt(e);
489
+ return;
490
+ }
491
+ let r = At(e.key);
492
+ if (!r) return;
493
+ let i = qe.get(r), a = Je.get(r);
494
+ i && a && (w.value = W.get(a), It(i));
495
+ }
496
+ function Tt(e) {
497
+ return `tenant:${e ?? ""}`;
498
+ }
499
+ function Et(e) {
500
+ return `tenant-root:${e ?? ""}`;
501
+ }
502
+ function Dt(e) {
503
+ return `organization:${e ?? ""}`;
504
+ }
505
+ function Ot(e) {
506
+ return e.startsWith("tenant:") ? e.slice(7) : void 0;
507
+ }
508
+ function kt(e) {
509
+ return e.startsWith("tenant-root:") ? e.slice(12) : void 0;
510
+ }
511
+ function At(e) {
512
+ return e.startsWith("organization:") ? e.slice(13) : void 0;
513
+ }
514
+ function jt(e = Qe.value) {
515
+ !e || Ze.value || w.value || T.value || (w.value = e, Ft(e));
516
+ }
517
+ function Mt() {
518
+ X() && Xe.value && (w.value = void 0, T.value = {
519
+ kind: "platform",
520
+ key: "platform",
521
+ title: "平台角色"
522
+ });
523
+ }
524
+ function Nt() {
525
+ if (X()) {
526
+ if (!Xe.value) {
527
+ Ft();
528
+ return;
529
+ }
530
+ Mt();
531
+ }
532
+ }
533
+ function Pt(e) {
534
+ X() && (w.value = e, Ft(e));
535
+ }
536
+ function Ft(e = w.value) {
537
+ e?.id && X() && (T.value = {
538
+ kind: "tenant",
539
+ id: e.id,
540
+ key: `tenant:${e.id}`,
541
+ title: `${jn(e)} / 租户本级`,
542
+ tenant: e
543
+ });
544
+ }
545
+ function It(e) {
546
+ e.id && X() && (T.value = {
547
+ kind: "organization",
548
+ id: e.id,
549
+ key: `organization:${e.id}`,
550
+ title: Mn(e),
551
+ tenant: w.value,
552
+ organization: e
553
+ });
554
+ }
555
+ function Lt(e) {
556
+ e.key === "create" && Kt();
557
+ }
558
+ function Rt(e) {
559
+ return [
560
+ {
561
+ key: "bind",
562
+ actionCode: Dn(e),
563
+ title: "绑定",
564
+ after: "edit",
565
+ pinned: !0,
566
+ visible: Tn(e)
567
+ },
568
+ {
569
+ key: "authorize",
570
+ actionCode: "rolePermissions",
571
+ title: "授权",
572
+ after: "bind",
573
+ pinned: !0,
574
+ visible: En(e)
575
+ },
576
+ {
577
+ key: "toggle",
578
+ actionCode: kn(e),
579
+ title: An(e),
580
+ iconName: "power",
581
+ before: "delete"
582
+ }
583
+ ];
584
+ }
585
+ function zt(e, t) {
586
+ if (e.systemManaged !== !0) return;
587
+ let n = t.key ?? t.actionCode;
588
+ return n === "edit" || n === "update" || n === "bind" || n === "authorize" || n === "toggle" || n === "delete" ? { disabled: !0 } : void 0;
589
+ }
590
+ function Bt(e, t) {
591
+ if (X()) {
592
+ if (e.key === "view") {
593
+ Y(t, "view");
594
+ return;
595
+ }
596
+ if (e.key === "edit") {
597
+ Y(t, "edit");
598
+ return;
599
+ }
600
+ if (e.key === "bind") {
601
+ Wt(t, t.assignmentType === "employment");
602
+ return;
603
+ }
604
+ if (e.key === "authorize") {
605
+ Vt(t);
606
+ return;
607
+ }
608
+ if (e.key === "toggle") {
609
+ $t(t);
610
+ return;
611
+ }
612
+ e.key === "delete" && Qt(t);
613
+ }
614
+ }
615
+ function Vt(e) {
616
+ String(e.id ?? "") && e.roleKind !== "group" && (Ve.value = Q(e), He.value = !0);
617
+ }
618
+ function Ht() {
619
+ He.value = !1, Ve.value = void 0;
620
+ }
621
+ function Ut(e) {
622
+ X() && Y(e, "view");
623
+ }
624
+ async function Wt(e, t = !1) {
625
+ if (!X()) return;
626
+ let n = String(e.id ?? "");
627
+ if (n) {
628
+ P.value = !t, F.value = t, N.value = Q(e);
629
+ try {
630
+ N.value = await g.crud.view(n);
631
+ } catch (e) {
632
+ P.value = !1, F.value = !1, N.value = void 0, s(e, {
633
+ source: "role-management",
634
+ phase: "load"
635
+ });
636
+ }
637
+ }
638
+ }
639
+ function Gt() {
640
+ M.value || (P.value = !1, F.value = !1, N.value = void 0);
641
+ }
642
+ function Kt() {
643
+ if (X()) {
644
+ if (!T.value) {
645
+ de("请先选择角色归属范围", { phase: "validation" });
646
+ return;
647
+ }
648
+ D.value = void 0, E.value = void 0, L.value = Z(T.value), k.value = "create", A.value = !1, j.value = !1, I.value += 1, O.value = !0;
649
+ }
650
+ }
651
+ async function Y(e, t) {
652
+ if (!X()) return;
653
+ let n = String(e.id ?? "");
654
+ if (!n) return;
655
+ E.value = n, O.value = !0, k.value = t, D.value = void 0, L.value = Q(e), A.value = !0, j.value = !1;
656
+ let r = I.value + 1;
657
+ I.value = r;
658
+ try {
659
+ let e = await g.crud.view(n);
660
+ if (!en(n, r)) return;
661
+ if (!on(e)) {
662
+ j.value = !0, de("角色不属于当前归属范围", {
663
+ source: "role-management",
664
+ phase: "load"
665
+ });
666
+ return;
667
+ }
668
+ tn(e, t);
669
+ } catch (e) {
670
+ en(n, r) && (j.value = !0, s(e, {
671
+ source: "role-management",
672
+ phase: "load"
673
+ }));
674
+ } finally {
675
+ en(n, r) && (A.value = !1);
676
+ }
677
+ }
678
+ function qt() {
679
+ M.value || (I.value += 1, A.value = !1, j.value = !1, O.value = !1, k.value = "view", L.value = D.value ? Q(D.value) : Z(T.value), V.value && l?.dismiss());
680
+ }
681
+ function Jt() {
682
+ if (!M.value) {
683
+ if (!D.value?.id || k.value === "create") {
684
+ qt();
685
+ return;
686
+ }
687
+ L.value = Q(D.value), k.value = "view", A.value = !1, j.value = !1;
688
+ }
689
+ }
690
+ function Yt(e) {
691
+ if (e.key === "cancel") {
692
+ Jt();
693
+ return;
694
+ }
695
+ if (e.key === "save") {
696
+ Zt();
697
+ return;
698
+ }
699
+ if (X()) {
700
+ if (e.key === "edit" && D.value && !D.value.systemManaged) {
701
+ L.value = Q(D.value), k.value = "edit";
702
+ return;
703
+ }
704
+ if (e.key === "bind" && D.value) {
705
+ Wt(D.value, D.value.assignmentType === "employment");
706
+ return;
707
+ }
708
+ e.key === "delete" && Qt(D.value);
709
+ }
710
+ }
711
+ function Xt() {
712
+ let e = String(L.value.id ?? E.value ?? "");
713
+ if (!e) return;
714
+ let t = k.value === "create" ? "view" : k.value;
715
+ Y({
716
+ ...L.value,
717
+ id: e
718
+ }, t);
719
+ }
720
+ async function Zt() {
721
+ await i({
722
+ loading: M,
723
+ mode: k.value === "edit" ? "edit" : "create",
724
+ source: "role-management",
725
+ validateContext: () => T.value ? void 0 : "请先选择角色归属范围",
726
+ canSave: () => it.value,
727
+ deniedMessage: "当前用户无权保存角色",
728
+ createRecord: () => cn(L.value, T.value),
729
+ validateRecord: un,
730
+ save: (e, t) => t === "edit" && D.value?.id ? g.crud.update(D.value.id, e) : g.crud.insert(e),
731
+ onSaved: ({ record: e }) => {
732
+ tn(e), C.value += 1, q();
733
+ }
734
+ });
735
+ }
736
+ async function Qt(e) {
737
+ await n({
738
+ loading: M,
739
+ source: "role-management",
740
+ record: () => e?.id ? e : void 0,
741
+ canExecute: (e) => g.can("delete") === !0 && e.systemManaged !== !0,
742
+ deniedMessage: "当前用户无权删除角色",
743
+ confirm: (e) => ce({
744
+ title: "删除角色",
745
+ content: `确认删除角色「${$(e)}」?`,
746
+ okText: "删除",
747
+ danger: !0
748
+ }),
749
+ execute: (e) => g.crud.delete(String(e.id), { version: e.version }),
750
+ onExecuted: (e, t) => {
751
+ E.value === String(t.id) && (E.value = void 0, D.value = void 0, L.value = Z(T.value), O.value = !1, k.value = "view", A.value = !1, j.value = !1, I.value += 1), C.value += 1, q();
752
+ }
753
+ });
754
+ }
755
+ async function $t(e) {
756
+ await n({
757
+ loading: M,
758
+ source: "role-management",
759
+ record: () => e?.id ? e : void 0,
760
+ canExecute: (e) => g.can(kn(e)) === !0 && e.systemManaged !== !0,
761
+ deniedMessage: "当前用户无权变更角色启停状态",
762
+ execute: (e) => e.enabled === !1 ? g.crud.enable(String(e.id), { version: e.version }) : g.crud.disable(String(e.id), { version: e.version }),
763
+ onExecuted: async (e, t) => {
764
+ E.value === String(t.id) && tn(await g.crud.view(String(t.id))), C.value += 1, q();
765
+ }
766
+ });
767
+ }
768
+ function X() {
769
+ return !M.value;
770
+ }
771
+ function en(e, t) {
772
+ return I.value === t && E.value === e;
773
+ }
774
+ function tn(e, t = "view") {
775
+ D.value = e, E.value = e.id, L.value = Q(e), k.value = t === "edit" && e.systemManaged !== !0 ? "edit" : "view", O.value = !0, A.value = !1, j.value = !1, I.value += 1;
776
+ }
777
+ async function nn() {
778
+ let e = rn();
779
+ if (!e) return;
780
+ T.value = an(e);
781
+ let t = Ie(e);
782
+ if (t) {
783
+ sn(t);
784
+ return;
785
+ }
786
+ await Y({ id: e.recordId }, "view");
787
+ }
788
+ function rn() {
789
+ let e = c.recordId, t = c.scopeKind;
790
+ if (e && t && (t === "platform" || c.scopeId)) return {
791
+ recordId: e,
792
+ scopeKind: t,
793
+ ...t === "platform" ? {} : { scopeId: c.scopeId }
794
+ };
795
+ }
796
+ function an(e) {
797
+ if (e.scopeKind === "platform") return {
798
+ kind: "platform",
799
+ key: "platform",
800
+ title: "平台角色"
801
+ };
802
+ let t = e.scopeId, n = e.scopeKind === "organization" ? `机构:${t}` : `租户:${t}`;
803
+ return {
804
+ kind: e.scopeKind,
805
+ id: t,
806
+ key: `${e.scopeKind}:${t}`,
807
+ title: n,
808
+ ...e.scopeKind === "tenant" ? { tenant: {
809
+ id: t,
810
+ title: t,
811
+ alias: t
812
+ } } : {}
813
+ };
814
+ }
815
+ function on(e) {
816
+ let t = T.value;
817
+ return !t || e.ownerScopeType !== t.kind ? !1 : t.kind === "platform" || e.ownerScopeId === t.id;
818
+ }
819
+ function sn(e) {
820
+ T.value = e.scope, D.value = e.selectedRole, E.value = e.selectedRole.id, L.value = e.draft, k.value = e.mode, O.value = !0, A.value = !1, j.value = !1, I.value += 1;
821
+ }
822
+ function Z(e) {
823
+ return {
824
+ tenantId: ln(e),
825
+ ownerScopeType: e?.kind,
826
+ ownerScopeId: e?.kind === "platform" ? void 0 : e?.id,
827
+ assignmentType: "employment",
828
+ roleKind: "standard",
829
+ sharePolicy: _n(),
830
+ enabled: !0,
831
+ sortOrder: 100
832
+ };
833
+ }
834
+ function Q(e) {
835
+ return { ...e };
836
+ }
837
+ function cn(e, t) {
838
+ let n = fn(e.roleKind), r = gn(e.sharePolicy, t.kind), i = Ne(e, {
839
+ title: e.title?.trim(),
840
+ assignmentType: dn(e.assignmentType, n),
841
+ roleKind: n,
842
+ memberRoleIds: e.memberRoleIds?.trim() || void 0,
843
+ tenantId: ln(t),
844
+ ownerScopeType: t.kind,
845
+ ownerScopeId: t.kind === "platform" ? void 0 : t.id,
846
+ ownerScopeKey: void 0,
847
+ sharePolicy: r,
848
+ description: e.description?.trim() || void 0,
849
+ enabled: e.enabled !== !1,
850
+ sortOrder: vn(e.sortOrder)
851
+ });
852
+ return n !== "group" && (i.memberRoleIds = void 0), i;
853
+ }
854
+ function ln(e) {
855
+ return e?.kind === "platform" ? void 0 : e?.tenant?.id ?? e?.id;
856
+ }
857
+ function un(e) {
858
+ for (let t of [
859
+ "title",
860
+ "assignmentType",
861
+ "roleKind",
862
+ "ownerScopeType",
863
+ "sharePolicy"
864
+ ]) {
865
+ let n = _e(t, {
866
+ fields: R.value,
867
+ fallback: K.value
868
+ });
869
+ if (n.visible && n.required && !e[t]) return `请填写${n.label}`;
870
+ }
871
+ if (e.ownerScopeType !== "platform" && !e.ownerScopeId) return "请选择归属对象";
872
+ if (!yn(e.ownerScopeType).some((t) => t.value === e.sharePolicy)) return "请选择当前归属范围可用的公开策略";
873
+ }
874
+ function dn(e, t) {
875
+ return t === "group" || t === "dataGrant" ? "employment" : e === "account" ? "account" : "employment";
876
+ }
877
+ function fn(e) {
878
+ return e === "group" || e === "dataGrant" || e === "system" ? e : "standard";
879
+ }
880
+ function pn(e) {
881
+ return e === "group" || e === "dataGrant";
882
+ }
883
+ function mn(e) {
884
+ return pn(e) ? [{
885
+ label: "任职角色",
886
+ value: "employment"
887
+ }] : [{
888
+ label: "账号角色",
889
+ value: "account"
890
+ }, {
891
+ label: "任职角色",
892
+ value: "employment"
893
+ }];
894
+ }
895
+ function hn(e) {
896
+ let t = [{
897
+ label: "标准角色",
898
+ value: "standard"
899
+ }, {
900
+ label: "系统角色",
901
+ value: "system"
902
+ }];
903
+ return e === "account" ? t : [
904
+ t[0],
905
+ {
906
+ label: "角色组",
907
+ value: "group"
908
+ },
909
+ {
910
+ label: "数据授权角色",
911
+ value: "dataGrant"
912
+ },
913
+ t[1]
914
+ ];
915
+ }
916
+ function gn(e, t) {
917
+ return yn(t).map((e) => e.value).includes(e ?? "") ? e : _n();
918
+ }
919
+ function _n() {
920
+ return "private";
921
+ }
922
+ function vn(e) {
923
+ if (typeof e == "number") return Number.isFinite(e) ? e : 100;
924
+ let t = Number(String(e ?? "").trim());
925
+ return Number.isFinite(t) ? t : 100;
926
+ }
927
+ function yn(e) {
928
+ return e === "platform" ? [{
929
+ label: "私有",
930
+ value: "private"
931
+ }, {
932
+ label: "全局公开",
933
+ value: "platform"
934
+ }] : e === "organization" ? [{
935
+ label: "私有",
936
+ value: "private"
937
+ }, {
938
+ label: "本级及下级",
939
+ value: "ownerAndChildren"
940
+ }] : [{
941
+ label: "私有",
942
+ value: "private"
943
+ }, {
944
+ label: "租户公开",
945
+ value: "tenant"
946
+ }];
947
+ }
948
+ function bn(e) {
949
+ return e === "account" ? "账号角色" : "任职角色";
950
+ }
951
+ function xn(e) {
952
+ return {
953
+ standard: "标准角色",
954
+ group: "角色组",
955
+ dataGrant: "数据授权角色",
956
+ system: "系统角色"
957
+ }[e ?? "standard"];
958
+ }
959
+ function Sn(e) {
960
+ return {
961
+ private: "私有",
962
+ ownerAndChildren: "本级及下级",
963
+ tenant: "租户公开",
964
+ platform: "全局公开"
965
+ }[e ?? "private"];
966
+ }
967
+ function Cn(e) {
968
+ return e === !0 ? "是" : "否";
969
+ }
970
+ function wn(e, t, n) {
971
+ let r = e[`${t}Title`];
972
+ return typeof r == "string" && r.trim() ? r : n;
973
+ }
974
+ function Tn(e) {
975
+ return !!e?.id && (e?.assignmentType === "account" || e?.assignmentType === "employment");
976
+ }
977
+ function En(e) {
978
+ return !!e?.id && e?.roleKind !== "group";
979
+ }
980
+ function Dn(e) {
981
+ return e?.assignmentType === "employment" ? "employmentRoleGrants" : "accountRoleGrants";
982
+ }
983
+ function On(e) {
984
+ return e?.assignmentType === "employment" ? "绑定任职" : "绑定用户";
985
+ }
986
+ function kn(e) {
987
+ return e?.enabled === !1 ? "enable" : "disable";
988
+ }
989
+ function An(e) {
990
+ return e?.enabled === !1 ? "启用" : "停用";
991
+ }
992
+ function $(e) {
993
+ return String(e?.title ?? e?.id ?? "角色");
994
+ }
995
+ function jn(e) {
996
+ return String(e?.title ?? e?.alias ?? e?.id ?? "未命名租户");
997
+ }
998
+ function Mn(e) {
999
+ return String(e?.title ?? e?.code ?? e?.id ?? "未命名机构");
1000
+ }
1001
+ function Nn(e, t) {
1002
+ if (e === "ownerScopeType") return Fn(L.value.ownerScopeType);
1003
+ if (e === "ownerScopeId") return T.value?.title ?? String(t ?? "");
1004
+ if (e === "memberRoleIds") return Pn(t);
1005
+ }
1006
+ function Pn(e) {
1007
+ let t = Ln(e);
1008
+ return t.length === 0 ? "-" : t.map((e) => {
1009
+ let t = z.value.find((t) => t.id === e);
1010
+ return t ? $(t) : e;
1011
+ }).join(",");
1012
+ }
1013
+ function Fn(e) {
1014
+ return e === "platform" ? "平台" : e === "organization" ? "机构" : "租户";
1015
+ }
1016
+ function In(e, t) {
1017
+ let n = t.trim().toLowerCase();
1018
+ return n ? e.flatMap((e) => {
1019
+ let r = e.children ? In(e.children, t) : void 0;
1020
+ return [
1021
+ e.title,
1022
+ e.secondary,
1023
+ e.key
1024
+ ].some((e) => e?.toLowerCase().includes(n)) || (r?.length ?? 0) > 0 ? [{
1025
+ ...e,
1026
+ ...r ? { children: r } : {}
1027
+ }] : [];
1028
+ }) : e;
1029
+ }
1030
+ function Ln(e) {
1031
+ return Array.isArray(e) ? e.map((e) => String(e).trim()).filter(Boolean) : typeof e == "string" ? e.split(",").map((e) => e.trim()).filter(Boolean) : [];
1032
+ }
1033
+ return (n, r) => (_(), p("section", {
1034
+ ref_key: "pageRoot",
1035
+ ref: S,
1036
+ class: Oe(["role-management-page", { "role-management-page--task": B.value && !V.value }])
1037
+ }, [
1038
+ !B.value || V.value ? (_(), d(y(ne), {
1039
+ key: 0,
1040
+ class: "role-scope-panel",
1041
+ title: "租户",
1042
+ "refresh-title": "刷新租户列表",
1043
+ "search-keyword": Be.value,
1044
+ "search-placeholder": "搜索租户名称、alias 或 ID",
1045
+ searchable: Ze.value,
1046
+ onRefresh: yt,
1047
+ "onUpdate:searchKeyword": r[2] ||= (e) => Be.value = e
1048
+ }, {
1049
+ default: b(() => [Ke.value ? (_(), d(y(fe), {
1050
+ key: 0,
1051
+ tip: "加载租户"
1052
+ })) : (_(), d(y(le), {
1053
+ key: 1,
1054
+ "expanded-keys": Ge.value,
1055
+ "onUpdate:expandedKeys": r[0] ||= (e) => Ge.value = e,
1056
+ nodes: Ye.value,
1057
+ "selected-key": T.value?.kind === "tenant" ? Et(T.value.id) : T.value?.kind === "organization" ? Dt(T.value.id) : void 0,
1058
+ "load-strategy": "controlled",
1059
+ "branch-states": y(We),
1060
+ onLoadRequest: r[1] ||= (e) => y(U).request(e.node.key, e.reason, y(U).stateOf(e.node.key).status === "error"),
1061
+ onSelect: wt,
1062
+ onDeselect: Nt
1063
+ }, null, 8, [
1064
+ "expanded-keys",
1065
+ "nodes",
1066
+ "selected-key",
1067
+ "branch-states"
1068
+ ]))]),
1069
+ _: 1
1070
+ }, 8, ["search-keyword", "searchable"])) : f("v-if", !0),
1071
+ !B.value || V.value ? (_(), d(y(t), {
1072
+ key: 1,
1073
+ class: "role-list-panel",
1074
+ context: $e.value,
1075
+ title: T.value ? `角色列表 - ${T.value.title}` : "角色列表",
1076
+ columns: et.value,
1077
+ "standard-crud-actions": "",
1078
+ "standard-crud-row-actions": "",
1079
+ "extra-row-actions-of": Rt,
1080
+ "row-action-state-of": zt,
1081
+ "selected-key": E.value,
1082
+ "reload-key": C.value,
1083
+ ready: tt.value,
1084
+ "quick-search-placeholder": "搜索角色名称或说明",
1085
+ "empty-description": "当前范围暂无角色",
1086
+ "waiting-description": "请选择角色归属范围",
1087
+ onAction: Lt,
1088
+ onRowAction: Bt,
1089
+ onRowDblclick: Ut,
1090
+ onSelect: r[3] ||= (e) => E.value = String(e.id ?? "")
1091
+ }, null, 8, [
1092
+ "context",
1093
+ "title",
1094
+ "columns",
1095
+ "selected-key",
1096
+ "reload-key",
1097
+ "ready"
1098
+ ])) : f("v-if", !0),
1099
+ Ue.value ? (_(), d(y(se), {
1100
+ key: 2,
1101
+ open: O.value,
1102
+ title: nt.value,
1103
+ "render-mode": "inline",
1104
+ subtitle: rt.value,
1105
+ "close-on-outside": k.value === "view",
1106
+ promotion: y(lt),
1107
+ onClose: qt
1108
+ }, {
1109
+ status: b(() => [k.value === "view" && D.value ? (_(), d(y(ee), {
1110
+ key: 0,
1111
+ enabled: D.value.enabled !== !1,
1112
+ disabled: M.value || !at.value,
1113
+ loading: M.value,
1114
+ "show-label": !1,
1115
+ onChange: r[4] ||= (e) => $t(D.value)
1116
+ }, null, 8, [
1117
+ "enabled",
1118
+ "disabled",
1119
+ "loading"
1120
+ ])) : f("v-if", !0)]),
1121
+ operation: b(() => [h(y(pe), {
1122
+ context: $e.value,
1123
+ actions: st.value,
1124
+ onAction: Yt
1125
+ }, null, 8, ["context", "actions"])]),
1126
+ default: b(() => [A.value ? (_(), d(y(fe), {
1127
+ key: 0,
1128
+ class: "role-detail-state",
1129
+ tip: "加载角色详情"
1130
+ })) : j.value ? (_(), p("div", Re, [h(y(e), {
1131
+ title: "详情加载失败",
1132
+ message: "无法加载角色详情,请重试"
1133
+ }), h(y(oe), {
1134
+ type: "primary",
1135
+ "icon-name": "reload",
1136
+ onClick: Xt
1137
+ }, {
1138
+ default: b(() => [...r[10] ||= [De("重试", -1)]]),
1139
+ _: 1
1140
+ })])) : k.value === "view" || k.value === "create" || D.value ? (_(), p(Ee, { key: 2 }, [k.value === "view" ? (_(), d(y(te), {
1141
+ key: 0,
1142
+ record: L.value,
1143
+ "field-names": ft.value,
1144
+ fields: R.value,
1145
+ fallback: K.value,
1146
+ "display-of": Nn
1147
+ }, null, 8, [
1148
+ "record",
1149
+ "field-names",
1150
+ "fields",
1151
+ "fallback"
1152
+ ])) : (_(), p("form", {
1153
+ key: 1,
1154
+ class: "role-form",
1155
+ onSubmit: Me(Zt, ["prevent"])
1156
+ }, [
1157
+ m("label", null, [r[11] ||= m("span", { class: "role-form-label" }, "当前范围", -1), h(y(ue), {
1158
+ value: T.value?.title ?? "-",
1159
+ disabled: ""
1160
+ }, null, 8, ["value"])]),
1161
+ h(y(o), {
1162
+ record: L.value,
1163
+ "field-names": ut,
1164
+ fields: R.value,
1165
+ fallback: K.value,
1166
+ disabled: G.value,
1167
+ "disabled-of": vt,
1168
+ "onUpdate:field": J
1169
+ }, null, 8, [
1170
+ "record",
1171
+ "fields",
1172
+ "fallback",
1173
+ "disabled"
1174
+ ]),
1175
+ L.value.roleKind === "group" ? (_(), d(Le, {
1176
+ key: 0,
1177
+ value: L.value.memberRoleIds,
1178
+ candidates: z.value,
1179
+ "current-role-id": D.value?.id,
1180
+ disabled: G.value || D.value?.systemManaged === !0,
1181
+ "onUpdate:value": r[5] ||= (e) => J("memberRoleIds", e)
1182
+ }, null, 8, [
1183
+ "value",
1184
+ "candidates",
1185
+ "current-role-id",
1186
+ "disabled"
1187
+ ])) : f("v-if", !0),
1188
+ h(y(o), {
1189
+ record: L.value,
1190
+ "field-names": dt,
1191
+ fields: R.value,
1192
+ fallback: K.value,
1193
+ disabled: G.value,
1194
+ "disabled-of": vt,
1195
+ "onUpdate:field": J
1196
+ }, null, 8, [
1197
+ "record",
1198
+ "fields",
1199
+ "fallback",
1200
+ "disabled"
1201
+ ])
1202
+ ], 32)), k.value === "create" ? f("v-if", !0) : (_(), d(y(he), {
1203
+ key: 2,
1204
+ record: L.value,
1205
+ "show-sort-order": ""
1206
+ }, null, 8, ["record"]))], 64)) : f("v-if", !0)]),
1207
+ _: 1
1208
+ }, 8, [
1209
+ "open",
1210
+ "title",
1211
+ "subtitle",
1212
+ "close-on-outside",
1213
+ "promotion"
1214
+ ])) : (_(), d(y(ve), {
1215
+ key: 3,
1216
+ title: nt.value,
1217
+ subtitle: rt.value
1218
+ }, {
1219
+ status: b(() => [k.value === "view" && D.value ? (_(), d(y(ee), {
1220
+ key: 0,
1221
+ enabled: D.value.enabled !== !1,
1222
+ disabled: M.value || !at.value,
1223
+ loading: M.value,
1224
+ "show-label": !1,
1225
+ onChange: r[6] ||= (e) => $t(D.value)
1226
+ }, null, 8, [
1227
+ "enabled",
1228
+ "disabled",
1229
+ "loading"
1230
+ ])) : f("v-if", !0)]),
1231
+ operation: b(() => [h(y(pe), {
1232
+ context: y(g),
1233
+ actions: ct.value,
1234
+ "record-id": D.value?.id,
1235
+ onAction: Yt
1236
+ }, null, 8, [
1237
+ "context",
1238
+ "actions",
1239
+ "record-id"
1240
+ ])]),
1241
+ default: b(() => [A.value ? (_(), d(y(fe), {
1242
+ key: 0,
1243
+ class: "role-detail-state",
1244
+ tip: "加载角色详情"
1245
+ })) : j.value ? (_(), p("div", ze, [h(y(e), {
1246
+ title: "详情加载失败",
1247
+ message: "无法加载角色详情,请重试"
1248
+ }), h(y(oe), {
1249
+ type: "primary",
1250
+ "icon-name": "reload",
1251
+ onClick: Xt
1252
+ }, {
1253
+ default: b(() => [...r[12] ||= [De("重试", -1)]]),
1254
+ _: 1
1255
+ })])) : k.value === "view" || D.value ? (_(), p(Ee, { key: 2 }, [k.value === "view" ? (_(), d(y(te), {
1256
+ key: 0,
1257
+ record: L.value,
1258
+ "field-names": ft.value,
1259
+ fields: R.value,
1260
+ fallback: K.value,
1261
+ "display-of": Nn
1262
+ }, null, 8, [
1263
+ "record",
1264
+ "field-names",
1265
+ "fields",
1266
+ "fallback"
1267
+ ])) : (_(), p("form", {
1268
+ key: 1,
1269
+ class: "role-form",
1270
+ onSubmit: Me(Zt, ["prevent"])
1271
+ }, [
1272
+ m("label", null, [r[13] ||= m("span", { class: "role-form-label" }, "当前范围", -1), h(y(ue), {
1273
+ value: T.value?.title ?? "-",
1274
+ disabled: ""
1275
+ }, null, 8, ["value"])]),
1276
+ h(y(o), {
1277
+ record: L.value,
1278
+ "field-names": ut,
1279
+ fields: R.value,
1280
+ fallback: K.value,
1281
+ disabled: G.value,
1282
+ "disabled-of": vt,
1283
+ "onUpdate:field": J
1284
+ }, null, 8, [
1285
+ "record",
1286
+ "fields",
1287
+ "fallback",
1288
+ "disabled"
1289
+ ]),
1290
+ L.value.roleKind === "group" ? (_(), d(Le, {
1291
+ key: 0,
1292
+ value: L.value.memberRoleIds,
1293
+ candidates: z.value,
1294
+ "current-role-id": D.value?.id,
1295
+ disabled: G.value || D.value?.systemManaged === !0,
1296
+ "onUpdate:value": r[7] ||= (e) => J("memberRoleIds", e)
1297
+ }, null, 8, [
1298
+ "value",
1299
+ "candidates",
1300
+ "current-role-id",
1301
+ "disabled"
1302
+ ])) : f("v-if", !0),
1303
+ h(y(o), {
1304
+ record: L.value,
1305
+ "field-names": dt,
1306
+ fields: R.value,
1307
+ fallback: K.value,
1308
+ disabled: G.value,
1309
+ "disabled-of": vt,
1310
+ "onUpdate:field": J
1311
+ }, null, 8, [
1312
+ "record",
1313
+ "fields",
1314
+ "fallback",
1315
+ "disabled"
1316
+ ])
1317
+ ], 32)), h(y(he), {
1318
+ record: L.value,
1319
+ "show-sort-order": ""
1320
+ }, null, 8, ["record"])], 64)) : f("v-if", !0)]),
1321
+ _: 1
1322
+ }, 8, ["title", "subtitle"])),
1323
+ h(ye, {
1324
+ open: P.value,
1325
+ context: y(g),
1326
+ role: N.value,
1327
+ container: S.value,
1328
+ onClose: Gt,
1329
+ onSaved: r[8] ||= (e) => C.value += 1
1330
+ }, null, 8, [
1331
+ "open",
1332
+ "context",
1333
+ "role",
1334
+ "container"
1335
+ ]),
1336
+ h(Ce, {
1337
+ open: F.value,
1338
+ context: y(g),
1339
+ role: N.value,
1340
+ container: S.value,
1341
+ onClose: Gt,
1342
+ onSaved: r[9] ||= (e) => C.value += 1
1343
+ }, null, 8, [
1344
+ "open",
1345
+ "context",
1346
+ "role",
1347
+ "container"
1348
+ ]),
1349
+ He.value && Ve.value?.id ? (_(), d(we, {
1350
+ key: 4,
1351
+ "role-id": Ve.value.id,
1352
+ container: S.value,
1353
+ drawer: "",
1354
+ onClose: Ht
1355
+ }, null, 8, ["role-id", "container"])) : f("v-if", !0)
1356
+ ], 2));
1357
+ }
1358
+ }), [["__scopeId", "data-v-83076c10"]]), S = /* @__PURE__ */ g({
1359
+ name: "RoleDetailWorkspaceView",
1360
+ __name: "RoleDetailWorkspaceView",
1361
+ props: {
1362
+ recordId: {},
1363
+ scopeKind: {},
1364
+ scopeId: {}
1365
+ },
1366
+ setup(e) {
1367
+ return (t, n) => (_(), d(Be, {
1368
+ "record-id": e.recordId,
1369
+ "scope-kind": e.scopeKind,
1370
+ "scope-id": e.scopeId
1371
+ }, null, 8, [
1372
+ "record-id",
1373
+ "scope-kind",
1374
+ "scope-id"
1375
+ ]));
1376
+ }
1377
+ });
1378
+ //#endregion
1379
+ export { S as default };