@pisell/private-materials 6.6.28 → 6.6.30

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 (196) hide show
  1. package/build/lowcode/assets-daily.json +11 -11
  2. package/build/lowcode/assets-dev.json +2 -2
  3. package/build/lowcode/assets-prod.json +11 -11
  4. package/build/lowcode/index.js +1 -1
  5. package/build/lowcode/meta.js +2 -2
  6. package/build/lowcode/preview.js +7 -7
  7. package/build/lowcode/render/default/view.css +1 -1
  8. package/build/lowcode/render/default/view.js +8 -8
  9. package/build/lowcode/view.css +1 -1
  10. package/build/lowcode/view.js +9 -9
  11. package/es/components/booking/forms/sendModal/useSendModal.d.ts +0 -1
  12. package/es/components/booking/info/clientVariant/hooks/useIsLowSpeedNetwork.d.ts +0 -1
  13. package/es/components/booking/info/hooks/useInfoHolder.d.ts +0 -1
  14. package/es/components/booking/info/service2/utils.d.ts +1 -1
  15. package/es/components/eftpos/hooks.d.ts +0 -1
  16. package/es/components/eftposPay/amount.d.ts +1 -1
  17. package/es/components/eftposPay/device.d.ts +1 -1
  18. package/es/components/eftposPay/hooks.d.ts +2 -2
  19. package/es/components/eftposPay/store/index.d.ts +5 -5
  20. package/es/components/eftposPay/tyro/hooks.d.ts +0 -1
  21. package/es/components/eventBooking/components/ErrorTip/index.d.ts +0 -1
  22. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateStatus/index.d.ts +0 -1
  23. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/CallToBook/index.d.ts +0 -1
  24. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/WeekItem/index.d.ts +0 -1
  25. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/index.d.ts +0 -1
  26. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/DayItem/index.d.ts +0 -1
  27. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.d.ts +0 -1
  28. package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Status/index.d.ts +0 -1
  29. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/Finish/index.d.ts +0 -1
  30. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/index.d.ts +0 -1
  31. package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/components/PageLoading/index.d.ts +0 -1
  32. package/es/components/shoppingCart/components/Empty/index.d.ts +0 -1
  33. package/es/components/ticketBooking/utils/index.d.ts +1 -1
  34. package/es/hooks/usePaymentLogger.d.ts +0 -1
  35. package/es/index.d.ts +4 -0
  36. package/es/index.js +4 -1
  37. package/es/plus/productSelect/ProductCard/SkuCard/components/Capacity/index.d.ts +1 -1
  38. package/es/plus/productSelect/ProductCard/SkuCard/components/CardMask/index.d.ts +1 -1
  39. package/es/plus/productSelect/ProductCard/SkuCard/components/Countdown/index.d.ts +1 -1
  40. package/es/plus/productSelect/ProductCard/SkuCard/components/Duration/index.d.ts +1 -1
  41. package/es/plus/productSelect/ProductCard/SkuCard/components/MemberPrice/index.d.ts +1 -1
  42. package/es/plus/productSelect/ProductCard/SkuCard/components/Resource/index.d.ts +1 -1
  43. package/es/plus/productSelect/ProductCard/SkuCard/components/Stock/index.d.ts +1 -1
  44. package/es/plus/productSelect/ProductCard/SkuCard/components/Time/index.d.ts +1 -1
  45. package/es/plus/saasAttendance/index.d.ts +6 -0
  46. package/es/plus/saasAttendance/index.js +5 -0
  47. package/es/plus/saasAttendance/locales.d.ts +318 -0
  48. package/es/plus/saasAttendance/locales.js +354 -0
  49. package/es/plus/saasAttendance/settings/BasicInfoTab.d.ts +5 -0
  50. package/es/plus/saasAttendance/settings/BasicInfoTab.js +96 -0
  51. package/es/plus/saasAttendance/settings/ClockInMethodTab.d.ts +8 -0
  52. package/es/plus/saasAttendance/settings/ClockInMethodTab.js +81 -0
  53. package/es/plus/saasAttendance/settings/CorrectionPolicyTab.d.ts +8 -0
  54. package/es/plus/saasAttendance/settings/CorrectionPolicyTab.js +293 -0
  55. package/es/plus/saasAttendance/settings/ShiftScheduleTab.d.ts +5 -0
  56. package/es/plus/saasAttendance/settings/ShiftScheduleTab.js +109 -0
  57. package/es/plus/saasAttendance/settings/components/MapField.d.ts +78 -0
  58. package/es/plus/saasAttendance/settings/components/MapField.js +810 -0
  59. package/es/plus/saasAttendance/settings/components/index.d.ts +3 -0
  60. package/es/plus/saasAttendance/settings/components/index.js +2 -0
  61. package/es/plus/saasAttendance/settings/components/membersField/index.d.ts +8 -0
  62. package/es/plus/saasAttendance/settings/components/membersField/index.js +216 -0
  63. package/es/plus/saasAttendance/settings/components/membersField/index.less +70 -0
  64. package/es/plus/saasAttendance/settings/components/shiftModal/index.d.ts +18 -0
  65. package/es/plus/saasAttendance/settings/components/shiftModal/index.js +438 -0
  66. package/es/plus/saasAttendance/settings/index.d.ts +18 -0
  67. package/es/plus/saasAttendance/settings/index.js +255 -0
  68. package/es/plus/saasAttendance/settings/index.less +495 -0
  69. package/es/plus/saasAttendance/settings/serve.d.ts +27 -0
  70. package/es/plus/saasAttendance/settings/serve.js +83 -0
  71. package/es/plus/saasAttendance/settings/types.d.ts +128 -0
  72. package/es/plus/saasAttendance/settings/types.js +1 -0
  73. package/es/plus/saasRole/components/PermissionManager/index.d.ts +19 -0
  74. package/es/plus/saasRole/components/PermissionManager/index.js +211 -0
  75. package/es/plus/saasRole/components/PermissionManager/index.less +71 -0
  76. package/es/plus/saasRole/index.d.ts +14 -0
  77. package/es/plus/saasRole/index.js +1036 -0
  78. package/es/plus/saasRole/index.less +196 -0
  79. package/es/plus/saasRole/locales.d.ts +193 -0
  80. package/es/plus/saasRole/locales.js +193 -0
  81. package/es/plus/saasRole/serve.d.ts +72 -0
  82. package/es/plus/saasRole/serve.js +304 -0
  83. package/es/plus/saasRole/types.d.ts +175 -0
  84. package/es/plus/saasRole/types.js +1 -0
  85. package/es/plus/saasRole/utils.d.ts +0 -0
  86. package/es/plus/saasRole/utils.js +0 -0
  87. package/es/plus/saasTeamMembers/components/MemberDrawer/ExtensionFormTabContent.d.ts +31 -0
  88. package/es/plus/saasTeamMembers/components/MemberDrawer/ExtensionFormTabContent.js +503 -0
  89. package/es/plus/saasTeamMembers/components/MemberDrawer/index.d.ts +23 -0
  90. package/es/plus/saasTeamMembers/components/MemberDrawer/index.js +634 -0
  91. package/es/plus/saasTeamMembers/components/MemberDrawer/index.less +178 -0
  92. package/es/plus/saasTeamMembers/index.d.ts +5 -0
  93. package/es/plus/saasTeamMembers/index.js +529 -0
  94. package/es/plus/saasTeamMembers/index.less +87 -0
  95. package/es/plus/saasTeamMembers/locales.d.ts +330 -0
  96. package/es/plus/saasTeamMembers/locales.js +375 -0
  97. package/es/plus/saasTeamMembers/serve.d.ts +95 -0
  98. package/es/plus/saasTeamMembers/serve.js +374 -0
  99. package/es/plus/saasTeamMembers/type.d.ts +156 -0
  100. package/es/plus/saasTeamMembers/type.js +1 -0
  101. package/es/plus/selectHolder/components/ErrorTip/index.d.ts +0 -1
  102. package/lib/components/booking/forms/sendModal/useSendModal.d.ts +0 -1
  103. package/lib/components/booking/info/clientVariant/hooks/useIsLowSpeedNetwork.d.ts +0 -1
  104. package/lib/components/booking/info/hooks/useInfoHolder.d.ts +0 -1
  105. package/lib/components/booking/info/service2/utils.d.ts +1 -1
  106. package/lib/components/eftpos/hooks.d.ts +0 -1
  107. package/lib/components/eftposPay/amount.d.ts +1 -1
  108. package/lib/components/eftposPay/device.d.ts +1 -1
  109. package/lib/components/eftposPay/hooks.d.ts +2 -2
  110. package/lib/components/eftposPay/store/index.d.ts +5 -5
  111. package/lib/components/eftposPay/tyro/hooks.d.ts +0 -1
  112. package/lib/components/eventBooking/components/ErrorTip/index.d.ts +0 -1
  113. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateStatus/index.d.ts +0 -1
  114. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/CallToBook/index.d.ts +0 -1
  115. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/WeekItem/index.d.ts +0 -1
  116. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/index.d.ts +0 -1
  117. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/DayItem/index.d.ts +0 -1
  118. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.d.ts +0 -1
  119. package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Status/index.d.ts +0 -1
  120. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/Finish/index.d.ts +0 -1
  121. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/index.d.ts +0 -1
  122. package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/components/PageLoading/index.d.ts +0 -1
  123. package/lib/components/shoppingCart/components/Empty/index.d.ts +0 -1
  124. package/lib/components/ticketBooking/utils/index.d.ts +1 -1
  125. package/lib/hooks/usePaymentLogger.d.ts +0 -1
  126. package/lib/index.d.ts +4 -0
  127. package/lib/index.js +9 -0
  128. package/lib/plus/productSelect/ProductCard/SkuCard/components/Capacity/index.d.ts +1 -1
  129. package/lib/plus/productSelect/ProductCard/SkuCard/components/CardMask/index.d.ts +1 -1
  130. package/lib/plus/productSelect/ProductCard/SkuCard/components/Countdown/index.d.ts +1 -1
  131. package/lib/plus/productSelect/ProductCard/SkuCard/components/Duration/index.d.ts +1 -1
  132. package/lib/plus/productSelect/ProductCard/SkuCard/components/MemberPrice/index.d.ts +1 -1
  133. package/lib/plus/productSelect/ProductCard/SkuCard/components/Resource/index.d.ts +1 -1
  134. package/lib/plus/productSelect/ProductCard/SkuCard/components/Stock/index.d.ts +1 -1
  135. package/lib/plus/productSelect/ProductCard/SkuCard/components/Time/index.d.ts +1 -1
  136. package/lib/plus/saasAttendance/index.d.ts +6 -0
  137. package/lib/plus/saasAttendance/index.js +39 -0
  138. package/lib/plus/saasAttendance/locales.d.ts +318 -0
  139. package/lib/plus/saasAttendance/locales.js +342 -0
  140. package/lib/plus/saasAttendance/settings/BasicInfoTab.d.ts +5 -0
  141. package/lib/plus/saasAttendance/settings/BasicInfoTab.js +152 -0
  142. package/lib/plus/saasAttendance/settings/ClockInMethodTab.d.ts +8 -0
  143. package/lib/plus/saasAttendance/settings/ClockInMethodTab.js +88 -0
  144. package/lib/plus/saasAttendance/settings/CorrectionPolicyTab.d.ts +8 -0
  145. package/lib/plus/saasAttendance/settings/CorrectionPolicyTab.js +369 -0
  146. package/lib/plus/saasAttendance/settings/ShiftScheduleTab.d.ts +5 -0
  147. package/lib/plus/saasAttendance/settings/ShiftScheduleTab.js +106 -0
  148. package/lib/plus/saasAttendance/settings/components/MapField.d.ts +78 -0
  149. package/lib/plus/saasAttendance/settings/components/MapField.js +631 -0
  150. package/lib/plus/saasAttendance/settings/components/index.d.ts +3 -0
  151. package/lib/plus/saasAttendance/settings/components/index.js +42 -0
  152. package/lib/plus/saasAttendance/settings/components/membersField/index.d.ts +8 -0
  153. package/lib/plus/saasAttendance/settings/components/membersField/index.js +247 -0
  154. package/lib/plus/saasAttendance/settings/components/membersField/index.less +70 -0
  155. package/lib/plus/saasAttendance/settings/components/shiftModal/index.d.ts +18 -0
  156. package/lib/plus/saasAttendance/settings/components/shiftModal/index.js +447 -0
  157. package/lib/plus/saasAttendance/settings/index.d.ts +18 -0
  158. package/lib/plus/saasAttendance/settings/index.js +283 -0
  159. package/lib/plus/saasAttendance/settings/index.less +495 -0
  160. package/lib/plus/saasAttendance/settings/serve.d.ts +27 -0
  161. package/lib/plus/saasAttendance/settings/serve.js +54 -0
  162. package/lib/plus/saasAttendance/settings/types.d.ts +128 -0
  163. package/lib/plus/saasAttendance/settings/types.js +17 -0
  164. package/lib/plus/saasRole/components/PermissionManager/index.d.ts +19 -0
  165. package/lib/plus/saasRole/components/PermissionManager/index.js +159 -0
  166. package/lib/plus/saasRole/components/PermissionManager/index.less +71 -0
  167. package/lib/plus/saasRole/index.d.ts +14 -0
  168. package/lib/plus/saasRole/index.js +780 -0
  169. package/lib/plus/saasRole/index.less +196 -0
  170. package/lib/plus/saasRole/locales.d.ts +193 -0
  171. package/lib/plus/saasRole/locales.js +219 -0
  172. package/lib/plus/saasRole/serve.d.ts +72 -0
  173. package/lib/plus/saasRole/serve.js +100 -0
  174. package/lib/plus/saasRole/types.d.ts +175 -0
  175. package/lib/plus/saasRole/types.js +17 -0
  176. package/lib/plus/saasRole/utils.d.ts +0 -0
  177. package/lib/plus/saasRole/utils.js +0 -0
  178. package/lib/plus/saasTeamMembers/components/MemberDrawer/ExtensionFormTabContent.d.ts +31 -0
  179. package/lib/plus/saasTeamMembers/components/MemberDrawer/ExtensionFormTabContent.js +393 -0
  180. package/lib/plus/saasTeamMembers/components/MemberDrawer/index.d.ts +23 -0
  181. package/lib/plus/saasTeamMembers/components/MemberDrawer/index.js +672 -0
  182. package/lib/plus/saasTeamMembers/components/MemberDrawer/index.less +178 -0
  183. package/lib/plus/saasTeamMembers/index.d.ts +5 -0
  184. package/lib/plus/saasTeamMembers/index.js +448 -0
  185. package/lib/plus/saasTeamMembers/index.less +87 -0
  186. package/lib/plus/saasTeamMembers/locales.d.ts +330 -0
  187. package/lib/plus/saasTeamMembers/locales.js +401 -0
  188. package/lib/plus/saasTeamMembers/serve.d.ts +95 -0
  189. package/lib/plus/saasTeamMembers/serve.js +132 -0
  190. package/lib/plus/saasTeamMembers/type.d.ts +156 -0
  191. package/lib/plus/saasTeamMembers/type.js +17 -0
  192. package/lib/plus/selectHolder/components/ErrorTip/index.d.ts +0 -1
  193. package/lowcode/saas-attendance-settings/meta.ts +56 -0
  194. package/lowcode/saas-role/meta.ts +35 -0
  195. package/lowcode/saas-team-members/meta.ts +35 -0
  196. package/package.json +4 -4
