@feedmepos/mf-hrm-portal 1.1.3-dev → 1.1.4-dev.3

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.
@@ -0,0 +1,1637 @@
1
+ import { ref as b, watch as _, nextTick as y, onMounted as S, onBeforeUnmount as z, defineComponent as d, computed as v, createElementBlock as I, openBlock as p, normalizeStyle as F, renderSlot as H, resolveComponent as g, createBlock as M, withCtx as V, createElementVNode as Y, createVNode as G, defineAsyncComponent as J, watchEffect as W } from "vue";
2
+ import { useBreakpoints as K } from "@feedmepos/ui-library";
3
+ import { useRouter as Q } from "vue-router";
4
+ import { useI18n as X, useCoreStore as Z } from "@feedmepos/mf-common";
5
+ import { Permission as u } from "@feedmepos/hrm-permission";
6
+ import { withPermission as f } from "@feedmepos/hrm-permission/components";
7
+ const P = {
8
+ title: "Audit Log",
9
+ dateRange: {
10
+ placeholder: "Select date range"
11
+ },
12
+ filter: {
13
+ outcome_placeholder: "Filter by outcome",
14
+ selected_outcome_prefix: "Selected outcome: "
15
+ },
16
+ columns: {
17
+ timestamp: "Timestamp",
18
+ user: "User",
19
+ subject: "Subject",
20
+ action: "Action",
21
+ outcome: "Outcome"
22
+ },
23
+ outcome: {
24
+ allowed: "Allowed",
25
+ denied: "Denied",
26
+ skipped: "Skipped"
27
+ },
28
+ noData: {
29
+ title: "No audit logs",
30
+ subtitle: "Permission check logs will appear here once activity is recorded."
31
+ },
32
+ pagination: {
33
+ page: "Page {page}",
34
+ prevPage: "Previous page",
35
+ nextPage: "Next page"
36
+ },
37
+ detail: {
38
+ header: "Audit Log Detail",
39
+ timestamp: "Timestamp",
40
+ user: "User",
41
+ action: "Action",
42
+ subject: "Subject",
43
+ field: "Field",
44
+ outcome: "Outcome",
45
+ business: "Business",
46
+ restaurant: "Restaurant",
47
+ metadata: "Metadata",
48
+ reason: "Reason",
49
+ resolvedFrom: "Resolved From",
50
+ permissionSet: "Permission Set",
51
+ requestMethod: "Request Method",
52
+ requestPath: "Request Path",
53
+ requestBody: "Request Body"
54
+ }
55
+ }, ee = {
56
+ auditLog: P
57
+ }, te = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
58
+ __proto__: null,
59
+ auditLog: P,
60
+ default: ee
61
+ }, Symbol.toStringTag, { value: "Module" })), L = {
62
+ title: "บันทึกการตรวจสอบ",
63
+ dateRange: {
64
+ placeholder: "เลือกช่วงวันที่"
65
+ },
66
+ filter: {
67
+ outcome_placeholder: "กรองตามผลลัพธ์",
68
+ selected_outcome_prefix: "ผลลัพธ์ที่เลือก: "
69
+ },
70
+ columns: {
71
+ timestamp: "เวลา",
72
+ user: "ผู้ใช้",
73
+ subject: "หัวข้อ",
74
+ action: "การกระทำ",
75
+ outcome: "ผลลัพธ์"
76
+ },
77
+ outcome: {
78
+ allowed: "อนุญาต",
79
+ denied: "ปฏิเสธ",
80
+ skipped: "ข้ามไป"
81
+ },
82
+ noData: {
83
+ title: "ไม่มีบันทึกการตรวจสอบ",
84
+ subtitle: "บันทึกการตรวจสอบสิทธิ์จะแสดงขึ้นที่นี่เมื่อมีกิจกรรมถูกบันทึก"
85
+ },
86
+ pagination: {
87
+ page: "หน้า {page}",
88
+ prevPage: "หน้าก่อนหน้า",
89
+ nextPage: "หน้าถัดไป"
90
+ },
91
+ detail: {
92
+ header: "รายละเอียดบันทึกการตรวจสอบ",
93
+ timestamp: "เวลา",
94
+ user: "ผู้ใช้",
95
+ action: "การกระทำ",
96
+ subject: "หัวข้อ",
97
+ field: "ฟิลด์",
98
+ outcome: "ผลลัพธ์",
99
+ business: "ธุรกิจ",
100
+ restaurant: "ร้านอาหาร",
101
+ metadata: "ข้อมูลเมตา",
102
+ reason: "เหตุผล",
103
+ resolvedFrom: "แก้ไขจาก",
104
+ permissionSet: "ชุดสิทธิ์",
105
+ request: "คำขอ",
106
+ requestMethod: "วิธีการร้องขอ",
107
+ requestPath: "เส้นทางร้องขอ",
108
+ requestBody: "เนื้อหาคำขอ"
109
+ }
110
+ }, se = {
111
+ auditLog: L
112
+ }, ae = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
113
+ __proto__: null,
114
+ auditLog: L,
115
+ default: se
116
+ }, Symbol.toStringTag, { value: "Module" })), O = {
117
+ title: "审计日志",
118
+ dateRange: {
119
+ placeholder: "选择日期范围"
120
+ },
121
+ filter: {
122
+ outcome_placeholder: "按结果筛选",
123
+ selected_outcome_prefix: "已选结果: "
124
+ },
125
+ columns: {
126
+ timestamp: "时间戳",
127
+ user: "用户",
128
+ subject: "主题",
129
+ action: "操作",
130
+ outcome: "结果"
131
+ },
132
+ outcome: {
133
+ allowed: "允许",
134
+ denied: "拒绝",
135
+ skipped: "已跳过"
136
+ },
137
+ noData: {
138
+ title: "暂无审计日志",
139
+ subtitle: "一旦有活动记录,权限检查日志将显示在此处。"
140
+ },
141
+ pagination: {
142
+ page: "第 {page} 页",
143
+ prevPage: "上一页",
144
+ nextPage: "下一页"
145
+ },
146
+ detail: {
147
+ header: "审计日志详情",
148
+ timestamp: "时间戳",
149
+ user: "用户",
150
+ action: "操作",
151
+ subject: "主题",
152
+ field: "字段",
153
+ outcome: "结果",
154
+ business: "商家",
155
+ restaurant: "餐厅",
156
+ metadata: "元数据",
157
+ reason: "原因",
158
+ resolvedFrom: "解析来源",
159
+ permissionSet: "权限集",
160
+ request: "请求",
161
+ requestMethod: "请求方法",
162
+ requestPath: "请求路径",
163
+ requestBody: "请求内容"
164
+ }
165
+ }, re = {
166
+ auditLog: O
167
+ }, oe = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
168
+ __proto__: null,
169
+ auditLog: O,
170
+ default: re
171
+ }, Symbol.toStringTag, { value: "Module" })), N = {
172
+ title: "審計日誌",
173
+ dateRange: {
174
+ placeholder: "選擇日期範圍"
175
+ },
176
+ filter: {
177
+ outcome_placeholder: "按結果篩選",
178
+ selected_outcome_prefix: "已選結果: "
179
+ },
180
+ columns: {
181
+ timestamp: "時間戳",
182
+ user: "用戶",
183
+ subject: "主題",
184
+ action: "操作",
185
+ outcome: "結果"
186
+ },
187
+ outcome: {
188
+ allowed: "允許",
189
+ denied: "拒絕",
190
+ skipped: "已略過"
191
+ },
192
+ noData: {
193
+ title: "暫無審計日誌",
194
+ subtitle: "一旦有活動記錄,權限檢查日誌將顯示在此處。"
195
+ },
196
+ pagination: {
197
+ page: "第 {page} 頁",
198
+ prevPage: "上一頁",
199
+ nextPage: "下一頁"
200
+ },
201
+ detail: {
202
+ header: "審計日誌詳情",
203
+ timestamp: "時間戳",
204
+ user: "用戶",
205
+ action: "操作",
206
+ subject: "主題",
207
+ field: "字段",
208
+ outcome: "結果",
209
+ business: "商家",
210
+ restaurant: "餐廳",
211
+ metadata: "元數據",
212
+ reason: "原因",
213
+ resolvedFrom: "解析來源",
214
+ permissionSet: "權限集",
215
+ request: "請求",
216
+ requestMethod: "請求方法",
217
+ requestPath: "請求路徑",
218
+ requestBody: "請求內容"
219
+ }
220
+ }, ne = {
221
+ auditLog: N
222
+ }, le = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
223
+ __proto__: null,
224
+ auditLog: N,
225
+ default: ne
226
+ }, Symbol.toStringTag, { value: "Module" })), me = {
227
+ "en-US": te,
228
+ "zh-CN": oe,
229
+ "th-TH": ae,
230
+ "zh-Hant": le
231
+ }, R = {
232
+ employee: {
233
+ title: "Employee",
234
+ exportButtonLabel: "Export",
235
+ createButtonLabel: "Create employee",
236
+ columns: {
237
+ code: "Code",
238
+ name: "Name",
239
+ restaurants: "Restaurant",
240
+ since: "Join Since"
241
+ },
242
+ form: {
243
+ add: "Create employee",
244
+ update: "Update employee",
245
+ employeeSetting: "Employee setting",
246
+ masterUserConfig: "Master user configuration",
247
+ code: "Code",
248
+ masterUser: "Master User",
249
+ masterUserSublabel: "Convert to master user to prevent amend on POS",
250
+ required: "This field is required",
251
+ passcode: "Passcode",
252
+ passcodeRequired: "Passcode must be 4 digits",
253
+ passcodeGenerate: "Generate code",
254
+ atLeastOneRestaurant: "Select at least one restaurant",
255
+ all: "All",
256
+ role: "Role",
257
+ name: "Name"
258
+ },
259
+ create: {
260
+ successMessage: "Employee successfully created."
261
+ },
262
+ remove: {
263
+ title: "Remove employee",
264
+ message: "Do you really want to remove employee {name}?",
265
+ successMessage: "{name} successfully removed."
266
+ },
267
+ update: {
268
+ successMessage: "Employee successfully updated."
269
+ },
270
+ minSelection: "Min selection 1",
271
+ search: {
272
+ placeholder: "Search employee"
273
+ },
274
+ filter: {
275
+ role_placeholder: "Filter by role",
276
+ selected_role_prefix: "Selected roles: "
277
+ },
278
+ restaurants: "Restaurant: {restaurants}",
279
+ noData: {
280
+ title: "No employee found",
281
+ subtitle: "You don’t have any employee to show at the current moment."
282
+ },
283
+ cannotUpdateMasterUser: "Cannot update master user",
284
+ sync: {
285
+ tooltip: "Sync user data",
286
+ successMessage: "User data sync completed.",
287
+ errorMessage: "User data sync failed. Please try again."
288
+ }
289
+ },
290
+ role: {
291
+ title: "Role",
292
+ createButtonLabel: "Create role",
293
+ columns: {
294
+ name: "Name",
295
+ operation: "Operation",
296
+ report: "Report",
297
+ restaurants: "Restaurant"
298
+ },
299
+ labels: {
300
+ restaurant: "Restaurant",
301
+ restaurantList: "Restaurants: {items}",
302
+ operation: "Operation",
303
+ operationList: "Operation: {items}",
304
+ report: "Report",
305
+ reportList: "Report: {items}",
306
+ other: "Other",
307
+ otherList: "Other: {items}"
308
+ },
309
+ add: {
310
+ successMessage: "{name} successfully added."
311
+ },
312
+ update: {
313
+ successMessage: "{name} successfully updated."
314
+ },
315
+ remove: {
316
+ title: "Remove role",
317
+ message: "Do you really want to delete role {name}?",
318
+ successMessage: "{name} successfully removed."
319
+ },
320
+ search: {
321
+ placeholder: "Search role"
322
+ },
323
+ form: {
324
+ add: "Create role",
325
+ update: "Update role",
326
+ name: "Name",
327
+ required: "This field is required",
328
+ all: "All",
329
+ roleDetail: "Role detail",
330
+ atLeastOneRestaurant: "Must select at least one restaurant",
331
+ permissions: "Permissions",
332
+ maxDiscountPercentage: "Max discount percentage",
333
+ onlyContainsNumber: "This field can only contains number",
334
+ maxValueIs: "Max value is {max}",
335
+ minValueIs: "Min value is {min}",
336
+ restaurant: "Restaurant"
337
+ },
338
+ noData: {
339
+ title: "No role found",
340
+ subtitle: "You don’t have any role to show at the current moment."
341
+ },
342
+ tooltip: {
343
+ labels: {
344
+ permission: "Permission"
345
+ }
346
+ }
347
+ },
348
+ timesheet: {
349
+ title: "Timesheet",
350
+ listView: "List view",
351
+ userView: "User view",
352
+ dateFormat: "D MMM YYYY h:mm A",
353
+ employeeName: "Employee name",
354
+ columns: {
355
+ name: "Name",
356
+ restaurant: "Restaurant",
357
+ start: "Clock In",
358
+ end: "Clock Out",
359
+ duration: "Duration",
360
+ hourMinute: "Hour/Minute"
361
+ },
362
+ checkOutMustBeforeCheckIn: "Check Out must be before Check In",
363
+ update: {
364
+ title: "Update timesheet",
365
+ successMessage: "Timesheet updated.",
366
+ checkIn: "Check in",
367
+ checkOut: "Check out",
368
+ date: "Date",
369
+ time: "Time"
370
+ },
371
+ search: {
372
+ placeholder: "Search timesheet"
373
+ },
374
+ noData: {
375
+ title: "No result found",
376
+ subtitle: ""
377
+ }
378
+ },
379
+ restaurant: {
380
+ search: {
381
+ placeholder: "Search restaurant"
382
+ }
383
+ }
384
+ }, ie = {
385
+ hr: R
386
+ }, ce = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
387
+ __proto__: null,
388
+ default: ie,
389
+ hr: R
390
+ }, Symbol.toStringTag, { value: "Module" })), E = {
391
+ employee: {
392
+ title: "พนักงาน",
393
+ exportButtonLabel: "ส่งออก",
394
+ createButtonLabel: "สร้างพนักงาน",
395
+ columns: {
396
+ code: "รหัส",
397
+ name: "ชื่อ",
398
+ restaurants: "ร้านอาหาร",
399
+ since: "เข้าร่วมตั้งแต่"
400
+ },
401
+ form: {
402
+ add: "สร้างพนักงาน",
403
+ update: "อัพเดทพนักงาน",
404
+ employeeSetting: "ตั้งค่าพนักงาน",
405
+ masterUserConfig: "ตั้งค่าผู้ใช้หลัก",
406
+ code: "รหัส",
407
+ masterUser: "ผู้ใช้หลัก",
408
+ masterUserSublabel: "แปลงเป็นผู้ใช้หลักเพื่อป้องกันการแก้ไข POS",
409
+ required: "โปรดระบุข้อมูล",
410
+ passcode: "รหัสผ่าน",
411
+ passcodeRequired: "รหัสผ่านต้องเป็นตัวเลข 4 หลัก",
412
+ passcodeGenerate: "สร้างรหัส",
413
+ atLeastOneRestaurant: "เลือกร้านอาหารอย่างน้อยหนึ่งสาขา",
414
+ all: "ทั้งหมด",
415
+ role: "บทบาท",
416
+ name: "ชื่อ"
417
+ },
418
+ create: {
419
+ successMessage: "สร้างพนักงานสำเร็จแล้ว"
420
+ },
421
+ remove: {
422
+ title: "ถอดพนักงานออก",
423
+ message: "คุณต้องการลบพนักงาน {name} ใช่หรือไม่?",
424
+ successMessage: "ลบ {name} สำเร็จ\r"
425
+ },
426
+ update: {
427
+ successMessage: "อัปเดตพนักงานเรียบร้อย"
428
+ },
429
+ minSelection: "เลือกขั้นต่ำ 1 รายการ",
430
+ search: {
431
+ placeholder: "ค้นหาพนักงาน"
432
+ },
433
+ filter: {
434
+ role_placeholder: "กรองตามบทบาท",
435
+ selected_role_prefix: "บทบาทที่เลือก: "
436
+ },
437
+ restaurants: "ร้านอาหาร: {ร้านอาหาร}",
438
+ noData: {
439
+ title: "ไม่พบพนักงาน",
440
+ subtitle: "คุณไม่มีพนักงานที่จะแสดงในขณะนี้"
441
+ },
442
+ cannotUpdateMasterUser: "ไม่สามารถอัปเดตผู้ใช้หลักได้",
443
+ sync: {
444
+ tooltip: "ซิงค์ข้อมูลผู้ใช้",
445
+ successMessage: "ซิงค์ข้อมูลผู้ใช้เสร็จสมบูรณ์",
446
+ errorMessage: "ซิงค์ข้อมูลผู้ใช้ล้มเหลว กรุณาลองใหม่อีกครั้ง"
447
+ }
448
+ },
449
+ role: {
450
+ title: "บทบาท",
451
+ createButtonLabel: "สร้างบทบาท",
452
+ columns: {
453
+ name: "ชื่อ",
454
+ operation: "การดำเนินการ",
455
+ report: "รายงาน",
456
+ restaurants: "ร้านอาหาร"
457
+ },
458
+ labels: {
459
+ restaurant: "ร้านอาหาร",
460
+ restaurantList: "ร้านอาหาร: {items}",
461
+ operation: "การดำเนินการ",
462
+ operationList: "การดำเนินการ: {items}",
463
+ report: "รายงาน",
464
+ reportList: "รายงาน: {รายการ}",
465
+ other: "อื่น",
466
+ otherList: "อื่นๆ: {รายการ}"
467
+ },
468
+ add: {
469
+ successMessage: "เพิ่ม {name} สำเร็จ"
470
+ },
471
+ update: {
472
+ successMessage: "{name} อัปเดตสำเร็จ"
473
+ },
474
+ remove: {
475
+ title: "ลบบทบาท",
476
+ message: "คุณต้องการลบบทบาท {name} ใช่หรือไม่?",
477
+ successMessage: "ลบ {name} สำเร็จ"
478
+ },
479
+ search: {
480
+ placeholder: "ค้นหาบทบาท"
481
+ },
482
+ form: {
483
+ add: "สร้างบทบาท",
484
+ update: "อัปเดตบทบาท",
485
+ name: "ชื่อ",
486
+ required: "โปรดระบุข้อมูล",
487
+ all: "ทั้งหมด",
488
+ roleDetail: "รายละเอียดบทบาท",
489
+ atLeastOneRestaurant: "เลือกร้านอาหารอย่างน้อยหนึ่งสาขา",
490
+ permissions: "สิทธิ์",
491
+ maxDiscountPercentage: "เปอร์เซ็นต์ส่วนลดสูงสุด",
492
+ onlyContainsNumber: "โปรดระบุตัวเลข\r",
493
+ maxValueIs: "ค่าสูงสุดคือ {max}",
494
+ minValueIs: "ค่าต่ำสุดคือ {min}",
495
+ restaurant: "ร้านอาหาร"
496
+ },
497
+ noData: {
498
+ title: "ไม่พบบทบาท",
499
+ subtitle: "คุณไม่มีบทบาทที่จะแสดงในขณะนี้"
500
+ },
501
+ tooltip: {
502
+ labels: {
503
+ permission: "สิทธิ์"
504
+ }
505
+ }
506
+ },
507
+ timesheet: {
508
+ title: "ใบลงเวลาทำงาน",
509
+ listView: "มุมมองรายการ",
510
+ userView: "มุมมองผู้ใช้",
511
+ dateFormat: "วัน เดือน ปี ค.ศ. ชม:น A",
512
+ employeeName: "ชื่อพนักงาน",
513
+ columns: {
514
+ name: "ชื่อ",
515
+ restaurant: "ร้านอาหาร",
516
+ start: "Clock In",
517
+ end: "Clock Out",
518
+ duration: "ระยะเวลา",
519
+ hourMinute: "ชั่วโมง/นาที"
520
+ },
521
+ checkOutMustBeforeCheckIn: "กรุณาเช็คเอาท์ก่อนเช็คอิน",
522
+ update: {
523
+ title: "อัปเดตใบลงเวลาทำงาน",
524
+ successMessage: "อัปเดตใบลงเวลาทำงานสำเร็จ",
525
+ checkIn: "Clock In",
526
+ checkOut: "Clock Out",
527
+ date: "วันที่",
528
+ time: "เวลา"
529
+ },
530
+ search: {
531
+ placeholder: "ค้นหาใบลงเวลาทำงาน"
532
+ },
533
+ noData: {
534
+ title: "ไม่พบผลลัพธ์"
535
+ }
536
+ },
537
+ restaurant: {
538
+ search: {
539
+ placeholder: "ค้นหาร้านอาหาร"
540
+ }
541
+ }
542
+ }, ue = {
543
+ hr: E
544
+ }, de = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
545
+ __proto__: null,
546
+ default: ue,
547
+ hr: E
548
+ }, Symbol.toStringTag, { value: "Module" })), w = {
549
+ employee: {
550
+ title: "员工",
551
+ exportButtonLabel: "导出",
552
+ createButtonLabel: "添加员工",
553
+ columns: {
554
+ code: "工号",
555
+ name: "姓名",
556
+ restaurants: "餐厅",
557
+ since: "入职时间"
558
+ },
559
+ form: {
560
+ add: "添加员工",
561
+ update: "更新员工",
562
+ employeeSetting: "员工设置",
563
+ masterUserConfig: "主用户配置",
564
+ code: "工号",
565
+ masterUser: "主用户",
566
+ masterUserSublabel: "转换为主用户以防止在POS上修改",
567
+ required: "此字段是必填项",
568
+ passcode: "密码",
569
+ passcodeRequired: "密码必须为4位数字",
570
+ passcodeGenerate: "生成密码",
571
+ atLeastOneRestaurant: "至少选择一个餐厅",
572
+ all: "全选",
573
+ role: "角色",
574
+ name: "姓名"
575
+ },
576
+ create: {
577
+ successMessage: "员工成功创建。"
578
+ },
579
+ remove: {
580
+ title: "移除员工",
581
+ message: "确定要移除员工 {name} 吗?",
582
+ successMessage: "{name} 已移除。"
583
+ },
584
+ update: {
585
+ successMessage: "员工成功更新。"
586
+ },
587
+ minSelection: "至少选择一个员工",
588
+ search: {
589
+ placeholder: "搜索员工"
590
+ },
591
+ filter: {
592
+ role_placeholder: "按角色筛选",
593
+ selected_role_prefix: "已选角色: "
594
+ },
595
+ restaurants: "餐厅: {restaurants}",
596
+ noData: {
597
+ title: "没有找到员工",
598
+ subtitle: "当前没有员工。"
599
+ },
600
+ cannotUpdateMasterUser: "无法更改此用户",
601
+ sync: {
602
+ tooltip: "同步用户数据",
603
+ successMessage: "用户数据同步完成。",
604
+ errorMessage: "用户数据同步失败。请重试。"
605
+ }
606
+ },
607
+ role: {
608
+ title: "角色",
609
+ createButtonLabel: "创建角色",
610
+ columns: {
611
+ name: "名称",
612
+ operation: "操作",
613
+ report: "报告",
614
+ restaurants: "餐厅"
615
+ },
616
+ labels: {
617
+ restaurant: "餐厅",
618
+ restaurantList: "餐厅: {items}",
619
+ operation: "操作",
620
+ operationList: "操作: {items}",
621
+ report: "报告",
622
+ reportList: "报告: {items}",
623
+ other: "其他",
624
+ otherList: "其他: {items}"
625
+ },
626
+ add: {
627
+ successMessage: "{name} 成功添加。"
628
+ },
629
+ update: {
630
+ successMessage: "{name} 成功更新。"
631
+ },
632
+ remove: {
633
+ title: "移除角色",
634
+ message: "确定要删除角色 {name} 吗?",
635
+ successMessage: "{name} 已移除。"
636
+ },
637
+ search: {
638
+ placeholder: "搜索角色"
639
+ },
640
+ form: {
641
+ add: "创建角色",
642
+ update: "更新角色",
643
+ name: "名称",
644
+ required: "此字段是必填项",
645
+ all: "全选",
646
+ roleDetail: "角色详情",
647
+ atLeastOneRestaurant: "必须选择至少一个餐厅",
648
+ permissions: "权限",
649
+ maxDiscountPercentage: "最大折扣百分比",
650
+ onlyContainsNumber: "此字段只能包含数字",
651
+ maxValueIs: "最大值是 {max}",
652
+ minValueIs: "最小值是 {min}",
653
+ restaurant: "餐厅"
654
+ },
655
+ noData: {
656
+ title: "没有找到角色",
657
+ subtitle: "当前没有角色"
658
+ },
659
+ tooltip: {
660
+ labels: {
661
+ permission: "权限"
662
+ }
663
+ }
664
+ },
665
+ timesheet: {
666
+ title: " 工时",
667
+ listView: "列表视图",
668
+ userView: "用户视图",
669
+ dateFormat: "D MMM YYYY h:mm A",
670
+ employeeName: "员工姓名",
671
+ columns: {
672
+ name: "姓名",
673
+ restaurant: "餐厅",
674
+ start: "开始时间",
675
+ end: "结束时间",
676
+ duration: "工时",
677
+ hourMinute: "小时/分钟"
678
+ },
679
+ checkOutMustBeforeCheckIn: "打卡结束必须早于打卡开始",
680
+ update: {
681
+ title: "更新工时",
682
+ successMessage: "工时已更新。",
683
+ checkIn: "打卡开始",
684
+ checkOut: "打卡结束",
685
+ date: "日期",
686
+ time: "时间"
687
+ },
688
+ search: {
689
+ placeholder: "搜索工时"
690
+ },
691
+ noData: {
692
+ title: "没有找到工时",
693
+ subtitle: ""
694
+ }
695
+ },
696
+ restaurant: {
697
+ search: {
698
+ placeholder: "搜索餐厅"
699
+ }
700
+ }
701
+ }, pe = {
702
+ hr: w
703
+ }, he = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
704
+ __proto__: null,
705
+ default: pe,
706
+ hr: w
707
+ }, Symbol.toStringTag, { value: "Module" })), C = {
708
+ employee: {
709
+ title: "員工",
710
+ exportButtonLabel: "導出",
711
+ createButtonLabel: "添加員工",
712
+ columns: {
713
+ code: "工號",
714
+ name: "姓名",
715
+ restaurants: "餐廳",
716
+ since: "入職時間"
717
+ },
718
+ form: {
719
+ add: "添加員工",
720
+ update: "更新員工",
721
+ employeeSetting: "員工設置",
722
+ masterUserConfig: "主用户配置",
723
+ code: "工號",
724
+ masterUser: "主用户",
725
+ masterUserSublabel: "轉換為主用户以防止在POS上修改",
726
+ required: "此字段是必填項",
727
+ passcode: "密碼",
728
+ passcodeRequired: "密碼必須為4位數字",
729
+ passcodeGenerate: "生成密碼",
730
+ atLeastOneRestaurant: "至少選擇一個餐廳",
731
+ all: "全選",
732
+ role: "角色",
733
+ name: "姓名"
734
+ },
735
+ create: {
736
+ successMessage: "員工成功創建。"
737
+ },
738
+ remove: {
739
+ title: "移除員工",
740
+ message: "確定要移除員工 {name} 嗎?",
741
+ successMessage: "{name} 已移除。"
742
+ },
743
+ update: {
744
+ successMessage: "員工成功更新。"
745
+ },
746
+ minSelection: "至少選擇一個員工",
747
+ search: {
748
+ placeholder: "搜索員工"
749
+ },
750
+ filter: {
751
+ role_placeholder: "按角色篩選",
752
+ selected_role_prefix: "已選角色: "
753
+ },
754
+ restaurants: "餐廳: {restaurants}",
755
+ noData: {
756
+ title: "沒有找到員工",
757
+ subtitle: "當前沒有員工。"
758
+ },
759
+ cannotUpdateMasterUser: "無法更改此用户",
760
+ sync: {
761
+ tooltip: "同步用户數據",
762
+ successMessage: "用户數據同步完成。",
763
+ errorMessage: "用户數據同步失敗。請重試。"
764
+ }
765
+ },
766
+ role: {
767
+ title: "角色",
768
+ createButtonLabel: "創建角色",
769
+ columns: {
770
+ name: "名稱",
771
+ operation: "操作",
772
+ report: "報告",
773
+ restaurants: "餐廳"
774
+ },
775
+ labels: {
776
+ restaurant: "餐廳",
777
+ restaurantList: "餐廳: {items}",
778
+ operation: "操作",
779
+ operationList: "操作: {items}",
780
+ report: "報告",
781
+ reportList: "報告: {items}",
782
+ other: "其他",
783
+ otherList: "其他: {items}"
784
+ },
785
+ add: {
786
+ successMessage: "{name} 成功添加。"
787
+ },
788
+ update: {
789
+ successMessage: "{name} 成功更新。"
790
+ },
791
+ remove: {
792
+ title: "移除角色",
793
+ message: "確定要刪除角色 {name} 嗎?",
794
+ successMessage: "{name} 已移除。"
795
+ },
796
+ search: {
797
+ placeholder: "搜索角色"
798
+ },
799
+ form: {
800
+ add: "創建角色",
801
+ update: "更新角色",
802
+ name: "名稱",
803
+ required: "此字段是必填項",
804
+ all: "全選",
805
+ roleDetail: "角色詳情",
806
+ atLeastOneRestaurant: "必須選擇至少一個餐廳",
807
+ permissions: "權限",
808
+ maxDiscountPercentage: "最大折扣百分比",
809
+ onlyContainsNumber: "此字段只能包含數字",
810
+ maxValueIs: "最大值是 {max}",
811
+ minValueIs: "最小值是 {min}",
812
+ restaurant: "餐廳"
813
+ },
814
+ noData: {
815
+ title: "沒有找到角色",
816
+ subtitle: "當前沒有角色"
817
+ },
818
+ tooltip: {
819
+ labels: {
820
+ permission: "權限"
821
+ }
822
+ }
823
+ },
824
+ timesheet: {
825
+ title: " 工時",
826
+ listView: "列表視圖",
827
+ userView: "用户視圖",
828
+ dateFormat: "D MMM YYYY h:mm A",
829
+ employeeName: "員工姓名",
830
+ columns: {
831
+ name: "姓名",
832
+ restaurant: "餐廳",
833
+ start: "開始時間",
834
+ end: "結束時間",
835
+ duration: "工時",
836
+ hourMinute: "小時/分鐘"
837
+ },
838
+ checkOutMustBeforeCheckIn: "打卡結束必須早於打卡開始",
839
+ update: {
840
+ title: "更新工時",
841
+ successMessage: "工時已更新。",
842
+ checkIn: "打卡開始",
843
+ checkOut: "打卡結束",
844
+ date: "日期",
845
+ time: "時間"
846
+ },
847
+ search: {
848
+ placeholder: "搜索工時"
849
+ },
850
+ noData: {
851
+ title: "沒有找到工時",
852
+ subtitle: ""
853
+ }
854
+ }
855
+ }, be = {
856
+ hr: C
857
+ }, ge = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
858
+ __proto__: null,
859
+ default: be,
860
+ hr: C
861
+ }, Symbol.toStringTag, { value: "Module" })), Me = {
862
+ "en-US": ce,
863
+ "zh-CN": he,
864
+ "th-TH": de,
865
+ "zh-Hant": ge
866
+ }, U = {
867
+ title: "Team members",
868
+ actions: {
869
+ addMember: "Add member",
870
+ updateMember: "Update member",
871
+ removeMember: "Remove member"
872
+ },
873
+ table: {
874
+ columns: {
875
+ name: "Name",
876
+ phoneNumber: "Contact",
877
+ restaurant: "Restaurant",
878
+ permission: "Permission",
879
+ assignedRoles: "Assigned Roles"
880
+ }
881
+ },
882
+ labels: {
883
+ all: "All",
884
+ businessOwner: "Business owner",
885
+ permission: "Permission",
886
+ permissions: "permissions",
887
+ allowed: "{ count } permission(s) allowed",
888
+ restaurant: "restaurant",
889
+ warehouse: "warehouse"
890
+ },
891
+ removeMember: {
892
+ title: "Remove member",
893
+ confirmationMessage: "Do you really want to remove member {memberName}?",
894
+ successMessage: "{memberName} removed."
895
+ },
896
+ addMember: {
897
+ title: "Add member",
898
+ successMessage: "{memberName} added."
899
+ },
900
+ updateMember: {
901
+ title: "Update member",
902
+ successMessage: "{memberName} updated."
903
+ },
904
+ search: {
905
+ placeholder: "Search team members"
906
+ },
907
+ filter: {
908
+ permission_placeholder: "Filter by permission",
909
+ selected_permission_prefix: "Selected permissions: "
910
+ },
911
+ emptyState: {
912
+ title: "No team members found",
913
+ description: "You don’t have any team members to show at the current moment."
914
+ },
915
+ memberForm: {
916
+ searchUser: {
917
+ phoneNumber: "Phone number",
918
+ email: "Email",
919
+ emailPlaceholder: "Enter email",
920
+ search: "Search user",
921
+ changeUser: "Change user",
922
+ userNotFound: "User not found",
923
+ emptyError: "Please enter phone number or email"
924
+ },
925
+ memberInfo: {
926
+ memberName: "Member name",
927
+ mobileNumber: "Mobile number",
928
+ emailAddress: "Email address"
929
+ },
930
+ permissions: {
931
+ manageable: "Manageable {context}",
932
+ search: "Search {context}",
933
+ general: "General permissions",
934
+ stock: "Stock permissions",
935
+ hrm: "HRM permissions",
936
+ crm: "CRM permissions",
937
+ includedFuture: "Include future {context}",
938
+ includedNewRole: "Include new added role",
939
+ roles: "Usable POS roles",
940
+ inherited: "Inherited permission from:"
941
+ },
942
+ masterUser: {
943
+ title: "Master user",
944
+ passcode: "Master user passcode",
945
+ passcodeRequired: "Passcode must be 4 digits",
946
+ sublabel: "Master user can access restaurant POS system.",
947
+ code: "Code",
948
+ name: "Name",
949
+ role: "Role",
950
+ nameEmptyError: "Please enter name"
951
+ },
952
+ posRole: {
953
+ placeholder: "Search POS role"
954
+ },
955
+ permissionSet: {
956
+ title: "Permission Role",
957
+ selectPlaceholder: "Select permission role"
958
+ }
959
+ }
960
+ }, x = {
961
+ title: "Role",
962
+ createButtonLabel: "Create role",
963
+ search: {
964
+ placeholder: "Search role"
965
+ },
966
+ noData: {
967
+ title: "No role found",
968
+ subtitle: "You don't have any role to show at the current moment."
969
+ },
970
+ form: {
971
+ create: {
972
+ title: "Create role",
973
+ confirmButtonLabel: "create"
974
+ },
975
+ update: {
976
+ title: "Update role",
977
+ confirmButtonLabel: "update"
978
+ },
979
+ delete: {
980
+ title: "Delete role",
981
+ confirmationMessage: "Do you really want to delete role {roleName}?",
982
+ successMessage: "Role {roleName} deleted."
983
+ },
984
+ name: "Role name",
985
+ roleNamePlaceholder: "Enter role name"
986
+ },
987
+ table: {
988
+ columns: {
989
+ name: "Name",
990
+ permissions: "Permissions"
991
+ }
992
+ }
993
+ }, fe = {
994
+ team: U,
995
+ role: x
996
+ }, _e = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
997
+ __proto__: null,
998
+ default: fe,
999
+ role: x,
1000
+ team: U
1001
+ }, Symbol.toStringTag, { value: "Module" })), k = {
1002
+ title: "สมาชิกในทีม",
1003
+ actions: {
1004
+ addMember: "เพิ่มสมาชิก",
1005
+ updateMember: "อัปเดตสมาชิก",
1006
+ removeMember: "ลบสมาชิก"
1007
+ },
1008
+ table: {
1009
+ columns: {
1010
+ name: "ชื่อ",
1011
+ phoneNumber: "ผู้ติดต่อ",
1012
+ restaurant: "ร้านอาหาร",
1013
+ permission: "สิทธิ์อนุญาต"
1014
+ }
1015
+ },
1016
+ labels: {
1017
+ all: "ทั้งหมด",
1018
+ businessOwner: "เจ้าของธุรกิจ",
1019
+ permission: "สิทธิ์อนุญาต",
1020
+ permissions: "สิทธิ์อนุญาต",
1021
+ allowed: "{ count } สิทธิ์ที่อนุญาต",
1022
+ restaurant: "ร้านอาหาร",
1023
+ warehouse: "คลังสินค้า"
1024
+ },
1025
+ removeMember: {
1026
+ title: "ลบสมาชิก",
1027
+ confirmationMessage: "คุณต้องการที่จะลบสมาชิก {memberName} จริงหรือไม่?",
1028
+ successMessage: "{memberName} ถูกลบออก"
1029
+ },
1030
+ addMember: {
1031
+ title: "เพิ่มสมาชิก",
1032
+ successMessage: "เพิ่ม {memberName} แล้ว"
1033
+ },
1034
+ updateMember: {
1035
+ title: "อัปเดตสมาชิก",
1036
+ successMessage: "อัปเดต {memberName} แล้ว"
1037
+ },
1038
+ search: {
1039
+ placeholder: "ค้นหาสมาชิกในทีม"
1040
+ },
1041
+ filter: {
1042
+ permission_placeholder: "กรองตามสิทธิ์อนุญาต",
1043
+ selected_permission_prefix: "สิทธิ์ที่เลือก: "
1044
+ },
1045
+ emptyState: {
1046
+ title: "ไม่พบสมาชิกในทีม",
1047
+ description: "คุณไม่มีสมาชิกในทีมที่จะแสดงในขณะนี้"
1048
+ },
1049
+ memberForm: {
1050
+ searchUser: {
1051
+ phoneNumber: "หมายเลขโทรศัพท์",
1052
+ email: "อีเมล",
1053
+ emailPlaceholder: "ป้อนอีเมล",
1054
+ search: "ค้นหาผู้ใช้",
1055
+ changeUser: "เปลี่ยนผู้ใช้",
1056
+ userNotFound: "ไม่พบผู้ใช้",
1057
+ emptyError: "กรุณาป้อนหมายเลขโทรศัพท์หรืออีเมล"
1058
+ },
1059
+ memberInfo: {
1060
+ memberName: "ชื่อสมาชิก",
1061
+ mobileNumber: "หมายเลขโทรศัพท์มือถือ",
1062
+ emailAddress: "ที่อยู่อีเมล"
1063
+ },
1064
+ permissions: {
1065
+ manageable: "จัดการได้ {context}",
1066
+ search: "ค้นหา {context}",
1067
+ general: "สิทธิ์ทั่วไป",
1068
+ stock: "สิทธิ์สต็อก",
1069
+ hrm: "สิทธิ์ HRM",
1070
+ crm: "สิทธิ์ CRM",
1071
+ includedFuture: "รวม {context} ในอนาคต",
1072
+ includedNewRole: "รวมบทบาทใหม่ที่เพิ่มเข้ามา",
1073
+ roles: "บทบาท POS ที่สามารถใช้ได้",
1074
+ inherited: "สิทธิ์ที่ได้รับการสืบทอดจาก:"
1075
+ },
1076
+ masterUser: {
1077
+ title: "ผู้ใช้หลัก",
1078
+ passcode: "รหัสผ่านผู้ใช้หลัก",
1079
+ passcodeRequired: "รหัสผ่านต้องเป็นตัวเลข 4 หลัก",
1080
+ sublabel: "ผู้ใช้หลักสามารถเข้าถึงระบบ POS ของร้านอาหารได้",
1081
+ code: "รหัส",
1082
+ name: "ชื่อ",
1083
+ role: "บทบาท",
1084
+ nameEmptyError: "กรุณาป้อนชื่อ"
1085
+ },
1086
+ posRole: {
1087
+ placeholder: "ค้นหาบทบาท POS"
1088
+ },
1089
+ permissionSet: {
1090
+ title: "บทบาทสิทธิ์",
1091
+ selectPlaceholder: "เลือกบทบาทสิทธิ์"
1092
+ }
1093
+ }
1094
+ }, B = {
1095
+ title: "บทบาท",
1096
+ createButtonLabel: "สร้างบทบาท",
1097
+ search: {
1098
+ placeholder: "ค้นหาบทบาท"
1099
+ },
1100
+ noData: {
1101
+ title: "ไม่พบบทบาท",
1102
+ subtitle: "คุณไม่มีบทบาทที่จะแสดงในขณะนี้"
1103
+ },
1104
+ form: {
1105
+ create: {
1106
+ title: "สร้างบทบาท",
1107
+ confirmButtonLabel: "สร้าง"
1108
+ },
1109
+ update: {
1110
+ title: "อัปเดตบทบาท",
1111
+ confirmButtonLabel: "อัปเดต"
1112
+ },
1113
+ delete: {
1114
+ title: "ลบบทบาท",
1115
+ confirmationMessage: "คุณต้องการลบบทบาท {roleName} จริงหรือไม่?",
1116
+ successMessage: "ลบบทบาท {roleName} แล้ว"
1117
+ },
1118
+ name: "ชื่อบทบาท",
1119
+ roleNamePlaceholder: "ป้อนชื่อบทบาท"
1120
+ },
1121
+ table: {
1122
+ columns: {
1123
+ name: "ชื่อ",
1124
+ permissions: "สิทธิ์อนุญาต"
1125
+ }
1126
+ }
1127
+ }, ye = {
1128
+ team: k,
1129
+ role: B
1130
+ }, Se = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1131
+ __proto__: null,
1132
+ default: ye,
1133
+ role: B,
1134
+ team: k
1135
+ }, Symbol.toStringTag, { value: "Module" })), T = {
1136
+ title: "团队成员",
1137
+ actions: {
1138
+ addMember: "添加成员",
1139
+ updateMember: "更新成员",
1140
+ removeMember: "移除成员"
1141
+ },
1142
+ table: {
1143
+ columns: {
1144
+ name: "用户名",
1145
+ phoneNumber: "联系方式",
1146
+ restaurant: "餐厅",
1147
+ permission: "权限"
1148
+ }
1149
+ },
1150
+ labels: {
1151
+ all: "全选",
1152
+ businessOwner: "商户负责人",
1153
+ permission: "权限",
1154
+ permissions: "权限",
1155
+ allowed: "已授予 { count } 项权限",
1156
+ restaurant: "餐厅",
1157
+ warehouse: "仓库"
1158
+ },
1159
+ removeMember: {
1160
+ title: "移除成员",
1161
+ confirmationMessage: "确定要移除 {memberName} 吗?",
1162
+ successMessage: "{memberName} 已移除。"
1163
+ },
1164
+ addMember: {
1165
+ title: "添加成员",
1166
+ successMessage: "{memberName} 已添加。"
1167
+ },
1168
+ updateMember: {
1169
+ title: "更新成员",
1170
+ successMessage: "{memberName} 已更新。"
1171
+ },
1172
+ search: {
1173
+ placeholder: "搜索团队成员"
1174
+ },
1175
+ filter: {
1176
+ permission_placeholder: "按权限筛选",
1177
+ selected_permission_prefix: "已选权限: "
1178
+ },
1179
+ emptyState: {
1180
+ title: "没有团队成员",
1181
+ description: "当前没有团队成员"
1182
+ },
1183
+ memberForm: {
1184
+ searchUser: {
1185
+ phoneNumber: "手机号码",
1186
+ email: "邮箱",
1187
+ emailPlaceholder: "输入邮箱",
1188
+ search: "搜索用户",
1189
+ changeUser: "更换用户",
1190
+ userNotFound: "用户未找到",
1191
+ emptyError: "请输入手机号码或邮箱"
1192
+ },
1193
+ memberInfo: {
1194
+ memberName: "成员名称",
1195
+ mobileNumber: "手机号码",
1196
+ emailAddress: "邮箱地址"
1197
+ },
1198
+ permissions: {
1199
+ manageable: "可管理{context}",
1200
+ search: "搜索{context}",
1201
+ general: "通用权限",
1202
+ stock: "库存权限",
1203
+ hrm: "HRM 权限",
1204
+ crm: "CRM 权限",
1205
+ includedFuture: "包含未来{context}",
1206
+ includedNewRole: "包含新添加的角色",
1207
+ roles: "可用 POS 角色",
1208
+ inherited: "继承权限来自:"
1209
+ },
1210
+ masterUser: {
1211
+ title: "主用户",
1212
+ passcode: "主用户密码",
1213
+ passcodeRequired: "密码必须为4位数字",
1214
+ sublabel: "主用户可以访问餐厅 POS 系统。",
1215
+ code: "工号",
1216
+ name: "姓名",
1217
+ role: "角色",
1218
+ nameEmptyError: "请输入姓名"
1219
+ },
1220
+ posRole: {
1221
+ placeholder: "搜索 POS 角色"
1222
+ },
1223
+ permissionSet: {
1224
+ title: "权限角色",
1225
+ selectPlaceholder: "选择权限角色"
1226
+ }
1227
+ }
1228
+ }, D = {
1229
+ title: "角色",
1230
+ createButtonLabel: "创建角色",
1231
+ search: {
1232
+ placeholder: "搜索角色"
1233
+ },
1234
+ noData: {
1235
+ title: "未找到角色",
1236
+ subtitle: "当前没有角色可显示"
1237
+ },
1238
+ form: {
1239
+ create: {
1240
+ title: "创建角色",
1241
+ confirmButtonLabel: "创建"
1242
+ },
1243
+ update: {
1244
+ title: "更新角色",
1245
+ confirmButtonLabel: "更新"
1246
+ },
1247
+ delete: {
1248
+ title: "删除角色",
1249
+ confirmationMessage: "确定要删除角色 {roleName} 吗?",
1250
+ successMessage: "角色 {roleName} 已删除"
1251
+ },
1252
+ name: "角色名称",
1253
+ roleNamePlaceholder: "输入角色名称"
1254
+ },
1255
+ table: {
1256
+ columns: {
1257
+ name: "名称",
1258
+ permissions: "权限"
1259
+ }
1260
+ }
1261
+ }, ve = {
1262
+ team: T,
1263
+ role: D
1264
+ }, Pe = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1265
+ __proto__: null,
1266
+ default: ve,
1267
+ role: D,
1268
+ team: T
1269
+ }, Symbol.toStringTag, { value: "Module" })), q = {
1270
+ title: "團隊成員",
1271
+ actions: {
1272
+ addMember: "添加成員",
1273
+ updateMember: "更新成員",
1274
+ removeMember: "移除成員"
1275
+ },
1276
+ table: {
1277
+ columns: {
1278
+ name: "用户名",
1279
+ phoneNumber: "聯繫方式",
1280
+ restaurant: "餐廳",
1281
+ permission: "權限"
1282
+ }
1283
+ },
1284
+ labels: {
1285
+ all: "全選",
1286
+ businessOwner: "商户負責人",
1287
+ permission: "權限",
1288
+ permissions: "權限",
1289
+ allowed: "已授予 { count } 項權限",
1290
+ restaurant: "餐廳",
1291
+ warehouse: "倉庫"
1292
+ },
1293
+ removeMember: {
1294
+ title: "移除成員",
1295
+ confirmationMessage: "確定要移除 {memberName} 嗎?",
1296
+ successMessage: "{memberName} 已移除。"
1297
+ },
1298
+ addMember: {
1299
+ title: "添加成員",
1300
+ successMessage: "{memberName} 已添加。"
1301
+ },
1302
+ updateMember: {
1303
+ title: "更新成員",
1304
+ successMessage: "{memberName} 已更新。"
1305
+ },
1306
+ search: {
1307
+ placeholder: "搜索團隊成員"
1308
+ },
1309
+ filter: {
1310
+ permission_placeholder: "按權限篩選",
1311
+ selected_permission_prefix: "已選權限: "
1312
+ },
1313
+ emptyState: {
1314
+ title: "沒有團隊成員",
1315
+ description: "當前沒有團隊成員"
1316
+ },
1317
+ memberForm: {
1318
+ searchUser: {
1319
+ phoneNumber: "手機號碼",
1320
+ email: "郵箱",
1321
+ emailPlaceholder: "輸入郵箱",
1322
+ search: "搜索用户",
1323
+ changeUser: "更換用户",
1324
+ userNotFound: "用户未找到",
1325
+ emptyError: "請輸入手機號碼或郵箱"
1326
+ },
1327
+ memberInfo: {
1328
+ memberName: "成員名稱",
1329
+ mobileNumber: "手機號碼",
1330
+ emailAddress: "郵箱地址"
1331
+ },
1332
+ permissions: {
1333
+ manageable: "可管理{context}",
1334
+ search: "搜索{context}",
1335
+ general: "通用權限",
1336
+ stock: "庫存權限",
1337
+ hrm: "HRM 權限",
1338
+ crm: "CRM 權限",
1339
+ includedFuture: "包含未來{context}",
1340
+ includedNewRole: "包含新添加的角色",
1341
+ roles: "可用 POS 角色",
1342
+ inherited: "繼承權限來自:"
1343
+ },
1344
+ masterUser: {
1345
+ title: "主用户",
1346
+ passcode: "主用户密碼",
1347
+ passcodeRequired: "密碼必須為4位數字",
1348
+ sublabel: "主用户可以訪問餐廳 POS 系統。",
1349
+ code: "工號",
1350
+ name: "姓名",
1351
+ role: "角色",
1352
+ nameEmptyError: "請輸入姓名"
1353
+ },
1354
+ posRole: {
1355
+ placeholder: "搜索角色"
1356
+ },
1357
+ permissionSet: {
1358
+ title: "權限角色",
1359
+ selectPlaceholder: "選擇權限角色"
1360
+ }
1361
+ },
1362
+ role: {
1363
+ title: "角色",
1364
+ createButtonLabel: "創建角色",
1365
+ search: {
1366
+ placeholder: "搜索角色"
1367
+ }
1368
+ }
1369
+ }, $ = {
1370
+ title: "角色",
1371
+ createButtonLabel: "創建角色",
1372
+ search: {
1373
+ placeholder: "搜索角色"
1374
+ },
1375
+ noData: {
1376
+ title: "未找到角色",
1377
+ subtitle: "當前沒有角色可顯示"
1378
+ },
1379
+ form: {
1380
+ create: {
1381
+ title: "創建角色",
1382
+ confirmButtonLabel: "創建"
1383
+ },
1384
+ update: {
1385
+ title: "更新角色",
1386
+ confirmButtonLabel: "更新"
1387
+ },
1388
+ delete: {
1389
+ title: "刪除角色",
1390
+ confirmationMessage: "確定要刪除角色 {roleName} 嗎?",
1391
+ successMessage: "角色 {roleName} 已刪除"
1392
+ },
1393
+ name: "角色名稱",
1394
+ roleNamePlaceholder: "輸入角色名稱"
1395
+ },
1396
+ table: {
1397
+ columns: {
1398
+ name: "名稱",
1399
+ permissions: "權限"
1400
+ }
1401
+ }
1402
+ }, Le = {
1403
+ team: q,
1404
+ role: $
1405
+ }, Oe = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
1406
+ __proto__: null,
1407
+ default: Le,
1408
+ role: $,
1409
+ team: q
1410
+ }, Symbol.toStringTag, { value: "Module" })), Ne = {
1411
+ "en-US": _e,
1412
+ "zh-CN": Pe,
1413
+ "th-TH": Se,
1414
+ "zh-Hant": Oe
1415
+ };
1416
+ function Re(e, n) {
1417
+ const s = b({ top: 0, bottom: 0, left: 0, right: 0 });
1418
+ function r() {
1419
+ if (e.value) {
1420
+ const t = e.value.getBoundingClientRect();
1421
+ s.value = {
1422
+ top: t.top,
1423
+ bottom: t.bottom,
1424
+ left: t.left,
1425
+ right: t.right
1426
+ };
1427
+ }
1428
+ }
1429
+ return _(n, async () => {
1430
+ await y(), r();
1431
+ }), _(e, async (t) => {
1432
+ t && (await y(), r());
1433
+ }), S(() => {
1434
+ window.addEventListener("resize", r);
1435
+ }), z(() => {
1436
+ window.removeEventListener("resize", r);
1437
+ }), s;
1438
+ }
1439
+ const Ee = /* @__PURE__ */ d({
1440
+ __name: "FullWrapper",
1441
+ setup(e) {
1442
+ const n = K(), s = b(null), r = Re(s), t = v(() => {
1443
+ var a;
1444
+ const l = n.isAtMost("sm") ? 56 : 0;
1445
+ return {
1446
+ height: `calc(100dvh - ${((a = r.value) == null ? void 0 : a.top) + 24 + l}px)`
1447
+ };
1448
+ });
1449
+ return (i, l) => (p(), I("div", {
1450
+ ref_key: "wrapper",
1451
+ ref: s,
1452
+ style: F(t.value)
1453
+ }, [
1454
+ H(i.$slots, "default")
1455
+ ], 4));
1456
+ }
1457
+ }), we = { class: "flex justify-center items-center h-full w-full" }, Ce = /* @__PURE__ */ d({
1458
+ __name: "PageLoading",
1459
+ setup(e) {
1460
+ return (n, s) => {
1461
+ const r = g("FmCircularProgress");
1462
+ return p(), M(Ee, null, {
1463
+ default: V(() => [
1464
+ Y("div", we, [
1465
+ G(r, { size: "xl" })
1466
+ ])
1467
+ ]),
1468
+ _: 1
1469
+ });
1470
+ };
1471
+ }
1472
+ }), m = (e) => J({
1473
+ loader: e,
1474
+ loadingComponent: Ce
1475
+ });
1476
+ var o = /* @__PURE__ */ ((e) => (e.HOME = "home", e.EMPLOYEE = "employee", e.ROLE = "role", e.TIMESHEET = "timesheet", e.AUDIT_LOG = "audit-log", e.TEAM = "team", e.TEAM_MEMBER = "team-member", e.TEAM_ROLE = "team-role", e))(o || {});
1477
+ const h = (e) => ({
1478
+ validationManifest: {
1479
+ requiredCaslPermissions: [
1480
+ {
1481
+ action: u.Action.manage,
1482
+ subject: e
1483
+ }
1484
+ ]
1485
+ }
1486
+ }), Ue = f(m(() => import("./Main-BrxuUrCb.js"))), xe = f(m(() => import("./Main-Dkk58R0T.js"))), ke = f(m(() => import("./AuditLogList-0rqa9ncI.js"))), Be = m(() => import("./EmployeeList-mdnsnAmg.js")), Te = m(() => import("./RoleList-BCWc9C8R.js")), De = m(() => import("./TimesheetList-U1SXbSth.js")), qe = m(() => import("./TeamMemberList-C2yZWHI4.js")), $e = m(() => import("./RolePermissionList-0kTvinIs.js")), Ye = [
1487
+ {
1488
+ path: "/",
1489
+ name: "home",
1490
+ component: Ue,
1491
+ meta: h(u.Subject.Business.hrm_teamMember),
1492
+ redirect: {
1493
+ name: "employee"
1494
+ /* EMPLOYEE */
1495
+ },
1496
+ children: [
1497
+ {
1498
+ path: "employee",
1499
+ name: "employee",
1500
+ component: Be
1501
+ },
1502
+ {
1503
+ path: "role",
1504
+ name: "role",
1505
+ component: Te
1506
+ },
1507
+ {
1508
+ path: "timesheet",
1509
+ name: "timesheet",
1510
+ component: De
1511
+ }
1512
+ ]
1513
+ },
1514
+ {
1515
+ path: "/audit-log",
1516
+ name: "audit-log",
1517
+ component: ke,
1518
+ meta: h(u.Subject.Business.hrm_teamMember)
1519
+ },
1520
+ {
1521
+ path: "/team",
1522
+ name: "team",
1523
+ component: xe,
1524
+ meta: h(u.Subject.Business.hrm_teamMember),
1525
+ redirect: {
1526
+ name: "team-member"
1527
+ /* TEAM_MEMBER */
1528
+ },
1529
+ children: [
1530
+ {
1531
+ path: "member",
1532
+ name: "team-member",
1533
+ component: qe
1534
+ },
1535
+ {
1536
+ path: "role",
1537
+ name: "team-role",
1538
+ component: $e
1539
+ }
1540
+ ]
1541
+ }
1542
+ ], je = /* @__PURE__ */ d({
1543
+ __name: "Navigator",
1544
+ emits: ["close-navigation"],
1545
+ setup(e, { emit: n }) {
1546
+ const s = n, { t: r } = X(), t = Q(), i = v(() => {
1547
+ const a = [];
1548
+ return a.push({
1549
+ label: r("hr.employee.title"),
1550
+ value: "employee",
1551
+ action: () => {
1552
+ t.push({
1553
+ name: o.EMPLOYEE,
1554
+ query: t.currentRoute.value.query
1555
+ }), s("close-navigation");
1556
+ }
1557
+ }), a.push({
1558
+ label: r("team.title"),
1559
+ value: "team-member",
1560
+ action: () => {
1561
+ t.push({
1562
+ name: o.TEAM,
1563
+ query: t.currentRoute.value.query
1564
+ }), s("close-navigation");
1565
+ }
1566
+ }), a.push({
1567
+ label: "Audit Log",
1568
+ value: "audit-log",
1569
+ action: () => {
1570
+ t.push({
1571
+ name: o.AUDIT_LOG,
1572
+ query: t.currentRoute.value.query
1573
+ }), s("close-navigation");
1574
+ }
1575
+ }), a;
1576
+ }), l = b();
1577
+ return W(() => {
1578
+ var c;
1579
+ let a = (c = t.currentRoute.value) == null ? void 0 : c.name;
1580
+ switch (a) {
1581
+ case o.EMPLOYEE:
1582
+ case o.ROLE:
1583
+ case o.TIMESHEET:
1584
+ a = o.EMPLOYEE;
1585
+ break;
1586
+ case o.TEAM_MEMBER:
1587
+ case o.TEAM_ROLE:
1588
+ a = o.TEAM_MEMBER;
1589
+ break;
1590
+ case o.AUDIT_LOG:
1591
+ a = o.AUDIT_LOG;
1592
+ break;
1593
+ default:
1594
+ a = o.EMPLOYEE;
1595
+ }
1596
+ l.value !== a && (l.value = a);
1597
+ }), (a, c) => {
1598
+ const j = g("FmCollapsibleTabs");
1599
+ return p(), M(j, {
1600
+ modelValue: l.value,
1601
+ "onUpdate:modelValue": c[0] || (c[0] = (A) => l.value = A),
1602
+ items: i.value,
1603
+ class: "py-16"
1604
+ }, null, 8, ["modelValue", "items"]);
1605
+ };
1606
+ }
1607
+ }), Ge = /* @__PURE__ */ d({
1608
+ __name: "App",
1609
+ setup(e) {
1610
+ const n = Z();
1611
+ return S(() => {
1612
+ n.registerSidebarComponent(je);
1613
+ }), (s, r) => {
1614
+ const t = g("RouterView");
1615
+ return p(), M(t);
1616
+ };
1617
+ }
1618
+ }), Je = () => {
1619
+ const e = [Ne, Me, me], n = new Set(e.flatMap((s) => Object.keys(s)));
1620
+ return Array.from(n).reduce(
1621
+ (s, r) => {
1622
+ const t = r;
1623
+ return s[r] = e.reduce((i, l) => ({
1624
+ ...i,
1625
+ ...l[t] || {}
1626
+ }), {}), s;
1627
+ },
1628
+ {}
1629
+ );
1630
+ };
1631
+ export {
1632
+ o as R,
1633
+ Ee as _,
1634
+ Ge as a,
1635
+ Je as i,
1636
+ Ye as r
1637
+ };