@hkyhy/marsun-components-core 0.1.68 → 0.1.72

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 (260) hide show
  1. package/dist/components/FlexBox/FlexBox.d.ts +7 -0
  2. package/dist/components/FlexBox/FlexBox.js +43 -0
  3. package/dist/components/FlexBox/FlexBox.js.map +1 -0
  4. package/dist/components/FlexBox/FlexBoxFetch.d.ts +3 -0
  5. package/dist/components/FlexBox/FlexBoxFetch.js +92 -0
  6. package/dist/components/FlexBox/FlexBoxFetch.js.map +1 -0
  7. package/dist/components/FlexBox/FlexBoxView.d.ts +18 -0
  8. package/dist/components/FlexBox/FlexBoxView.js +42 -0
  9. package/dist/components/FlexBox/FlexBoxView.js.map +1 -0
  10. package/dist/components/FlexBox/defaultColumns.d.ts +7 -0
  11. package/dist/components/FlexBox/defaultColumns.js +26 -0
  12. package/dist/components/FlexBox/defaultColumns.js.map +1 -0
  13. package/dist/components/FlexBox/index.d.ts +79 -0
  14. package/dist/components/FlexBox/useFlexBox.d.ts +5 -0
  15. package/dist/components/FlexBox/useFlexBox.js +19 -0
  16. package/dist/components/FlexBox/useFlexBox.js.map +1 -0
  17. package/dist/components/Form/FormDataSync.d.ts +3 -0
  18. package/dist/components/Form/FormDataSync.js +29 -15
  19. package/dist/components/Form/FormDataSync.js.map +1 -1
  20. package/dist/components/Form/InputRange.d.ts +19 -0
  21. package/dist/components/Form/InputRange.js +84 -0
  22. package/dist/components/Form/InputRange.js.map +1 -0
  23. package/dist/components/Form/InputRange.module.scss.js +9 -0
  24. package/dist/components/Form/InputRange.module.scss.js.map +1 -0
  25. package/dist/components/Form/index.d.ts +4 -0
  26. package/dist/components/Form/inputRangeRules.d.ts +15 -0
  27. package/dist/components/Form/inputRangeRules.js +23 -0
  28. package/dist/components/Form/inputRangeRules.js.map +1 -0
  29. package/dist/components/Form/kneFormInfo.js +9 -9
  30. package/dist/components/FormInfo/ErrorTip.d.ts +7 -0
  31. package/dist/components/FormInfo/ErrorTip.js +89 -0
  32. package/dist/components/FormInfo/ErrorTip.js.map +1 -0
  33. package/dist/components/FormInfo/Form.d.ts +7 -0
  34. package/dist/components/FormInfo/Form.js +23 -0
  35. package/dist/components/FormInfo/Form.js.map +1 -0
  36. package/dist/components/FormInfo/FormApiButton.d.ts +7 -0
  37. package/dist/components/FormInfo/FormApiButton.js +28 -0
  38. package/dist/components/FormInfo/FormApiButton.js.map +1 -0
  39. package/dist/components/FormInfo/FormDrawer.d.ts +9 -0
  40. package/dist/components/FormInfo/FormDrawer.js +42 -0
  41. package/dist/components/FormInfo/FormDrawer.js.map +1 -0
  42. package/dist/components/FormInfo/FormInfo.d.ts +4 -0
  43. package/dist/components/FormInfo/FormInfo.js +61 -0
  44. package/dist/components/FormInfo/FormInfo.js.map +1 -0
  45. package/dist/components/FormInfo/FormItem.d.ts +4 -0
  46. package/dist/components/FormInfo/FormItem.js +10 -0
  47. package/dist/components/FormInfo/FormItem.js.map +1 -0
  48. package/dist/components/FormInfo/FormModal.d.ts +11 -0
  49. package/dist/components/FormInfo/FormModal.js +43 -0
  50. package/dist/components/FormInfo/FormModal.js.map +1 -0
  51. package/dist/components/FormInfo/FormSteps.d.ts +9 -0
  52. package/dist/components/FormInfo/FormSteps.js +96 -0
  53. package/dist/components/FormInfo/FormSteps.js.map +1 -0
  54. package/dist/components/FormInfo/FormStepsModal.d.ts +14 -0
  55. package/dist/components/FormInfo/FormStepsModal.js +96 -0
  56. package/dist/components/FormInfo/FormStepsModal.js.map +1 -0
  57. package/dist/components/FormInfo/List.d.ts +6 -0
  58. package/dist/components/FormInfo/List.js +180 -0
  59. package/dist/components/FormInfo/List.js.map +1 -0
  60. package/dist/components/FormInfo/MultiField.d.ts +6 -0
  61. package/dist/components/FormInfo/MultiField.js +76 -0
  62. package/dist/components/FormInfo/MultiField.js.map +1 -0
  63. package/dist/components/FormInfo/Steps.d.ts +26 -0
  64. package/dist/components/FormInfo/Steps.js +178 -0
  65. package/dist/components/FormInfo/Steps.js.map +1 -0
  66. package/dist/components/FormInfo/TableList.d.ts +6 -0
  67. package/dist/components/FormInfo/TableList.js +216 -0
  68. package/dist/components/FormInfo/TableList.js.map +1 -0
  69. package/dist/components/FormInfo/buildFormOverlayProps.d.ts +27 -0
  70. package/dist/components/FormInfo/buildFormOverlayProps.js +55 -0
  71. package/dist/components/FormInfo/buildFormOverlayProps.js.map +1 -0
  72. package/dist/components/FormInfo/fields.d.ts +33 -0
  73. package/dist/components/FormInfo/fields.js +30 -0
  74. package/dist/components/FormInfo/fields.js.map +1 -0
  75. package/dist/components/FormInfo/index.d.ts +21 -0
  76. package/dist/components/FormInfo/locale/zh-CN.d.ts +16 -0
  77. package/dist/components/FormInfo/locale/zh-CN.js +17 -0
  78. package/dist/components/FormInfo/locale/zh-CN.js.map +1 -0
  79. package/dist/components/FormInfo/nestBlock.d.ts +15 -0
  80. package/dist/components/FormInfo/nestBlock.js +19 -0
  81. package/dist/components/FormInfo/nestBlock.js.map +1 -0
  82. package/dist/components/FormInfo/style.module.scss.js +57 -0
  83. package/dist/components/FormInfo/style.module.scss.js.map +1 -0
  84. package/dist/components/FormInfo/types.d.ts +213 -0
  85. package/dist/components/FormInfo/withLocale.d.ts +14 -0
  86. package/dist/components/FormInfo/withLocale.js +25 -0
  87. package/dist/components/FormInfo/withLocale.js.map +1 -0
  88. package/dist/components/Iam/client.d.ts +42 -0
  89. package/dist/components/Iam/index.d.ts +10 -0
  90. package/dist/components/Iam/pages/IamOrgPage.d.ts +8 -0
  91. package/dist/components/Iam/pages/IamOrgPage.js +45 -0
  92. package/dist/components/Iam/pages/IamOrgPage.js.map +1 -0
  93. package/dist/components/Iam/pages/IamRolesPage.d.ts +24 -0
  94. package/dist/components/Iam/pages/IamRolesPage.js +222 -0
  95. package/dist/components/Iam/pages/IamRolesPage.js.map +1 -0
  96. package/dist/components/Iam/pages/IamSharedGroupsPage.d.ts +6 -0
  97. package/dist/components/Iam/pages/IamSharedGroupsPage.js +207 -0
  98. package/dist/components/Iam/pages/IamSharedGroupsPage.js.map +1 -0
  99. package/dist/components/Iam/pages/IamUsersPage.d.ts +10 -0
  100. package/dist/components/Iam/pages/IamUsersPage.js +314 -0
  101. package/dist/components/Iam/pages/IamUsersPage.js.map +1 -0
  102. package/dist/components/Iam/types.d.ts +85 -0
  103. package/dist/components/Iam/utils/catalogToItems.d.ts +3 -0
  104. package/dist/components/Iam/utils/catalogToItems.js +17 -0
  105. package/dist/components/Iam/utils/catalogToItems.js.map +1 -0
  106. package/dist/components/Iam/utils/draftEffectivePermissions.d.ts +48 -0
  107. package/dist/components/Iam/utils/draftEffectivePermissions.js +42 -0
  108. package/dist/components/Iam/utils/draftEffectivePermissions.js.map +1 -0
  109. package/dist/components/Iam/utils/multiTagSelect.d.ts +15 -0
  110. package/dist/components/Iam/utils/multiTagSelect.js +21 -0
  111. package/dist/components/Iam/utils/multiTagSelect.js.map +1 -0
  112. package/dist/components/Iam/utils/roleDisplay.d.ts +13 -0
  113. package/dist/components/Iam/utils/roleDisplay.js +17 -0
  114. package/dist/components/Iam/utils/roleDisplay.js.map +1 -0
  115. package/dist/components/InfoPage/CentralContent/boxComputed.d.ts +2 -0
  116. package/dist/components/InfoPage/CentralContent/boxComputed.js +15 -0
  117. package/dist/components/InfoPage/CentralContent/boxComputed.js.map +1 -0
  118. package/dist/components/InfoPage/CentralContent/index.d.ts +3 -0
  119. package/dist/components/InfoPage/CentralContent/index.js +102 -0
  120. package/dist/components/InfoPage/CentralContent/index.js.map +1 -0
  121. package/dist/components/InfoPage/CentralContent/style.module.scss.js +15 -0
  122. package/dist/components/InfoPage/CentralContent/style.module.scss.js.map +1 -0
  123. package/dist/components/InfoPage/Content/index.d.ts +16 -0
  124. package/dist/components/InfoPage/Content/index.js +72 -0
  125. package/dist/components/InfoPage/Content/index.js.map +1 -0
  126. package/dist/components/InfoPage/Content/style.module.scss.js +14 -0
  127. package/dist/components/InfoPage/Content/style.module.scss.js.map +1 -0
  128. package/dist/components/InfoPage/Descriptions/index.d.ts +9 -0
  129. package/dist/components/InfoPage/Descriptions/index.js +48 -0
  130. package/dist/components/InfoPage/Descriptions/index.js.map +1 -0
  131. package/dist/components/InfoPage/Descriptions/style.module.scss.js +11 -0
  132. package/dist/components/InfoPage/Descriptions/style.module.scss.js.map +1 -0
  133. package/dist/components/InfoPage/Flow/index.d.ts +9 -0
  134. package/dist/components/InfoPage/Flow/index.js +165 -0
  135. package/dist/components/InfoPage/Flow/index.js.map +1 -0
  136. package/dist/components/InfoPage/Flow/style.module.scss.js +19 -0
  137. package/dist/components/InfoPage/Flow/style.module.scss.js.map +1 -0
  138. package/dist/components/InfoPage/InfoPage/Collapse.d.ts +10 -0
  139. package/dist/components/InfoPage/InfoPage/Collapse.js +11 -0
  140. package/dist/components/InfoPage/InfoPage/Collapse.js.map +1 -0
  141. package/dist/components/InfoPage/InfoPage/index.d.ts +21 -0
  142. package/dist/components/InfoPage/InfoPage/index.js +35 -0
  143. package/dist/components/InfoPage/InfoPage/index.js.map +1 -0
  144. package/dist/components/InfoPage/InfoPage/style.module.scss.js +15 -0
  145. package/dist/components/InfoPage/InfoPage/style.module.scss.js.map +1 -0
  146. package/dist/components/InfoPage/Report/List.d.ts +6 -0
  147. package/dist/components/InfoPage/Report/List.js +26 -0
  148. package/dist/components/InfoPage/Report/List.js.map +1 -0
  149. package/dist/components/InfoPage/Report/Part.d.ts +6 -0
  150. package/dist/components/InfoPage/Report/Part.js +42 -0
  151. package/dist/components/InfoPage/Report/Part.js.map +1 -0
  152. package/dist/components/InfoPage/Report/PrintPageBreak.d.ts +3 -0
  153. package/dist/components/InfoPage/Report/PrintPageBreak.js +8 -0
  154. package/dist/components/InfoPage/Report/PrintPageBreak.js.map +1 -0
  155. package/dist/components/InfoPage/Report/Result.d.ts +6 -0
  156. package/dist/components/InfoPage/Report/Result.js +26 -0
  157. package/dist/components/InfoPage/Report/Result.js.map +1 -0
  158. package/dist/components/InfoPage/Report/Table.d.ts +6 -0
  159. package/dist/components/InfoPage/Report/Table.js +125 -0
  160. package/dist/components/InfoPage/Report/Table.js.map +1 -0
  161. package/dist/components/InfoPage/Report/index.d.ts +26 -0
  162. package/dist/components/InfoPage/Report/index.js +61 -0
  163. package/dist/components/InfoPage/Report/index.js.map +1 -0
  164. package/dist/components/InfoPage/Report/style.module.scss.js +47 -0
  165. package/dist/components/InfoPage/Report/style.module.scss.js.map +1 -0
  166. package/dist/components/InfoPage/Score/index.d.ts +8 -0
  167. package/dist/components/InfoPage/Score/index.js +50 -0
  168. package/dist/components/InfoPage/Score/index.js.map +1 -0
  169. package/dist/components/InfoPage/Score/style.module.scss.js +10 -0
  170. package/dist/components/InfoPage/Score/style.module.scss.js.map +1 -0
  171. package/dist/components/InfoPage/SplitLine/index.d.ts +17 -0
  172. package/dist/components/InfoPage/SplitLine/index.js +67 -0
  173. package/dist/components/InfoPage/SplitLine/index.js.map +1 -0
  174. package/dist/components/InfoPage/SplitLine/style.module.scss.js +8 -0
  175. package/dist/components/InfoPage/SplitLine/style.module.scss.js.map +1 -0
  176. package/dist/components/InfoPage/computeColumnsValue.d.ts +28 -0
  177. package/dist/components/InfoPage/computeColumnsValue.js +60 -0
  178. package/dist/components/InfoPage/computeColumnsValue.js.map +1 -0
  179. package/dist/components/InfoPage/formatView.d.ts +23 -0
  180. package/dist/components/InfoPage/formatView.js +119 -0
  181. package/dist/components/InfoPage/formatView.js.map +1 -0
  182. package/dist/components/InfoPage/index.d.ts +262 -0
  183. package/dist/components/Layout/AgentAppShell/style.module.scss.js +20 -20
  184. package/dist/components/PermissionBindPanel/PermissionBindPanel.js +110 -98
  185. package/dist/components/PermissionBindPanel/PermissionBindPanel.js.map +1 -1
  186. package/dist/components/ReactModal/ColumnsLayout.d.ts +7 -0
  187. package/dist/components/ReactModal/ColumnsLayout.js +20 -0
  188. package/dist/components/ReactModal/ColumnsLayout.js.map +1 -0
  189. package/dist/components/ReactModal/Drawer.d.ts +73 -0
  190. package/dist/components/ReactModal/Drawer.js +292 -0
  191. package/dist/components/ReactModal/Drawer.js.map +1 -0
  192. package/dist/components/ReactModal/Footer.d.ts +12 -0
  193. package/dist/components/ReactModal/Footer.js +53 -0
  194. package/dist/components/ReactModal/Footer.js.map +1 -0
  195. package/dist/components/ReactModal/Modal.d.ts +14 -0
  196. package/dist/components/ReactModal/Modal.js +366 -0
  197. package/dist/components/ReactModal/Modal.js.map +1 -0
  198. package/dist/components/ReactModal/ScrollRegion.d.ts +7 -0
  199. package/dist/components/ReactModal/ScrollRegion.js +22 -0
  200. package/dist/components/ReactModal/ScrollRegion.js.map +1 -0
  201. package/dist/components/ReactModal/SimpleBar.d.ts +2 -0
  202. package/dist/components/ReactModal/SimpleBar.js +7 -0
  203. package/dist/components/ReactModal/SimpleBar.js.map +1 -0
  204. package/dist/components/ReactModal/TabsLayout.d.ts +6 -0
  205. package/dist/components/ReactModal/TabsLayout.js +16 -0
  206. package/dist/components/ReactModal/TabsLayout.js.map +1 -0
  207. package/dist/components/ReactModal/confirmModal.module.scss.js +30 -0
  208. package/dist/components/ReactModal/confirmModal.module.scss.js.map +1 -0
  209. package/dist/components/ReactModal/createDrawerRender.d.ts +2 -0
  210. package/dist/components/ReactModal/createDrawerRender.js +7 -0
  211. package/dist/components/ReactModal/createDrawerRender.js.map +1 -0
  212. package/dist/components/ReactModal/createModalRender.d.ts +2 -0
  213. package/dist/components/ReactModal/createModalRender.js +7 -0
  214. package/dist/components/ReactModal/createModalRender.js.map +1 -0
  215. package/dist/components/ReactModal/drawer.module.scss.js +36 -0
  216. package/dist/components/ReactModal/drawer.module.scss.js.map +1 -0
  217. package/dist/components/ReactModal/index.d.ts +57 -0
  218. package/dist/components/ReactModal/intlStub.d.ts +15 -0
  219. package/dist/components/ReactModal/intlStub.js +21 -0
  220. package/dist/components/ReactModal/intlStub.js.map +1 -0
  221. package/dist/components/ReactModal/layouts.module.scss.js +12 -0
  222. package/dist/components/ReactModal/layouts.module.scss.js.map +1 -0
  223. package/dist/components/ReactModal/locale/en-US.d.ts +5 -0
  224. package/dist/components/ReactModal/locale/zh-CN.d.ts +5 -0
  225. package/dist/components/ReactModal/locale/zh-CN.js +8 -0
  226. package/dist/components/ReactModal/locale/zh-CN.js.map +1 -0
  227. package/dist/components/ReactModal/lockParentScroll.d.ts +3 -0
  228. package/dist/components/ReactModal/modalClassNames.d.ts +5 -0
  229. package/dist/components/ReactModal/modalClassNames.js +8 -0
  230. package/dist/components/ReactModal/modalClassNames.js.map +1 -0
  231. package/dist/components/ReactModal/style.module.scss.js +38 -0
  232. package/dist/components/ReactModal/style.module.scss.js.map +1 -0
  233. package/dist/components/ReactModal/useConfirmModal.d.ts +4 -0
  234. package/dist/components/ReactModal/useConfirmModal.js +161 -0
  235. package/dist/components/ReactModal/useConfirmModal.js.map +1 -0
  236. package/dist/components/ReactModal/useDrawer.d.ts +5 -0
  237. package/dist/components/ReactModal/useDrawer.js +123 -0
  238. package/dist/components/ReactModal/useDrawer.js.map +1 -0
  239. package/dist/components/ReactModal/usePatchElement.d.ts +2 -0
  240. package/dist/components/ReactModal/usePatchElement.js +11 -0
  241. package/dist/components/ReactModal/usePatchElement.js.map +1 -0
  242. package/dist/components/ReactModal/withLocale.d.ts +5 -0
  243. package/dist/components/ReactModal/withLocale.js +6 -0
  244. package/dist/components/ReactModal/withLocale.js.map +1 -0
  245. package/dist/components/index.d.ts +5 -0
  246. package/dist/form-info.d.ts +17 -0
  247. package/dist/form-info.js +68 -0
  248. package/dist/form-info.js.map +1 -0
  249. package/dist/iam.d.ts +14 -0
  250. package/dist/iam.js +23 -0
  251. package/dist/iam.js.map +1 -0
  252. package/dist/index.d.ts +3 -0
  253. package/dist/index.js +700 -632
  254. package/dist/index.js.map +1 -1
  255. package/dist/marsun-components-core.css +1 -1
  256. package/dist/styles/global.css +1 -1
  257. package/dist/utils/date.d.ts +4 -1
  258. package/dist/utils/date.js +35 -27
  259. package/dist/utils/date.js.map +1 -1
  260. package/package.json +20 -2