@@ -0,0 +1,128 @@
1
+ /**
2
+ * 多语言名称
3
+ */
4
+ export interface MultiLangName {
5
+ en?: string;
6
+ 'zh-CN'?: string;
7
+ 'zh-HK'?: string;
8
+ original?: string;
9
+ }
10
+ /**
11
+ * 未排班时的打卡规则
12
+ * - anytime: 随时打卡
13
+ * - business_hours: 正常上下班(按照店铺营业时间打卡)
14
+ * - select_shift: 自选班次(员工需先选班次后打卡)
15
+ */
16
+ export declare type NoShiftPolicy = 'anytime' | 'business_hours' | 'select_shift';
17
+ /**
18
+ * 考勤规则
19
+ */
20
+ export interface AttendanceRule {
21
+ no_shift_policy: NoShiftPolicy;
22
+ }
23
+ /**
24
+ * 考勤地点
25
+ */
26
+ export interface AttendanceLocation {
27
+ id: string;
28
+ name: MultiLangName;
29
+ radius?: number;
30
+ address: {
31
+ lat: number;
32
+ lng: number;
33
+ };
34
+ }
35
+ /**
36
+ * 考勤地点配置
37
+ */
38
+ export interface AttendancePlace {
39
+ radius: number;
40
+ location: AttendanceLocation[];
41
+ }
42
+ /**
43
+ * 补卡类型
44
+ * - normal: 正常
45
+ * - late: 迟到
46
+ * - early_leave: 早退
47
+ * - missing: 缺卡
48
+ */
49
+ export declare type CorrectionType = 'normal' | 'late' | 'early_leave' | 'missing';
50
+ /**
51
+ * 补卡周期类型
52
+ * - natural_month: 自然月
53
+ * - custom: 自定义周期
54
+ */
55
+ export declare type FrequencyType = 'natural_month' | 'custom';
56
+ /**
57
+ * 补卡配置
58
+ */
59
+ export interface AttendanceCorrection {
60
+ allow: boolean;
61
+ types: CorrectionType[];
62
+ approver_ids: number[];
63
+ days_limit: number;
64
+ monthly_times: number;
65
+ period_type: FrequencyType;
66
+ period_custom: number | null;
67
+ }
68
+ /**
69
+ * 考勤组设置值 - 完整的API数据结构
70
+ */
71
+ export interface AttendanceGroupSettingsValue {
72
+ id?: number;
73
+ name: MultiLangName;
74
+ timezone: string;
75
+ rule: AttendanceRule;
76
+ place: AttendancePlace;
77
+ member_ids: number[];
78
+ correction: AttendanceCorrection;
79
+ creator_type?: string;
80
+ creator_id?: number;
81
+ editor_type?: string;
82
+ editor_id?: number;
83
+ created_at?: string;
84
+ updated_at?: string;
85
+ }
86
+ /**
87
+ * 基本信息Tab的值
88
+ */
89
+ export interface BasicInfoTabValue {
90
+ name: MultiLangName;
91
+ timezone: string;
92
+ member_ids: number[];
93
+ }
94
+ /**
95
+ * 排班规则Tab的值
96
+ */
97
+ export interface ShiftScheduleTabValue {
98
+ rule: AttendanceRule;
99
+ }
100
+ /**
101
+ * 打卡方式Tab的值
102
+ */
103
+ export interface ClockInMethodTabValue {
104
+ place: AttendancePlace;
105
+ }
106
+ /**
107
+ * 补卡规则Tab的值
108
+ */
109
+ export interface CorrectionPolicyTabValue {
110
+ correction: AttendanceCorrection;
111
+ }
112
+ export declare type AttendanceGroupSettingsSection = 'basic' | 'shift' | 'clock' | 'correction';
113
+ export interface TenantAccount {
114
+ account?: {
115
+ id: number;
116
+ email: string;
117
+ avatar: string;
118
+ };
119
+ account_id: number;
120
+ created_at: string;
121
+ id: number;
122
+ member_id: string;
123
+ nickname: string;
124
+ status: 'active' | 'inactive';
125
+ tenant_id: number;
126
+ type: 'founder' | 'staff';
127
+ updated_at: string;
128
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ import React from 'react';
2
+ import type { AvailablePermissions, MultiLanguage } from '../../types';
3
+ import './index.less';
4
+ export interface PermissionManagerProps {
5
+ /** 可用的权限对象 (包含多种类型: channel, pageType, app, systemManagement等) */
6
+ availablePermissions: AvailablePermissions;
7
+ /** 当前角色的权限数组 */
8
+ currentPermissions: string[];
9
+ /** 权限改变回调 */
10
+ onChange: (permissions: string[]) => void;
11
+ /** 获取多语言文本 */
12
+ getLocaleText: (text: MultiLanguage | string | undefined) => string;
13
+ /** 获取翻译文本 */
14
+ getText: (key: string) => string;
15
+ /** 是否正在更新角色权限 */
16
+ updating: boolean;
17
+ }
18
+ declare const PermissionManager: React.FC<PermissionManagerProps>;
19
+ export default PermissionManager;
@@ -0,0 +1,211 @@
1
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
2
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
4
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
5
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
6
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
7
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
8
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
9
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t.return && (u = t.return(), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
10
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
11
+ import React, { useState, useEffect, useMemo } from 'react';
12
+ import { Checkbox, Empty, Button } from 'antd';
13
+ import { Icon } from '@pisell/materials';
14
+ import "./index.less";
15
+ // 权限类型的配置映射
16
+ var PERMISSION_TYPE_CONFIG = {
17
+ channel: {
18
+ titleKey: 'pisell2.saas.role.channels',
19
+ descriptionKey: 'pisell2.saas.role.control-access-channels',
20
+ prefix: 'channel:'
21
+ },
22
+ pageType: {
23
+ titleKey: 'pisell2.saas.role.page-types',
24
+ descriptionKey: 'pisell2.saas.role.control-access-page-types',
25
+ prefix: 'page:'
26
+ },
27
+ app: {
28
+ titleKey: 'pisell2.saas.role.apps',
29
+ descriptionKey: 'pisell2.saas.role.control-access-apps',
30
+ prefix: 'app:'
31
+ },
32
+ systemManagement: {
33
+ titleKey: 'pisell2.saas.role.system-management',
34
+ descriptionKey: 'pisell2.saas.role.control-system-operations',
35
+ prefix: 'system:'
36
+ }
37
+ };
38
+ var PermissionManager = function PermissionManager(_ref) {
39
+ var availablePermissions = _ref.availablePermissions,
40
+ currentPermissions = _ref.currentPermissions,
41
+ onChange = _ref.onChange,
42
+ getLocaleText = _ref.getLocaleText,
43
+ getText = _ref.getText,
44
+ updating = _ref.updating;
45
+ // 本地状态管理选中的权限
46
+ var _useState = useState([]),
47
+ _useState2 = _slicedToArray(_useState, 2),
48
+ selectedPermissions = _useState2[0],
49
+ setSelectedPermissions = _useState2[1];
50
+ console.log('selectedPermissions', selectedPermissions);
51
+ // 获取所有可用权限类型及其数据
52
+ var permissionTypes = useMemo(function () {
53
+ if (!availablePermissions) return [];
54
+ return Object.keys(availablePermissions).filter(function (key) {
55
+ var _availablePermissions;
56
+ return ((_availablePermissions = availablePermissions[key]) === null || _availablePermissions === void 0 ? void 0 : _availablePermissions.length) > 0;
57
+ }).map(function (key) {
58
+ return {
59
+ type: key,
60
+ items: availablePermissions[key],
61
+ config: PERMISSION_TYPE_CONFIG[key] || {
62
+ titleKey: key,
63
+ descriptionKey: "Control access to ".concat(key),
64
+ prefix: "".concat(key, ":")
65
+ }
66
+ };
67
+ });
68
+ }, [availablePermissions]);
69
+
70
+ // 当 currentPermissions 改变时,更新本地状态
71
+ useEffect(function () {
72
+ if (currentPermissions.includes('*')) {
73
+ // 处理 ["*"] 全权限的情况 - 选中所有可用权限
74
+ var allPermissions = permissionTypes.flatMap(function (pt) {
75
+ return pt.items.map(function (item) {
76
+ return item.code;
77
+ });
78
+ });
79
+ setSelectedPermissions(allPermissions);
80
+ } else {
81
+ // 过滤出所有已知类型的权限
82
+ var knownPrefixes = permissionTypes.map(function (pt) {
83
+ return pt.config.prefix;
84
+ });
85
+ var relevantPermissions = currentPermissions.filter(function (p) {
86
+ return knownPrefixes.some(function (prefix) {
87
+ return p.startsWith(prefix);
88
+ }) || p.includes(':');
89
+ });
90
+ setSelectedPermissions(relevantPermissions);
91
+ }
92
+ }, [currentPermissions, permissionTypes]);
93
+
94
+ // 判断某个类型是否全选
95
+ var isTypeAllSelected = function isTypeAllSelected(items) {
96
+ return items.length > 0 && items.every(function (item) {
97
+ return selectedPermissions.includes(item.code);
98
+ });
99
+ };
100
+
101
+ // 处理某个类型的全选/取消全选
102
+ var handleTypeSelectAll = function handleTypeSelectAll(items, checked) {
103
+ var itemCodes = items.map(function (item) {
104
+ return item.code;
105
+ });
106
+ if (checked) {
107
+ // 添加该类型的所有权限
108
+ var newPermissions = _toConsumableArray(selectedPermissions);
109
+ itemCodes.forEach(function (code) {
110
+ if (!newPermissions.includes(code)) {
111
+ newPermissions.push(code);
112
+ }
113
+ });
114
+ setSelectedPermissions(newPermissions);
115
+ } else {
116
+ // 移除该类型的所有权限
117
+ setSelectedPermissions(selectedPermissions.filter(function (p) {
118
+ return !itemCodes.includes(p);
119
+ }));
120
+ }
121
+ };
122
+
123
+ // 处理单个权限勾选
124
+ var handlePermissionChange = function handlePermissionChange(code, checked) {
125
+ if (checked) {
126
+ setSelectedPermissions([].concat(_toConsumableArray(selectedPermissions), [code]));
127
+ } else {
128
+ setSelectedPermissions(selectedPermissions.filter(function (p) {
129
+ return p !== code;
130
+ }));
131
+ }
132
+ };
133
+
134
+ // 保存权限
135
+ var handleSave = function handleSave() {
136
+ // 获取所有已知权限前缀
137
+ var knownPrefixes = permissionTypes.map(function (pt) {
138
+ return pt.config.prefix;
139
+ });
140
+
141
+ // 保留不在已知类型中的其他权限(如果有的话)
142
+ var otherPermissions = currentPermissions.filter(function (p) {
143
+ return !knownPrefixes.some(function (prefix) {
144
+ return p.startsWith(prefix);
145
+ }) && p !== '*';
146
+ });
147
+
148
+ // 合并其他权限和当前选中的权限
149
+ var finalPermissions = [].concat(_toConsumableArray(otherPermissions), _toConsumableArray(selectedPermissions));
150
+ onChange(finalPermissions);
151
+ };
152
+ if (!permissionTypes || permissionTypes.length === 0) {
153
+ return /*#__PURE__*/React.createElement(Empty, {
154
+ description: getText('pisell2.saas.role.no-permissions')
155
+ });
156
+ }
157
+ return /*#__PURE__*/React.createElement("div", {
158
+ className: "permission-manager"
159
+ }, /*#__PURE__*/React.createElement("div", {
160
+ className: "permission-sections-container"
161
+ }, permissionTypes.map(function (_ref2) {
162
+ var type = _ref2.type,
163
+ items = _ref2.items,
164
+ config = _ref2.config;
165
+ var isAllSelected = isTypeAllSelected(items);
166
+ return /*#__PURE__*/React.createElement("div", {
167
+ key: type,
168
+ className: "permission-section"
169
+ }, /*#__PURE__*/React.createElement("div", {
170
+ className: "permission-section-title"
171
+ }, /*#__PURE__*/React.createElement("h4", null, getText(config.titleKey)), /*#__PURE__*/React.createElement("p", null, getText(config.descriptionKey))), /*#__PURE__*/React.createElement("div", {
172
+ className: "permission-section-content"
173
+ }, /*#__PURE__*/React.createElement("div", {
174
+ className: "permission-section-actions"
175
+ }, /*#__PURE__*/React.createElement(Button, {
176
+ size: "small",
177
+ type: "text",
178
+ icon: isAllSelected ? /*#__PURE__*/React.createElement(Icon, {
179
+ type: "pisell2-square"
180
+ }) : /*#__PURE__*/React.createElement(Icon, {
181
+ type: "pisell2-check-square-broken"
182
+ }),
183
+ style: {
184
+ padding: 0,
185
+ fontSize: 12
186
+ },
187
+ onClick: function onClick() {
188
+ return handleTypeSelectAll(items, !isAllSelected);
189
+ }
190
+ }, isAllSelected ? getText('pisell2.saas.role.clear-all') : getText('pisell2.saas.role.select-all'))), /*#__PURE__*/React.createElement("div", {
191
+ className: "permission-items"
192
+ }, items.map(function (item) {
193
+ return /*#__PURE__*/React.createElement("div", {
194
+ key: item.code,
195
+ className: "permission-item"
196
+ }, /*#__PURE__*/React.createElement(Checkbox, {
197
+ checked: selectedPermissions.includes(item.code),
198
+ onChange: function onChange(e) {
199
+ return handlePermissionChange(item.code, e.target.checked);
200
+ }
201
+ }, getLocaleText(item.name)));
202
+ }))));
203
+ })), /*#__PURE__*/React.createElement("div", {
204
+ className: "permission-manager-footer"
205
+ }, /*#__PURE__*/React.createElement(Button, {
206
+ type: "primary",
207
+ onClick: handleSave,
208
+ loading: updating
209
+ }, getText('pisell2.saas.role.save'))));
210
+ };
211
+ export default PermissionManager;
@@ -0,0 +1,71 @@
1
+ .permission-manager {
2
+ display: flex;
3
+ flex-direction: column;
4
+ height: 100%;
5
+
6
+ .permission-sections-container {
7
+ flex: 1;
8
+ overflow-y: auto;
9
+ padding: 24px;
10
+ border: 1px solid #f0f0f0;
11
+ border-radius: 8px;
12
+ margin-bottom: 24px;
13
+ }
14
+
15
+ .permission-section {
16
+ margin-bottom: 32px;
17
+ display: flex;
18
+ gap: 16px;
19
+
20
+ &:last-child {
21
+ margin-bottom: 0;
22
+ }
23
+
24
+ .permission-section-title {
25
+ width: 40%;
26
+
27
+ h4 {
28
+ margin: 0 0 8px 0;
29
+ font-size: 16px;
30
+ font-weight: 600;
31
+ color: #262626;
32
+ }
33
+
34
+ p {
35
+ margin: 0px;
36
+ font-size: 14px;
37
+ color: #8c8c8c;
38
+ }
39
+ }
40
+
41
+ .permission-section-content {
42
+ width: 60%;
43
+ }
44
+
45
+ .permission-section-actions {
46
+ display: flex;
47
+ justify-content: flex-end;
48
+ }
49
+
50
+ .permission-items {
51
+ display: grid;
52
+ grid-template-columns: repeat(2, 1fr);
53
+ gap: 16px;
54
+ margin-top: 4px;
55
+ }
56
+ }
57
+
58
+ .permission-manager-footer {
59
+ padding: 16px 24px;
60
+ background: #fff;
61
+ text-align: right;
62
+ }
63
+ }
64
+
65
+ @media (max-width: 768px) {
66
+ .permission-manager {
67
+ .permission-items {
68
+ grid-template-columns: 1fr;
69
+ }
70
+ }
71
+ }
@@ -0,0 +1,14 @@
1
+ import React from 'react';
2
+ import type { SaasRoleProps } from './types';
3
+ import './index.less';
4
+ /**
5
+ * SaasRole 角色管理组件
6
+ *
7
+ * 提供完整的角色管理功能,包括:
8
+ * - 角色的创建、编辑、删除
9
+ * - 角色成员管理
10
+ * - 角色权限配置
11
+ * - 角色字段配置
12
+ */
13
+ declare const SaasRole: React.FC<SaasRoleProps>;
14
+ export default SaasRole;