@pisell/private-materials 3.4.76 → 3.4.78
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.
- package/build/lowcode/assets-daily.json +11 -11
- package/build/lowcode/assets-dev.json +2 -2
- package/build/lowcode/assets-prod.json +11 -11
- package/build/lowcode/index.js +1 -1
- package/build/lowcode/meta.js +2 -2
- package/build/lowcode/preview.js +7 -7
- package/build/lowcode/render/default/view.css +1 -1
- package/build/lowcode/render/default/view.js +9 -9
- package/build/lowcode/view.css +1 -1
- package/build/lowcode/view.js +10 -10
- package/es/components/booking/addons/model.d.ts +1 -10
- package/es/components/booking/forms/model.d.ts +1 -10
- package/es/components/booking/info/clientVariant/hooks/useIsLowSpeedNetwork.d.ts +0 -1
- package/es/components/booking/info/hooks/useInfoHolder.d.ts +1 -0
- package/es/components/booking/info/model.d.ts +1 -10
- package/es/components/booking/info/service/addService/utils.d.ts +1 -1
- package/es/components/booking/info2/service/addService/utils.d.ts +1 -1
- package/es/components/booking/model.d.ts +1 -9
- package/es/components/booking/notes/model.d.ts +1 -10
- package/es/components/booking/payments/model.d.ts +1 -10
- package/es/components/booking/utils.d.ts +2 -2
- package/es/components/eftpos/hooks.d.ts +0 -1
- package/es/components/eftposPay/amount.d.ts +1 -1
- package/es/components/eftposPay/device.d.ts +1 -1
- package/es/components/eftposPay/hooks.d.ts +1 -1
- package/es/components/eftposPay/store/index.d.ts +2 -2
- package/es/components/eftposPay/tyro/hooks.d.ts +0 -1
- package/es/components/eventBooking/components/ErrorTip/index.d.ts +0 -1
- package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/WeekItem/index.d.ts +0 -1
- package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/index.d.ts +0 -1
- package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/DayItem/index.d.ts +0 -1
- package/es/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.d.ts +0 -1
- package/es/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/index.d.ts +0 -1
- package/es/components/pay/toC/model.d.ts +1 -9
- package/es/components/schedules/model.d.ts +1 -9
- package/es/components/shoppingCart/components/Empty/index.d.ts +1 -0
- package/es/hooks/useTranslationOriginal.d.ts +1 -0
- package/es/hooks/useTranslationOriginal.js +10 -0
- package/es/index.d.ts +3 -0
- package/es/index.js +3 -0
- package/es/plus/clientCard/index.d.ts +7 -0
- package/es/plus/clientCard/index.js +462 -0
- package/es/plus/clientCard/index.less +515 -0
- package/es/plus/clientCard/line/index.d.ts +9 -0
- package/es/plus/clientCard/line/index.js +157 -0
- package/es/plus/clientCard/line/index.less +142 -0
- package/es/plus/clientCard/locales.d.ts +18 -0
- package/es/plus/clientCard/locales.js +17 -0
- package/es/plus/clientCard/types.d.ts +135 -0
- package/es/plus/clientCard/types.js +1 -0
- package/es/plus/clientCard/utils.d.ts +8 -0
- package/es/plus/clientCard/utils.js +59 -0
- package/es/plus/clinetSearch/Add/BirthdayField/index.d.ts +3 -0
- package/es/plus/clinetSearch/Add/BirthdayField/index.js +277 -0
- package/es/plus/clinetSearch/Add/GenderField/index.d.ts +3 -0
- package/es/plus/clinetSearch/Add/GenderField/index.js +18 -0
- package/es/plus/clinetSearch/Add/PhoneField/index.d.ts +3 -0
- package/es/plus/clinetSearch/Add/PhoneField/index.js +52 -0
- package/es/plus/clinetSearch/Add/PhoneField/serve.d.ts +2 -0
- package/es/plus/clinetSearch/Add/PhoneField/serve.js +166 -0
- package/es/plus/clinetSearch/Add/index.d.ts +18 -0
- package/es/plus/clinetSearch/Add/index.js +213 -0
- package/es/plus/clinetSearch/Add/index.less +30 -0
- package/es/plus/clinetSearch/InfiniteScroll/InfiniteScroll.d.ts +5 -0
- package/es/plus/clinetSearch/InfiniteScroll/InfiniteScroll.js +265 -0
- package/es/plus/clinetSearch/InfiniteScroll/index.d.ts +2 -0
- package/es/plus/clinetSearch/InfiniteScroll/index.js +1 -0
- package/es/plus/clinetSearch/InfiniteScroll/types.d.ts +46 -0
- package/es/plus/clinetSearch/InfiniteScroll/types.js +1 -0
- package/es/plus/clinetSearch/index.d.ts +18 -0
- package/es/plus/clinetSearch/index.js +234 -0
- package/es/plus/clinetSearch/index.less +95 -0
- package/es/plus/clinetSearch/locales.d.ts +108 -0
- package/es/plus/clinetSearch/locales.js +107 -0
- package/es/plus/clinetSearch/serve.d.ts +1 -0
- package/es/plus/clinetSearch/serve.js +31 -0
- package/es/plus/clinetSearch/types.d.ts +70 -0
- package/es/plus/clinetSearch/types.js +1 -0
- package/es/plus/saasAttendance/locales.d.ts +63 -0
- package/es/plus/saasAttendance/locales.js +71 -2
- package/es/plus/saasAttendance/settings/PermissonTab.d.ts +5 -0
- package/es/plus/saasAttendance/settings/PermissonTab.js +79 -0
- package/es/plus/saasAttendance/settings/ShiftScheduleTab.js +9 -3
- package/es/plus/saasAttendance/settings/components/MapField.js +69 -33
- package/es/plus/saasAttendance/settings/components/shiftModal/ShiftPreview.d.ts +7 -0
- package/es/plus/saasAttendance/settings/components/shiftModal/ShiftPreview.js +149 -0
- package/es/plus/saasAttendance/settings/components/shiftModal/ShiftPreview.less +119 -0
- package/es/plus/saasAttendance/settings/index.js +7 -0
- package/es/plus/saasAttendance/settings/index.less +15 -0
- package/es/plus/saasAttendance/settings/types.d.ts +6 -0
- package/es/plus/selectHolder/components/ErrorTip/index.d.ts +0 -1
- package/es/plus/walletPassGallery/components/passDetail/index.d.ts +2 -0
- package/es/plus/walletPassGallery/components/passDetail/index.js +104 -39
- package/es/plus/walletPassGallery/components/timelineSection/index.d.ts +2 -0
- package/es/plus/walletPassGallery/components/timelineSection/index.js +19 -2
- package/es/plus/walletPassGallery/index.d.ts +4 -0
- package/es/plus/walletPassGallery/index.js +121 -42
- package/es/plus/walletPassGallery/serve.d.ts +3 -1
- package/es/plus/walletPassGallery/serve.js +13 -13
- package/es/pro/pisellPhoneKeyboard/index.d.ts +13 -0
- package/es/pro/pisellPhoneKeyboard/index.js +210 -0
- package/es/pro/pisellPhoneKeyboard/index.less +157 -0
- package/es/pro/pisellPhoneKeyboard/locales.d.ts +12 -0
- package/es/pro/pisellPhoneKeyboard/locales.js +11 -0
- package/lib/components/booking/addons/model.d.ts +1 -10
- package/lib/components/booking/forms/model.d.ts +1 -10
- package/lib/components/booking/info/clientVariant/hooks/useIsLowSpeedNetwork.d.ts +0 -1
- package/lib/components/booking/info/hooks/useInfoHolder.d.ts +1 -0
- package/lib/components/booking/info/model.d.ts +1 -10
- package/lib/components/booking/info/service/addService/utils.d.ts +1 -1
- package/lib/components/booking/info2/service/addService/utils.d.ts +1 -1
- package/lib/components/booking/model.d.ts +1 -9
- package/lib/components/booking/notes/model.d.ts +1 -10
- package/lib/components/booking/payments/model.d.ts +1 -10
- package/lib/components/booking/utils.d.ts +2 -2
- package/lib/components/eftpos/hooks.d.ts +0 -1
- package/lib/components/eftposPay/amount.d.ts +1 -1
- package/lib/components/eftposPay/device.d.ts +1 -1
- package/lib/components/eftposPay/hooks.d.ts +1 -1
- package/lib/components/eftposPay/store/index.d.ts +2 -2
- package/lib/components/eftposPay/tyro/hooks.d.ts +0 -1
- package/lib/components/eventBooking/components/ErrorTip/index.d.ts +0 -1
- package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/WeekItem/index.d.ts +0 -1
- package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/CalenDateWeek/index.d.ts +0 -1
- package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/DayItem/index.d.ts +0 -1
- package/lib/components/eventBooking/components/bookingAvailabilityCalendar/components/CalendarDate/Item/index.d.ts +0 -1
- package/lib/components/pay/toC/PaymentMethods/StripePay/Stripe/StripeSDK/index.d.ts +0 -1
- package/lib/components/pay/toC/model.d.ts +1 -9
- package/lib/components/schedules/model.d.ts +1 -9
- package/lib/components/shoppingCart/components/Empty/index.d.ts +1 -0
- package/lib/hooks/useTranslationOriginal.d.ts +1 -0
- package/lib/hooks/useTranslationOriginal.js +42 -0
- package/lib/index.d.ts +3 -0
- package/lib/index.js +9 -0
- package/lib/plus/clientCard/index.d.ts +7 -0
- package/lib/plus/clientCard/index.js +457 -0
- package/lib/plus/clientCard/index.less +515 -0
- package/lib/plus/clientCard/line/index.d.ts +9 -0
- package/lib/plus/clientCard/line/index.js +153 -0
- package/lib/plus/clientCard/line/index.less +142 -0
- package/lib/plus/clientCard/locales.d.ts +18 -0
- package/lib/plus/clientCard/locales.js +41 -0
- package/lib/plus/clientCard/types.d.ts +135 -0
- package/lib/plus/clientCard/types.js +17 -0
- package/lib/plus/clientCard/utils.d.ts +8 -0
- package/lib/plus/clientCard/utils.js +75 -0
- package/lib/plus/clinetSearch/Add/BirthdayField/index.d.ts +3 -0
- package/lib/plus/clinetSearch/Add/BirthdayField/index.js +256 -0
- package/lib/plus/clinetSearch/Add/GenderField/index.d.ts +3 -0
- package/lib/plus/clinetSearch/Add/GenderField/index.js +52 -0
- package/lib/plus/clinetSearch/Add/PhoneField/index.d.ts +3 -0
- package/lib/plus/clinetSearch/Add/PhoneField/index.js +78 -0
- package/lib/plus/clinetSearch/Add/PhoneField/serve.d.ts +2 -0
- package/lib/plus/clinetSearch/Add/PhoneField/serve.js +193 -0
- package/lib/plus/clinetSearch/Add/index.d.ts +18 -0
- package/lib/plus/clinetSearch/Add/index.js +244 -0
- package/lib/plus/clinetSearch/Add/index.less +30 -0
- package/lib/plus/clinetSearch/InfiniteScroll/InfiniteScroll.d.ts +5 -0
- package/lib/plus/clinetSearch/InfiniteScroll/InfiniteScroll.js +235 -0
- package/lib/plus/clinetSearch/InfiniteScroll/index.d.ts +2 -0
- package/lib/plus/clinetSearch/InfiniteScroll/index.js +35 -0
- package/lib/plus/clinetSearch/InfiniteScroll/types.d.ts +46 -0
- package/lib/plus/clinetSearch/InfiniteScroll/types.js +17 -0
- package/lib/plus/clinetSearch/index.d.ts +18 -0
- package/lib/plus/clinetSearch/index.js +237 -0
- package/lib/plus/clinetSearch/index.less +95 -0
- package/lib/plus/clinetSearch/locales.d.ts +108 -0
- package/lib/plus/clinetSearch/locales.js +131 -0
- package/lib/plus/clinetSearch/serve.d.ts +1 -0
- package/lib/plus/clinetSearch/serve.js +33 -0
- package/lib/plus/clinetSearch/types.d.ts +70 -0
- package/lib/plus/clinetSearch/types.js +17 -0
- package/lib/plus/saasAttendance/locales.d.ts +63 -0
- package/lib/plus/saasAttendance/locales.js +65 -2
- package/lib/plus/saasAttendance/settings/PermissonTab.d.ts +5 -0
- package/lib/plus/saasAttendance/settings/PermissonTab.js +128 -0
- package/lib/plus/saasAttendance/settings/ShiftScheduleTab.js +2 -1
- package/lib/plus/saasAttendance/settings/components/MapField.js +50 -11
- package/lib/plus/saasAttendance/settings/components/shiftModal/ShiftPreview.d.ts +7 -0
- package/lib/plus/saasAttendance/settings/components/shiftModal/ShiftPreview.js +150 -0
- package/lib/plus/saasAttendance/settings/components/shiftModal/ShiftPreview.less +119 -0
- package/lib/plus/saasAttendance/settings/index.js +12 -0
- package/lib/plus/saasAttendance/settings/index.less +15 -0
- package/lib/plus/saasAttendance/settings/types.d.ts +6 -0
- package/lib/plus/selectHolder/components/ErrorTip/index.d.ts +0 -1
- package/lib/plus/walletPassGallery/components/passDetail/index.d.ts +2 -0
- package/lib/plus/walletPassGallery/components/passDetail/index.js +57 -5
- package/lib/plus/walletPassGallery/components/timelineSection/index.d.ts +2 -0
- package/lib/plus/walletPassGallery/components/timelineSection/index.js +17 -2
- package/lib/plus/walletPassGallery/index.d.ts +4 -0
- package/lib/plus/walletPassGallery/index.js +141 -42
- package/lib/plus/walletPassGallery/serve.d.ts +3 -1
- package/lib/plus/walletPassGallery/serve.js +2 -2
- package/lib/pro/pisellPhoneKeyboard/index.d.ts +13 -0
- package/lib/pro/pisellPhoneKeyboard/index.js +219 -0
- package/lib/pro/pisellPhoneKeyboard/index.less +157 -0
- package/lib/pro/pisellPhoneKeyboard/locales.d.ts +12 -0
- package/lib/pro/pisellPhoneKeyboard/locales.js +35 -0
- package/lowcode/client-card/fragments/cardStyle.ts +63 -0
- package/lowcode/client-card/fragments/nameStyle.ts +34 -0
- package/lowcode/client-card/fragments/pisellAvatar.ts +87 -0
- package/lowcode/client-card/fragments/tagConfig.ts +88 -0
- package/lowcode/client-card/meta.ts +343 -0
- package/lowcode/client-search/meta.ts +316 -0
- package/lowcode/eco-cup-list/meta.ts +1 -1
- package/lowcode/eco-customer-list/meta.ts +1 -1
- package/lowcode/wallet-pass-gallery/meta.ts +66 -1
- package/package.json +4 -4
|
@@ -45,6 +45,8 @@ var locales_default = {
|
|
|
45
45
|
"pisell2.attendance.group-settings.shift-schedule": "Shift Schedule",
|
|
46
46
|
"pisell2.attendance.group-settings.clock-in-method": "Clock-in Method",
|
|
47
47
|
"pisell2.attendance.group-settings.correction-policy": "Correction Policy",
|
|
48
|
+
"pisell2.attendance.group-settings.data-permission": "Data Permissions",
|
|
49
|
+
"pisell2.attendance.group-settings.data-permission.employee-data-view-range": "Employee Data View Range",
|
|
48
50
|
"pisell2.attendance.group-settings.actions.search": "Search",
|
|
49
51
|
"pisell2.attendance.group-settings.actions.cancel": "Cancel",
|
|
50
52
|
"pisell2.attendance.group-settings.actions.confirm": "Confirm",
|
|
@@ -52,6 +54,7 @@ var locales_default = {
|
|
|
52
54
|
"pisell2.attendance.group-settings.actions.save-settings": "Save Settings",
|
|
53
55
|
"pisell2.attendance.group-settings.actions.add-location": "Add Location",
|
|
54
56
|
"pisell2.attendance.group-settings.actions.add-location-confirm": "Add Location",
|
|
57
|
+
"pisell2.attendance.group-settings.actions.edit-location-confirm": "Save Changes",
|
|
55
58
|
"pisell2.attendance.group-settings.shift-schedule.fixed-shifts.title": "Fixed-Based Attendance",
|
|
56
59
|
"pisell2.attendance.group-settings.shift-schedule.fixed-shifts.desc": "Employees clock in/out according to fixed shifts",
|
|
57
60
|
"pisell2.attendance.group-settings.shift-schedule.scheduled-shifts.set-shifts": "Set Shifts",
|
|
@@ -76,6 +79,17 @@ var locales_default = {
|
|
|
76
79
|
"pisell2.attendance.group-settings.shift-schedule.attendance-type.label": "Attendance Type",
|
|
77
80
|
"pisell2.attendance.group-settings.shift-schedule.attendance-type.scheduled-shifts.title": "Scheduled Shifts",
|
|
78
81
|
"pisell2.attendance.group-settings.shift-schedule.attendance-type.scheduled-shifts.desc": "Employees clock in based on pre-assigned shifts",
|
|
82
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.working-days": "Working Days",
|
|
83
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.days-per-week": "days per week",
|
|
84
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.weekly-hours": "Weekly Hours",
|
|
85
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.hours": "hours",
|
|
86
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.table.day": "Day",
|
|
87
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.table.shift-times": "Shift Times",
|
|
88
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.table.duration": "Duration",
|
|
89
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.no-shift": "No shift scheduled",
|
|
90
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.duration": (hours, minutes) => `${hours}h ${minutes}min`,
|
|
91
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.period.am": "AM",
|
|
92
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.period.pm": "PM",
|
|
79
93
|
"pisell2.attendance.group-settings.clock-in-method.gps.title": "GPS Location Verification",
|
|
80
94
|
"pisell2.attendance.group-settings.clock-in-method.gps.desc": "Employees use Team APP for GPS-based clock-in. System verifies location within approved areas.",
|
|
81
95
|
"pisell2.attendance.group-settings.clock-in-method.approved-locations.label": (max) => `Approved Locations (Maximum ${max})`,
|
|
@@ -85,6 +99,7 @@ var locales_default = {
|
|
|
85
99
|
"pisell2.attendance.group-settings.clock-in-method.default-valid-range.desc": "Employees can clock in within this radius of each location",
|
|
86
100
|
"pisell2.attendance.group-settings.clock-in-method.meters": (val) => `${val} meters`,
|
|
87
101
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.title": "Add Location",
|
|
102
|
+
"pisell2.attendance.group-settings.clock-in-method.edit-location-modal.title": "Edit Location",
|
|
88
103
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.label": "Location Name",
|
|
89
104
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.placeholder": "e.g., Main Office, Store A",
|
|
90
105
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.validation": "Please enter a location name",
|
|
@@ -96,6 +111,12 @@ var locales_default = {
|
|
|
96
111
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.longitude.validation": "Please enter a valid longitude",
|
|
97
112
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.valid-range.label": "Valid Range (meters)",
|
|
98
113
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.tip.google-maps": "Tip: Click on Google Maps to get coordinates",
|
|
114
|
+
"pisell2.attendance.group-settings.basic-info.permission.limited": "Limited",
|
|
115
|
+
"pisell2.attendance.group-settings.basic-info.permission.unlimited": "Unlimited",
|
|
116
|
+
"pisell2.attendance.group-settings.basic-info.permission.this-week": "This Week",
|
|
117
|
+
"pisell2.attendance.group-settings.basic-info.permission.this-week.recommended": "This Week (Recommended)",
|
|
118
|
+
"pisell2.attendance.group-settings.basic-info.permission.last-week": "Last Week",
|
|
119
|
+
"pisell2.attendance.group-settings.basic-info.permission.this-month": "This Month",
|
|
99
120
|
"pisell2.attendance.group-settings.correction-policy.allow-corrections.title": "Allow Corrections",
|
|
100
121
|
"pisell2.attendance.group-settings.correction-policy.allow-corrections.desc": "Employees can submit correction requests for approval",
|
|
101
122
|
"pisell2.attendance.group-settings.correction-policy.types.label": "Correction Types",
|
|
@@ -150,6 +171,8 @@ var locales_default = {
|
|
|
150
171
|
"pisell2.attendance.group-settings.shift-schedule": "考勤班次",
|
|
151
172
|
"pisell2.attendance.group-settings.clock-in-method": "考勤方式",
|
|
152
173
|
"pisell2.attendance.group-settings.correction-policy": "补卡设置",
|
|
174
|
+
"pisell2.attendance.group-settings.data-permission": "数据权限",
|
|
175
|
+
"pisell2.attendance.group-settings.data-permission.employee-data-view-range": "员工数据查看范围",
|
|
153
176
|
"pisell2.attendance.group-settings.actions.search": "搜索",
|
|
154
177
|
"pisell2.attendance.group-settings.actions.cancel": "取消",
|
|
155
178
|
"pisell2.attendance.group-settings.actions.confirm": "确认",
|
|
@@ -157,6 +180,7 @@ var locales_default = {
|
|
|
157
180
|
"pisell2.attendance.group-settings.actions.save-settings": "保存设置",
|
|
158
181
|
"pisell2.attendance.group-settings.actions.add-location": "新增考勤地点",
|
|
159
182
|
"pisell2.attendance.group-settings.actions.add-location-confirm": "添加地点",
|
|
183
|
+
"pisell2.attendance.group-settings.actions.edit-location-confirm": "保存修改",
|
|
160
184
|
"pisell2.attendance.group-settings.shift-schedule.fixed-shifts.title": "固定班制考勤",
|
|
161
185
|
"pisell2.attendance.group-settings.shift-schedule.fixed-shifts.desc": "員工需按照预设的班次进行打卡。",
|
|
162
186
|
"pisell2.attendance.group-settings.shift-schedule.scheduled-shifts.set-shifts": "设置排班",
|
|
@@ -181,6 +205,17 @@ var locales_default = {
|
|
|
181
205
|
"pisell2.attendance.group-settings.shift-schedule.attendance-type.label": "考勤类型",
|
|
182
206
|
"pisell2.attendance.group-settings.shift-schedule.attendance-type.scheduled-shifts.title": "排班制",
|
|
183
207
|
"pisell2.attendance.group-settings.shift-schedule.attendance-type.scheduled-shifts.desc": "员工按照预设班次打卡",
|
|
208
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.working-days": "每周工作天数",
|
|
209
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.days-per-week": "天每周",
|
|
210
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.weekly-hours": "每周总工时",
|
|
211
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.hours": "小时",
|
|
212
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.table.day": "星期",
|
|
213
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.table.shift-times": "班次时间",
|
|
214
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.table.duration": "时长",
|
|
215
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.no-shift": "无班次",
|
|
216
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.duration": (hours, minutes) => `${hours}小时${minutes}分钟`,
|
|
217
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.period.am": "上午",
|
|
218
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.period.pm": "下午",
|
|
184
219
|
"pisell2.attendance.group-settings.clock-in-method.gps.title": "GPS定位打卡",
|
|
185
220
|
"pisell2.attendance.group-settings.clock-in-method.gps.desc": "员工通过Team APP进行GPS定位打卡,系统验证是否在考勤范围内",
|
|
186
221
|
"pisell2.attendance.group-settings.clock-in-method.approved-locations.label": (max) => `考勤地点(最多${max}个)`,
|
|
@@ -190,6 +225,7 @@ var locales_default = {
|
|
|
190
225
|
"pisell2.attendance.group-settings.clock-in-method.default-valid-range.desc": "员工可在距离各地点的该半径内打卡",
|
|
191
226
|
"pisell2.attendance.group-settings.clock-in-method.meters": (val) => `${val} 米`,
|
|
192
227
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.title": "新增考勤地点",
|
|
228
|
+
"pisell2.attendance.group-settings.clock-in-method.edit-location-modal.title": "编辑考勤地点",
|
|
193
229
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.label": "地点名称",
|
|
194
230
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.placeholder": "例如:总部大楼、门店A",
|
|
195
231
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.validation": "请输入地点名称",
|
|
@@ -201,6 +237,12 @@ var locales_default = {
|
|
|
201
237
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.longitude.validation": "请输入有效的经度",
|
|
202
238
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.valid-range.label": "有效范围(米)",
|
|
203
239
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.tip.google-maps": "提示:可以在Google Maps中点击位置获取经纬度坐标",
|
|
240
|
+
"pisell2.attendance.group-settings.basic-info.permission.limited": "限制",
|
|
241
|
+
"pisell2.attendance.group-settings.basic-info.permission.unlimited": "不限制",
|
|
242
|
+
"pisell2.attendance.group-settings.basic-info.permission.this-week": "本周",
|
|
243
|
+
"pisell2.attendance.group-settings.basic-info.permission.this-week.recommended": "本周(推荐)",
|
|
244
|
+
"pisell2.attendance.group-settings.basic-info.permission.last-week": "上周",
|
|
245
|
+
"pisell2.attendance.group-settings.basic-info.permission.this-month": "本月",
|
|
204
246
|
"pisell2.attendance.group-settings.correction-policy.allow-corrections.title": "允许补卡",
|
|
205
247
|
"pisell2.attendance.group-settings.correction-policy.allow-corrections.desc": "员工可以提交补卡申请,需要审批",
|
|
206
248
|
"pisell2.attendance.group-settings.correction-policy.types.label": "补卡类型",
|
|
@@ -212,7 +254,7 @@ var locales_default = {
|
|
|
212
254
|
"pisell2.attendance.group-settings.correction-policy.types.early-out.desc": "提前下班",
|
|
213
255
|
"pisell2.attendance.group-settings.correction-policy.types.normal.title": "正常",
|
|
214
256
|
"pisell2.attendance.group-settings.correction-policy.types.normal.desc": "正常打卡修正",
|
|
215
|
-
"pisell2.attendance.group-settings.correction-policy.approver.label": "
|
|
257
|
+
"pisell2.attendance.group-settings.correction-policy.approver.label": "审批人",
|
|
216
258
|
"pisell2.attendance.group-settings.correction-policy.approver.placeholder": "请选择审批人",
|
|
217
259
|
"pisell2.attendance.group-settings.correction-policy.approver.required": "请选择审批人",
|
|
218
260
|
"pisell2.attendance.group-settings.correction-policy.time-limit.label": "补卡时间限制",
|
|
@@ -255,6 +297,8 @@ var locales_default = {
|
|
|
255
297
|
"pisell2.attendance.group-settings.shift-schedule": "考勤班次",
|
|
256
298
|
"pisell2.attendance.group-settings.clock-in-method": "考勤方式",
|
|
257
299
|
"pisell2.attendance.group-settings.correction-policy": "補卡設定",
|
|
300
|
+
"pisell2.attendance.group-settings.data-permission": "數據權限",
|
|
301
|
+
"pisell2.attendance.group-settings.data-permission.employee-data-view-range": "員工數據查看範圍",
|
|
258
302
|
"pisell2.attendance.group-settings.actions.search": "搜索",
|
|
259
303
|
"pisell2.attendance.group-settings.actions.cancel": "取消",
|
|
260
304
|
"pisell2.attendance.group-settings.actions.confirm": "確認",
|
|
@@ -262,6 +306,7 @@ var locales_default = {
|
|
|
262
306
|
"pisell2.attendance.group-settings.actions.save-settings": "儲存設定",
|
|
263
307
|
"pisell2.attendance.group-settings.actions.add-location": "新增考勤地點",
|
|
264
308
|
"pisell2.attendance.group-settings.actions.add-location-confirm": "添加地點",
|
|
309
|
+
"pisell2.attendance.group-settings.actions.edit-location-confirm": "保存修改",
|
|
265
310
|
"pisell2.attendance.group-settings.shift-schedule.fixed-shifts.title": "固定班制考勤",
|
|
266
311
|
"pisell2.attendance.group-settings.shift-schedule.fixed-shifts.desc": "員工需按照預設的班次進行打卡。",
|
|
267
312
|
"pisell2.attendance.group-settings.shift-schedule.scheduled-shifts.set-shifts": "設置排班",
|
|
@@ -286,6 +331,17 @@ var locales_default = {
|
|
|
286
331
|
"pisell2.attendance.group-settings.shift-schedule.attendance-type.label": "考勤類型",
|
|
287
332
|
"pisell2.attendance.group-settings.shift-schedule.attendance-type.scheduled-shifts.title": "排班制",
|
|
288
333
|
"pisell2.attendance.group-settings.shift-schedule.attendance-type.scheduled-shifts.desc": "員工按照預設班次打卡",
|
|
334
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.working-days": "每週工作天數",
|
|
335
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.days-per-week": "天每週",
|
|
336
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.weekly-hours": "每週總工時",
|
|
337
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.hours": "小時",
|
|
338
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.table.day": "星期",
|
|
339
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.table.shift-times": "班次時間",
|
|
340
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.table.duration": "時長",
|
|
341
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.no-shift": "無班次",
|
|
342
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.duration": (hours, minutes) => `${hours}小時${minutes}分鐘`,
|
|
343
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.period.am": "上午",
|
|
344
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.period.pm": "下午",
|
|
289
345
|
"pisell2.attendance.group-settings.clock-in-method.gps.title": "GPS定位打卡",
|
|
290
346
|
"pisell2.attendance.group-settings.clock-in-method.gps.desc": "員工透過Team APP進行GPS定位打卡,系統驗證是否在考勤範圍內",
|
|
291
347
|
"pisell2.attendance.group-settings.clock-in-method.approved-locations.label": (max) => `考勤地點(最多${max}個)`,
|
|
@@ -295,6 +351,7 @@ var locales_default = {
|
|
|
295
351
|
"pisell2.attendance.group-settings.clock-in-method.default-valid-range.desc": "員工可在距離各地點的此半徑內打卡",
|
|
296
352
|
"pisell2.attendance.group-settings.clock-in-method.meters": (val) => `${val} 米`,
|
|
297
353
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.title": "新增考勤地點",
|
|
354
|
+
"pisell2.attendance.group-settings.clock-in-method.edit-location-modal.title": "編輯考勤地點",
|
|
298
355
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.label": "地點名稱",
|
|
299
356
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.placeholder": "例如:總部大樓、門店A",
|
|
300
357
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.location-name.validation": "請輸入地點名稱",
|
|
@@ -306,6 +363,12 @@ var locales_default = {
|
|
|
306
363
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.longitude.validation": "請輸入有效的經度",
|
|
307
364
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.valid-range.label": "有效範圍(米)",
|
|
308
365
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.tip.google-maps": "提示:可以在Google Maps中點擊位置獲取經緯度座標",
|
|
366
|
+
"pisell2.attendance.group-settings.basic-info.permission.limited": "限制",
|
|
367
|
+
"pisell2.attendance.group-settings.basic-info.permission.unlimited": "不限制",
|
|
368
|
+
"pisell2.attendance.group-settings.basic-info.permission.this-week": "本週",
|
|
369
|
+
"pisell2.attendance.group-settings.basic-info.permission.this-week.recommended": "本週(推薦)",
|
|
370
|
+
"pisell2.attendance.group-settings.basic-info.permission.last-week": "上週",
|
|
371
|
+
"pisell2.attendance.group-settings.basic-info.permission.this-month": "本月",
|
|
309
372
|
"pisell2.attendance.group-settings.correction-policy.allow-corrections.title": "允許補卡",
|
|
310
373
|
"pisell2.attendance.group-settings.correction-policy.allow-corrections.desc": "員工可以提交補卡申請,需要審批",
|
|
311
374
|
"pisell2.attendance.group-settings.correction-policy.types.label": "補卡類型",
|
|
@@ -317,7 +380,7 @@ var locales_default = {
|
|
|
317
380
|
"pisell2.attendance.group-settings.correction-policy.types.early-out.desc": "提前下班",
|
|
318
381
|
"pisell2.attendance.group-settings.correction-policy.types.normal.title": "正常",
|
|
319
382
|
"pisell2.attendance.group-settings.correction-policy.types.normal.desc": "正常打卡修正",
|
|
320
|
-
"pisell2.attendance.group-settings.correction-policy.approver.label": "
|
|
383
|
+
"pisell2.attendance.group-settings.correction-policy.approver.label": "審批人",
|
|
321
384
|
"pisell2.attendance.group-settings.correction-policy.approver.placeholder": "請選擇審批人",
|
|
322
385
|
"pisell2.attendance.group-settings.correction-policy.approver.required": "請選擇審批人",
|
|
323
386
|
"pisell2.attendance.group-settings.correction-policy.time-limit.label": "補卡時間限制",
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
|
|
29
|
+
// src/plus/saasAttendance/settings/PermissonTab.tsx
|
|
30
|
+
var PermissonTab_exports = {};
|
|
31
|
+
__export(PermissonTab_exports, {
|
|
32
|
+
default: () => PermissonTab_default
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(PermissonTab_exports);
|
|
35
|
+
var import_react = __toESM(require("react"));
|
|
36
|
+
var import_antd = require("antd");
|
|
37
|
+
var import_utils = require("@pisell/utils");
|
|
38
|
+
var PermissionField = (props) => {
|
|
39
|
+
var _a;
|
|
40
|
+
(0, import_react.useEffect)(() => {
|
|
41
|
+
var _a2, _b;
|
|
42
|
+
if (typeof ((_a2 = props.value) == null ? void 0 : _a2.member_data_view_range) === "undefined") {
|
|
43
|
+
(_b = props.onChange) == null ? void 0 : _b.call(props, {
|
|
44
|
+
...props.value || {},
|
|
45
|
+
member_data_view_range: ["this_week"]
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
}, []);
|
|
49
|
+
const options = [
|
|
50
|
+
{
|
|
51
|
+
label: import_utils.locales.getText(
|
|
52
|
+
"pisell2.attendance.group-settings.basic-info.permission.this-week.recommended"
|
|
53
|
+
),
|
|
54
|
+
value: "this_week"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
label: import_utils.locales.getText(
|
|
58
|
+
"pisell2.attendance.group-settings.basic-info.permission.last-week"
|
|
59
|
+
),
|
|
60
|
+
value: "last_week"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
label: import_utils.locales.getText(
|
|
64
|
+
"pisell2.attendance.group-settings.basic-info.permission.this-month"
|
|
65
|
+
),
|
|
66
|
+
value: "this_month"
|
|
67
|
+
}
|
|
68
|
+
];
|
|
69
|
+
const value = (_a = props.value) == null ? void 0 : _a.member_data_view_range;
|
|
70
|
+
const isLimited = Array.isArray(value) && value.length > 0;
|
|
71
|
+
return /* @__PURE__ */ import_react.default.createElement("div", null, /* @__PURE__ */ import_react.default.createElement(
|
|
72
|
+
import_antd.Radio.Group,
|
|
73
|
+
{
|
|
74
|
+
value: isLimited ? "limited" : "unlimited",
|
|
75
|
+
onChange: (e) => {
|
|
76
|
+
var _a2, _b;
|
|
77
|
+
const nextMode = e.target.value;
|
|
78
|
+
if (nextMode === "limited") {
|
|
79
|
+
const next = Array.isArray(value) && value.length > 0 ? value : ["this_week"];
|
|
80
|
+
(_a2 = props.onChange) == null ? void 0 : _a2.call(props, {
|
|
81
|
+
...props.value || {},
|
|
82
|
+
member_data_view_range: next
|
|
83
|
+
});
|
|
84
|
+
} else {
|
|
85
|
+
(_b = props.onChange) == null ? void 0 : _b.call(props, {
|
|
86
|
+
...props.value || {},
|
|
87
|
+
member_data_view_range: []
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
style: { marginBottom: 8 }
|
|
92
|
+
},
|
|
93
|
+
/* @__PURE__ */ import_react.default.createElement(import_antd.Radio, { value: "limited" }, import_utils.locales.getText(
|
|
94
|
+
"pisell2.attendance.group-settings.basic-info.permission.limited"
|
|
95
|
+
)),
|
|
96
|
+
/* @__PURE__ */ import_react.default.createElement(import_antd.Radio, { value: "unlimited" }, import_utils.locales.getText(
|
|
97
|
+
"pisell2.attendance.group-settings.basic-info.permission.unlimited"
|
|
98
|
+
))
|
|
99
|
+
), isLimited && /* @__PURE__ */ import_react.default.createElement(
|
|
100
|
+
import_antd.Select,
|
|
101
|
+
{
|
|
102
|
+
mode: "multiple",
|
|
103
|
+
allowClear: true,
|
|
104
|
+
value,
|
|
105
|
+
options,
|
|
106
|
+
onChange: (next) => {
|
|
107
|
+
var _a2;
|
|
108
|
+
(_a2 = props.onChange) == null ? void 0 : _a2.call(props, {
|
|
109
|
+
...props.value || {},
|
|
110
|
+
member_data_view_range: next.length > 0 ? next : []
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
));
|
|
115
|
+
};
|
|
116
|
+
var PermissonTab = (props) => {
|
|
117
|
+
return /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__panel", id: props.id }, /* @__PURE__ */ import_react.default.createElement(
|
|
118
|
+
import_antd.Form.Item,
|
|
119
|
+
{
|
|
120
|
+
label: import_utils.locales.getText(
|
|
121
|
+
"pisell2.attendance.group-settings.data-permission.employee-data-view-range"
|
|
122
|
+
),
|
|
123
|
+
name: "permission"
|
|
124
|
+
},
|
|
125
|
+
/* @__PURE__ */ import_react.default.createElement(PermissionField, null)
|
|
126
|
+
));
|
|
127
|
+
};
|
|
128
|
+
var PermissonTab_default = PermissonTab;
|
|
@@ -37,6 +37,7 @@ var import_antd = require("antd");
|
|
|
37
37
|
var import_materials = require("@pisell/materials");
|
|
38
38
|
var import_utils = require("@pisell/utils");
|
|
39
39
|
var import_shiftModal = __toESM(require("./components/shiftModal"));
|
|
40
|
+
var import_ShiftPreview = __toESM(require("./components/shiftModal/ShiftPreview"));
|
|
40
41
|
var ScheduleSetting = (props) => {
|
|
41
42
|
const { value, onChange } = props;
|
|
42
43
|
const [open, setOpen] = (0, import_react.useState)(false);
|
|
@@ -101,6 +102,6 @@ var ShiftScheduleTab = (props) => {
|
|
|
101
102
|
]
|
|
102
103
|
},
|
|
103
104
|
/* @__PURE__ */ import_react.default.createElement(ScheduleSetting, null)
|
|
104
|
-
));
|
|
105
|
+
), /* @__PURE__ */ import_react.default.createElement(import_antd.Form.Item, { noStyle: true, shouldUpdate: true }, (form) => /* @__PURE__ */ import_react.default.createElement(import_ShiftPreview.default, { value: form.getFieldValue(["shift", "fixed"]) })));
|
|
105
106
|
};
|
|
106
107
|
var ShiftScheduleTab_default = ShiftScheduleTab;
|
|
@@ -401,6 +401,9 @@ var MapField = (0, import_react.forwardRef)((props, ref) => {
|
|
|
401
401
|
const locations = (0, import_react.useMemo)(() => normalizeLocations(value), [value]);
|
|
402
402
|
const [addLocationOpen, setAddLocationOpen] = (0, import_react.useState)(false);
|
|
403
403
|
const [editingLocationValue, setEditingLocationValue] = (0, import_react.useState)(null);
|
|
404
|
+
const [editingLocationId, setEditingLocationId] = (0, import_react.useState)(
|
|
405
|
+
null
|
|
406
|
+
);
|
|
404
407
|
const locationFormMapRef = (0, import_react.useRef)(null);
|
|
405
408
|
const mapRef = (0, import_react.useRef)(null);
|
|
406
409
|
const [isMapReady, setIsMapReady] = (0, import_react.useState)(false);
|
|
@@ -472,6 +475,7 @@ var MapField = (0, import_react.forwardRef)((props, ref) => {
|
|
|
472
475
|
validRangeMeters: defaultRadius
|
|
473
476
|
};
|
|
474
477
|
setAddLocationOpen(true);
|
|
478
|
+
setEditingLocationId(null);
|
|
475
479
|
setEditingLocationValue(baseFormValue);
|
|
476
480
|
const currentPosition = await getCurrentPosition();
|
|
477
481
|
if (currentPosition) {
|
|
@@ -485,12 +489,12 @@ var MapField = (0, import_react.forwardRef)((props, ref) => {
|
|
|
485
489
|
}),
|
|
486
490
|
[defaultRadius]
|
|
487
491
|
);
|
|
488
|
-
const
|
|
492
|
+
const handleSubmitLocation = async () => {
|
|
489
493
|
if (!locationFormMapRef.current) return;
|
|
490
494
|
try {
|
|
491
495
|
const values = await locationFormMapRef.current.validate();
|
|
492
|
-
const
|
|
493
|
-
id: createLocationId(),
|
|
496
|
+
const nextLocation = {
|
|
497
|
+
id: editingLocationId ?? createLocationId(),
|
|
494
498
|
name: toMultiLangName(values.name),
|
|
495
499
|
radius: values.validRangeMeters,
|
|
496
500
|
address: {
|
|
@@ -498,15 +502,37 @@ var MapField = (0, import_react.forwardRef)((props, ref) => {
|
|
|
498
502
|
lng: parseFloat(values.longitude) || 0
|
|
499
503
|
}
|
|
500
504
|
};
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
505
|
+
if (editingLocationId) {
|
|
506
|
+
const nextLocations = locations.map(
|
|
507
|
+
(loc) => loc.id === editingLocationId ? nextLocation : loc
|
|
508
|
+
);
|
|
509
|
+
onChange == null ? void 0 : onChange(nextLocations);
|
|
510
|
+
setActiveLocationId(editingLocationId);
|
|
511
|
+
} else {
|
|
512
|
+
const nextLocations = [nextLocation, ...locations];
|
|
513
|
+
onChange == null ? void 0 : onChange(nextLocations);
|
|
514
|
+
setActiveLocationId(nextLocation.id);
|
|
515
|
+
}
|
|
504
516
|
setAddLocationOpen(false);
|
|
505
517
|
setEditingLocationValue(null);
|
|
518
|
+
setEditingLocationId(null);
|
|
506
519
|
} catch (error) {
|
|
507
520
|
console.error("Validation failed:", error);
|
|
508
521
|
}
|
|
509
522
|
};
|
|
523
|
+
const handleEditLocation = (0, import_react.useCallback)(
|
|
524
|
+
(location) => {
|
|
525
|
+
setAddLocationOpen(true);
|
|
526
|
+
setEditingLocationId(location.id);
|
|
527
|
+
setEditingLocationValue({
|
|
528
|
+
name: toMultiLangName(location.name),
|
|
529
|
+
latitude: String(location.address.lat ?? ""),
|
|
530
|
+
longitude: String(location.address.lng ?? ""),
|
|
531
|
+
validRangeMeters: location.radius ?? defaultRadius
|
|
532
|
+
});
|
|
533
|
+
},
|
|
534
|
+
[defaultRadius]
|
|
535
|
+
);
|
|
510
536
|
const handleRemoveLocation = (locationId) => {
|
|
511
537
|
const nextLocations = locations.filter((loc) => loc.id !== locationId);
|
|
512
538
|
onChange == null ? void 0 : onChange(nextLocations);
|
|
@@ -573,7 +599,19 @@ var MapField = (0, import_react.forwardRef)((props, ref) => {
|
|
|
573
599
|
onClick: () => handleLocationItemClick(location),
|
|
574
600
|
style: { cursor: "pointer" }
|
|
575
601
|
},
|
|
576
|
-
/* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-map-field__location-header" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__location-name" }, getLocationNameText(location.name)), /* @__PURE__ */ import_react.default.createElement(
|
|
602
|
+
/* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-map-field__location-header" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__location-name" }, getLocationNameText(location.name)), /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-map-field__location-actions" }, /* @__PURE__ */ import_react.default.createElement(
|
|
603
|
+
import_antd.Button,
|
|
604
|
+
{
|
|
605
|
+
type: "text",
|
|
606
|
+
size: "small",
|
|
607
|
+
icon: /* @__PURE__ */ import_react.default.createElement(import_materials.Icon, { type: "pisell2-edit-05", size: 16 }),
|
|
608
|
+
className: "saas-attendance-map-field__edit-btn",
|
|
609
|
+
onClick: (e) => {
|
|
610
|
+
e.stopPropagation();
|
|
611
|
+
handleEditLocation(location);
|
|
612
|
+
}
|
|
613
|
+
}
|
|
614
|
+
), /* @__PURE__ */ import_react.default.createElement(
|
|
577
615
|
import_antd.Button,
|
|
578
616
|
{
|
|
579
617
|
type: "text",
|
|
@@ -585,7 +623,7 @@ var MapField = (0, import_react.forwardRef)((props, ref) => {
|
|
|
585
623
|
handleRemoveLocation(location.id);
|
|
586
624
|
}
|
|
587
625
|
}
|
|
588
|
-
)),
|
|
626
|
+
))),
|
|
589
627
|
/* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__location-meta" }, import_utils.locales.getText(
|
|
590
628
|
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.valid-range.label"
|
|
591
629
|
), ": ", /* @__PURE__ */ import_react.default.createElement("span", null, location.radius || defaultRadius))
|
|
@@ -601,20 +639,21 @@ var MapField = (0, import_react.forwardRef)((props, ref) => {
|
|
|
601
639
|
{
|
|
602
640
|
open: addLocationOpen,
|
|
603
641
|
title: import_utils.locales.getText(
|
|
604
|
-
"pisell2.attendance.group-settings.clock-in-method.add-location-modal.title"
|
|
642
|
+
editingLocationId ? "pisell2.attendance.group-settings.clock-in-method.edit-location-modal.title" : "pisell2.attendance.group-settings.clock-in-method.add-location-modal.title"
|
|
605
643
|
),
|
|
606
644
|
destroyOnHidden: true,
|
|
607
645
|
onCancel: () => {
|
|
608
646
|
setAddLocationOpen(false);
|
|
609
647
|
setEditingLocationValue(null);
|
|
648
|
+
setEditingLocationId(null);
|
|
610
649
|
},
|
|
611
650
|
okText: import_utils.locales.getText(
|
|
612
|
-
"pisell2.attendance.group-settings.actions.add-location-confirm"
|
|
651
|
+
editingLocationId ? "pisell2.attendance.group-settings.actions.edit-location-confirm" : "pisell2.attendance.group-settings.actions.add-location-confirm"
|
|
613
652
|
),
|
|
614
653
|
cancelText: import_utils.locales.getText(
|
|
615
654
|
"pisell2.attendance.group-settings.actions.cancel"
|
|
616
655
|
),
|
|
617
|
-
onOk:
|
|
656
|
+
onOk: handleSubmitLocation
|
|
618
657
|
},
|
|
619
658
|
/* @__PURE__ */ import_react.default.createElement(
|
|
620
659
|
LocationFormMap,
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
var __create = Object.create;
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
6
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
+
var __export = (target, all) => {
|
|
8
|
+
for (var name in all)
|
|
9
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
+
};
|
|
11
|
+
var __copyProps = (to, from, except, desc) => {
|
|
12
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
+
for (let key of __getOwnPropNames(from))
|
|
14
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
+
}
|
|
17
|
+
return to;
|
|
18
|
+
};
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
20
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
21
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
22
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
23
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
24
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
25
|
+
mod
|
|
26
|
+
));
|
|
27
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
28
|
+
|
|
29
|
+
// src/plus/saasAttendance/settings/components/shiftModal/ShiftPreview.tsx
|
|
30
|
+
var ShiftPreview_exports = {};
|
|
31
|
+
__export(ShiftPreview_exports, {
|
|
32
|
+
default: () => ShiftPreview_default
|
|
33
|
+
});
|
|
34
|
+
module.exports = __toCommonJS(ShiftPreview_exports);
|
|
35
|
+
var import_react = __toESM(require("react"));
|
|
36
|
+
var import_utils = require("@pisell/utils");
|
|
37
|
+
var import_ShiftPreview = require("./ShiftPreview.less");
|
|
38
|
+
var WEEKDAYS = [1, 2, 3, 4, 5, 6, 7];
|
|
39
|
+
var getWeekdayText = (weekday) => {
|
|
40
|
+
return import_utils.locales.getText(
|
|
41
|
+
`pisell2.attendance.group-settings.shift-schedule.modal.weekday.${weekday}`
|
|
42
|
+
);
|
|
43
|
+
};
|
|
44
|
+
var parseMinutes = (hhmm) => {
|
|
45
|
+
const [h, m] = (hhmm || "").split(":").map((v) => Number(v));
|
|
46
|
+
if (!Number.isFinite(h) || !Number.isFinite(m)) {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
return h * 60 + m;
|
|
50
|
+
};
|
|
51
|
+
var formatClock = (hhmm) => {
|
|
52
|
+
const totalMinutes = parseMinutes(hhmm);
|
|
53
|
+
if (totalMinutes === null) return "";
|
|
54
|
+
const hours24 = Math.floor(totalMinutes / 60) % 24;
|
|
55
|
+
const minutes = totalMinutes % 60;
|
|
56
|
+
const suffix = hours24 >= 12 ? import_utils.locales.getText(
|
|
57
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.period.pm"
|
|
58
|
+
) : import_utils.locales.getText(
|
|
59
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.period.am"
|
|
60
|
+
);
|
|
61
|
+
const hours12 = hours24 % 12 === 0 ? 12 : hours24 % 12;
|
|
62
|
+
return `${hours12}:${String(minutes).padStart(2, "0")} ${suffix}`;
|
|
63
|
+
};
|
|
64
|
+
var formatWeeklyHours = (totalMinutes) => {
|
|
65
|
+
const hours = totalMinutes / 60;
|
|
66
|
+
if (Number.isInteger(hours)) return `${hours}`;
|
|
67
|
+
return `${hours.toFixed(2)}`.replace(/\.?0+$/, "");
|
|
68
|
+
};
|
|
69
|
+
var formatDuration = (totalMinutes) => {
|
|
70
|
+
const hours = Math.floor(totalMinutes / 60);
|
|
71
|
+
const minutes = totalMinutes % 60;
|
|
72
|
+
return import_utils.locales.getText(
|
|
73
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.duration"
|
|
74
|
+
)(hours, minutes);
|
|
75
|
+
};
|
|
76
|
+
var ShiftPreview = (props) => {
|
|
77
|
+
const schedule = Array.isArray(props.value) ? props.value : [];
|
|
78
|
+
const previewDays = (0, import_react.useMemo)(() => {
|
|
79
|
+
const byWeekday = /* @__PURE__ */ new Map();
|
|
80
|
+
schedule.forEach((item) => {
|
|
81
|
+
if (item && typeof item.weekday === "number") {
|
|
82
|
+
byWeekday.set(item.weekday, item);
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
return WEEKDAYS.map((weekday) => {
|
|
86
|
+
const item = byWeekday.get(weekday);
|
|
87
|
+
const times = Array.isArray(item == null ? void 0 : item.times) ? item.times : [];
|
|
88
|
+
const timeRanges = times.map((time) => {
|
|
89
|
+
const startText = formatClock(time == null ? void 0 : time.start);
|
|
90
|
+
const endText = formatClock(time == null ? void 0 : time.end);
|
|
91
|
+
if (!startText || !endText) return null;
|
|
92
|
+
return { startText, endText };
|
|
93
|
+
}).filter(Boolean);
|
|
94
|
+
const totalMinutes = times.reduce((sum, time) => {
|
|
95
|
+
const start = parseMinutes(time == null ? void 0 : time.start);
|
|
96
|
+
const end = parseMinutes(time == null ? void 0 : time.end);
|
|
97
|
+
if (start === null || end === null || end <= start) {
|
|
98
|
+
return sum;
|
|
99
|
+
}
|
|
100
|
+
return sum + (end - start);
|
|
101
|
+
}, 0);
|
|
102
|
+
return {
|
|
103
|
+
weekday,
|
|
104
|
+
timeRanges,
|
|
105
|
+
totalMinutes
|
|
106
|
+
};
|
|
107
|
+
});
|
|
108
|
+
}, [schedule]);
|
|
109
|
+
const workingDays = previewDays.filter((day) => day.totalMinutes > 0).length;
|
|
110
|
+
const weeklyMinutes = previewDays.reduce(
|
|
111
|
+
(sum, day) => sum + day.totalMinutes,
|
|
112
|
+
0
|
|
113
|
+
);
|
|
114
|
+
return /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-preview" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-summary" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-summary-card" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-summary-label" }, import_utils.locales.getText(
|
|
115
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.working-days"
|
|
116
|
+
)), /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-summary-value" }, workingDays), /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-summary-unit" }, import_utils.locales.getText(
|
|
117
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.days-per-week"
|
|
118
|
+
))), /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-summary-card" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-summary-label" }, import_utils.locales.getText(
|
|
119
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.weekly-hours"
|
|
120
|
+
)), /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-summary-value" }, formatWeeklyHours(weeklyMinutes)), /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-summary-unit" }, import_utils.locales.getText(
|
|
121
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.hours"
|
|
122
|
+
)))), /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-table" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-table-head" }, /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-table-cell" }, import_utils.locales.getText(
|
|
123
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.table.day"
|
|
124
|
+
)), /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-table-cell" }, import_utils.locales.getText(
|
|
125
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.table.shift-times"
|
|
126
|
+
)), /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-table-cell" }, import_utils.locales.getText(
|
|
127
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.table.duration"
|
|
128
|
+
))), previewDays.map((day) => /* @__PURE__ */ import_react.default.createElement(
|
|
129
|
+
"div",
|
|
130
|
+
{
|
|
131
|
+
key: day.weekday,
|
|
132
|
+
className: "saas-attendance-group-settings__shift-table-row"
|
|
133
|
+
},
|
|
134
|
+
/* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-table-cell" }, getWeekdayText(day.weekday)),
|
|
135
|
+
/* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-table-cell" }, day.timeRanges.length > 0 ? /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-times" }, day.timeRanges.map((range, index) => /* @__PURE__ */ import_react.default.createElement(
|
|
136
|
+
"div",
|
|
137
|
+
{
|
|
138
|
+
key: `${day.weekday}-${index}`,
|
|
139
|
+
className: "saas-attendance-group-settings__shift-time-tag"
|
|
140
|
+
},
|
|
141
|
+
/* @__PURE__ */ import_react.default.createElement("span", { className: "saas-attendance-group-settings__shift-time-text" }, range.startText),
|
|
142
|
+
/* @__PURE__ */ import_react.default.createElement("span", { className: "saas-attendance-group-settings__shift-time-arrow" }, "→"),
|
|
143
|
+
/* @__PURE__ */ import_react.default.createElement("span", { className: "saas-attendance-group-settings__shift-time-text" }, range.endText)
|
|
144
|
+
))) : /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-empty" }, import_utils.locales.getText(
|
|
145
|
+
"pisell2.attendance.group-settings.shift-schedule.preview.no-shift"
|
|
146
|
+
))),
|
|
147
|
+
/* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-table-cell" }, day.totalMinutes > 0 ? /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-duration" }, formatDuration(day.totalMinutes)) : /* @__PURE__ */ import_react.default.createElement("div", { className: "saas-attendance-group-settings__shift-duration-empty" }, formatDuration(0)))
|
|
148
|
+
))));
|
|
149
|
+
};
|
|
150
|
+
var ShiftPreview_default = ShiftPreview;
|