@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,354 @@
1
+ export default {
2
+ en: {
3
+ 'pisell2.attendance.group-settings.title': 'Attendance Group Settings',
4
+ 'pisell2.attendance.group-settings.sub-title': 'Configure attendance rules, clock-in methods, and correction policies',
5
+ // 基本信息
6
+ 'pisell2.attendance.group-settings.basic-info': 'Basic Info',
7
+ 'pisell2.attendance.group-settings.basic-info.label.name': 'Group Name',
8
+ 'pisell2.attendance.group-settings.basic-info.name-tip': 'e.g., Headquarters Staff, Store A Team',
9
+ 'pisell2.attendance.group-settings.basic-info.name-required': 'Please enter the group name',
10
+ 'pisell2.attendance.group-settings.basic-info.name-max-length': function pisell2AttendanceGroupSettingsBasicInfoNameMaxLength(len) {
11
+ return "Maximum ".concat(len, " characters");
12
+ },
13
+ 'pisell2.attendance.group-settings.basic-info.label.time-zone': 'Time Zone',
14
+ 'pisell2.attendance.group-settings.basic-info.time-zone-tip': 'Important, Time zone cannot be changed after group creation',
15
+ 'pisell2.attendance.group-settings.basic-info.label.members': 'Team Members',
16
+ 'pisell2.attendance.group-settings.basic-info.add-members': 'Add Members',
17
+ 'pisell2.attendance.group-settings.basic-info.members-count': function pisell2AttendanceGroupSettingsBasicInfoMembersCount(count) {
18
+ return "".concat(count, " members selected");
19
+ },
20
+ 'pisell2.attendance.group-settings.basic-info.members-tip': 'Each employee can only belong to one attendance group at a time',
21
+ 'pisell2.attendance.group-settings.basic-info.members-required': 'Please select at least one member',
22
+ 'pisell2.attendance.group-settings.basic-info.members-drawer.title': 'Select Members',
23
+ 'pisell2.attendance.group-settings.basic-info.members-drawer.columns.name': 'Name',
24
+ 'pisell2.attendance.group-settings.basic-info.members-drawer.columns.email': 'Email',
25
+ 'pisell2.attendance.group-settings.shift-schedule': 'Shift Schedule',
26
+ 'pisell2.attendance.group-settings.clock-in-method': 'Clock-in Method',
27
+ 'pisell2.attendance.group-settings.correction-policy': 'Correction Policy',
28
+ 'pisell2.attendance.group-settings.actions.search': 'Search',
29
+ 'pisell2.attendance.group-settings.actions.cancel': 'Cancel',
30
+ 'pisell2.attendance.group-settings.actions.confirm': 'Confirm',
31
+ 'pisell2.attendance.group-settings.actions.delete': 'Delete',
32
+ 'pisell2.attendance.group-settings.actions.save-settings': 'Save Settings',
33
+ 'pisell2.attendance.group-settings.actions.add-location': 'Add Location',
34
+ 'pisell2.attendance.group-settings.actions.add-location-confirm': 'Add Location',
35
+ 'pisell2.attendance.group-settings.shift-schedule.fixed-shifts.title': 'Fixed-Based Attendance',
36
+ 'pisell2.attendance.group-settings.shift-schedule.fixed-shifts.desc': 'Employees clock in/out according to fixed shifts',
37
+ 'pisell2.attendance.group-settings.shift-schedule.scheduled-shifts.set-shifts': 'Set Shifts',
38
+ 'pisell2.attendance.group-settings.shift-schedule.scheduled-shifts.change-shifts': 'Change Shifts',
39
+ 'pisell2.attendance.group-settings.shift-schedule.modal.title': 'Set Shifts',
40
+ 'pisell2.attendance.group-settings.shift-schedule.modal.weekday.1': 'Mon',
41
+ 'pisell2.attendance.group-settings.shift-schedule.modal.weekday.2': 'Tue',
42
+ 'pisell2.attendance.group-settings.shift-schedule.modal.weekday.3': 'Wed',
43
+ 'pisell2.attendance.group-settings.shift-schedule.modal.weekday.4': 'Thu',
44
+ 'pisell2.attendance.group-settings.shift-schedule.modal.weekday.5': 'Fri',
45
+ 'pisell2.attendance.group-settings.shift-schedule.modal.weekday.6': 'Sat',
46
+ 'pisell2.attendance.group-settings.shift-schedule.modal.weekday.7': 'Sun',
47
+ 'pisell2.attendance.group-settings.shift-schedule.modal.no-shift': 'No shift',
48
+ 'pisell2.attendance.group-settings.shift-schedule.modal.add-time': 'Add time',
49
+ 'pisell2.attendance.group-settings.shift-schedule.modal.start': 'Start',
50
+ 'pisell2.attendance.group-settings.shift-schedule.modal.end': 'End',
51
+ 'pisell2.attendance.group-settings.shift-schedule.modal.validation.start-required': 'Please select start time',
52
+ 'pisell2.attendance.group-settings.shift-schedule.modal.validation.end-required': 'Please select end time',
53
+ 'pisell2.attendance.group-settings.shift-schedule.modal.validation.range': 'The end time must be after the start time',
54
+ 'pisell2.attendance.group-settings.shift-schedule.modal.validation.overlap': 'Time ranges cannot overlap',
55
+ 'pisell2.attendance.group-settings.shift-schedule.validation.fixed-required': 'Please set at least one valid shift',
56
+ 'pisell2.attendance.group-settings.shift-schedule.attendance-type.label': 'Attendance Type',
57
+ 'pisell2.attendance.group-settings.shift-schedule.attendance-type.scheduled-shifts.title': 'Scheduled Shifts',
58
+ 'pisell2.attendance.group-settings.shift-schedule.attendance-type.scheduled-shifts.desc': 'Employees clock in based on pre-assigned shifts',
59
+ 'pisell2.attendance.group-settings.clock-in-method.gps.title': 'GPS Location Verification',
60
+ 'pisell2.attendance.group-settings.clock-in-method.gps.desc': 'Employees use Team APP for GPS-based clock-in. System verifies location within approved areas.',
61
+ 'pisell2.attendance.group-settings.clock-in-method.approved-locations.label': function pisell2AttendanceGroupSettingsClockInMethodApprovedLocationsLabel(max) {
62
+ return "Approved Locations (Maximum ".concat(max, ")");
63
+ },
64
+ 'pisell2.attendance.group-settings.clock-in-method.approved-locations.empty.title': 'No locations configured',
65
+ 'pisell2.attendance.group-settings.clock-in-method.approved-locations.empty.desc': 'Without locations, employees can clock in from anywhere',
66
+ 'pisell2.attendance.group-settings.clock-in-method.default-valid-range.label': 'Default Valid Range',
67
+ 'pisell2.attendance.group-settings.clock-in-method.default-valid-range.desc': 'Employees can clock in within this radius of each location',
68
+ 'pisell2.attendance.group-settings.clock-in-method.meters': function pisell2AttendanceGroupSettingsClockInMethodMeters(val) {
69
+ return "".concat(val, " meters");
70
+ },
71
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.title': 'Add Location',
72
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.label': 'Location Name',
73
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.placeholder': 'e.g., Main Office, Store A',
74
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.validation': 'Please enter a location name',
75
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.latitude.label': 'Latitude',
76
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.latitude.placeholder': 'e.g., 39.9042',
77
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.latitude.validation': 'Please enter a valid latitude',
78
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.longitude.label': 'Longitude',
79
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.longitude.placeholder': 'e.g., 116.4074',
80
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.longitude.validation': 'Please enter a valid longitude',
81
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.valid-range.label': 'Valid Range (meters)',
82
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.tip.google-maps': 'Tip: Click on Google Maps to get coordinates',
83
+ 'pisell2.attendance.group-settings.correction-policy.allow-corrections.title': 'Allow Corrections',
84
+ 'pisell2.attendance.group-settings.correction-policy.allow-corrections.desc': 'Employees can submit correction requests for approval',
85
+ 'pisell2.attendance.group-settings.correction-policy.types.label': 'Correction Types',
86
+ 'pisell2.attendance.group-settings.correction-policy.types.missing.title': 'Missing',
87
+ 'pisell2.attendance.group-settings.correction-policy.types.missing.desc': 'Forgot to clock in',
88
+ 'pisell2.attendance.group-settings.correction-policy.types.late.title': 'Late',
89
+ 'pisell2.attendance.group-settings.correction-policy.types.late.desc': 'Arrived late',
90
+ 'pisell2.attendance.group-settings.correction-policy.types.early-out.title': 'Early Out',
91
+ 'pisell2.attendance.group-settings.correction-policy.types.early-out.desc': 'Left early',
92
+ 'pisell2.attendance.group-settings.correction-policy.types.normal.title': 'Normal',
93
+ 'pisell2.attendance.group-settings.correction-policy.types.normal.desc': 'Regular correction',
94
+ 'pisell2.attendance.group-settings.correction-policy.approver.label': 'Approver',
95
+ 'pisell2.attendance.group-settings.correction-policy.approver.placeholder': 'Select approver',
96
+ 'pisell2.attendance.group-settings.correction-policy.approver.required': 'Please select at least one approver',
97
+ 'pisell2.attendance.group-settings.correction-policy.time-limit.label': 'Time Limit',
98
+ 'pisell2.attendance.group-settings.correction-policy.time-limit.required': 'Please enter a correction time limit',
99
+ 'pisell2.attendance.group-settings.correction-policy.time-limit.request-past-days': function pisell2AttendanceGroupSettingsCorrectionPolicyTimeLimitRequestPastDays(days) {
100
+ return "Can request corrections for the past ".concat(days, " days");
101
+ },
102
+ 'pisell2.attendance.group-settings.correction-policy.time-limit.request-past-days.prefix': 'Can request corrections for the past',
103
+ 'pisell2.attendance.group-settings.correction-policy.time-limit.request-past-days.suffix': 'days',
104
+ 'pisell2.attendance.group-settings.correction-policy.time-limit.helper': 'Enter 0 for same-day corrections only (0-180 days)',
105
+ 'pisell2.attendance.group-settings.correction-policy.monthly-limit.label': 'Monthly Limit',
106
+ 'pisell2.attendance.group-settings.correction-policy.monthly-limit.required': 'Please enter a monthly correction limit',
107
+ 'pisell2.attendance.group-settings.correction-policy.monthly-limit.maximum': function pisell2AttendanceGroupSettingsCorrectionPolicyMonthlyLimitMaximum(count) {
108
+ return "Maximum ".concat(count, " corrections per person per month");
109
+ },
110
+ 'pisell2.attendance.group-settings.correction-policy.monthly-limit.maximum.prefix': 'Maximum',
111
+ 'pisell2.attendance.group-settings.correction-policy.monthly-limit.maximum.suffix': 'corrections per person per month',
112
+ 'pisell2.attendance.group-settings.correction-policy.monthly-limit.helper': 'Requests exceeding this limit will be rejected (0-999)',
113
+ 'pisell2.attendance.group-settings.correction-policy.reset-period.label': 'Reset Period',
114
+ 'pisell2.attendance.group-settings.correction-policy.reset-period.calendar-month.title': 'Calendar Month',
115
+ 'pisell2.attendance.group-settings.correction-policy.reset-period.calendar-month.desc': 'Reset on the 1st of each month',
116
+ 'pisell2.attendance.group-settings.correction-policy.reset-period.custom-period.title': 'Custom Period',
117
+ 'pisell2.attendance.group-settings.correction-policy.reset-period.custom-period.desc': 'Set custom monthly start date (1-28 only)',
118
+ 'pisell2.attendance.group-settings.correction-policy.reset-period.custom-period.required': 'Please select a custom reset day'
119
+ },
120
+ 'zh-CN': {
121
+ 'pisell2.attendance.group-settings.title': '考勤组设置',
122
+ 'pisell2.attendance.group-settings.sub-title': '配置考勤规则、打卡方式和补卡政策',
123
+ 'pisell2.attendance.group-settings.basic-info': '基本信息',
124
+ 'pisell2.attendance.group-settings.basic-info.label.name': '考勤组名称',
125
+ 'pisell2.attendance.group-settings.basic-info.name-required': '请输入考勤组名称',
126
+ 'pisell2.attendance.group-settings.basic-info.name-tip': '请输入考勤组名称,例如:总部员工、门店A',
127
+ 'pisell2.attendance.group-settings.basic-info.name-max-length': function pisell2AttendanceGroupSettingsBasicInfoNameMaxLength(len) {
128
+ return "\u6700\u591A".concat(len, "\u4E2A\u5B57\u7B26");
129
+ },
130
+ 'pisell2.attendance.group-settings.basic-info.label.time-zone': '考勤组时区',
131
+ 'pisell2.attendance.group-settings.basic-info.time-zone-tip': '重要:考勤组创建后,时区将不可修改',
132
+ 'pisell2.attendance.group-settings.basic-info.label.members': '需要打卡的人',
133
+ 'pisell2.attendance.group-settings.basic-info.add-members': '添加成员',
134
+ 'pisell2.attendance.group-settings.basic-info.members-count': function pisell2AttendanceGroupSettingsBasicInfoMembersCount(count) {
135
+ return "\u5DF2\u9009\u62E9 ".concat(count, " \u4EBA");
136
+ },
137
+ 'pisell2.attendance.group-settings.basic-info.members-tip': '提示:一位员工在同一时间仅能属于一个考勤组',
138
+ 'pisell2.attendance.group-settings.basic-info.members-required': '请至少选择一位成员',
139
+ 'pisell2.attendance.group-settings.basic-info.members-drawer.title': '选择成员',
140
+ 'pisell2.attendance.group-settings.basic-info.members-drawer.columns.name': '姓名',
141
+ 'pisell2.attendance.group-settings.basic-info.members-drawer.columns.email': '邮箱',
142
+ 'pisell2.attendance.group-settings.shift-schedule': '考勤班次',
143
+ 'pisell2.attendance.group-settings.clock-in-method': '考勤方式',
144
+ 'pisell2.attendance.group-settings.correction-policy': '补卡设置',
145
+ 'pisell2.attendance.group-settings.actions.search': '搜索',
146
+ 'pisell2.attendance.group-settings.actions.cancel': '取消',
147
+ 'pisell2.attendance.group-settings.actions.confirm': '确认',
148
+ 'pisell2.attendance.group-settings.actions.delete': '删除',
149
+ 'pisell2.attendance.group-settings.actions.save-settings': '保存设置',
150
+ 'pisell2.attendance.group-settings.actions.add-location': '新增考勤地点',
151
+ 'pisell2.attendance.group-settings.actions.add-location-confirm': '添加地点',
152
+ 'pisell2.attendance.group-settings.shift-schedule.fixed-shifts.title': '固定班制考勤',
153
+ 'pisell2.attendance.group-settings.shift-schedule.fixed-shifts.desc': '員工需按照预设的班次进行打卡。',
154
+ 'pisell2.attendance.group-settings.shift-schedule.scheduled-shifts.set-shifts': '设置排班',
155
+ 'pisell2.attendance.group-settings.shift-schedule.scheduled-shifts.change-shifts': '修改排班',
156
+ 'pisell2.attendance.group-settings.shift-schedule.modal.title': '设置排班',
157
+ 'pisell2.attendance.group-settings.shift-schedule.modal.weekday.1': '周一',
158
+ 'pisell2.attendance.group-settings.shift-schedule.modal.weekday.2': '周二',
159
+ 'pisell2.attendance.group-settings.shift-schedule.modal.weekday.3': '周三',
160
+ 'pisell2.attendance.group-settings.shift-schedule.modal.weekday.4': '周四',
161
+ 'pisell2.attendance.group-settings.shift-schedule.modal.weekday.5': '周五',
162
+ 'pisell2.attendance.group-settings.shift-schedule.modal.weekday.6': '周六',
163
+ 'pisell2.attendance.group-settings.shift-schedule.modal.weekday.7': '周日',
164
+ 'pisell2.attendance.group-settings.shift-schedule.modal.no-shift': '未排班',
165
+ 'pisell2.attendance.group-settings.shift-schedule.modal.add-time': '添加时间段',
166
+ 'pisell2.attendance.group-settings.shift-schedule.modal.start': '开始时间',
167
+ 'pisell2.attendance.group-settings.shift-schedule.modal.end': '结束时间',
168
+ 'pisell2.attendance.group-settings.shift-schedule.modal.validation.start-required': '请选择开始时间',
169
+ 'pisell2.attendance.group-settings.shift-schedule.modal.validation.end-required': '请选择结束时间',
170
+ 'pisell2.attendance.group-settings.shift-schedule.modal.validation.range': '结束时间必须在开始时间之后',
171
+ 'pisell2.attendance.group-settings.shift-schedule.modal.validation.overlap': '时间段不能重叠或相连',
172
+ 'pisell2.attendance.group-settings.shift-schedule.validation.fixed-required': '请设置至少一个有效排班',
173
+ 'pisell2.attendance.group-settings.shift-schedule.attendance-type.label': '考勤类型',
174
+ 'pisell2.attendance.group-settings.shift-schedule.attendance-type.scheduled-shifts.title': '排班制',
175
+ 'pisell2.attendance.group-settings.shift-schedule.attendance-type.scheduled-shifts.desc': '员工按照预设班次打卡',
176
+ 'pisell2.attendance.group-settings.clock-in-method.gps.title': 'GPS定位打卡',
177
+ 'pisell2.attendance.group-settings.clock-in-method.gps.desc': '员工通过Team APP进行GPS定位打卡,系统验证是否在考勤范围内',
178
+ 'pisell2.attendance.group-settings.clock-in-method.approved-locations.label': function pisell2AttendanceGroupSettingsClockInMethodApprovedLocationsLabel(max) {
179
+ return "\u8003\u52E4\u5730\u70B9\uFF08\u6700\u591A".concat(max, "\u4E2A\uFF09");
180
+ },
181
+ 'pisell2.attendance.group-settings.clock-in-method.approved-locations.empty.title': '未设置考勤地点',
182
+ 'pisell2.attendance.group-settings.clock-in-method.approved-locations.empty.desc': '未设置时,员工可在任意地点打卡',
183
+ 'pisell2.attendance.group-settings.clock-in-method.default-valid-range.label': '默认有效范围',
184
+ 'pisell2.attendance.group-settings.clock-in-method.default-valid-range.desc': '员工可在距离各地点的该半径内打卡',
185
+ 'pisell2.attendance.group-settings.clock-in-method.meters': function pisell2AttendanceGroupSettingsClockInMethodMeters(val) {
186
+ return "".concat(val, " \u7C73");
187
+ },
188
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.title': '新增考勤地点',
189
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.label': '地点名称',
190
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.placeholder': '例如:总部大楼、门店A',
191
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.validation': '请输入地点名称',
192
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.latitude.label': '纬度',
193
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.latitude.placeholder': '例如:39.9042',
194
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.latitude.validation': '请输入有效的纬度',
195
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.longitude.label': '经度',
196
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.longitude.placeholder': '例如:116.4074',
197
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.longitude.validation': '请输入有效的经度',
198
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.valid-range.label': '有效范围(米)',
199
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.tip.google-maps': '提示:可以在Google Maps中点击位置获取经纬度坐标',
200
+ 'pisell2.attendance.group-settings.correction-policy.allow-corrections.title': '允许补卡',
201
+ 'pisell2.attendance.group-settings.correction-policy.allow-corrections.desc': '员工可以提交补卡申请,需要审批',
202
+ 'pisell2.attendance.group-settings.correction-policy.types.label': '补卡类型',
203
+ 'pisell2.attendance.group-settings.correction-policy.types.missing.title': '缺卡',
204
+ 'pisell2.attendance.group-settings.correction-policy.types.missing.desc': '忘记打卡',
205
+ 'pisell2.attendance.group-settings.correction-policy.types.late.title': '迟到',
206
+ 'pisell2.attendance.group-settings.correction-policy.types.late.desc': '上班迟到',
207
+ 'pisell2.attendance.group-settings.correction-policy.types.early-out.title': '早退',
208
+ 'pisell2.attendance.group-settings.correction-policy.types.early-out.desc': '提前下班',
209
+ 'pisell2.attendance.group-settings.correction-policy.types.normal.title': '正常',
210
+ 'pisell2.attendance.group-settings.correction-policy.types.normal.desc': '正常打卡修正',
211
+ 'pisell2.attendance.group-settings.correction-policy.approver.label': '审批补卡人',
212
+ 'pisell2.attendance.group-settings.correction-policy.approver.placeholder': '请选择审批人',
213
+ 'pisell2.attendance.group-settings.correction-policy.approver.required': '请选择审批人',
214
+ 'pisell2.attendance.group-settings.correction-policy.time-limit.label': '补卡时间限制',
215
+ 'pisell2.attendance.group-settings.correction-policy.time-limit.required': '请填写补卡时间限制',
216
+ 'pisell2.attendance.group-settings.correction-policy.time-limit.request-past-days': function pisell2AttendanceGroupSettingsCorrectionPolicyTimeLimitRequestPastDays(days) {
217
+ return "\u53EF\u7533\u8BF7\u8FC7\u53BB".concat(days, "\u5929\u5185\u7684\u8865\u5361");
218
+ },
219
+ 'pisell2.attendance.group-settings.correction-policy.time-limit.request-past-days.prefix': '可申请过去',
220
+ 'pisell2.attendance.group-settings.correction-policy.time-limit.request-past-days.suffix': '天内的补卡',
221
+ 'pisell2.attendance.group-settings.correction-policy.time-limit.helper': '填写0表示仅可申请当日补卡(0-180天)',
222
+ 'pisell2.attendance.group-settings.correction-policy.monthly-limit.label': '补卡次数限制',
223
+ 'pisell2.attendance.group-settings.correction-policy.monthly-limit.required': '请填写补卡次数限制',
224
+ 'pisell2.attendance.group-settings.correction-policy.monthly-limit.maximum': function pisell2AttendanceGroupSettingsCorrectionPolicyMonthlyLimitMaximum(count) {
225
+ return "\u6BCF\u4EBA\u6BCF\u6708\u6700\u591A\u53EF\u8865\u5361 ".concat(count, " \u6B21");
226
+ },
227
+ 'pisell2.attendance.group-settings.correction-policy.monthly-limit.maximum.prefix': '每人每月最多可补卡',
228
+ 'pisell2.attendance.group-settings.correction-policy.monthly-limit.maximum.suffix': '次',
229
+ 'pisell2.attendance.group-settings.correction-policy.monthly-limit.helper': '超过限制次数后将无法提交补卡申请(0-999次)',
230
+ 'pisell2.attendance.group-settings.correction-policy.reset-period.label': '补卡周期',
231
+ 'pisell2.attendance.group-settings.correction-policy.reset-period.calendar-month.title': '按自然月',
232
+ 'pisell2.attendance.group-settings.correction-policy.reset-period.calendar-month.desc': '每月1日至最后一日为一个周期',
233
+ 'pisell2.attendance.group-settings.correction-policy.reset-period.custom-period.title': '按自定义周期',
234
+ 'pisell2.attendance.group-settings.correction-policy.reset-period.custom-period.desc': '自定义设置每月的起始日(不支持29、30、31日)',
235
+ 'pisell2.attendance.group-settings.correction-policy.reset-period.custom-period.required': '请选择自定义起始日'
236
+ },
237
+ 'zh-HK': {
238
+ 'pisell2.attendance.group-settings.title': '考勤組設定',
239
+ 'pisell2.attendance.group-settings.sub-title': '配置考勤規則、打卡方式及補卡政策',
240
+ 'pisell2.attendance.group-settings.basic-info': '基本資料',
241
+ 'pisell2.attendance.group-settings.basic-info.label.name': '考勤組名稱',
242
+ 'pisell2.attendance.group-settings.basic-info.name-required': '請輸入考勤組名稱',
243
+ 'pisell2.attendance.group-settings.basic-info.name-tip': '請輸入考勤組名稱,例如:總部員工、門店A',
244
+ 'pisell2.attendance.group-settings.basic-info.name-max-length': function pisell2AttendanceGroupSettingsBasicInfoNameMaxLength(len) {
245
+ return "\u6700\u591A".concat(len, "\u500B\u5B57\u5143");
246
+ },
247
+ 'pisell2.attendance.group-settings.basic-info.label.time-zone': '考勤組時區',
248
+ 'pisell2.attendance.group-settings.basic-info.time-zone-tip': '重要:考勤組建立後,時區將不可修改',
249
+ 'pisell2.attendance.group-settings.basic-info.label.members': '需要打卡的人',
250
+ 'pisell2.attendance.group-settings.basic-info.add-members': '新增成員',
251
+ 'pisell2.attendance.group-settings.basic-info.members-count': function pisell2AttendanceGroupSettingsBasicInfoMembersCount(count) {
252
+ return "\u5DF2\u9078\u64C7 ".concat(count, " \u4EBA");
253
+ },
254
+ 'pisell2.attendance.group-settings.basic-info.members-tip': '提示:一位員工在同一時間僅能屬於一個考勤組',
255
+ 'pisell2.attendance.group-settings.basic-info.members-required': '請至少選擇一位成員',
256
+ 'pisell2.attendance.group-settings.basic-info.members-drawer.title': '選擇成員',
257
+ 'pisell2.attendance.group-settings.basic-info.members-drawer.columns.name': '姓名',
258
+ 'pisell2.attendance.group-settings.basic-info.members-drawer.columns.email': '電郵',
259
+ 'pisell2.attendance.group-settings.shift-schedule': '考勤班次',
260
+ 'pisell2.attendance.group-settings.clock-in-method': '考勤方式',
261
+ 'pisell2.attendance.group-settings.correction-policy': '補卡設定',
262
+ 'pisell2.attendance.group-settings.actions.search': '搜索',
263
+ 'pisell2.attendance.group-settings.actions.cancel': '取消',
264
+ 'pisell2.attendance.group-settings.actions.confirm': '確認',
265
+ 'pisell2.attendance.group-settings.actions.delete': '刪除',
266
+ 'pisell2.attendance.group-settings.actions.save-settings': '儲存設定',
267
+ 'pisell2.attendance.group-settings.actions.add-location': '新增考勤地點',
268
+ 'pisell2.attendance.group-settings.actions.add-location-confirm': '添加地點',
269
+ 'pisell2.attendance.group-settings.shift-schedule.fixed-shifts.title': '固定班制考勤',
270
+ 'pisell2.attendance.group-settings.shift-schedule.fixed-shifts.desc': '員工需按照預設的班次進行打卡。',
271
+ 'pisell2.attendance.group-settings.shift-schedule.scheduled-shifts.set-shifts': '設置排班',
272
+ 'pisell2.attendance.group-settings.shift-schedule.scheduled-shifts.change-shifts': '修改排班',
273
+ 'pisell2.attendance.group-settings.shift-schedule.modal.title': '設置排班',
274
+ 'pisell2.attendance.group-settings.shift-schedule.modal.weekday.1': '週一',
275
+ 'pisell2.attendance.group-settings.shift-schedule.modal.weekday.2': '週二',
276
+ 'pisell2.attendance.group-settings.shift-schedule.modal.weekday.3': '週三',
277
+ 'pisell2.attendance.group-settings.shift-schedule.modal.weekday.4': '週四',
278
+ 'pisell2.attendance.group-settings.shift-schedule.modal.weekday.5': '週五',
279
+ 'pisell2.attendance.group-settings.shift-schedule.modal.weekday.6': '週六',
280
+ 'pisell2.attendance.group-settings.shift-schedule.modal.weekday.7': '週日',
281
+ 'pisell2.attendance.group-settings.shift-schedule.modal.no-shift': '未排班',
282
+ 'pisell2.attendance.group-settings.shift-schedule.modal.add-time': '新增時間段',
283
+ 'pisell2.attendance.group-settings.shift-schedule.modal.start': '開始時間',
284
+ 'pisell2.attendance.group-settings.shift-schedule.modal.end': '結束時間',
285
+ 'pisell2.attendance.group-settings.shift-schedule.modal.validation.start-required': '請選擇開始時間',
286
+ 'pisell2.attendance.group-settings.shift-schedule.modal.validation.end-required': '請選擇結束時間',
287
+ 'pisell2.attendance.group-settings.shift-schedule.modal.validation.range': '結束時間必須在開始時間之後',
288
+ 'pisell2.attendance.group-settings.shift-schedule.modal.validation.overlap': '時間段不能重疊或相連',
289
+ 'pisell2.attendance.group-settings.shift-schedule.validation.fixed-required': '請設置至少一個有效排班',
290
+ 'pisell2.attendance.group-settings.shift-schedule.attendance-type.label': '考勤類型',
291
+ 'pisell2.attendance.group-settings.shift-schedule.attendance-type.scheduled-shifts.title': '排班制',
292
+ 'pisell2.attendance.group-settings.shift-schedule.attendance-type.scheduled-shifts.desc': '員工按照預設班次打卡',
293
+ 'pisell2.attendance.group-settings.clock-in-method.gps.title': 'GPS定位打卡',
294
+ 'pisell2.attendance.group-settings.clock-in-method.gps.desc': '員工透過Team APP進行GPS定位打卡,系統驗證是否在考勤範圍內',
295
+ 'pisell2.attendance.group-settings.clock-in-method.approved-locations.label': function pisell2AttendanceGroupSettingsClockInMethodApprovedLocationsLabel(max) {
296
+ return "\u8003\u52E4\u5730\u9EDE\uFF08\u6700\u591A".concat(max, "\u500B\uFF09");
297
+ },
298
+ 'pisell2.attendance.group-settings.clock-in-method.approved-locations.empty.title': '未設定考勤地點',
299
+ 'pisell2.attendance.group-settings.clock-in-method.approved-locations.empty.desc': '未設定時,員工可在任意地點打卡',
300
+ 'pisell2.attendance.group-settings.clock-in-method.default-valid-range.label': '預設有效範圍',
301
+ 'pisell2.attendance.group-settings.clock-in-method.default-valid-range.desc': '員工可在距離各地點的此半徑內打卡',
302
+ 'pisell2.attendance.group-settings.clock-in-method.meters': function pisell2AttendanceGroupSettingsClockInMethodMeters(val) {
303
+ return "".concat(val, " \u7C73");
304
+ },
305
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.title': '新增考勤地點',
306
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.label': '地點名稱',
307
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.placeholder': '例如:總部大樓、門店A',
308
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.validation': '請輸入地點名稱',
309
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.latitude.label': '緯度',
310
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.latitude.placeholder': '例如:39.9042',
311
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.latitude.validation': '請輸入有效的緯度',
312
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.longitude.label': '經度',
313
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.longitude.placeholder': '例如:116.4074',
314
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.longitude.validation': '請輸入有效的經度',
315
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.valid-range.label': '有效範圍(米)',
316
+ 'pisell2.attendance.group-settings.clock-in-method.add-location-modal.tip.google-maps': '提示:可以在Google Maps中點擊位置獲取經緯度座標',
317
+ 'pisell2.attendance.group-settings.correction-policy.allow-corrections.title': '允許補卡',
318
+ 'pisell2.attendance.group-settings.correction-policy.allow-corrections.desc': '員工可以提交補卡申請,需要審批',
319
+ 'pisell2.attendance.group-settings.correction-policy.types.label': '補卡類型',
320
+ 'pisell2.attendance.group-settings.correction-policy.types.missing.title': '缺卡',
321
+ 'pisell2.attendance.group-settings.correction-policy.types.missing.desc': '忘記打卡',
322
+ 'pisell2.attendance.group-settings.correction-policy.types.late.title': '遲到',
323
+ 'pisell2.attendance.group-settings.correction-policy.types.late.desc': '上班遲到',
324
+ 'pisell2.attendance.group-settings.correction-policy.types.early-out.title': '早退',
325
+ 'pisell2.attendance.group-settings.correction-policy.types.early-out.desc': '提前下班',
326
+ 'pisell2.attendance.group-settings.correction-policy.types.normal.title': '正常',
327
+ 'pisell2.attendance.group-settings.correction-policy.types.normal.desc': '正常打卡修正',
328
+ 'pisell2.attendance.group-settings.correction-policy.approver.label': '審批補卡人',
329
+ 'pisell2.attendance.group-settings.correction-policy.approver.placeholder': '請選擇審批人',
330
+ 'pisell2.attendance.group-settings.correction-policy.approver.required': '請選擇審批人',
331
+ 'pisell2.attendance.group-settings.correction-policy.time-limit.label': '補卡時間限制',
332
+ 'pisell2.attendance.group-settings.correction-policy.time-limit.required': '請填寫補卡時間限制',
333
+ 'pisell2.attendance.group-settings.correction-policy.time-limit.request-past-days': function pisell2AttendanceGroupSettingsCorrectionPolicyTimeLimitRequestPastDays(days) {
334
+ return "\u53EF\u7533\u8ACB\u904E\u53BB".concat(days, "\u5929\u5167\u7684\u88DC\u5361");
335
+ },
336
+ 'pisell2.attendance.group-settings.correction-policy.time-limit.request-past-days.prefix': '可申請過去',
337
+ 'pisell2.attendance.group-settings.correction-policy.time-limit.request-past-days.suffix': '天內的補卡',
338
+ 'pisell2.attendance.group-settings.correction-policy.time-limit.helper': '填寫0表示僅可申請當日補卡(0-180天)',
339
+ 'pisell2.attendance.group-settings.correction-policy.monthly-limit.label': '補卡次數限制',
340
+ 'pisell2.attendance.group-settings.correction-policy.monthly-limit.required': '請填寫補卡次數限制',
341
+ 'pisell2.attendance.group-settings.correction-policy.monthly-limit.maximum': function pisell2AttendanceGroupSettingsCorrectionPolicyMonthlyLimitMaximum(count) {
342
+ return "\u6BCF\u4EBA\u6BCF\u6708\u6700\u591A\u53EF\u88DC\u5361 ".concat(count, " \u6B21");
343
+ },
344
+ 'pisell2.attendance.group-settings.correction-policy.monthly-limit.maximum.prefix': '每人每月最多可補卡',
345
+ 'pisell2.attendance.group-settings.correction-policy.monthly-limit.maximum.suffix': '次',
346
+ 'pisell2.attendance.group-settings.correction-policy.monthly-limit.helper': '超過限制次數後將無法提交補卡申請(0-999次)',
347
+ 'pisell2.attendance.group-settings.correction-policy.reset-period.label': '補卡週期',
348
+ 'pisell2.attendance.group-settings.correction-policy.reset-period.calendar-month.title': '按自然月',
349
+ 'pisell2.attendance.group-settings.correction-policy.reset-period.calendar-month.desc': '每月1日至最後一日為一個週期',
350
+ 'pisell2.attendance.group-settings.correction-policy.reset-period.custom-period.title': '按自定義週期',
351
+ 'pisell2.attendance.group-settings.correction-policy.reset-period.custom-period.desc': '自定義設定每月的起始日(不支援29、30、31日)',
352
+ 'pisell2.attendance.group-settings.correction-policy.reset-period.custom-period.required': '請選擇自定義起始日'
353
+ }
354
+ };
@@ -0,0 +1,5 @@
1
+ import React from 'react';
2
+ declare const BasicInfoTab: React.FC<{
3
+ id?: string;
4
+ }>;
5
+ export default BasicInfoTab;
@@ -0,0 +1,96 @@
1
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
2
+ 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."); }
3
+ 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); }
4
+ 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; }
5
+ 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; } }
6
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
7
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
8
+ import React, { useMemo } from 'react';
9
+ import { Form, Select } from 'antd';
10
+ import { useRequest } from 'ahooks';
11
+ import { Icon, BaseTranslation } from '@pisell/materials';
12
+ import { locales } from '@pisell/utils';
13
+ import useEngineContext from "../../../hooks/useEngineContext";
14
+ import { MembersField } from "./components";
15
+ import { getTimezoneList } from "./serve";
16
+ var BasicInfoTab = function BasicInfoTab(props) {
17
+ var _engineContext$appHel;
18
+ var engineContext = useEngineContext();
19
+ var _ref = (engineContext === null || engineContext === void 0 || (_engineContext$appHel = engineContext.appHelper) === null || _engineContext$appHel === void 0 ? void 0 : _engineContext$appHel.utils) || {},
20
+ translation = _ref.translation;
21
+ var _useRequest = useRequest(getTimezoneList, {
22
+ defaultParams: [{
23
+ pageSize: 499
24
+ }]
25
+ }),
26
+ data = _useRequest.data;
27
+ var timeZoneOptions = useMemo(function () {
28
+ var _data$data;
29
+ return (data === null || data === void 0 || (_data$data = data.data) === null || _data$data === void 0 ? void 0 : _data$data.map(function (item) {
30
+ return {
31
+ label: translation(item.name),
32
+ value: item.code
33
+ };
34
+ })) || [];
35
+ }, [data]);
36
+ return /*#__PURE__*/React.createElement("div", {
37
+ className: "saas-attendance-group-settings__panel",
38
+ id: props.id
39
+ }, /*#__PURE__*/React.createElement(Form.Item, {
40
+ label: locales.getText('pisell2.attendance.group-settings.basic-info.label.name'),
41
+ name: "name",
42
+ rules: [{
43
+ required: true
44
+ }, {
45
+ validator: function validator(_, value) {
46
+ var hasVal = false;
47
+ if (value && _typeof(value) === 'object') {
48
+ Object.entries(value).forEach(function (_ref2) {
49
+ var _ref3 = _slicedToArray(_ref2, 2),
50
+ key = _ref3[0],
51
+ val = _ref3[1];
52
+ if (val) {
53
+ hasVal = true;
54
+ }
55
+ });
56
+ }
57
+ if (!hasVal) {
58
+ return Promise.reject(locales.getText('pisell2.attendance.group-settings.basic-info.name-required'));
59
+ }
60
+ return Promise.resolve();
61
+ }
62
+ }],
63
+ extra: locales.getText('pisell2.attendance.group-settings.basic-info.name-max-length')(50)
64
+ }, /*#__PURE__*/React.createElement(BaseTranslation, {
65
+ maxLength: 50,
66
+ placeholder: locales.getText('pisell2.attendance.group-settings.basic-info.name-tip')
67
+ })), /*#__PURE__*/React.createElement(Form.Item, {
68
+ label: locales.getText('pisell2.attendance.group-settings.basic-info.label.time-zone'),
69
+ name: "timezone",
70
+ rules: [{
71
+ required: true
72
+ }],
73
+ required: true,
74
+ extra: /*#__PURE__*/React.createElement("div", {
75
+ style: {
76
+ color: '#ea580c'
77
+ }
78
+ }, /*#__PURE__*/React.createElement(Icon, {
79
+ type: "pisell2-alert-triangle",
80
+ size: 14,
81
+ style: {
82
+ marginRight: 4
83
+ }
84
+ }), locales.getText('pisell2.attendance.group-settings.basic-info.time-zone-tip'))
85
+ }, /*#__PURE__*/React.createElement(Select, {
86
+ disabled: true,
87
+ options: timeZoneOptions
88
+ })), /*#__PURE__*/React.createElement(Form.Item, {
89
+ label: locales.getText('pisell2.attendance.group-settings.basic-info.label.members'),
90
+ name: "member_ids",
91
+ rules: [{
92
+ required: true
93
+ }]
94
+ }, /*#__PURE__*/React.createElement(MembersField, null)));
95
+ };
96
+ export default BasicInfoTab;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { FormInstance } from 'antd';
3
+ export interface ClockInMethodTabProps {
4
+ form: FormInstance;
5
+ id?: string;
6
+ }
7
+ declare const ClockInMethodTab: React.FC<ClockInMethodTabProps>;
8
+ export default ClockInMethodTab;
@@ -0,0 +1,81 @@
1
+ import React, { useMemo, useRef } from 'react';
2
+ import { Button, Form, Slider } from 'antd';
3
+ import { Icon } from '@pisell/materials';
4
+ import { locales } from '@pisell/utils';
5
+ import { MapField } from "./components";
6
+ var ClockInMethodTab = function ClockInMethodTab(props) {
7
+ var _Form$useWatch, _Form$useWatch2;
8
+ var form = props.form;
9
+ var maxLocations = 200;
10
+ var mapFieldRef = useRef(null);
11
+ var defaultValidRangeMeters = (_Form$useWatch = Form.useWatch(['place', 'radius'], form)) !== null && _Form$useWatch !== void 0 ? _Form$useWatch : 100;
12
+ var locations = (_Form$useWatch2 = Form.useWatch(['place', 'location'], form)) !== null && _Form$useWatch2 !== void 0 ? _Form$useWatch2 : [];
13
+ var isMaxLocations = Array.isArray(locations) && locations.length >= maxLocations;
14
+ var openAddLocation = function openAddLocation() {
15
+ var _mapFieldRef$current;
16
+ if (isMaxLocations) return;
17
+ (_mapFieldRef$current = mapFieldRef.current) === null || _mapFieldRef$current === void 0 || _mapFieldRef$current.onAddLocation();
18
+ };
19
+ var approvedLocationsLabel = useMemo(function () {
20
+ return locales.getText('pisell2.attendance.group-settings.clock-in-method.approved-locations.label')(maxLocations);
21
+ }, [maxLocations]);
22
+ return /*#__PURE__*/React.createElement("div", {
23
+ className: "saas-attendance-group-settings__panel",
24
+ id: props.id
25
+ }, /*#__PURE__*/React.createElement("div", {
26
+ className: "saas-attendance-group-settings__banner banner-green"
27
+ }, /*#__PURE__*/React.createElement("div", {
28
+ className: "banner-icon"
29
+ }, /*#__PURE__*/React.createElement(Icon, {
30
+ type: "pisell2-marker-pin-01",
31
+ size: 20
32
+ })), /*#__PURE__*/React.createElement("div", {
33
+ className: "banner-body"
34
+ }, /*#__PURE__*/React.createElement("div", {
35
+ className: "banner-title"
36
+ }, locales.getText('pisell2.attendance.group-settings.clock-in-method.gps.title')), /*#__PURE__*/React.createElement("div", {
37
+ className: "banner-desc"
38
+ }, locales.getText('pisell2.attendance.group-settings.clock-in-method.gps.desc')))), /*#__PURE__*/React.createElement("div", {
39
+ className: "saas-attendance-group-settings__section"
40
+ }, /*#__PURE__*/React.createElement("div", {
41
+ className: "saas-attendance-group-settings__section-head"
42
+ }, /*#__PURE__*/React.createElement("div", {
43
+ className: "saas-attendance-group-settings__section-title"
44
+ }, approvedLocationsLabel), /*#__PURE__*/React.createElement(Button, {
45
+ type: "primary",
46
+ icon: /*#__PURE__*/React.createElement(Icon, {
47
+ type: "pisell2-plus",
48
+ size: 16
49
+ }),
50
+ onClick: openAddLocation,
51
+ disabled: isMaxLocations
52
+ }, locales.getText('pisell2.attendance.group-settings.actions.add-location'))), /*#__PURE__*/React.createElement(Form.Item, {
53
+ name: ['place', 'location'],
54
+ style: {
55
+ marginBottom: 0
56
+ }
57
+ }, /*#__PURE__*/React.createElement(MapField, {
58
+ ref: mapFieldRef,
59
+ defaultRadius: defaultValidRangeMeters
60
+ }))), /*#__PURE__*/React.createElement("div", {
61
+ className: "saas-attendance-group-settings__section"
62
+ }, /*#__PURE__*/React.createElement("div", {
63
+ className: "saas-attendance-group-settings__section-title"
64
+ }, locales.getText('pisell2.attendance.group-settings.clock-in-method.default-valid-range.label')), /*#__PURE__*/React.createElement("div", {
65
+ className: "saas-attendance-group-settings__slider-row"
66
+ }, /*#__PURE__*/React.createElement(Form.Item, {
67
+ name: ['place', 'radius'],
68
+ style: {
69
+ marginBottom: 0,
70
+ flex: 1
71
+ }
72
+ }, /*#__PURE__*/React.createElement(Slider, {
73
+ min: 0,
74
+ max: 1000
75
+ })), /*#__PURE__*/React.createElement("div", {
76
+ className: "saas-attendance-group-settings__slider-value"
77
+ }, locales.getText('pisell2.attendance.group-settings.clock-in-method.meters')(defaultValidRangeMeters || 0))), /*#__PURE__*/React.createElement("div", {
78
+ className: "saas-attendance-group-settings__help"
79
+ }, locales.getText('pisell2.attendance.group-settings.clock-in-method.default-valid-range.desc'))));
80
+ };
81
+ export default ClockInMethodTab;
@@ -0,0 +1,8 @@
1
+ import React from 'react';
2
+ import { FormInstance } from 'antd';
3
+ export interface CorrectionPolicyTabProps {
4
+ form: FormInstance;
5
+ id?: string;
6
+ }
7
+ declare const CorrectionPolicyTab: React.FC<CorrectionPolicyTabProps>;
8
+ export default CorrectionPolicyTab;