@ximatai/muyun-web-app 0.26.9 → 0.26.11

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 (99) hide show
  1. package/dist/{MetadataOrchestrationView-CzhAgEdX.js → MetadataOrchestrationView-F_Bmfn9K.js} +188 -188
  2. package/dist/{ModuleActionManagementView-CM2d8jPO.js → ModuleActionManagementView-Db_3Twom.js} +70 -70
  3. package/dist/RoleDetailWorkspaceView-UOm1ejGH.js +1369 -0
  4. package/dist/index.css +1 -1
  5. package/dist/index.js +274 -299
  6. package/dist/{platform-components-CIi6GdC9.js → platform-components-59b4qzUL.js} +2738 -2453
  7. package/dist/types/app/StaticRoutePageHost.vue.d.ts +2 -0
  8. package/dist/types/consumer/AppWorkbenchShell.vue.d.ts +4 -2
  9. package/dist/types/consumer/index.d.ts +1 -1
  10. package/dist/types/dynamic-page-runtime/ManagedDetailRelationInlineSurface.vue.d.ts +3 -1
  11. package/dist/types/dynamic-page-runtime/ManagedDetailRelationSurface.vue.d.ts +2 -1
  12. package/dist/types/dynamic-page-runtime/ModulePageDetailRelations.vue.d.ts +3 -1
  13. package/dist/types/dynamic-page-runtime/ModulePageListExpansionSurface.vue.d.ts +2 -1
  14. package/dist/types/dynamic-page-runtime/ModulePageListRelationExpansion.vue.d.ts +2 -1
  15. package/dist/types/dynamic-page-runtime/ModulePageListRelationExpansions.vue.d.ts +2 -1
  16. package/dist/types/dynamic-page-runtime/ModulePageRecordContent.vue.d.ts +3 -1
  17. package/dist/types/dynamic-page-runtime/PageNavigatorExplorer.vue.d.ts +7 -2
  18. package/dist/types/dynamic-page-runtime/composables/useModulePageDetailExtensionRuntime.d.ts +5 -1
  19. package/dist/types/dynamic-page-runtime/composables/useModulePageFormContributionRuntime.d.ts +5 -3
  20. package/dist/types/dynamic-page-runtime/composables/useNavigatorRuntime.d.ts +95 -41
  21. package/dist/types/dynamic-page-runtime/composables/useRecordEditingSession.d.ts +3 -2
  22. package/dist/types/dynamic-page-runtime/index.d.ts +2 -2
  23. package/dist/types/dynamic-page-runtime/modulePageEnhancements.d.ts +103 -3
  24. package/dist/types/dynamic-page-runtime/navigatorEntrySelection.d.ts +18 -0
  25. package/dist/types/dynamic-page-runtime/pageContextRuntime.d.ts +8 -0
  26. package/dist/types/dynamic-page-runtime/pageNavigatorItemModel.d.ts +13 -0
  27. package/dist/types/dynamic-page-runtime/recordDetailController.d.ts +9 -8
  28. package/dist/types/formula/FormulaRuntime.d.ts +3 -0
  29. package/dist/types/platform-admin-runtime/platformModulePageEnhancement.d.ts +6 -0
  30. package/dist/types/{views/SystemUserManagementView.vue.d.ts → platform-admin-runtime/role/RoleAccountGrantDrawerSurface.vue.d.ts} +2 -2
  31. package/dist/types/{views/UserDetailRouteView.vue.d.ts → platform-admin-runtime/role/RoleAuthorizationDrawerSurface.vue.d.ts} +2 -3
  32. package/dist/types/{views/SystemUserDetailWorkspaceView.vue.d.ts → platform-admin-runtime/role/RoleEmploymentGrantDrawerSurface.vue.d.ts} +2 -2
  33. package/dist/types/platform-admin-runtime/role/RoleEnumTitleCell.vue.d.ts +8 -0
  34. package/dist/types/{dynamic-page-runtime/DynamicModuleHost.vue.d.ts → platform-admin-runtime/role/RoleGroupMemberFormField.vue.d.ts} +2 -2
  35. package/dist/types/platform-admin-runtime/role/RoleScopeTree.vue.d.ts +7 -0
  36. package/dist/types/platform-admin-runtime/roleModulePageEnhancement.d.ts +7 -0
  37. package/dist/types/platform-components/CrudRecordListExplorer.vue.d.ts +5 -1
  38. package/dist/types/platform-components/DrawerOperationBar.vue.d.ts +4 -2
  39. package/dist/types/platform-components/ManagementPanelHeader.vue.d.ts +2 -0
  40. package/dist/types/platform-components/RecordDetailDrawer.vue.d.ts +6 -3
  41. package/dist/types/platform-components/RecordDetailLayout.vue.d.ts +4 -2
  42. package/dist/types/platform-components/RecordExplorerPanel.vue.d.ts +2 -0
  43. package/dist/types/platform-components/RecordFormFields.vue.d.ts +2 -2
  44. package/dist/types/platform-components/RecordModeDrawer.vue.d.ts +2 -0
  45. package/dist/types/platform-components/RecordMultiPicker.vue.d.ts +1 -1
  46. package/dist/types/platform-components/RecordPanelButton.vue.d.ts +2 -0
  47. package/dist/types/platform-components/RecordPicker.vue.d.ts +3 -1
  48. package/dist/types/platform-components/RecordQueryListPanel.vue.d.ts +13 -4
  49. package/dist/types/platform-components/RecordStatusSwitch.vue.d.ts +2 -0
  50. package/dist/types/platform-components/TreeRecordExplorer.vue.d.ts +5 -1
  51. package/dist/types/platform-components/index.d.ts +1 -3
  52. package/dist/types/platform-components/recordFormFieldModel.d.ts +16 -2
  53. package/dist/types/platform-components/recordPickerConstraints.d.ts +2 -0
  54. package/dist/types/platform-components/scopedTreeModuleContext.d.ts +2 -2
  55. package/dist/types/platform-components/staticTreeResourceModuleContext.d.ts +3 -3
  56. package/dist/types/platform-workbench/Workbench.vue.d.ts +4 -2
  57. package/dist/types/views/EmployeeEmploymentTable.vue.d.ts +5 -0
  58. package/dist/types/views/RoleAccountGrantDrawer.vue.d.ts +6 -2
  59. package/dist/types/views/RoleAuthorizationView.vue.d.ts +7 -0
  60. package/dist/types/views/RoleEmploymentGrantDrawer.vue.d.ts +5 -1
  61. package/dist/types/views/roleGrantClient.d.ts +8 -5
  62. package/dist/types/vue-ui-antdv/components/UiSidePanel.vue.d.ts +4 -2
  63. package/dist/types/vue-ui-antdv/components/UiSwitch.vue.d.ts +2 -0
  64. package/dist/types/vue-ui-antdv/components/UiTable.vue.d.ts +1 -0
  65. package/dist/types/vue-ui-antdv/components/UiTree.vue.d.ts +20 -1
  66. package/dist/types/vue-ui-antdv/types.d.ts +6 -0
  67. package/dist/types/web-contracts/index.d.ts +81 -4
  68. package/dist/types/web-core/http.d.ts +6 -0
  69. package/dist/types/web-core/module/index.d.ts +1 -1
  70. package/dist/types/web-core/module/moduleContext.d.ts +2 -1
  71. package/dist/types/web-core/module/staticModuleClient.d.ts +10 -4
  72. package/dist/types/web-core/realtime.d.ts +8 -0
  73. package/dist/workspaceViews-BvV8mpML.js +11149 -0
  74. package/package.json +1 -1
  75. package/dist/DictionaryManagementView-CtIQpqVA.js +0 -1035
  76. package/dist/MenuManagementView-DJhkN2sG.js +0 -837
  77. package/dist/RoleAuthorizationView-jn_WUCeg.js +0 -599
  78. package/dist/RoleDetailWorkspaceView-CzaQ3Dz1.js +0 -26
  79. package/dist/RoleManagementView-nY7qu4GF.js +0 -1951
  80. package/dist/SystemUserDetailWorkspaceView-CBvqmWvP.js +0 -17
  81. package/dist/SystemUserManagementView-AEomKvK7.js +0 -887
  82. package/dist/currentUserContext-B1lj1WgF.js +0 -11
  83. package/dist/types/dynamic-page-runtime/DynamicRecordDetailActions.vue.d.ts +0 -39
  84. package/dist/types/dynamic-page-runtime/dynamicModuleDetailStateModel.d.ts +0 -5
  85. package/dist/types/platform-components/scopedResourceTreeModuleContext.d.ts +0 -6
  86. package/dist/types/views/DictionaryManagementView.vue.d.ts +0 -3
  87. package/dist/types/views/MenuManagementView.vue.d.ts +0 -3
  88. package/dist/types/views/UserDetailContent.vue.d.ts +0 -32
  89. package/dist/types/views/UserManagementListView.vue.d.ts +0 -3
  90. package/dist/types/views/UserManagementView.vue.d.ts +0 -3
  91. package/dist/types/views/dictionaryManagementState.d.ts +0 -215
  92. package/dist/types/views/menuManagementState.d.ts +0 -180
  93. package/dist/types/views/systemUserDetailWorkspaceSession.d.ts +0 -12
  94. package/dist/types/views/systemUserDetailWorkspaceView.d.ts +0 -5
  95. package/dist/types/views/useUserSessionRows.d.ts +0 -28
  96. package/dist/types/views/userDetailStateModel.d.ts +0 -9
  97. package/dist/types/views/userManagementRouteState.d.ts +0 -11
  98. package/dist/workspaceViewSessions-B5g4M0rT.js +0 -51
  99. package/dist/workspaceViews-CkERhK0K.js +0 -8748