@@ -0,0 +1,222 @@
1
+ import { jsxs as R, jsx as r } from "react/jsx-runtime";
2
+ import { message as d, Typography as T, Empty as V, Form as x, Table as W, Space as Y, Button as B, Modal as G, Input as M } from "antd";
3
+ import { useState as a, useRef as H, useEffect as _, useMemo as F, useCallback as j } from "react";
4
+ import { useParams as J, useNavigate as U } from "react-router-dom";
5
+ import $ from "../../Layout/ModulePageShell/index.js";
6
+ import Q from "../../PermissionBindPanel/PermissionBindPanel.js";
7
+ function z(n) {
8
+ const m = (n || "").trim();
9
+ return !m || /^(Synced from .+ role matrix|S3 Wave2 pilot matrix)/i.test(m) ? "—" : m;
10
+ }
11
+ function ne({
12
+ client: n,
13
+ rolesListPath: m = "/config/iam/roles",
14
+ rolePermissionsPath: S,
15
+ title: k = "角色管理"
16
+ }) {
17
+ const P = U(), f = S ?? ((s) => `${m}/${s}/permissions`), [b, C] = a(!1), [o, E] = a([]), [y, h] = a(!1), [u, w] = a(null), [t] = x.useForm(), p = j(async () => {
18
+ C(!0);
19
+ try {
20
+ E(await n.listRoles());
21
+ } catch (s) {
22
+ d.error(s instanceof Error ? s.message : "加载失败");
23
+ } finally {
24
+ C(!1);
25
+ }
26
+ }, [n]);
27
+ _(() => {
28
+ p();
29
+ }, [p]);
30
+ const v = F(
31
+ () => [
32
+ {
33
+ children: "新增角色",
34
+ type: "primary",
35
+ onClick: () => {
36
+ w(null), t.resetFields(), h(!0);
37
+ }
38
+ }
39
+ ],
40
+ [t]
41
+ );
42
+ return /* @__PURE__ */ R($, { title: k, actions: v, children: [
43
+ /* @__PURE__ */ r(
44
+ W,
45
+ {
46
+ rowKey: "id",
47
+ loading: b,
48
+ dataSource: o,
49
+ columns: [
50
+ { title: "角色名称", dataIndex: "name" },
51
+ { title: "编码", dataIndex: "code" },
52
+ {
53
+ title: "描述",
54
+ dataIndex: "description",
55
+ render: (s) => z(s)
56
+ },
57
+ {
58
+ title: "用户数",
59
+ key: "uc",
60
+ render: (s, e) => {
61
+ var l;
62
+ return ((l = e._count) == null ? void 0 : l.userRoles) ?? "—";
63
+ }
64
+ },
65
+ {
66
+ title: "操作",
67
+ key: "ops",
68
+ render: (s, e) => /* @__PURE__ */ R(Y, { children: [
69
+ /* @__PURE__ */ r(B, { type: "link", size: "small", onClick: () => P(f(e.id)), children: "权限管理" }),
70
+ /* @__PURE__ */ r(
71
+ B,
72
+ {
73
+ type: "link",
74
+ size: "small",
75
+ onClick: () => {
76
+ w(e), t.setFieldsValue({
77
+ name: e.name,
78
+ description: z(e.description) === "—" ? "" : e.description || ""
79
+ }), h(!0);
80
+ },
81
+ children: "编辑"
82
+ }
83
+ ),
84
+ /* @__PURE__ */ r(
85
+ B,
86
+ {
87
+ type: "link",
88
+ size: "small",
89
+ danger: !0,
90
+ disabled: !!e.isBuiltin,
91
+ onClick: async () => {
92
+ try {
93
+ await n.deleteRole(e.id), d.success("已删除"), p();
94
+ } catch (l) {
95
+ d.error(l instanceof Error ? l.message : "删除失败");
96
+ }
97
+ },
98
+ children: "删除"
99
+ }
100
+ )
101
+ ] })
102
+ }
103
+ ]
104
+ }
105
+ ),
106
+ /* @__PURE__ */ r(
107
+ G,
108
+ {
109
+ open: y,
110
+ title: u ? "编辑角色" : "新增角色",
111
+ onCancel: () => h(!1),
112
+ onOk: async () => {
113
+ const s = await t.validateFields();
114
+ try {
115
+ u ? await n.updateRole(u.id, s) : await n.createRole(s), d.success("已保存"), h(!1), p();
116
+ } catch (e) {
117
+ d.error(e instanceof Error ? e.message : "失败");
118
+ }
119
+ },
120
+ children: /* @__PURE__ */ R(x, { form: t, layout: "vertical", children: [
121
+ /* @__PURE__ */ r(x.Item, { name: "name", label: "角色名称", rules: [{ required: !0 }], children: /* @__PURE__ */ r(M, { placeholder: "请输入角色名称" }) }),
122
+ /* @__PURE__ */ r(x.Item, { name: "description", label: "角色描述", children: /* @__PURE__ */ r(M.TextArea, { placeholder: "请输入角色描述", rows: 3 }) })
123
+ ] })
124
+ }
125
+ )
126
+ ] });
127
+ }
128
+ function re({
129
+ client: n,
130
+ catalog: m,
131
+ systemEntryCodes: S,
132
+ systemAppCode: k,
133
+ rolesListPath: P = "/config/iam/roles",
134
+ onAfterSave: f,
135
+ emptyCatalogHint: b = "暂无权限点;请先在 SSO 导入本应用目录。",
136
+ title: C = "权限管理"
137
+ }) {
138
+ const { id: o } = J(), E = U(), [y, h] = a(null), [u, w] = a([]), [t, p] = a([]), v = H(t);
139
+ v.current = t;
140
+ const [s, e] = a(!1), [l, O] = a(!1);
141
+ _(() => {
142
+ o && (e(!0), Promise.all([n.listRoles(), n.listPermissions()]).then(([i, L]) => {
143
+ const I = i.find((c) => c.id === o) || null;
144
+ h(I);
145
+ const N = L.filter(
146
+ (c) => {
147
+ var g;
148
+ return c.layer !== "RESOURCE" && (!c.systemAppId || ((g = c.systemApp) == null ? void 0 : g.code) === k);
149
+ }
150
+ );
151
+ w(N), p(
152
+ ((I == null ? void 0 : I.rolePermissions) || []).map((c) => {
153
+ var g;
154
+ return c.permissionId || ((g = c.permission) == null ? void 0 : g.id) || "";
155
+ }).filter(Boolean)
156
+ );
157
+ }).catch((i) => d.error(i instanceof Error ? i.message : "加载失败")).finally(() => e(!1)));
158
+ }, [o, n, k]);
159
+ const q = F(
160
+ () => u.map((i) => ({
161
+ id: i.id,
162
+ code: i.code,
163
+ name: i.name,
164
+ layer: i.layer
165
+ })),
166
+ [u]
167
+ ), D = j((i) => {
168
+ p(i);
169
+ }, []), K = F(
170
+ () => [
171
+ {
172
+ children: "返回",
173
+ onClick: () => E(P)
174
+ },
175
+ {
176
+ children: "保存",
177
+ type: "primary",
178
+ loading: l,
179
+ onClick: async () => {
180
+ if (o) {
181
+ O(!0);
182
+ try {
183
+ await n.setRolePermissions(o, v.current.filter(Boolean)), d.success("已保存");
184
+ try {
185
+ await (f == null ? void 0 : f());
186
+ } catch {
187
+ }
188
+ } catch (i) {
189
+ d.error(i instanceof Error ? i.message : "保存失败");
190
+ } finally {
191
+ O(!1);
192
+ }
193
+ }
194
+ }
195
+ }
196
+ ],
197
+ [o, E, l, n, P, f]
198
+ );
199
+ return /* @__PURE__ */ R($, { title: C, actions: K, spinning: s, children: [
200
+ /* @__PURE__ */ R(T.Paragraph, { style: { marginTop: 0 }, children: [
201
+ "角色名称:",
202
+ (y == null ? void 0 : y.name) || "—"
203
+ ] }),
204
+ /* @__PURE__ */ r(T.Paragraph, { type: "secondary", children: "按页面模块 → 分类 → 功能点勾选(中文目录来自 bindCatalog)。须先勾选「进入应用」SYSTEM 入口。RESOURCE 不在此绑定。" }),
205
+ u.length === 0 && !s ? /* @__PURE__ */ r(V, { description: b }) : /* @__PURE__ */ r(
206
+ Q,
207
+ {
208
+ catalog: m,
209
+ permissions: q,
210
+ value: t,
211
+ onChange: D,
212
+ systemEntryCodes: [...S]
213
+ }
214
+ )
215
+ ] });
216
+ }
217
+ export {
218
+ re as IamRolePermissionsPage,
219
+ ne as IamRolesPage,
220
+ z as displayRoleDescription
221
+ };
222
+ //# sourceMappingURL=IamRolesPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IamRolesPage.js","sources":["../../../../src/components/Iam/pages/IamRolesPage.tsx"],"sourcesContent":["import { ModulePageShell } from '@/components/Layout';\nimport { PermissionBindPanel, type PermissionBindCatalog } from '@/components/PermissionBindPanel';\nimport { Button, Empty, Form, Input, Modal, Space, Table, Typography, message } from 'antd';\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport type { IamClient } from '../client';\nimport type { IamPermission, IamRole } from '../types';\n\n/** 隐藏矩阵 sync 运维 provenance,不当作用户可读描述 */\nexport function displayRoleDescription(v: string | null | undefined): string {\n const t = (v || '').trim();\n if (!t) return '—';\n if (/^(Synced from .+ role matrix|S3 Wave2 pilot matrix)/i.test(t)) return '—';\n return t;\n}\n\nexport type IamRolesPageProps = {\n client: IamClient;\n /** 角色列表路由,默认 `/config/iam/roles` */\n rolesListPath?: string;\n /** 绑权页路径工厂 */\n rolePermissionsPath?: (roleId: string) => string;\n title?: string;\n};\n\nexport function IamRolesPage({\n client,\n rolesListPath = '/config/iam/roles',\n rolePermissionsPath,\n title = '角色管理',\n}: IamRolesPageProps) {\n const navigate = useNavigate();\n const resolvePermPath =\n rolePermissionsPath ?? ((id: string) => `${rolesListPath}/${id}/permissions`);\n const [loading, setLoading] = useState(false);\n const [rows, setRows] = useState<IamRole[]>([]);\n const [open, setOpen] = useState(false);\n const [editing, setEditing] = useState<IamRole | null>(null);\n const [form] = Form.useForm();\n\n const load = useCallback(async () => {\n setLoading(true);\n try {\n setRows(await client.listRoles());\n } catch (e) {\n message.error(e instanceof Error ? e.message : '加载失败');\n } finally {\n setLoading(false);\n }\n }, [client]);\n\n useEffect(() => {\n void load();\n }, [load]);\n\n const headerActions = useMemo(\n () => [\n {\n children: '新增角色',\n type: 'primary' as const,\n onClick: () => {\n setEditing(null);\n form.resetFields();\n setOpen(true);\n },\n },\n ],\n [form],\n );\n\n return (\n <ModulePageShell title={title} actions={headerActions}>\n <Table\n rowKey=\"id\"\n loading={loading}\n dataSource={rows}\n columns={[\n { title: '角色名称', dataIndex: 'name' },\n { title: '编码', dataIndex: 'code' },\n {\n title: '描述',\n dataIndex: 'description',\n render: (v: string | null) => displayRoleDescription(v),\n },\n {\n title: '用户数',\n key: 'uc',\n render: (_: unknown, r: IamRole) => r._count?.userRoles ?? '—',\n },\n {\n title: '操作',\n key: 'ops',\n render: (_: unknown, r: IamRole) => (\n <Space>\n <Button type=\"link\" size=\"small\" onClick={() => navigate(resolvePermPath(r.id))}>\n 权限管理\n </Button>\n <Button\n type=\"link\"\n size=\"small\"\n onClick={() => {\n setEditing(r);\n form.setFieldsValue({\n name: r.name,\n description:\n displayRoleDescription(r.description) === '—' ? '' : r.description || '',\n });\n setOpen(true);\n }}\n >\n 编辑\n </Button>\n <Button\n type=\"link\"\n size=\"small\"\n danger\n disabled={Boolean(r.isBuiltin)}\n onClick={async () => {\n try {\n await client.deleteRole(r.id);\n message.success('已删除');\n void load();\n } catch (e) {\n message.error(e instanceof Error ? e.message : '删除失败');\n }\n }}\n >\n 删除\n </Button>\n </Space>\n ),\n },\n ]}\n />\n <Modal\n open={open}\n title={editing ? '编辑角色' : '新增角色'}\n onCancel={() => setOpen(false)}\n onOk={async () => {\n const values = await form.validateFields();\n try {\n if (editing) {\n await client.updateRole(editing.id, values);\n } else {\n await client.createRole(values);\n }\n message.success('已保存');\n setOpen(false);\n void load();\n } catch (e) {\n message.error(e instanceof Error ? e.message : '失败');\n }\n }}\n >\n <Form form={form} layout=\"vertical\">\n <Form.Item name=\"name\" label=\"角色名称\" rules={[{ required: true }]}>\n <Input placeholder=\"请输入角色名称\" />\n </Form.Item>\n <Form.Item name=\"description\" label=\"角色描述\">\n <Input.TextArea placeholder=\"请输入角色描述\" rows={3} />\n </Form.Item>\n </Form>\n </Modal>\n </ModulePageShell>\n );\n}\n\nexport type IamRolePermissionsPageProps = {\n client: IamClient;\n catalog: PermissionBindCatalog;\n systemEntryCodes: readonly string[];\n systemAppCode: string;\n rolesListPath?: string;\n onAfterSave?: () => void | Promise<void>;\n emptyCatalogHint?: string;\n title?: string;\n};\n\nexport function IamRolePermissionsPage({\n client,\n catalog,\n systemEntryCodes,\n systemAppCode,\n rolesListPath = '/config/iam/roles',\n onAfterSave,\n emptyCatalogHint = '暂无权限点;请先在 SSO 导入本应用目录。',\n title = '权限管理',\n}: IamRolePermissionsPageProps) {\n const { id } = useParams();\n const navigate = useNavigate();\n const [role, setRole] = useState<IamRole | null>(null);\n const [perms, setPerms] = useState<IamPermission[]>([]);\n const [checked, setChecked] = useState<string[]>([]);\n const checkedRef = useRef(checked);\n checkedRef.current = checked;\n const [loading, setLoading] = useState(false);\n const [saving, setSaving] = useState(false);\n\n useEffect(() => {\n if (!id) return;\n setLoading(true);\n void Promise.all([client.listRoles(), client.listPermissions()])\n .then(([roles, allPerms]) => {\n const r = roles.find((x) => x.id === id) || null;\n setRole(r);\n const appPerms = allPerms.filter(\n (p) => p.layer !== 'RESOURCE' && (!p.systemAppId || p.systemApp?.code === systemAppCode),\n );\n setPerms(appPerms);\n setChecked(\n (r?.rolePermissions || [])\n .map((x) => x.permissionId || x.permission?.id || '')\n .filter(Boolean),\n );\n })\n .catch((e) => message.error(e instanceof Error ? e.message : '加载失败'))\n .finally(() => setLoading(false));\n }, [id, client, systemAppCode]);\n\n const panelPermissions = useMemo(\n () =>\n perms.map((p) => ({\n id: p.id,\n code: p.code,\n name: p.name,\n layer: p.layer,\n })),\n [perms],\n );\n\n const onCheckedChange = useCallback((next: string[]) => {\n setChecked(next);\n }, []);\n\n const headerActions = useMemo(\n () => [\n {\n children: '返回',\n onClick: () => navigate(rolesListPath),\n },\n {\n children: '保存',\n type: 'primary' as const,\n loading: saving,\n onClick: async () => {\n if (!id) return;\n setSaving(true);\n try {\n await client.setRolePermissions(id, checkedRef.current.filter(Boolean));\n message.success('已保存');\n try {\n await onAfterSave?.();\n } catch {\n /* ignore EP refresh */\n }\n } catch (e) {\n message.error(e instanceof Error ? e.message : '保存失败');\n } finally {\n setSaving(false);\n }\n },\n },\n ],\n [id, navigate, saving, client, rolesListPath, onAfterSave],\n );\n\n return (\n <ModulePageShell title={title} actions={headerActions} spinning={loading}>\n <Typography.Paragraph style={{ marginTop: 0 }}>\n 角色名称:{role?.name || '—'}\n </Typography.Paragraph>\n <Typography.Paragraph type=\"secondary\">\n 按页面模块 → 分类 → 功能点勾选(中文目录来自 bindCatalog)。须先勾选「进入应用」SYSTEM\n 入口。RESOURCE 不在此绑定。\n </Typography.Paragraph>\n {perms.length === 0 && !loading ? (\n <Empty description={emptyCatalogHint} />\n ) : (\n <PermissionBindPanel\n catalog={catalog}\n permissions={panelPermissions}\n value={checked}\n onChange={onCheckedChange}\n systemEntryCodes={[...systemEntryCodes]}\n />\n )}\n </ModulePageShell>\n );\n}\n"],"names":["displayRoleDescription","v","t","IamRolesPage","client","rolesListPath","rolePermissionsPath","title","navigate","useNavigate","resolvePermPath","id","loading","setLoading","useState","rows","setRows","open","setOpen","editing","setEditing","form","Form","load","useCallback","e","message","useEffect","headerActions","useMemo","jsxs","ModulePageShell","jsx","Table","_","r","_a","Space","Button","Modal","values","Input","IamRolePermissionsPage","catalog","systemEntryCodes","systemAppCode","onAfterSave","emptyCatalogHint","useParams","role","setRole","perms","setPerms","checked","setChecked","checkedRef","useRef","saving","setSaving","roles","allPerms","x","appPerms","p","panelPermissions","onCheckedChange","next","Typography","Empty","PermissionBindPanel"],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import { IamClient } from '../client';
2
+ export type IamSharedGroupsPageProps = {
3
+ client: IamClient;
4
+ title?: string;
5
+ };
6
+ export default function IamSharedGroupsPage({ client, title, }: IamSharedGroupsPageProps): import("react").JSX.Element;
@@ -0,0 +1,207 @@
1
+ import { jsxs as y, jsx as r, Fragment as j } from "react/jsx-runtime";
2
+ import { Form as c, message as o, Table as P, Space as q, Button as g, Modal as S, Input as b, Select as w } from "antd";
3
+ import { useState as l, useCallback as B, useEffect as T, useMemo as U } from "react";
4
+ import D from "../../Layout/ModulePageShell/index.js";
5
+ function H({
6
+ client: t,
7
+ title: C = "共享组"
8
+ }) {
9
+ const [G, I] = l(!1), [x, E] = l([]), [M, F] = l([]), [O, _] = l([]), [$, h] = l(!1), [m, k] = l(null), [z, f] = l(!1), [n, A] = l(null), [u, v] = l([]), [p] = c.useForm(), d = B(async () => {
10
+ I(!0);
11
+ try {
12
+ const [e, s, a] = await Promise.all([
13
+ t.listSharedGroups(),
14
+ t.listRoles(),
15
+ t.listUsers({ page: 1, pageSize: 100 })
16
+ ]);
17
+ E(e), F(s), _(a.pageData.filter((i) => i.isActive));
18
+ } catch (e) {
19
+ o.error(e instanceof Error ? e.message : "加载失败");
20
+ } finally {
21
+ I(!1);
22
+ }
23
+ }, [t]);
24
+ T(() => {
25
+ d();
26
+ }, [d]);
27
+ const R = U(
28
+ () => [
29
+ {
30
+ children: "新增共享组",
31
+ type: "primary",
32
+ onClick: () => {
33
+ k(null), p.resetFields(), h(!0);
34
+ }
35
+ }
36
+ ],
37
+ [p]
38
+ );
39
+ return /* @__PURE__ */ y(D, { title: C, actions: R, children: [
40
+ /* @__PURE__ */ r(
41
+ P,
42
+ {
43
+ rowKey: "id",
44
+ loading: G,
45
+ dataSource: x,
46
+ columns: [
47
+ { title: "名称", dataIndex: "name" },
48
+ { title: "编码", dataIndex: "code" },
49
+ { title: "说明", dataIndex: "description", render: (e) => e || "—" },
50
+ {
51
+ title: "角色",
52
+ key: "roles",
53
+ render: (e, s) => (s.groupRoles || []).map((a) => {
54
+ var i;
55
+ return (i = a.role) == null ? void 0 : i.code;
56
+ }).filter(Boolean).join(", ") || "—"
57
+ },
58
+ {
59
+ title: "成员数",
60
+ key: "mc",
61
+ render: (e, s) => {
62
+ var a;
63
+ return ((a = s._count) == null ? void 0 : a.userGroups) ?? "—";
64
+ }
65
+ },
66
+ {
67
+ title: "操作",
68
+ key: "ops",
69
+ render: (e, s) => /* @__PURE__ */ y(q, { children: [
70
+ /* @__PURE__ */ r(
71
+ g,
72
+ {
73
+ type: "link",
74
+ size: "small",
75
+ onClick: () => {
76
+ k(s), p.setFieldsValue({
77
+ name: s.name,
78
+ description: s.description || ""
79
+ }), h(!0);
80
+ },
81
+ children: "编辑"
82
+ }
83
+ ),
84
+ /* @__PURE__ */ r(
85
+ g,
86
+ {
87
+ type: "link",
88
+ size: "small",
89
+ onClick: () => {
90
+ A(s), v([]), f(!0);
91
+ },
92
+ children: "成员"
93
+ }
94
+ ),
95
+ /* @__PURE__ */ r(
96
+ g,
97
+ {
98
+ type: "link",
99
+ size: "small",
100
+ danger: !0,
101
+ onClick: async () => {
102
+ try {
103
+ await t.deleteSharedGroup(s.id), o.success("已删除"), d();
104
+ } catch (a) {
105
+ o.error(a instanceof Error ? a.message : "删除失败(请先移除成员)");
106
+ }
107
+ },
108
+ children: "删除"
109
+ }
110
+ )
111
+ ] })
112
+ }
113
+ ]
114
+ }
115
+ ),
116
+ /* @__PURE__ */ r(
117
+ S,
118
+ {
119
+ open: $,
120
+ title: m ? "编辑共享组" : "新增共享组",
121
+ onCancel: () => h(!1),
122
+ onOk: async () => {
123
+ const e = await p.validateFields();
124
+ try {
125
+ m ? await t.updateSharedGroup(m.id, {
126
+ name: e.name,
127
+ description: e.description
128
+ }) : await t.createSharedGroup({
129
+ code: e.code,
130
+ name: e.name,
131
+ description: e.description,
132
+ roleIds: e.roleIds
133
+ }), o.success("已保存"), h(!1), d();
134
+ } catch (s) {
135
+ o.error(s instanceof Error ? s.message : "失败");
136
+ }
137
+ },
138
+ children: /* @__PURE__ */ y(c, { form: p, layout: "vertical", children: [
139
+ m ? null : /* @__PURE__ */ r(c.Item, { name: "code", label: "编码", rules: [{ required: !0 }], children: /* @__PURE__ */ r(b, {}) }),
140
+ /* @__PURE__ */ r(c.Item, { name: "name", label: "名称", rules: [{ required: !0 }], children: /* @__PURE__ */ r(b, {}) }),
141
+ /* @__PURE__ */ r(c.Item, { name: "description", label: "说明", children: /* @__PURE__ */ r(b.TextArea, { rows: 2 }) }),
142
+ m ? null : /* @__PURE__ */ r(c.Item, { name: "roleIds", label: "聚合角色", children: /* @__PURE__ */ r(
143
+ w,
144
+ {
145
+ mode: "multiple",
146
+ options: M.map((e) => ({ value: e.id, label: `${e.code} · ${e.name}` }))
147
+ }
148
+ ) })
149
+ ] })
150
+ }
151
+ ),
152
+ /* @__PURE__ */ r(
153
+ S,
154
+ {
155
+ open: z,
156
+ title: `成员 · ${(n == null ? void 0 : n.name) || ""}`,
157
+ onCancel: () => f(!1),
158
+ onOk: async () => {
159
+ if (!(!n || !u.length))
160
+ try {
161
+ await t.addSharedGroupMembers(n.id, u), o.success("已添加成员"), f(!1), d();
162
+ } catch (e) {
163
+ o.error(e instanceof Error ? e.message : "失败");
164
+ }
165
+ },
166
+ footer: (e, { OkBtn: s, CancelBtn: a }) => /* @__PURE__ */ y(j, { children: [
167
+ /* @__PURE__ */ r(
168
+ g,
169
+ {
170
+ danger: !0,
171
+ disabled: !u.length || !n,
172
+ onClick: async () => {
173
+ if (n)
174
+ try {
175
+ await t.removeSharedGroupMembers(n.id, u), o.success("已移除成员"), f(!1), d();
176
+ } catch (i) {
177
+ o.error(i instanceof Error ? i.message : "失败");
178
+ }
179
+ },
180
+ children: "移除所选"
181
+ }
182
+ ),
183
+ /* @__PURE__ */ r(a, {}),
184
+ /* @__PURE__ */ r(s, {})
185
+ ] }),
186
+ children: /* @__PURE__ */ r(
187
+ w,
188
+ {
189
+ mode: "multiple",
190
+ style: { width: "100%" },
191
+ value: u,
192
+ onChange: v,
193
+ options: O.map((e) => ({
194
+ value: e.id,
195
+ label: `${e.displayName} · ${e.employeeId}`
196
+ })),
197
+ placeholder: "选择用户后可添加或移除"
198
+ }
199
+ )
200
+ }
201
+ )
202
+ ] });
203
+ }
204
+ export {
205
+ H as default
206
+ };
207
+ //# sourceMappingURL=IamSharedGroupsPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IamSharedGroupsPage.js","sources":["../../../../src/components/Iam/pages/IamSharedGroupsPage.tsx"],"sourcesContent":["import { ModulePageShell } from '@/components/Layout';\nimport { Button, Form, Input, Modal, Select, Space, Table, message } from 'antd';\nimport { useCallback, useEffect, useMemo, useState } from 'react';\nimport type { IamClient } from '../client';\nimport type { IamRole, IamSharedGroup, IamUser } from '../types';\n\nexport type IamSharedGroupsPageProps = {\n client: IamClient;\n title?: string;\n};\n\nexport default function IamSharedGroupsPage({\n client,\n title = '共享组',\n}: IamSharedGroupsPageProps) {\n const [loading, setLoading] = useState(false);\n const [rows, setRows] = useState<IamSharedGroup[]>([]);\n const [roles, setRoles] = useState<IamRole[]>([]);\n const [users, setUsers] = useState<IamUser[]>([]);\n const [open, setOpen] = useState(false);\n const [editing, setEditing] = useState<IamSharedGroup | null>(null);\n const [memberOpen, setMemberOpen] = useState(false);\n const [active, setActive] = useState<IamSharedGroup | null>(null);\n const [memberIds, setMemberIds] = useState<string[]>([]);\n const [form] = Form.useForm();\n\n const load = useCallback(async () => {\n setLoading(true);\n try {\n const [g, r, u] = await Promise.all([\n client.listSharedGroups(),\n client.listRoles(),\n client.listUsers({ page: 1, pageSize: 100 }),\n ]);\n setRows(g);\n setRoles(r);\n setUsers(u.pageData.filter((x) => x.isActive));\n } catch (e) {\n message.error(e instanceof Error ? e.message : '加载失败');\n } finally {\n setLoading(false);\n }\n }, [client]);\n\n useEffect(() => {\n void load();\n }, [load]);\n\n const headerActions = useMemo(\n () => [\n {\n children: '新增共享组',\n type: 'primary' as const,\n onClick: () => {\n setEditing(null);\n form.resetFields();\n setOpen(true);\n },\n },\n ],\n [form],\n );\n\n return (\n <ModulePageShell title={title} actions={headerActions}>\n <Table\n rowKey=\"id\"\n loading={loading}\n dataSource={rows}\n columns={[\n { title: '名称', dataIndex: 'name' },\n { title: '编码', dataIndex: 'code' },\n { title: '说明', dataIndex: 'description', render: (v: string | null) => v || '—' },\n {\n title: '角色',\n key: 'roles',\n render: (_: unknown, r: IamSharedGroup) =>\n (r.groupRoles || [])\n .map((x) => x.role?.code)\n .filter(Boolean)\n .join(', ') || '—',\n },\n {\n title: '成员数',\n key: 'mc',\n render: (_: unknown, r: IamSharedGroup) => r._count?.userGroups ?? '—',\n },\n {\n title: '操作',\n key: 'ops',\n render: (_: unknown, r: IamSharedGroup) => (\n <Space>\n <Button\n type=\"link\"\n size=\"small\"\n onClick={() => {\n setEditing(r);\n form.setFieldsValue({\n name: r.name,\n description: r.description || '',\n });\n setOpen(true);\n }}\n >\n 编辑\n </Button>\n <Button\n type=\"link\"\n size=\"small\"\n onClick={() => {\n setActive(r);\n setMemberIds([]);\n setMemberOpen(true);\n }}\n >\n 成员\n </Button>\n <Button\n type=\"link\"\n size=\"small\"\n danger\n onClick={async () => {\n try {\n await client.deleteSharedGroup(r.id);\n message.success('已删除');\n void load();\n } catch (e) {\n message.error(e instanceof Error ? e.message : '删除失败(请先移除成员)');\n }\n }}\n >\n 删除\n </Button>\n </Space>\n ),\n },\n ]}\n />\n\n <Modal\n open={open}\n title={editing ? '编辑共享组' : '新增共享组'}\n onCancel={() => setOpen(false)}\n onOk={async () => {\n const values = await form.validateFields();\n try {\n if (editing) {\n await client.updateSharedGroup(editing.id, {\n name: values.name,\n description: values.description,\n });\n } else {\n await client.createSharedGroup({\n code: values.code,\n name: values.name,\n description: values.description,\n roleIds: values.roleIds,\n });\n }\n message.success('已保存');\n setOpen(false);\n void load();\n } catch (e) {\n message.error(e instanceof Error ? e.message : '失败');\n }\n }}\n >\n <Form form={form} layout=\"vertical\">\n {!editing ? (\n <Form.Item name=\"code\" label=\"编码\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n ) : null}\n <Form.Item name=\"name\" label=\"名称\" rules={[{ required: true }]}>\n <Input />\n </Form.Item>\n <Form.Item name=\"description\" label=\"说明\">\n <Input.TextArea rows={2} />\n </Form.Item>\n {!editing ? (\n <Form.Item name=\"roleIds\" label=\"聚合角色\">\n <Select\n mode=\"multiple\"\n options={roles.map((r) => ({ value: r.id, label: `${r.code} · ${r.name}` }))}\n />\n </Form.Item>\n ) : null}\n </Form>\n </Modal>\n\n <Modal\n open={memberOpen}\n title={`成员 · ${active?.name || ''}`}\n onCancel={() => setMemberOpen(false)}\n onOk={async () => {\n if (!active || !memberIds.length) return;\n try {\n await client.addSharedGroupMembers(active.id, memberIds);\n message.success('已添加成员');\n setMemberOpen(false);\n void load();\n } catch (e) {\n message.error(e instanceof Error ? e.message : '失败');\n }\n }}\n footer={(_, { OkBtn, CancelBtn }) => (\n <>\n <Button\n danger\n disabled={!memberIds.length || !active}\n onClick={async () => {\n if (!active) return;\n try {\n await client.removeSharedGroupMembers(active.id, memberIds);\n message.success('已移除成员');\n setMemberOpen(false);\n void load();\n } catch (e) {\n message.error(e instanceof Error ? e.message : '失败');\n }\n }}\n >\n 移除所选\n </Button>\n <CancelBtn />\n <OkBtn />\n </>\n )}\n >\n <Select\n mode=\"multiple\"\n style={{ width: '100%' }}\n value={memberIds}\n onChange={setMemberIds}\n options={users.map((u) => ({\n value: u.id,\n label: `${u.displayName} · ${u.employeeId}`,\n }))}\n placeholder=\"选择用户后可添加或移除\"\n />\n </Modal>\n </ModulePageShell>\n );\n}\n"],"names":["IamSharedGroupsPage","client","title","loading","setLoading","useState","rows","setRows","roles","setRoles","users","setUsers","open","setOpen","editing","setEditing","memberOpen","setMemberOpen","active","setActive","memberIds","setMemberIds","form","Form","load","useCallback","g","r","u","x","message","useEffect","headerActions","useMemo","jsxs","ModulePageShell","jsx","Table","v","_","_a","Space","Button","e","Modal","values","Input","Select","OkBtn","CancelBtn","Fragment"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { PermissionBindCatalog } from '../../PermissionBindPanel';
2
+ import { IamClient } from '../client';
3
+ export type IamUsersPageProps = {
4
+ client: IamClient;
5
+ catalog: PermissionBindCatalog;
6
+ systemEntryCodes: readonly string[];
7
+ tableName?: string;
8
+ title?: string;
9
+ };
10
+ export default function IamUsersPage({ client, catalog, systemEntryCodes, tableName, title, }: IamUsersPageProps): import("react").JSX.Element;