@@ -1,1951 +0,0 @@
1
- import { A as e, B as t, Bt as n, Et as r, G as i, Kt as a, O as o, Ot as s, P as c, Qt as l, Tt as u, V as d, W as ee, Wt as f, b as p, bt as te, c as m, ft as h, g, h as _, i as v, l as y, mt as ne, ot as re, r as ie, st as ae, u as oe, vr as se, vt as ce, w as b, x, xt as le, yt as ue, zt as de } from "./platform-components-CIi6GdC9.js";
2
- import { C as fe, P as pe } from "./workspaceViews-CkERhK0K.js";
3
- import { n as me } from "./currentUserContext-B1lj1WgF.js";
4
- import { r as he, t as ge } from "./RoleAuthorizationView-jn_WUCeg.js";
5
- import { i as _e, n as S, r as ve, t as ye } from "./workspaceViewSessions-B5g4M0rT.js";
6
- import { Fragment as be, computed as C, createBlock as w, createCommentVNode as T, createElementBlock as E, createElementVNode as D, createTextVNode as O, createVNode as k, defineComponent as A, normalizeClass as xe, onBeforeUnmount as Se, onMounted as Ce, openBlock as j, ref as M, renderList as N, toDisplayString as P, unref as F, watch as we, withCtx as I, withKeys as L, withModifiers as Te } from "vue";
7
- //#region src/views/RoleAccountGrantDrawer.vue?vue&type=script&setup=true&lang.ts
8
- var R = {
9
- key: 1,
10
- class: "role-account-grant-drawer-state"
11
- }, z = {
12
- key: 2,
13
- class: "role-account-grant-drawer-body"
14
- }, B = { class: "role-account-grant-search" }, V = { class: "role-account-grant-summary" }, H = { key: 0 }, U = { class: "role-account-grant-selected" }, W = { class: "role-account-grant-selected-title" }, G = {
15
- key: 0,
16
- class: "role-account-grant-selected-list"
17
- }, Ee = ["disabled", "onClick"], De = {
18
- key: 1,
19
- class: "role-account-grant-selected-empty"
20
- }, Oe = { class: "role-account-grant-pagination" }, ke = 20, Ae = /*#__PURE__*/ a(/* @__PURE__ */ A({
21
- name: "RoleAccountGrantDrawer",
22
- __name: "RoleAccountGrantDrawer",
23
- props: {
24
- open: { type: Boolean },
25
- container: {},
26
- context: {},
27
- role: {}
28
- },
29
- emits: ["close", "saved"],
30
- setup(e, { emit: t }) {
31
- let n = e, r = t, i = M([]), a = M({}), o = M([]), s = M(/* @__PURE__ */ new Set()), c = M(/* @__PURE__ */ new Set()), l = M(""), u = M(""), d = M(0), p = M(0), m = M(!1), g = M(!1), _ = M(!1), v = M(!1), y = C(() => he(n.context.http)), ne = C(() => n.role?.id), re = C(() => n.role ? `绑定用户 - ${J(n.role)}` : "绑定用户"), ie = C(() => n.role?.ownerScopeType === "platform" ? "platform" : n.role?.ownerScopeType === "organization" ? "organization" : "tenant"), oe = C(() => ie.value === "platform" ? void 0 : n.role?.ownerScopeId), se = C(() => {
32
- let e = /* @__PURE__ */ new Map();
33
- for (let t of i.value) t.userId && e.set(t.userId, t);
34
- return e;
35
- }), ce = C(() => o.value.filter((e) => e.id).map((e) => ({
36
- id: e.id,
37
- username: K(e),
38
- employeeNo: e.employeeNo ?? "",
39
- employeeTitle: e.employeeTitle ?? "",
40
- organizationTitle: e.organizationTitle ?? e.organizationId ?? "",
41
- departmentTitle: e.departmentTitle ?? e.departmentId ?? "",
42
- boundTitle: c.value.has(e.id) ? "已绑定" : "未绑定"
43
- }))), b = C(() => [...s.value].map((e) => a.value[e] ?? Ne(e))), x = C(() => Math.max(1, Math.ceil(p.value / ke))), fe = C(() => d.value > 0), pe = C(() => d.value + 1 < x.value), me = C(() => [...s.value].filter((e) => !c.value.has(e))), ge = C(() => [...c.value].filter((e) => !s.value.has(e))), _e = C(() => me.value.length > 0 || ge.value.length > 0), S = {
44
- rowKey: "id",
45
- columns: [
46
- {
47
- title: "用户账号",
48
- key: "username",
49
- width: 140
50
- },
51
- {
52
- title: "职员姓名",
53
- key: "employeeTitle",
54
- width: 120
55
- },
56
- {
57
- title: "职员工号",
58
- key: "employeeNo",
59
- width: 120
60
- },
61
- {
62
- title: "所属机构",
63
- key: "organizationTitle",
64
- width: 140
65
- },
66
- {
67
- title: "所属部门",
68
- key: "departmentTitle",
69
- width: 140
70
- },
71
- {
72
- title: "状态",
73
- key: "boundTitle",
74
- width: 90
75
- }
76
- ]
77
- }, ve = C(() => ({
78
- selectedRowKeys: [...s.value],
79
- preserveSelectedRowKeys: !0,
80
- disabledOf: () => _.value,
81
- onChange: (e) => {
82
- s.value = new Set(e.map((e) => String(e)));
83
- }
84
- }));
85
- we(() => [n.open, n.role?.id], ([e]) => {
86
- e ? ye() : Ae();
87
- }, { immediate: !0 });
88
- async function ye() {
89
- let e = ne.value;
90
- if (!e) {
91
- Ae();
92
- return;
93
- }
94
- m.value = !0, v.value = !1;
95
- try {
96
- let [t, n] = await Promise.all([y.value.accountRoleGrants(e), y.value.userSelector({
97
- roleId: e,
98
- enabledOnly: !1,
99
- page: {
100
- pageNum: 0,
101
- pageSize: 500
102
- }
103
- })]);
104
- i.value = t;
105
- let r = new Set(t.map((e) => e.userId).filter((e) => !!e));
106
- c.value = r, s.value = new Set(r), a.value = Me([...t.map((e) => Ne(e.userId)).filter((e) => !!e), ...n.records]), await A(0);
107
- } catch (e) {
108
- v.value = !0, h(e, {
109
- source: "role-account-grants",
110
- phase: "load"
111
- });
112
- } finally {
113
- m.value = !1;
114
- }
115
- }
116
- async function A(e) {
117
- g.value = !0;
118
- try {
119
- let t = await y.value.userSelector({
120
- keyword: u.value,
121
- enabledOnly: !0,
122
- page: {
123
- pageNum: Math.max(0, e),
124
- pageSize: ke
125
- }
126
- });
127
- o.value = t.records, a.value = {
128
- ...a.value,
129
- ...Me(t.records)
130
- }, d.value = t.pageNum, p.value = t.total;
131
- } catch (e) {
132
- h(e, {
133
- source: "role-account-grants",
134
- phase: "load"
135
- });
136
- } finally {
137
- g.value = !1;
138
- }
139
- }
140
- function xe() {
141
- u.value = l.value.trim(), A(0);
142
- }
143
- function Se(e, t) {
144
- let n = new Set(s.value);
145
- t ? n.add(e) : n.delete(e), s.value = n;
146
- }
147
- async function Ce() {
148
- let e = ne.value;
149
- if (e) {
150
- if (!_e.value) {
151
- r("close");
152
- return;
153
- }
154
- _.value = !0;
155
- try {
156
- for (let t of me.value) await y.value.grantAccountRole(e, {
157
- userId: t,
158
- managementScopeType: ie.value,
159
- managementScopeId: oe.value
160
- });
161
- for (let t of ge.value) {
162
- let n = se.value.get(t)?.id;
163
- n && await y.value.deleteAccountRoleGrant(e, n);
164
- }
165
- await ae({
166
- success: !0,
167
- message: "用户绑定已保存"
168
- }, {
169
- source: "role-account-grants",
170
- phase: "action",
171
- fallbackMessage: "用户绑定已保存"
172
- }), r("saved"), r("close");
173
- } catch (e) {
174
- h(e, {
175
- source: "role-account-grants",
176
- phase: "action"
177
- });
178
- } finally {
179
- _.value = !1;
180
- }
181
- }
182
- }
183
- function Te() {
184
- _.value || r("close");
185
- }
186
- function Ae() {
187
- i.value = [], a.value = {}, o.value = [], s.value = /* @__PURE__ */ new Set(), c.value = /* @__PURE__ */ new Set(), l.value = "", u.value = "", d.value = 0, p.value = 0, m.value = !1, g.value = !1, _.value = !1, v.value = !1;
188
- }
189
- function je(e) {
190
- Se(e, !1);
191
- }
192
- function Me(e) {
193
- let t = {};
194
- for (let n of e) n.id && (t[n.id] = n);
195
- return t;
196
- }
197
- function Ne(e) {
198
- return e ? {
199
- id: e,
200
- username: e
201
- } : void 0;
202
- }
203
- function K(e) {
204
- return String(e?.username ?? e?.id ?? "未知用户");
205
- }
206
- function q(e) {
207
- return e.employeeTitle && e.employeeNo ? `${e.employeeTitle} / ${e.employeeNo}` : e.employeeTitle ?? e.employeeNo ?? e.employeeId ?? e.id;
208
- }
209
- function J(e) {
210
- return String(e.title ?? e.id ?? "角色");
211
- }
212
- return (t, n) => (j(), w(F(ee), {
213
- open: e.open,
214
- title: re.value,
215
- container: e.container,
216
- "close-title": "关闭",
217
- onClose: Te
218
- }, {
219
- operation: I(() => [k(F(f), {
220
- disabled: _.value || m.value,
221
- onClick: Te
222
- }, {
223
- default: I(() => [...n[3] ||= [O("取消", -1)]]),
224
- _: 1
225
- }, 8, ["disabled"]), k(F(f), {
226
- type: "primary",
227
- loading: _.value,
228
- disabled: m.value || !_e.value,
229
- onClick: Ce
230
- }, {
231
- default: I(() => [...n[4] ||= [O(" 确定 ", -1)]]),
232
- _: 1
233
- }, 8, ["loading", "disabled"])]),
234
- default: I(() => [m.value ? (j(), w(F(le), {
235
- key: 0,
236
- class: "role-account-grant-drawer-state",
237
- tip: "加载用户"
238
- })) : v.value ? (j(), E("div", R, [k(F(te), {
239
- title: "用户加载失败",
240
- message: "无法加载当前角色的用户绑定"
241
- }), k(F(f), {
242
- type: "primary",
243
- "icon-name": "reload",
244
- onClick: ye
245
- }, {
246
- default: I(() => [...n[5] ||= [O("重试", -1)]]),
247
- _: 1
248
- })])) : (j(), E("section", z, [
249
- D("div", B, [k(F(de), {
250
- value: l.value,
251
- "allow-clear": "",
252
- disabled: _.value,
253
- placeholder: "搜索用户账号",
254
- "onUpdate:value": n[0] ||= (e) => l.value = e,
255
- onKeydown: L(xe, ["enter"])
256
- }, null, 8, ["value", "disabled"]), k(F(f), {
257
- "icon-name": "search",
258
- disabled: _.value,
259
- onClick: xe
260
- }, {
261
- default: I(() => [...n[6] ||= [O("查询", -1)]]),
262
- _: 1
263
- }, 8, ["disabled"])]),
264
- D("div", V, [D("span", null, "已选 " + P(s.value.size) + " 个", 1), _e.value ? (j(), E("span", H, "新增 " + P(me.value.length) + " 个,移除 " + P(ge.value.length) + " 个", 1)) : T("v-if", !0)]),
265
- D("section", U, [D("div", W, [n[7] ||= D("strong", null, "已选用户", -1), D("span", null, P(b.value.length) + " 个", 1)]), b.value.length > 0 ? (j(), E("div", G, [(j(!0), E(be, null, N(b.value, (e) => (j(), E("button", {
266
- key: e.id,
267
- type: "button",
268
- disabled: _.value,
269
- onClick: (t) => je(e.id)
270
- }, [D("span", null, P(K(e)), 1), D("small", null, P(q(e)), 1)], 8, Ee))), 128))])) : (j(), E("span", De, "暂无已选用户"))]),
271
- k(F(ue), {
272
- class: "role-account-grant-table",
273
- size: "middle",
274
- contract: S,
275
- rows: ce.value,
276
- loading: g.value,
277
- pagination: !1,
278
- selection: ve.value
279
- }, null, 8, [
280
- "rows",
281
- "loading",
282
- "selection"
283
- ]),
284
- D("div", Oe, [D("span", null, "共 " + P(p.value) + " 个用户,第 " + P(d.value + 1) + " / " + P(x.value) + " 页", 1), D("div", null, [k(F(f), {
285
- disabled: _.value || g.value || !fe.value,
286
- onClick: n[1] ||= (e) => A(d.value - 1)
287
- }, {
288
- default: I(() => [...n[8] ||= [O(" 上一页 ", -1)]]),
289
- _: 1
290
- }, 8, ["disabled"]), k(F(f), {
291
- disabled: _.value || g.value || !pe.value,
292
- onClick: n[2] ||= (e) => A(d.value + 1)
293
- }, {
294
- default: I(() => [...n[9] ||= [O(" 下一页 ", -1)]]),
295
- _: 1
296
- }, 8, ["disabled"])])])
297
- ]))]),
298
- _: 1
299
- }, 8, [
300
- "open",
301
- "title",
302
- "container"
303
- ]));
304
- }
305
- }), [["__scopeId", "data-v-59d7dba1"]]);
306
- //#endregion
307
- //#region src/views/roleDetailWorkspaceSession.ts
308
- function je(e, t) {
309
- return ye(fe, e, {
310
- ...t,
311
- selectedRole: { ...t.selectedRole },
312
- draft: { ...t.draft },
313
- scope: {
314
- ...t.scope,
315
- tenant: t.scope.tenant ? { ...t.scope.tenant } : void 0,
316
- organization: t.scope.organization ? { ...t.scope.organization } : void 0
317
- }
318
- });
319
- }
320
- function Me(e, t) {
321
- return S(fe, e, t);
322
- }
323
- function Ne(e) {
324
- return ve(fe, e);
325
- }
326
- //#endregion
327
- //#region src/views/EmployeeEmploymentTable.vue
328
- var K = /*#__PURE__*/ a(/* @__PURE__ */ A({
329
- name: "EmployeeEmploymentTable",
330
- __name: "EmployeeEmploymentTable",
331
- props: {
332
- rows: {},
333
- selectedIds: { default: () => /* @__PURE__ */ new Set() },
334
- selectable: {
335
- type: Boolean,
336
- default: !1
337
- },
338
- disabled: {
339
- type: Boolean,
340
- default: !1
341
- }
342
- },
343
- emits: ["update:selectedIds"],
344
- setup(e, { emit: t }) {
345
- let n = e, r = t, i = M([]), a = [
346
- {
347
- key: "title",
348
- title: "职员",
349
- width: 160
350
- },
351
- {
352
- key: "employeeNo",
353
- title: "工号",
354
- width: 140
355
- },
356
- {
357
- key: "organizationTitle",
358
- title: "所属机构",
359
- width: 180
360
- },
361
- {
362
- key: "employmentCount",
363
- title: "任职",
364
- width: 88,
365
- align: "right"
366
- },
367
- {
368
- key: "selectedCount",
369
- title: "已选",
370
- width: 88,
371
- align: "right"
372
- }
373
- ], o = [
374
- {
375
- key: "position",
376
- title: "岗位",
377
- width: 160
378
- },
379
- {
380
- key: "organization",
381
- title: "机构",
382
- width: 160
383
- },
384
- {
385
- key: "department",
386
- title: "部门",
387
- width: 160
388
- },
389
- {
390
- key: "primaryPosition",
391
- title: "主岗位",
392
- width: 88
393
- }
394
- ], s = C(() => {
395
- let e = /* @__PURE__ */ new Map();
396
- for (let t of n.rows) {
397
- let n = t.employeeId ?? t.id, r = e.get(n) ?? {
398
- employeeId: n,
399
- title: t.employeeTitle ?? n,
400
- employeeNo: t.employeeNo,
401
- organizationTitle: t.organizationTitle,
402
- positions: []
403
- };
404
- r.positions.push(t), e.set(n, r);
405
- }
406
- return [...e.values()];
407
- }), c = C(() => s.value);
408
- function l(e, t) {
409
- let n = t;
410
- return e.key === "title" ? n.title : e.key === "employeeNo" ? n.employeeNo ?? n.employeeId : e.key === "organizationTitle" ? n.organizationTitle ?? "-" : e.key === "employmentCount" ? `${n.positions.length} 项` : e.key === "selectedCount" ? `${ee(n)} 项` : "";
411
- }
412
- function d(e, t) {
413
- let n = t;
414
- return e.key === "position" ? n.positionTitle ?? n.positionId : e.key === "organization" ? n.organizationTitle ?? n.organizationId : e.key === "department" ? n.departmentTitle ?? n.departmentId : e.key === "primaryPosition" ? n.primaryPosition ? "是" : "否" : "";
415
- }
416
- function ee(e) {
417
- return e.positions.filter((e) => n.selectedIds.has(e.id)).length;
418
- }
419
- function f(e) {
420
- if (n.selectable) return {
421
- selectedRowKeys: e.positions.filter((e) => n.selectedIds.has(e.id)).map((e) => e.id),
422
- preserveSelectedRowKeys: !0,
423
- disabledOf: () => n.disabled,
424
- onChange: (t) => p(e, t)
425
- };
426
- }
427
- function p(e, t) {
428
- let i = new Set(n.selectedIds);
429
- for (let t of e.positions) i.delete(t.id);
430
- for (let e of t) i.add(String(e));
431
- r("update:selectedIds", i);
432
- }
433
- function te(e, t) {
434
- let n = e.employeeId;
435
- i.value = t ? Array.from(new Set([...i.value, n])) : i.value.filter((e) => e !== n);
436
- }
437
- function m(e) {
438
- let t = e.employeeId;
439
- te(e, !i.value.includes(t));
440
- }
441
- return (e, t) => (j(), w(F(u), {
442
- class: "employee-employment-table",
443
- columns: a,
444
- rows: c.value,
445
- "row-key": "employeeId",
446
- pagination: !1,
447
- "expanded-row-keys": i.value,
448
- "clickable-rows": "",
449
- "horizontal-scroll": "",
450
- onRowExpand: te,
451
- onRowDblclick: m
452
- }, {
453
- cell: I(({ column: e, record: t }) => [O(P(l(e, t)), 1)]),
454
- expandedRow: I(({ record: e }) => [k(F(b), { title: "任职信息" }, {
455
- default: I(() => [k(F(u), {
456
- columns: o,
457
- rows: e.positions,
458
- "row-key": "id",
459
- pagination: !1,
460
- selection: f(e),
461
- "horizontal-scroll": "",
462
- "row-muted": (e) => e.enabled === !1
463
- }, {
464
- cell: I(({ column: e, record: t }) => [O(P(d(e, t)), 1)]),
465
- _: 1
466
- }, 8, [
467
- "rows",
468
- "selection",
469
- "row-muted"
470
- ])]),
471
- _: 2
472
- }, 1024)]),
473
- _: 1
474
- }, 8, ["rows", "expanded-row-keys"]));
475
- }
476
- }), [["__scopeId", "data-v-e5fcebfa"]]), q = { key: 1 }, J = {
477
- key: 2,
478
- class: "role-employment-grant-body"
479
- }, Y = { class: "role-employment-grant-selected" }, X = { class: "role-employment-grant-selected-title" }, Z = {
480
- key: 0,
481
- class: "role-employment-grant-selected-list"
482
- }, Pe = ["disabled", "onClick"], Fe = {
483
- key: 1,
484
- class: "role-employment-grant-selected-empty"
485
- }, Ie = { class: "role-employment-grant-pagination" }, Le = /*#__PURE__*/ a(/* @__PURE__ */ A({
486
- name: "RoleEmploymentGrantDrawer",
487
- __name: "RoleEmploymentGrantDrawer",
488
- props: {
489
- open: { type: Boolean },
490
- container: {},
491
- context: {},
492
- role: {}
493
- },
494
- emits: ["close", "saved"],
495
- setup(e, { emit: t }) {
496
- let n = e, r = t, i = M([]), a = M([]), o = M({}), s = M(/* @__PURE__ */ new Set()), c = M(/* @__PURE__ */ new Set()), l = M(!1), u = M(!1), d = M(!1), p = M(!1), m = M(0), g = M(0), _ = M(""), v = C(() => n.role?.id), y = C(() => he(n.context.http)), ne = C(() => `绑定任职 - ${n.role?.title ?? n.role?.id ?? ""}`), re = C(() => [...s.value].filter((e) => !c.value.has(e))), ie = C(() => [...c.value].filter((e) => !s.value.has(e))), oe = C(() => new Map(i.value.map((e) => [e.employeePositionId, e]))), se = C(() => a.value.filter((e) => !_.value.trim() || pe(e).includes(_.value.trim()))), ce = C(() => new Set(se.value.filter((e) => s.value.has(e.id)).map((e) => e.employeeId)).size), b = C(() => [...s.value].map((e) => o.value[e] ?? _e(e)));
497
- we(() => [n.open, n.role?.id], ([e]) => {
498
- e ? x() : fe();
499
- }, { immediate: !0 });
500
- async function x(e = 0) {
501
- let t = v.value;
502
- if (t) {
503
- u.value = !0, p.value = !1;
504
- try {
505
- let [n, r] = await Promise.all([y.value.employmentRoleGrants(t), y.value.employmentSelector(t, {
506
- enabledOnly: !0,
507
- page: {
508
- pageNum: e,
509
- pageSize: 50
510
- }
511
- })]);
512
- i.value = n, c.value = new Set(n.map((e) => e.employeePositionId).filter((e) => !!e)), o.value = {
513
- ...o.value,
514
- ...ge(r.records)
515
- }, l.value ||= (s.value = new Set(c.value), !0), a.value = r.records, m.value = r.pageNum, g.value = r.total;
516
- } catch (e) {
517
- p.value = !0, h(e, {
518
- source: "role-employment-grants",
519
- phase: "load"
520
- });
521
- } finally {
522
- u.value = !1;
523
- }
524
- }
525
- }
526
- async function ue() {
527
- let e = v.value;
528
- if (e) {
529
- d.value = !0;
530
- try {
531
- for (let t of re.value) await y.value.grantEmploymentRole(e, t);
532
- for (let t of ie.value) {
533
- let n = oe.value.get(t)?.id;
534
- n && await y.value.deleteEmploymentRoleGrant(e, n);
535
- }
536
- await ae({
537
- success: !0,
538
- message: "任职角色授权已保存"
539
- }, {
540
- source: "role-employment-grants",
541
- phase: "action"
542
- }), r("saved"), r("close");
543
- } catch (e) {
544
- h(e, {
545
- source: "role-employment-grants",
546
- phase: "action"
547
- });
548
- } finally {
549
- d.value = !1;
550
- }
551
- }
552
- }
553
- function fe() {
554
- i.value = [], a.value = [], o.value = {}, s.value = /* @__PURE__ */ new Set(), c.value = /* @__PURE__ */ new Set(), l.value = !1, _.value = "", m.value = 0, g.value = 0, p.value = !1;
555
- }
556
- function pe(e) {
557
- return [
558
- e.employeeTitle,
559
- e.employeeNo,
560
- e.organizationTitle,
561
- e.departmentTitle,
562
- e.positionTitle
563
- ].filter(Boolean).join(" ");
564
- }
565
- function me(e) {
566
- let t = new Set(s.value);
567
- t.delete(e), s.value = t;
568
- }
569
- function ge(e) {
570
- let t = {};
571
- for (let n of e) n.id && (t[n.id] = n);
572
- return t;
573
- }
574
- function _e(e) {
575
- return {
576
- id: e,
577
- positionId: e
578
- };
579
- }
580
- function S(e) {
581
- let t = e.positionTitle ?? e.positionId ?? e.id;
582
- return e.employeeTitle ? `${e.employeeTitle} · ${t}` : t;
583
- }
584
- function ve(e) {
585
- return [
586
- e.employeeNo,
587
- e.organizationTitle ?? e.organizationId,
588
- e.departmentTitle ?? e.departmentId
589
- ].filter(Boolean).join(" / ") || e.id;
590
- }
591
- return (t, n) => (j(), w(F(ee), {
592
- open: e.open,
593
- title: ne.value,
594
- container: e.container,
595
- "close-title": "关闭",
596
- onClose: n[6] ||= (e) => !d.value && r("close")
597
- }, {
598
- operation: I(() => [k(F(f), {
599
- disabled: d.value,
600
- onClick: n[0] ||= (e) => r("close")
601
- }, {
602
- default: I(() => [...n[7] ||= [O("取消", -1)]]),
603
- _: 1
604
- }, 8, ["disabled"]), k(F(f), {
605
- type: "primary",
606
- loading: d.value,
607
- disabled: u.value || re.value.length === 0 && ie.value.length === 0,
608
- onClick: ue
609
- }, {
610
- default: I(() => [...n[8] ||= [O(" 确定 ", -1)]]),
611
- _: 1
612
- }, 8, ["loading", "disabled"])]),
613
- default: I(() => [u.value ? (j(), w(F(le), {
614
- key: 0,
615
- tip: "加载任职"
616
- })) : p.value ? (j(), E("div", q, [k(F(te), {
617
- title: "任职加载失败",
618
- message: "无法加载任职授权"
619
- }), k(F(f), { onClick: n[1] ||= (e) => x() }, {
620
- default: I(() => [...n[9] ||= [O("重试", -1)]]),
621
- _: 1
622
- })])) : (j(), E("section", J, [
623
- n[13] ||= D("p", null, "角色将在所选任职的机构、部门和岗位上下文中生效。展开职员后选择其具体任职。", -1),
624
- k(F(de), {
625
- value: _.value,
626
- "onUpdate:value": n[2] ||= (e) => _.value = e,
627
- "allow-clear": "",
628
- placeholder: "筛选职员、工号、机构、部门或岗位"
629
- }, null, 8, ["value"]),
630
- D("div", null, " 已选 " + P(s.value.size) + " 个任职;当前页涉及 " + P(ce.value) + " 名职员;新增 " + P(re.value.length) + " 个,移除 " + P(ie.value.length) + " 个 ", 1),
631
- D("section", Y, [D("div", X, [n[10] ||= D("strong", null, "已选任职", -1), D("span", null, P(b.value.length) + " 个", 1)]), b.value.length > 0 ? (j(), E("div", Z, [(j(!0), E(be, null, N(b.value, (e) => (j(), E("button", {
632
- key: e.id,
633
- type: "button",
634
- disabled: d.value,
635
- onClick: (t) => me(e.id)
636
- }, [D("span", null, P(S(e)), 1), D("small", null, P(ve(e)), 1)], 8, Pe))), 128))])) : (j(), E("span", Fe, "暂无已选任职"))]),
637
- k(K, {
638
- "selected-ids": s.value,
639
- "onUpdate:selectedIds": n[3] ||= (e) => s.value = e,
640
- rows: se.value,
641
- selectable: "",
642
- disabled: d.value
643
- }, null, 8, [
644
- "selected-ids",
645
- "rows",
646
- "disabled"
647
- ]),
648
- D("div", Ie, [
649
- D("span", null, "共 " + P(g.value) + " 个启用任职", 1),
650
- k(F(f), {
651
- disabled: u.value || m.value === 0,
652
- onClick: n[4] ||= (e) => x(m.value - 1)
653
- }, {
654
- default: I(() => [...n[11] ||= [O("上一页", -1)]]),
655
- _: 1
656
- }, 8, ["disabled"]),
657
- k(F(f), {
658
- disabled: u.value || (m.value + 1) * 50 >= g.value,
659
- onClick: n[5] ||= (e) => x(m.value + 1)
660
- }, {
661
- default: I(() => [...n[12] ||= [O(" 下一页 ", -1)]]),
662
- _: 1
663
- }, 8, ["disabled"])
664
- ])
665
- ]))]),
666
- _: 1
667
- }, 8, [
668
- "open",
669
- "title",
670
- "container"
671
- ]));
672
- }
673
- }), [["__scopeId", "data-v-436bc3bc"]]), Re = { class: "role-group-member-selector" }, ze = /*#__PURE__*/ a(/* @__PURE__ */ A({
674
- name: "RoleGroupMemberSelector",
675
- __name: "RoleGroupMemberSelector",
676
- props: {
677
- value: { default: void 0 },
678
- candidates: {},
679
- currentRoleId: { default: void 0 },
680
- disabled: {
681
- type: Boolean,
682
- default: !1
683
- }
684
- },
685
- emits: ["update:value"],
686
- setup(e, { emit: t }) {
687
- let r = e, i = t, a = C(() => l(r.value)), o = C(() => new Set(r.candidates.filter((e) => e.roleKind === "dataGrant" && e.id && a.value.includes(e.id)).map((e) => e.id))), s = C(() => r.candidates.filter((e) => e.id && e.id !== r.currentRoleId).map((e) => ({
688
- label: `${u(e)} / ${d(e.roleKind)}`,
689
- value: e.id,
690
- disabled: e.roleKind === "dataGrant" && o.value.size > 0 && !a.value.includes(e.id)
691
- })));
692
- function c(e) {
693
- if (!Array.isArray(e)) {
694
- i("update:value", void 0);
695
- return;
696
- }
697
- let t = e.map((e) => String(e).trim()).filter(Boolean);
698
- i("update:value", t.length > 0 ? t.join(",") : void 0);
699
- }
700
- function l(e) {
701
- return Array.isArray(e) ? e.map((e) => String(e).trim()).filter(Boolean) : typeof e == "string" ? e.split(",").map((e) => e.trim()).filter(Boolean) : [];
702
- }
703
- function u(e) {
704
- return String(e?.title ?? e?.id ?? "角色");
705
- }
706
- function d(e) {
707
- return e === "dataGrant" ? "数据授权角色" : "标准角色";
708
- }
709
- return (t, r) => (j(), E("label", Re, [r[0] ||= D("span", { class: "role-group-member-selector-label" }, "成员角色", -1), k(F(n), {
710
- mode: "multiple",
711
- value: a.value,
712
- options: s.value,
713
- placeholder: "请选择成员角色",
714
- disabled: e.disabled,
715
- "allow-clear": !0,
716
- "onUpdate:value": c
717
- }, null, 8, [
718
- "value",
719
- "options",
720
- "disabled"
721
- ])]));
722
- }
723
- }), [["__scopeId", "data-v-91d9ae10"]]), Be = {
724
- key: 1,
725
- class: "role-detail-state"
726
- }, Ve = {
727
- key: 1,
728
- class: "role-detail-state"
729
- }, He = /*@__PURE__*/ A({
730
- name: "RoleManagementView",
731
- __name: "RoleManagementView",
732
- props: {
733
- recordId: {},
734
- scopeKind: {},
735
- scopeId: {}
736
- },
737
- setup(n) {
738
- let a = n, u = pe(), ae = l({ moduleAlias: "iam.tenant" }), se = l({ moduleAlias: "iam.organization" }), b = l({ moduleAlias: "iam.role" }), ue = me(), he = M(""), S = M(null), ve = M(""), ye = M(0), A = M(0), N = M(0), P = M(), L = M(), R = M(), z = M(), B = M(!1), V = M("view"), H = M(!1), U = M(!1), W = M(!1), G = M(), Ee = M(!1), De = M(!1), Oe = M(), ke = M(!1), K = M(0), q = M(Kt(void 0)), J = M(d(void 0)), Y = M([]), X = C(() => !!(a.recordId && a.scopeKind)), Z = C(() => X.value && u?.presentation === "drawer"), Pe = C(() => !X.value || Z.value), Fe = C(() => ae), Ie = C(() => P.value?.id), Re = C(() => ue?.value?.system === !0), He = C(() => ue?.value?.system === !0), Q = C(() => {
739
- let e = ue?.value?.tenantId;
740
- if (!(ue?.value?.system === !0 || !e)) return {
741
- id: e,
742
- title: e,
743
- alias: e,
744
- enabled: !0
745
- };
746
- }), Ue = C(() => m(se, {
747
- scopeFieldName: "tenantId",
748
- scopeValue: Ie.value,
749
- treePath: "/iam.organization/tree"
750
- })), We = C(() => L.value?.kind !== "platform"), Ge = C(() => dt(b, L.value)), Ke = C(() => [
751
- {
752
- key: "title",
753
- title: "角色名称",
754
- width: "22%"
755
- },
756
- {
757
- key: "assignmentType",
758
- title: "授权层级",
759
- width: "13%",
760
- render: (e) => dn(e, "assignmentType", sn(e.assignmentType))
761
- },
762
- {
763
- key: "roleKind",
764
- title: "角色类型",
765
- width: "13%",
766
- render: (e) => dn(e, "roleKind", cn(e.roleKind))
767
- },
768
- {
769
- key: "sharePolicy",
770
- title: "公开策略",
771
- width: "15%",
772
- render: (e) => dn(e, "sharePolicy", ln(e.sharePolicy))
773
- },
774
- {
775
- key: "systemManaged",
776
- title: "系统托管",
777
- width: "12%",
778
- render: (e) => un(e.systemManaged)
779
- },
780
- {
781
- key: "enabled",
782
- title: "状态",
783
- type: "enabledStatus",
784
- width: "10%"
785
- }
786
- ]), qe = C(() => !!L.value), Je = C(() => V.value === "create" ? "新建角色" : vn(z.value ?? q.value)), Ye = C(() => L.value?.title ?? "角色详情"), Xe = C(() => W.value || H.value), Ze = C(() => H.value || !L.value ? !1 : V.value === "create" ? b.can("create") === !0 : !!z.value?.id && b.can("update") === !0 && !z.value?.systemManaged), Qe = C(() => {
787
- let e = z.value;
788
- return !!(e?.id && e.systemManaged !== !0 && b.can(gn(e)) === !0);
789
- }), $e = C(() => V.value === "view" ? z.value?.id ? [
790
- {
791
- key: "edit",
792
- actionCode: "update",
793
- title: "编辑",
794
- iconName: "edit",
795
- disabled: W.value || z.value.systemManaged === !0
796
- },
797
- {
798
- key: "bind",
799
- actionCode: mn(z.value),
800
- title: hn(z.value),
801
- iconName: "lock",
802
- visible: fn(z.value),
803
- disabled: W.value || z.value.systemManaged === !0
804
- },
805
- {
806
- key: "delete",
807
- actionCode: "delete",
808
- title: "删除",
809
- iconName: "delete",
810
- danger: !0,
811
- disabled: W.value || z.value.systemManaged === !0
812
- }
813
- ] : [] : [{
814
- key: "cancel",
815
- title: "取消",
816
- iconName: "close",
817
- disabled: W.value
818
- }, {
819
- key: "save",
820
- actionCode: V.value === "create" ? "create" : "update",
821
- title: "保存",
822
- iconName: "save",
823
- primary: !0,
824
- loading: W.value,
825
- disabled: !Ze.value
826
- }]), et = C(() => $e.value), tt = C(() => $e.value), nt = _e({
827
- view: fe,
828
- input: C(() => {
829
- let e = z.value?.id, t = L.value, n = V.value;
830
- if (!(!e || !t || n !== "view" && n !== "edit")) return {
831
- recordId: e,
832
- scopeKind: t.kind,
833
- ...t.kind === "platform" ? {} : { scopeId: t.id }
834
- };
835
- }),
836
- title: C(() => vn(z.value)),
837
- eligibility: C(() => ({
838
- hasStableIdentity: !!(z.value?.id && L.value) && !H.value,
839
- busy: W.value
840
- })),
841
- beforePromote: async (e) => {
842
- let t = z.value, n = L.value;
843
- if (!(!t || !n)) return await je(e, {
844
- selectedRole: t,
845
- draft: q.value,
846
- scope: n,
847
- mode: V.value === "edit" ? "edit" : "view"
848
- }) === "accepted";
849
- },
850
- onPromoted: Mt
851
- }), rt = C(() => ({
852
- title: {
853
- label: "角色名称",
854
- required: !0,
855
- visible: !0,
856
- placeholder: "请输入角色名称"
857
- },
858
- assignmentType: {
859
- label: "授权层级",
860
- required: !0,
861
- visible: !0,
862
- controlType: "select",
863
- options: en(q.value.roleKind)
864
- },
865
- roleKind: {
866
- label: "角色类型",
867
- required: !0,
868
- visible: !0,
869
- controlType: "select",
870
- options: tn(q.value.assignmentType)
871
- },
872
- memberRoleIds: {
873
- label: "成员角色",
874
- visible: q.value.roleKind === "group"
875
- },
876
- ownerScopeType: {
877
- label: "归属范围",
878
- required: !0,
879
- visible: !0,
880
- readOnly: !0,
881
- controlType: "select",
882
- options: [
883
- {
884
- label: "平台",
885
- value: "platform"
886
- },
887
- {
888
- label: "租户",
889
- value: "tenant"
890
- },
891
- {
892
- label: "机构",
893
- value: "organization"
894
- }
895
- ]
896
- },
897
- ownerScopeId: {
898
- label: "归属对象",
899
- visible: !0,
900
- readOnly: !0
901
- },
902
- sharePolicy: {
903
- label: "公开策略",
904
- required: !0,
905
- visible: !0,
906
- controlType: "select",
907
- options: on(L.value?.kind ?? q.value.ownerScopeType)
908
- },
909
- description: {
910
- label: "说明",
911
- visible: !0,
912
- placeholder: "请输入角色说明"
913
- },
914
- enabled: {
915
- label: "启用状态",
916
- visible: !0,
917
- controlType: "enabledStatus"
918
- },
919
- sortOrder: {
920
- label: "排序号",
921
- visible: !0,
922
- placeholder: "请输入排序号"
923
- }
924
- })), it = [
925
- "title",
926
- "assignmentType",
927
- "roleKind"
928
- ], at = [
929
- "ownerScopeType",
930
- "ownerScopeId",
931
- "sharePolicy",
932
- "description",
933
- "enabled",
934
- "sortOrder"
935
- ], ot = C(() => {
936
- let e = [
937
- "title",
938
- "assignmentType",
939
- "roleKind"
940
- ];
941
- return q.value.roleKind === "group" && e.push("memberRoleIds"), e.push("ownerScopeType", "ownerScopeId", "sharePolicy", "description", "enabled", "sortOrder"), e;
942
- }), st;
943
- Ce(() => {
944
- if (lt(), !X.value || !a.recordId || !a.scopeKind) return;
945
- let e = Ht();
946
- e && !Z.value && (st = Me(e, ct)), Vt();
947
- }), Se(() => st?.());
948
- function ct(e) {
949
- return V.value === "edit" ? !1 : (Gt(e), !0);
950
- }
951
- we(z, (e) => {
952
- !X.value || !e || u?.setTitle(vn(e));
953
- }, { immediate: !0 }), we(Q, gt, { immediate: !0 }), we(L, () => {
954
- X.value || (R.value = void 0, z.value = void 0, q.value = Kt(L.value), Mt(), N.value += 1, ut());
955
- });
956
- async function lt() {
957
- try {
958
- J.value = d((await b.runtime.ready).uiDescriptor);
959
- } catch (e) {
960
- h(e, {
961
- source: "role-management",
962
- phase: "load"
963
- });
964
- }
965
- }
966
- async function ut(e = L.value) {
967
- if (!e) {
968
- Y.value = [];
969
- return;
970
- }
971
- try {
972
- Y.value = (await b.crud.query(ft({
973
- page: {
974
- pageNum: 0,
975
- pageSize: 500
976
- },
977
- conditions: [
978
- {
979
- fieldName: "assignmentType",
980
- operator: "EQ",
981
- values: ["employment"]
982
- },
983
- {
984
- fieldName: "roleKind",
985
- operator: "IN",
986
- values: ["standard", "dataGrant"]
987
- },
988
- {
989
- fieldName: "enabled",
990
- operator: "EQ",
991
- values: [!0]
992
- }
993
- ],
994
- sorts: [{ field: "sortOrder" }, { field: "title" }]
995
- }, e))).records;
996
- } catch (e) {
997
- Y.value = [], h(e, {
998
- source: "role-management",
999
- phase: "load"
1000
- });
1001
- }
1002
- }
1003
- function dt(e, t) {
1004
- return {
1005
- ...e,
1006
- crud: {
1007
- ...e.crud,
1008
- query: (n) => t ? e.crud.query(ft(n, t)) : e.crud.query(n)
1009
- }
1010
- };
1011
- }
1012
- function ft(e, t) {
1013
- let n = [...e?.conditions ?? [], {
1014
- fieldName: "ownerScopeType",
1015
- operator: "EQ",
1016
- values: [t.kind]
1017
- }];
1018
- return t.kind !== "platform" && t.id && n.push({
1019
- fieldName: "ownerScopeId",
1020
- operator: "EQ",
1021
- values: [t.id]
1022
- }), {
1023
- ...e,
1024
- conditions: n
1025
- };
1026
- }
1027
- function pt(e) {
1028
- return e === "ownerScopeType" || e === "ownerScopeId" || V.value === "edit" && ["assignmentType", "roleKind"].includes(e) ? !0 : z.value?.systemManaged === !0;
1029
- }
1030
- function mt(e, t) {
1031
- let n = {
1032
- ...q.value,
1033
- [e]: t
1034
- };
1035
- e === "roleKind" && (t === "group" || t === "dataGrant") && (n.assignmentType = "employment"), e === "roleKind" && t !== "group" && (n.memberRoleIds = void 0), e === "assignmentType" && t === "account" && $t(n.roleKind) && (n.roleKind = "standard", n.memberRoleIds = void 0), q.value = n;
1036
- }
1037
- function ht(e) {
1038
- if (He.value) {
1039
- if (!L.value && Re.value) {
1040
- _t();
1041
- return;
1042
- }
1043
- !P.value && e.length > 0 && vt(e[0]);
1044
- }
1045
- }
1046
- function gt(e = Q.value) {
1047
- !e || He.value || P.value || L.value || (P.value = e, yt(e), A.value += 1);
1048
- }
1049
- function _t() {
1050
- !$() || !Re.value || (P.value = void 0, L.value = {
1051
- kind: "platform",
1052
- key: "platform",
1053
- title: "平台角色"
1054
- });
1055
- }
1056
- function vt(e) {
1057
- $() && (P.value = e, yt(e), A.value += 1);
1058
- }
1059
- function yt(e = P.value) {
1060
- !e?.id || !$() || (L.value = {
1061
- kind: "tenant",
1062
- id: e.id,
1063
- key: `tenant:${e.id}`,
1064
- title: `${yn(e)} / 租户本级`,
1065
- tenant: e
1066
- });
1067
- }
1068
- function bt(e) {
1069
- !e.id || !$() || (L.value = {
1070
- kind: "organization",
1071
- id: e.id,
1072
- key: `organization:${e.id}`,
1073
- title: bn(e),
1074
- tenant: P.value,
1075
- organization: e
1076
- });
1077
- }
1078
- function xt(e) {
1079
- e.key === "create" && At();
1080
- }
1081
- function St(e) {
1082
- return [
1083
- {
1084
- key: "bind",
1085
- actionCode: mn(e),
1086
- title: "绑定",
1087
- after: "edit",
1088
- pinned: !0,
1089
- visible: fn(e)
1090
- },
1091
- {
1092
- key: "authorize",
1093
- actionCode: "rolePermissions",
1094
- title: "授权",
1095
- after: "bind",
1096
- pinned: !0,
1097
- visible: pn(e)
1098
- },
1099
- {
1100
- key: "toggle",
1101
- actionCode: gn(e),
1102
- title: _n(e),
1103
- iconName: "power",
1104
- before: "delete"
1105
- }
1106
- ];
1107
- }
1108
- function Ct(e, t) {
1109
- if (e.systemManaged !== !0) return;
1110
- let n = t.key ?? t.actionCode;
1111
- return n === "edit" || n === "update" || n === "bind" || n === "authorize" || n === "toggle" || n === "delete" ? { disabled: !0 } : void 0;
1112
- }
1113
- function wt(e, t) {
1114
- if ($()) {
1115
- if (e.key === "view") {
1116
- jt(t, "view");
1117
- return;
1118
- }
1119
- if (e.key === "edit") {
1120
- jt(t, "edit");
1121
- return;
1122
- }
1123
- if (e.key === "bind") {
1124
- Ot(t, t.assignmentType === "employment");
1125
- return;
1126
- }
1127
- if (e.key === "authorize") {
1128
- Tt(t);
1129
- return;
1130
- }
1131
- if (e.key === "toggle") {
1132
- Rt(t);
1133
- return;
1134
- }
1135
- e.key === "delete" && Lt(t);
1136
- }
1137
- }
1138
- function Tt(e) {
1139
- !String(e.id ?? "") || e.roleKind === "group" || (Oe.value = qt(e), ke.value = !0);
1140
- }
1141
- function Et() {
1142
- ke.value = !1, Oe.value = void 0;
1143
- }
1144
- function Dt(e) {
1145
- $() && jt(e, "view");
1146
- }
1147
- async function Ot(e, t = !1) {
1148
- if (!$()) return;
1149
- let n = String(e.id ?? "");
1150
- if (n) {
1151
- Ee.value = !t, De.value = t, G.value = qt(e);
1152
- try {
1153
- G.value = await b.crud.view(n);
1154
- } catch (e) {
1155
- Ee.value = !1, De.value = !1, G.value = void 0, h(e, {
1156
- source: "role-management",
1157
- phase: "load"
1158
- });
1159
- }
1160
- }
1161
- }
1162
- function kt() {
1163
- W.value || (Ee.value = !1, De.value = !1, G.value = void 0);
1164
- }
1165
- function At() {
1166
- if ($()) {
1167
- if (!L.value) {
1168
- ne("请先选择角色归属范围", { phase: "validation" });
1169
- return;
1170
- }
1171
- z.value = void 0, R.value = void 0, q.value = Kt(L.value), V.value = "create", H.value = !1, U.value = !1, K.value += 1, B.value = !0;
1172
- }
1173
- }
1174
- async function jt(e, t) {
1175
- if (!$()) return;
1176
- let n = String(e.id ?? "");
1177
- if (!n) return;
1178
- R.value = n, B.value = !0, V.value = t, z.value = void 0, q.value = qt(e), H.value = !0, U.value = !1;
1179
- let r = K.value + 1;
1180
- K.value = r;
1181
- try {
1182
- let e = await b.crud.view(n);
1183
- if (!zt(n, r)) return;
1184
- if (!Wt(e)) {
1185
- U.value = !0, ne("角色不属于当前归属范围", {
1186
- source: "role-management",
1187
- phase: "load"
1188
- });
1189
- return;
1190
- }
1191
- Bt(e, t);
1192
- } catch (e) {
1193
- zt(n, r) && (U.value = !0, h(e, {
1194
- source: "role-management",
1195
- phase: "load"
1196
- }));
1197
- } finally {
1198
- zt(n, r) && (H.value = !1);
1199
- }
1200
- }
1201
- function Mt() {
1202
- W.value || (K.value += 1, H.value = !1, U.value = !1, B.value = !1, V.value = "view", q.value = z.value ? qt(z.value) : Kt(L.value), Z.value && u?.dismiss());
1203
- }
1204
- function Nt() {
1205
- if (!W.value) {
1206
- if (!z.value?.id || V.value === "create") {
1207
- Mt();
1208
- return;
1209
- }
1210
- q.value = qt(z.value), V.value = "view", H.value = !1, U.value = !1;
1211
- }
1212
- }
1213
- function Pt(e) {
1214
- if (e.key === "cancel") {
1215
- Nt();
1216
- return;
1217
- }
1218
- if (e.key === "save") {
1219
- It();
1220
- return;
1221
- }
1222
- if ($()) {
1223
- if (e.key === "edit" && z.value && !z.value.systemManaged) {
1224
- q.value = qt(z.value), V.value = "edit";
1225
- return;
1226
- }
1227
- if (e.key === "bind" && z.value) {
1228
- Ot(z.value, z.value.assignmentType === "employment");
1229
- return;
1230
- }
1231
- e.key === "delete" && Lt(z.value);
1232
- }
1233
- }
1234
- function Ft() {
1235
- let e = String(q.value.id ?? R.value ?? "");
1236
- if (!e) return;
1237
- let t = V.value === "create" ? "view" : V.value;
1238
- jt({
1239
- ...q.value,
1240
- id: e
1241
- }, t);
1242
- }
1243
- async function It() {
1244
- await ie({
1245
- loading: W,
1246
- mode: V.value === "edit" ? "edit" : "create",
1247
- source: "role-management",
1248
- validateContext: () => L.value ? void 0 : "请先选择角色归属范围",
1249
- canSave: () => Ze.value,
1250
- deniedMessage: "当前用户无权保存角色",
1251
- createRecord: () => Jt(q.value, L.value),
1252
- validateRecord: Xt,
1253
- save: (e, t) => t === "edit" && z.value?.id ? b.crud.update(z.value.id, e) : b.crud.insert(e),
1254
- onSaved: ({ record: e }) => {
1255
- Bt(e), N.value += 1, ut();
1256
- }
1257
- });
1258
- }
1259
- async function Lt(e) {
1260
- await v({
1261
- loading: W,
1262
- source: "role-management",
1263
- record: () => e?.id ? e : void 0,
1264
- canExecute: (e) => b.can("delete") === !0 && e.systemManaged !== !0,
1265
- deniedMessage: "当前用户无权删除角色",
1266
- confirm: (e) => ce({
1267
- title: "删除角色",
1268
- content: `确认删除角色「${vn(e)}」?`,
1269
- okText: "删除",
1270
- danger: !0
1271
- }),
1272
- execute: (e) => b.crud.delete(String(e.id), { version: e.version }),
1273
- onExecuted: (e, t) => {
1274
- R.value === String(t.id) && (R.value = void 0, z.value = void 0, q.value = Kt(L.value), B.value = !1, V.value = "view", H.value = !1, U.value = !1, K.value += 1), N.value += 1, ut();
1275
- }
1276
- });
1277
- }
1278
- async function Rt(e) {
1279
- await v({
1280
- loading: W,
1281
- source: "role-management",
1282
- record: () => e?.id ? e : void 0,
1283
- canExecute: (e) => b.can(gn(e)) === !0 && e.systemManaged !== !0,
1284
- deniedMessage: "当前用户无权变更角色启停状态",
1285
- execute: (e) => e.enabled === !1 ? b.crud.enable(String(e.id), { version: e.version }) : b.crud.disable(String(e.id), { version: e.version }),
1286
- onExecuted: async (e, t) => {
1287
- R.value === String(t.id) && Bt(await b.crud.view(String(t.id))), N.value += 1, ut();
1288
- }
1289
- });
1290
- }
1291
- function $() {
1292
- return !W.value;
1293
- }
1294
- function zt(e, t) {
1295
- return K.value === t && R.value === e;
1296
- }
1297
- function Bt(e, t = "view") {
1298
- z.value = e, R.value = e.id, q.value = qt(e), V.value = t === "edit" && e.systemManaged !== !0 ? "edit" : "view", B.value = !0, H.value = !1, U.value = !1, K.value += 1;
1299
- }
1300
- async function Vt() {
1301
- let e = Ht();
1302
- if (!e) return;
1303
- L.value = Ut(e);
1304
- let t = Ne(e);
1305
- if (t) {
1306
- Gt(t);
1307
- return;
1308
- }
1309
- await jt({ id: e.recordId }, "view");
1310
- }
1311
- function Ht() {
1312
- let e = a.recordId, t = a.scopeKind;
1313
- if (!(!e || !t || t !== "platform" && !a.scopeId)) return {
1314
- recordId: e,
1315
- scopeKind: t,
1316
- ...t === "platform" ? {} : { scopeId: a.scopeId }
1317
- };
1318
- }
1319
- function Ut(e) {
1320
- if (e.scopeKind === "platform") return {
1321
- kind: "platform",
1322
- key: "platform",
1323
- title: "平台角色"
1324
- };
1325
- let t = e.scopeId, n = e.scopeKind === "organization" ? `机构:${t}` : `租户:${t}`;
1326
- return {
1327
- kind: e.scopeKind,
1328
- id: t,
1329
- key: `${e.scopeKind}:${t}`,
1330
- title: n,
1331
- ...e.scopeKind === "tenant" ? { tenant: {
1332
- id: t,
1333
- title: t,
1334
- alias: t
1335
- } } : {}
1336
- };
1337
- }
1338
- function Wt(e) {
1339
- let t = L.value;
1340
- return !t || e.ownerScopeType !== t.kind ? !1 : t.kind === "platform" || e.ownerScopeId === t.id;
1341
- }
1342
- function Gt(e) {
1343
- L.value = e.scope, z.value = e.selectedRole, R.value = e.selectedRole.id, q.value = e.draft, V.value = e.mode, B.value = !0, H.value = !1, U.value = !1, K.value += 1;
1344
- }
1345
- function Kt(e) {
1346
- return {
1347
- tenantId: Yt(e),
1348
- ownerScopeType: e?.kind,
1349
- ownerScopeId: e?.kind === "platform" ? void 0 : e?.id,
1350
- assignmentType: "employment",
1351
- roleKind: "standard",
1352
- sharePolicy: rn(),
1353
- enabled: !0,
1354
- sortOrder: 100
1355
- };
1356
- }
1357
- function qt(e) {
1358
- return { ...e };
1359
- }
1360
- function Jt(e, t) {
1361
- let n = Qt(e.roleKind), r = nn(e.sharePolicy, t.kind), i = y(e, {
1362
- title: e.title?.trim(),
1363
- assignmentType: Zt(e.assignmentType, n),
1364
- roleKind: n,
1365
- memberRoleIds: e.memberRoleIds?.trim() || void 0,
1366
- tenantId: Yt(t),
1367
- ownerScopeType: t.kind,
1368
- ownerScopeId: t.kind === "platform" ? void 0 : t.id,
1369
- ownerScopeKey: void 0,
1370
- sharePolicy: r,
1371
- description: e.description?.trim() || void 0,
1372
- enabled: e.enabled !== !1,
1373
- sortOrder: an(e.sortOrder)
1374
- });
1375
- return n !== "group" && (i.memberRoleIds = void 0), i;
1376
- }
1377
- function Yt(e) {
1378
- return e?.kind === "platform" ? void 0 : e?.tenant?.id ?? e?.id;
1379
- }
1380
- function Xt(e) {
1381
- for (let n of [
1382
- "title",
1383
- "assignmentType",
1384
- "roleKind",
1385
- "ownerScopeType",
1386
- "sharePolicy"
1387
- ]) {
1388
- let r = t(n, {
1389
- fields: J.value,
1390
- fallback: rt.value
1391
- });
1392
- if (r.visible && r.required && !e[n]) return `请填写${r.label}`;
1393
- }
1394
- if (e.ownerScopeType !== "platform" && !e.ownerScopeId) return "请选择归属对象";
1395
- if (!on(e.ownerScopeType).some((t) => t.value === e.sharePolicy)) return "请选择当前归属范围可用的公开策略";
1396
- }
1397
- function Zt(e, t) {
1398
- return t === "group" || t === "dataGrant" ? "employment" : e === "account" ? "account" : "employment";
1399
- }
1400
- function Qt(e) {
1401
- return e === "group" || e === "dataGrant" || e === "system" ? e : "standard";
1402
- }
1403
- function $t(e) {
1404
- return e === "group" || e === "dataGrant";
1405
- }
1406
- function en(e) {
1407
- return $t(e) ? [{
1408
- label: "任职角色",
1409
- value: "employment"
1410
- }] : [{
1411
- label: "账号角色",
1412
- value: "account"
1413
- }, {
1414
- label: "任职角色",
1415
- value: "employment"
1416
- }];
1417
- }
1418
- function tn(e) {
1419
- let t = [{
1420
- label: "标准角色",
1421
- value: "standard"
1422
- }, {
1423
- label: "系统角色",
1424
- value: "system"
1425
- }];
1426
- return e === "account" ? t : [
1427
- t[0],
1428
- {
1429
- label: "角色组",
1430
- value: "group"
1431
- },
1432
- {
1433
- label: "数据授权角色",
1434
- value: "dataGrant"
1435
- },
1436
- t[1]
1437
- ];
1438
- }
1439
- function nn(e, t) {
1440
- return on(t).map((e) => e.value).includes(e ?? "") ? e : rn();
1441
- }
1442
- function rn() {
1443
- return "private";
1444
- }
1445
- function an(e) {
1446
- if (typeof e == "number") return Number.isFinite(e) ? e : 100;
1447
- let t = Number(String(e ?? "").trim());
1448
- return Number.isFinite(t) ? t : 100;
1449
- }
1450
- function on(e) {
1451
- return e === "platform" ? [{
1452
- label: "私有",
1453
- value: "private"
1454
- }, {
1455
- label: "全局公开",
1456
- value: "platform"
1457
- }] : e === "organization" ? [{
1458
- label: "私有",
1459
- value: "private"
1460
- }, {
1461
- label: "本级及下级",
1462
- value: "ownerAndChildren"
1463
- }] : [{
1464
- label: "私有",
1465
- value: "private"
1466
- }, {
1467
- label: "租户公开",
1468
- value: "tenant"
1469
- }];
1470
- }
1471
- function sn(e) {
1472
- return e === "account" ? "账号角色" : "任职角色";
1473
- }
1474
- function cn(e) {
1475
- return {
1476
- standard: "标准角色",
1477
- group: "角色组",
1478
- dataGrant: "数据授权角色",
1479
- system: "系统角色"
1480
- }[e ?? "standard"];
1481
- }
1482
- function ln(e) {
1483
- return {
1484
- private: "私有",
1485
- ownerAndChildren: "本级及下级",
1486
- tenant: "租户公开",
1487
- platform: "全局公开"
1488
- }[e ?? "private"];
1489
- }
1490
- function un(e) {
1491
- return e === !0 ? "是" : "否";
1492
- }
1493
- function dn(e, t, n) {
1494
- let r = e[`${t}Title`];
1495
- return typeof r == "string" && r.trim() ? r : n;
1496
- }
1497
- function fn(e) {
1498
- return !!e?.id && (e?.assignmentType === "account" || e?.assignmentType === "employment");
1499
- }
1500
- function pn(e) {
1501
- return !!e?.id && e?.roleKind !== "group";
1502
- }
1503
- function mn(e) {
1504
- return e?.assignmentType === "employment" ? "employmentRoleGrants" : "accountRoleGrants";
1505
- }
1506
- function hn(e) {
1507
- return e?.assignmentType === "employment" ? "绑定任职" : "绑定用户";
1508
- }
1509
- function gn(e) {
1510
- return e?.enabled === !1 ? "enable" : "disable";
1511
- }
1512
- function _n(e) {
1513
- return e?.enabled === !1 ? "启用" : "停用";
1514
- }
1515
- function vn(e) {
1516
- return String(e?.title ?? e?.id ?? "角色");
1517
- }
1518
- function yn(e) {
1519
- return String(e?.title ?? e?.alias ?? e?.id ?? "未命名租户");
1520
- }
1521
- function bn(e) {
1522
- return String(e?.title ?? e?.code ?? e?.id ?? "未命名机构");
1523
- }
1524
- function xn(e, t) {
1525
- if (e === "ownerScopeType") return Cn(q.value.ownerScopeType);
1526
- if (e === "ownerScopeId") return L.value?.title ?? String(t ?? "");
1527
- if (e === "memberRoleIds") return Sn(t);
1528
- }
1529
- function Sn(e) {
1530
- let t = En(e);
1531
- return t.length === 0 ? "-" : t.map((e) => {
1532
- let t = Y.value.find((t) => t.id === e);
1533
- return t ? vn(t) : e;
1534
- }).join(",");
1535
- }
1536
- function Cn(e) {
1537
- return e === "platform" ? "平台" : e === "organization" ? "机构" : "租户";
1538
- }
1539
- function wn(e) {
1540
- return {
1541
- title: yn(e),
1542
- secondary: e.alias ?? e.id,
1543
- muted: e.enabled === !1
1544
- };
1545
- }
1546
- function Tn(e) {
1547
- return {
1548
- title: e.title ?? e.code ?? e.id ?? "未命名机构",
1549
- secondary: e.code ?? e.id,
1550
- muted: e.enabled === !1
1551
- };
1552
- }
1553
- function En(e) {
1554
- return Array.isArray(e) ? e.map((e) => String(e).trim()).filter(Boolean) : typeof e == "string" ? e.split(",").map((e) => e.trim()).filter(Boolean) : [];
1555
- }
1556
- return (t, n) => (j(), E("section", {
1557
- ref_key: "pageRoot",
1558
- ref: S,
1559
- class: xe(["role-management-page", {
1560
- "role-management-page-platform": !We.value,
1561
- "role-management-page--task": X.value && !Z.value
1562
- }])
1563
- }, [
1564
- !X.value || Z.value ? (j(), w(F(x), {
1565
- key: 0,
1566
- class: "role-scope-panel",
1567
- title: "租户",
1568
- "refresh-title": "刷新租户列表",
1569
- "search-keyword": he.value,
1570
- "search-placeholder": "搜索租户名称、alias 或 ID",
1571
- searchable: He.value,
1572
- onRefresh: n[2] ||= (e) => He.value ? ye.value += 1 : gt(),
1573
- "onUpdate:searchKeyword": n[3] ||= (e) => he.value = e
1574
- }, {
1575
- default: I(() => [Re.value ? (j(), E("button", {
1576
- key: 0,
1577
- class: "role-platform-scope",
1578
- type: "button",
1579
- onClick: _t
1580
- }, [k(F(s), {
1581
- title: "平台角色",
1582
- secondary: "全局范围",
1583
- clickable: "",
1584
- selected: L.value?.kind === "platform"
1585
- }, null, 8, ["selected"])])) : T("v-if", !0), !He.value && Q.value ? (j(), E("button", {
1586
- key: 1,
1587
- class: "role-tenant-root-scope",
1588
- type: "button",
1589
- onClick: n[0] ||= (e) => vt(Q.value)
1590
- }, [k(F(s), {
1591
- title: yn(Q.value),
1592
- secondary: "当前租户",
1593
- clickable: "",
1594
- selected: P.value?.id === Q.value.id
1595
- }, null, 8, ["title", "selected"])])) : (j(), w(F(re), {
1596
- key: 2,
1597
- context: Fe.value,
1598
- "selected-id": P.value?.id,
1599
- "reload-key": ye.value,
1600
- keyword: he.value,
1601
- "empty-description": "暂无租户",
1602
- "loading-tip": "加载租户列表",
1603
- "fallback-title": "未命名租户",
1604
- "item-of": wn,
1605
- onLoaded: ht,
1606
- onSelect: n[1] ||= (e) => vt(e)
1607
- }, null, 8, [
1608
- "context",
1609
- "selected-id",
1610
- "reload-key",
1611
- "keyword"
1612
- ]))]),
1613
- _: 1
1614
- }, 8, ["search-keyword", "searchable"])) : T("v-if", !0),
1615
- (!X.value || Z.value) && We.value ? (j(), w(F(x), {
1616
- key: 1,
1617
- class: "role-scope-panel",
1618
- title: "归属范围",
1619
- "refresh-title": "刷新机构树",
1620
- "search-keyword": ve.value,
1621
- "search-placeholder": "搜索机构名称、编码或 ID",
1622
- searchable: !!P.value,
1623
- onRefresh: n[6] ||= (e) => A.value += 1,
1624
- "onUpdate:searchKeyword": n[7] ||= (e) => ve.value = e
1625
- }, {
1626
- default: I(() => [L.value?.kind === "platform" ? (j(), w(F(r), {
1627
- key: 0,
1628
- description: "平台角色不需要选择租户内范围"
1629
- })) : P.value ? (j(), E(be, { key: 2 }, [D("button", {
1630
- class: "role-tenant-root-scope",
1631
- type: "button",
1632
- onClick: n[4] ||= (e) => yt()
1633
- }, [k(F(s), {
1634
- title: yn(P.value),
1635
- secondary: "租户本级角色",
1636
- clickable: "",
1637
- selected: L.value?.kind === "tenant" && L.value.id === P.value.id
1638
- }, null, 8, ["title", "selected"])]), k(F(oe), {
1639
- context: Ue.value,
1640
- "selected-id": L.value?.kind === "organization" ? L.value.id : void 0,
1641
- "reload-key": A.value,
1642
- keyword: ve.value,
1643
- "search-mode": "none",
1644
- "search-trigger": "external",
1645
- "empty-description": "当前租户暂无机构",
1646
- "loading-tip": "加载机构树",
1647
- "fallback-title": "未命名机构",
1648
- "item-of": Tn,
1649
- onSelect: n[5] ||= (e) => bt(e)
1650
- }, null, 8, [
1651
- "context",
1652
- "selected-id",
1653
- "reload-key",
1654
- "keyword"
1655
- ])], 64)) : (j(), w(F(r), {
1656
- key: 1,
1657
- description: "请选择左侧租户"
1658
- }))]),
1659
- _: 1
1660
- }, 8, ["search-keyword", "searchable"])) : T("v-if", !0),
1661
- !X.value || Z.value ? (j(), w(F(e), {
1662
- key: 2,
1663
- class: "role-list-panel",
1664
- context: Ge.value,
1665
- title: L.value ? `角色列表 - ${L.value.title}` : "角色列表",
1666
- columns: Ke.value,
1667
- "standard-crud-actions": "",
1668
- "standard-crud-row-actions": "",
1669
- "extra-row-actions-of": St,
1670
- "row-action-state-of": Ct,
1671
- "selected-key": R.value,
1672
- "reload-key": N.value,
1673
- ready: qe.value,
1674
- "quick-search-placeholder": "搜索角色名称或说明",
1675
- "empty-description": "当前范围暂无角色",
1676
- "waiting-description": "请选择角色归属范围",
1677
- onAction: xt,
1678
- onRowAction: wt,
1679
- onRowDblclick: Dt,
1680
- onSelect: n[8] ||= (e) => R.value = String(e.id ?? "")
1681
- }, null, 8, [
1682
- "context",
1683
- "title",
1684
- "columns",
1685
- "selected-key",
1686
- "reload-key",
1687
- "ready"
1688
- ])) : T("v-if", !0),
1689
- Pe.value ? (j(), w(F(ee), {
1690
- key: 3,
1691
- open: B.value,
1692
- title: Je.value,
1693
- container: S.value,
1694
- subtitle: Ye.value,
1695
- "close-on-outside": V.value === "view",
1696
- promotion: F(nt),
1697
- onClose: Mt
1698
- }, {
1699
- status: I(() => [V.value === "view" && z.value ? (j(), w(F(p), {
1700
- key: 0,
1701
- enabled: z.value.enabled !== !1,
1702
- disabled: W.value || !Qe.value,
1703
- loading: W.value,
1704
- "show-label": !1,
1705
- onChange: n[9] ||= (e) => Rt(z.value)
1706
- }, null, 8, [
1707
- "enabled",
1708
- "disabled",
1709
- "loading"
1710
- ])) : T("v-if", !0)]),
1711
- operation: I(() => [k(F(i), {
1712
- context: Ge.value,
1713
- actions: et.value,
1714
- onAction: Pt
1715
- }, null, 8, ["context", "actions"])]),
1716
- default: I(() => [H.value ? (j(), w(F(le), {
1717
- key: 0,
1718
- class: "role-detail-state",
1719
- tip: "加载角色详情"
1720
- })) : U.value ? (j(), E("div", Be, [k(F(te), {
1721
- title: "详情加载失败",
1722
- message: "无法加载角色详情,请重试"
1723
- }), k(F(f), {
1724
- type: "primary",
1725
- "icon-name": "reload",
1726
- onClick: Ft
1727
- }, {
1728
- default: I(() => [...n[15] ||= [O("重试", -1)]]),
1729
- _: 1
1730
- })])) : V.value === "view" || V.value === "create" || z.value ? (j(), E(be, { key: 2 }, [V.value === "view" ? (j(), w(F(c), {
1731
- key: 0,
1732
- record: q.value,
1733
- "field-names": ot.value,
1734
- fields: J.value,
1735
- fallback: rt.value,
1736
- "display-of": xn
1737
- }, null, 8, [
1738
- "record",
1739
- "field-names",
1740
- "fields",
1741
- "fallback"
1742
- ])) : (j(), E("form", {
1743
- key: 1,
1744
- class: "role-form",
1745
- onSubmit: Te(It, ["prevent"])
1746
- }, [
1747
- D("label", null, [n[16] ||= D("span", { class: "role-form-label" }, "当前范围", -1), k(F(de), {
1748
- value: L.value?.title ?? "-",
1749
- disabled: ""
1750
- }, null, 8, ["value"])]),
1751
- k(F(g), {
1752
- record: q.value,
1753
- "field-names": it,
1754
- fields: J.value,
1755
- fallback: rt.value,
1756
- disabled: Xe.value,
1757
- "disabled-of": pt,
1758
- "onUpdate:field": mt
1759
- }, null, 8, [
1760
- "record",
1761
- "fields",
1762
- "fallback",
1763
- "disabled"
1764
- ]),
1765
- q.value.roleKind === "group" ? (j(), w(ze, {
1766
- key: 0,
1767
- value: q.value.memberRoleIds,
1768
- candidates: Y.value,
1769
- "current-role-id": z.value?.id,
1770
- disabled: Xe.value || z.value?.systemManaged === !0,
1771
- "onUpdate:value": n[10] ||= (e) => mt("memberRoleIds", e)
1772
- }, null, 8, [
1773
- "value",
1774
- "candidates",
1775
- "current-role-id",
1776
- "disabled"
1777
- ])) : T("v-if", !0),
1778
- k(F(g), {
1779
- record: q.value,
1780
- "field-names": at,
1781
- fields: J.value,
1782
- fallback: rt.value,
1783
- disabled: Xe.value,
1784
- "disabled-of": pt,
1785
- "onUpdate:field": mt
1786
- }, null, 8, [
1787
- "record",
1788
- "fields",
1789
- "fallback",
1790
- "disabled"
1791
- ])
1792
- ], 32)), V.value === "create" ? T("v-if", !0) : (j(), w(F(_), {
1793
- key: 2,
1794
- record: q.value,
1795
- "show-sort-order": ""
1796
- }, null, 8, ["record"]))], 64)) : T("v-if", !0)]),
1797
- _: 1
1798
- }, 8, [
1799
- "open",
1800
- "title",
1801
- "container",
1802
- "subtitle",
1803
- "close-on-outside",
1804
- "promotion"
1805
- ])) : (j(), w(F(o), {
1806
- key: 4,
1807
- title: Je.value,
1808
- subtitle: Ye.value
1809
- }, {
1810
- status: I(() => [V.value === "view" && z.value ? (j(), w(F(p), {
1811
- key: 0,
1812
- enabled: z.value.enabled !== !1,
1813
- disabled: W.value || !Qe.value,
1814
- loading: W.value,
1815
- "show-label": !1,
1816
- onChange: n[11] ||= (e) => Rt(z.value)
1817
- }, null, 8, [
1818
- "enabled",
1819
- "disabled",
1820
- "loading"
1821
- ])) : T("v-if", !0)]),
1822
- operation: I(() => [k(F(i), {
1823
- context: F(b),
1824
- actions: tt.value,
1825
- "record-id": z.value?.id,
1826
- onAction: Pt
1827
- }, null, 8, [
1828
- "context",
1829
- "actions",
1830
- "record-id"
1831
- ])]),
1832
- default: I(() => [H.value ? (j(), w(F(le), {
1833
- key: 0,
1834
- class: "role-detail-state",
1835
- tip: "加载角色详情"
1836
- })) : U.value ? (j(), E("div", Ve, [k(F(te), {
1837
- title: "详情加载失败",
1838
- message: "无法加载角色详情,请重试"
1839
- }), k(F(f), {
1840
- type: "primary",
1841
- "icon-name": "reload",
1842
- onClick: Ft
1843
- }, {
1844
- default: I(() => [...n[17] ||= [O("重试", -1)]]),
1845
- _: 1
1846
- })])) : V.value === "view" || z.value ? (j(), E(be, { key: 2 }, [V.value === "view" ? (j(), w(F(c), {
1847
- key: 0,
1848
- record: q.value,
1849
- "field-names": ot.value,
1850
- fields: J.value,
1851
- fallback: rt.value,
1852
- "display-of": xn
1853
- }, null, 8, [
1854
- "record",
1855
- "field-names",
1856
- "fields",
1857
- "fallback"
1858
- ])) : (j(), E("form", {
1859
- key: 1,
1860
- class: "role-form",
1861
- onSubmit: Te(It, ["prevent"])
1862
- }, [
1863
- D("label", null, [n[18] ||= D("span", { class: "role-form-label" }, "当前范围", -1), k(F(de), {
1864
- value: L.value?.title ?? "-",
1865
- disabled: ""
1866
- }, null, 8, ["value"])]),
1867
- k(F(g), {
1868
- record: q.value,
1869
- "field-names": it,
1870
- fields: J.value,
1871
- fallback: rt.value,
1872
- disabled: Xe.value,
1873
- "disabled-of": pt,
1874
- "onUpdate:field": mt
1875
- }, null, 8, [
1876
- "record",
1877
- "fields",
1878
- "fallback",
1879
- "disabled"
1880
- ]),
1881
- q.value.roleKind === "group" ? (j(), w(ze, {
1882
- key: 0,
1883
- value: q.value.memberRoleIds,
1884
- candidates: Y.value,
1885
- "current-role-id": z.value?.id,
1886
- disabled: Xe.value || z.value?.systemManaged === !0,
1887
- "onUpdate:value": n[12] ||= (e) => mt("memberRoleIds", e)
1888
- }, null, 8, [
1889
- "value",
1890
- "candidates",
1891
- "current-role-id",
1892
- "disabled"
1893
- ])) : T("v-if", !0),
1894
- k(F(g), {
1895
- record: q.value,
1896
- "field-names": at,
1897
- fields: J.value,
1898
- fallback: rt.value,
1899
- disabled: Xe.value,
1900
- "disabled-of": pt,
1901
- "onUpdate:field": mt
1902
- }, null, 8, [
1903
- "record",
1904
- "fields",
1905
- "fallback",
1906
- "disabled"
1907
- ])
1908
- ], 32)), k(F(_), {
1909
- record: q.value,
1910
- "show-sort-order": ""
1911
- }, null, 8, ["record"])], 64)) : T("v-if", !0)]),
1912
- _: 1
1913
- }, 8, ["title", "subtitle"])),
1914
- k(Ae, {
1915
- open: Ee.value,
1916
- context: F(b),
1917
- role: G.value,
1918
- container: S.value,
1919
- onClose: kt,
1920
- onSaved: n[13] ||= (e) => N.value += 1
1921
- }, null, 8, [
1922
- "open",
1923
- "context",
1924
- "role",
1925
- "container"
1926
- ]),
1927
- k(Le, {
1928
- open: De.value,
1929
- context: F(b),
1930
- role: G.value,
1931
- container: S.value,
1932
- onClose: kt,
1933
- onSaved: n[14] ||= (e) => N.value += 1
1934
- }, null, 8, [
1935
- "open",
1936
- "context",
1937
- "role",
1938
- "container"
1939
- ]),
1940
- ke.value && Oe.value?.id ? (j(), w(ge, {
1941
- key: 5,
1942
- "role-id": Oe.value.id,
1943
- container: S.value,
1944
- drawer: "",
1945
- onClose: Et
1946
- }, null, 8, ["role-id", "container"])) : T("v-if", !0)
1947
- ], 2));
1948
- }
1949
- }), Q = /* @__PURE__ */ se({ default: () => Ue }), Ue = /*#__PURE__*/ a(He, [["__scopeId", "data-v-7057f589"]]);
1950
- //#endregion
1951
- export { Q as n, Ue as t };