@feedmepos/mf-order-setting 0.0.21-beta.1 → 0.0.21-beta.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.
Files changed (135) hide show
  1. package/dist/{KioskDevicesView-snR43qzG.js → KioskDevicesView-Cb7Rw7t8.js} +1 -1
  2. package/dist/{KioskDevicesView.vue_vue_type_script_setup_true_lang-DkpYway-.js → KioskDevicesView.vue_vue_type_script_setup_true_lang-raPhhBpi.js} +45 -44
  3. package/dist/KioskSettingView-BQgyeWbo.js +649 -0
  4. package/dist/KioskView-BLkuqfZ_.js +371 -0
  5. package/dist/OrderSettingsView-BJ1b1Qjg.js +70873 -0
  6. package/dist/app-BY258ajB.js +644 -0
  7. package/dist/app.js +4 -505
  8. package/dist/auth.dto-BOoRSQkS.js +121725 -0
  9. package/dist/dayjs.min-4COVK72W.js +2110 -0
  10. package/dist/frontend/mf-order/src/app.d.ts +440 -410
  11. package/dist/frontend/mf-order/src/components/GoogleMap.vue.d.ts +1 -1
  12. package/dist/frontend/mf-order/src/modules/order-setting/kiosk/interface.d.ts +18 -0
  13. package/dist/frontend/mf-order/src/stores/app/index.d.ts +4 -14
  14. package/dist/frontend/mf-order/src/stores/iframe/index.d.ts +2 -2
  15. package/dist/frontend/mf-order/src/stores/kiosk/index.d.ts +2 -2
  16. package/dist/frontend/mf-order/src/stores/menu/menu.d.ts +35 -30
  17. package/dist/frontend/mf-order/src/stores/order-setting/index.d.ts +242 -2
  18. package/dist/frontend/mf-order/src/stores/order-setting/mapper.d.ts +2 -1
  19. package/dist/frontend/mf-order/src/stores/restaurant/index.d.ts +750 -614
  20. package/dist/frontend/mf-order/src/views/all-orders/ActionMenuCell.vue.d.ts +1 -1
  21. package/dist/frontend/mf-order/src/views/all-orders/FilterStatus.vue.d.ts +1 -1
  22. package/dist/frontend/mf-order/src/views/all-orders/FilterStatusMenu.vue.d.ts +1 -1
  23. package/dist/frontend/mf-order/src/views/all-orders/ReflowOrder.vue.d.ts +175 -141
  24. package/dist/frontend/mf-order/src/views/all-orders/UpdateDeliveryOrderDialog.vue.d.ts +1 -1
  25. package/dist/frontend/mf-order/src/views/kiosk/KioskSummary.vue.d.ts +1 -0
  26. package/dist/frontend/mf-order/src/views/kiosk/devices/KioskUnbindConfirm.vue.d.ts +1 -1
  27. package/dist/frontend/mf-order/src/views/kiosk/settings/KioskDineInSection.vue.d.ts +2 -4
  28. package/dist/frontend/mf-order/src/views/kiosk/settings/KioskDisplayStandSection.vue.d.ts +1 -1
  29. package/dist/frontend/mf-order/src/views/kiosk/settings/KioskMenuItemSection.vue.d.ts +9 -0
  30. package/dist/frontend/mf-order/src/views/kiosk/settings/KioskPaymentTypeSection.vue.d.ts +93 -0
  31. package/dist/frontend/mf-order/src/views/kiosk/settings/KioskPickAtCounterSection.vue.d.ts +1 -1
  32. package/dist/frontend/mf-order/src/views/kiosk/settings/KioskSettingView.vue.d.ts +1 -1
  33. package/dist/frontend/mf-order/src/views/kiosk/settings/KioskTakeawaySection.vue.d.ts +2 -4
  34. package/dist/frontend/mf-order/src/views/order-settings/delivery/DeliveryList.vue.d.ts +1 -1
  35. package/dist/frontend/mf-order/src/views/order-settings/delivery/components/ManualIntegratedDeliverySetting.vue.d.ts +1 -1
  36. package/dist/frontend/mf-order/src/views/order-settings/delivery/components/TaxInput.vue.d.ts +1 -1
  37. package/dist/frontend/mf-order/src/views/order-settings/delivery/inhouse/CurrencyInput.vue.d.ts +1 -1
  38. package/dist/frontend/mf-order/src/views/order-settings/delivery/inhouse/DeliveryCustomTime.vue.d.ts +1 -1
  39. package/dist/frontend/mf-order/src/views/order-settings/delivery/inhouse/DeliveryOrder.vue.d.ts +35 -3
  40. package/dist/frontend/mf-order/src/views/order-settings/delivery/inhouse/DeliveryTime.vue.d.ts +1 -1
  41. package/dist/frontend/mf-order/src/views/order-settings/delivery/inhouse/InHouseDelivery.vue.d.ts +1 -1
  42. package/dist/frontend/mf-order/src/views/order-settings/delivery/inhouse/TimePicker.vue.d.ts +1 -1
  43. package/dist/frontend/mf-order/src/views/order-settings/delivery/inhouse/ZoneDialog.vue.d.ts +1 -1
  44. package/dist/frontend/mf-order/src/views/order-settings/delivery/integrated-delivery/FeedmeDelivery.vue.d.ts +1 -1
  45. package/dist/frontend/mf-order/src/views/order-settings/delivery/integrated-delivery/FoodpandaCampaignDialog.vue.d.ts +1 -1
  46. package/dist/frontend/mf-order/src/views/order-settings/delivery/integrated-delivery/FoodpandaSetting.vue.d.ts +1 -1
  47. package/dist/frontend/mf-order/src/views/order-settings/delivery/integrated-delivery/GrabfoodSetting.vue.d.ts +1 -1
  48. package/dist/frontend/mf-order/src/views/order-settings/delivery/integrated-delivery/IntegratedDelivery.vue.d.ts +1 -1
  49. package/dist/frontend/mf-order/src/views/order-settings/delivery/integrated-delivery/ShopeefoodSetting.vue.d.ts +1 -1
  50. package/dist/frontend/mf-order/src/views/order-settings/{dinein → dine-in}/OfflinePaymentTypeDialog.vue.d.ts +1 -1
  51. package/dist/frontend/mf-order/src/views/order-settings/{dinein → dine-in}/OfflinePaymentTypeDialogContent.vue.d.ts +1 -1
  52. package/dist/frontend/mf-order/src/views/order-settings/{dinein → dine-in}/PaymentType.vue.d.ts +1 -1
  53. package/dist/frontend/mf-order/src/views/order-settings/pickup/AddressInput.vue.d.ts +1 -1
  54. package/dist/frontend/mf-order/src/views/order-settings/pickup/CustomPayment.vue.d.ts +1 -1
  55. package/dist/frontend/mf-order/src/views/order-settings/pickup/PaymentSidesheet.vue.d.ts +1 -1
  56. package/dist/frontend/mf-order/src/views/order-settings/pickup/PickUpPointDialog.vue.d.ts +1 -1
  57. package/dist/frontend/mf-order/src/views/order-settings/pickup/PickUpPointDialogContent.vue.d.ts +35 -3
  58. package/dist/frontend/mf-order/src/views/order-settings/pickup/PickUpSettingDialog.vue.d.ts +1 -1
  59. package/dist/frontend/mf-order/src/views/order-settings/pickup/PickUpSettingDialogContent.vue.d.ts +1 -1
  60. package/dist/frontend/mf-order/src/views/order-settings/pickup/PickupList.vue.d.ts +1 -1
  61. package/dist/frontend/mf-order/src/views/order-settings/pickup/Preorder.vue.d.ts +1 -1
  62. package/dist/frontend/mf-order/src/views/order-settings/servicecharge/RateInput.vue.d.ts +1 -1
  63. package/dist/frontend/mf-order/src/views/order-settings/servicecharge/ServiceChargeRule.vue.d.ts +1 -1
  64. package/dist/frontend/mf-order/tsconfig.app.tsbuildinfo +1 -1
  65. package/dist/index-DSCb3ndM.js +150 -0
  66. package/dist/{index-BghBxhGG.js → index-t_7ThPjm.js} +25 -24
  67. package/dist/package/entity/booking/booking.do.d.ts +95 -1025
  68. package/dist/package/entity/delivery/delivery.dto.d.ts +78 -264
  69. package/dist/package/entity/delivery/gateway/kosmo.dto.d.ts +2 -2
  70. package/dist/package/entity/food-court/food-court.dto.d.ts +51 -0
  71. package/dist/package/entity/food-court/order.dto.d.ts +2528 -6
  72. package/dist/package/entity/incoming-order/incoming-order-to-bill.dto.d.ts +1377 -255
  73. package/dist/package/entity/incoming-order/incoming-order.do.d.ts +632 -129
  74. package/dist/package/entity/incoming-order/incoming-order.dto.d.ts +1275 -244
  75. package/dist/package/entity/kiosk/kiosk.do.d.ts +14 -14
  76. package/dist/package/entity/kiosk/kiosk.dto.d.ts +17 -17
  77. package/dist/package/entity/kiosk/marketing/marketing.dto.d.ts +105 -883
  78. package/dist/package/entity/kiosk/scanner/scanner.do.d.ts +9 -9
  79. package/dist/package/entity/kiosk/scanner/scanner.dto.d.ts +9 -9
  80. package/dist/package/entity/kiosk/scanner/scanner.enum.d.ts +1 -1
  81. package/dist/package/entity/member/member.dto.d.ts +2 -2
  82. package/dist/package/entity/order/effects/effect.dto.d.ts +6 -6
  83. package/dist/package/entity/order/manager/manager.dto.d.ts +8 -8
  84. package/dist/package/entity/order/order-item/order-item.dto.d.ts +3986 -0
  85. package/dist/package/entity/order/order.do.d.ts +951 -5
  86. package/dist/package/entity/order/order.dto.d.ts +63375 -23687
  87. package/dist/package/entity/order/order.enum.d.ts +5 -1
  88. package/dist/package/entity/order/payment/payment.dto.d.ts +9631 -138
  89. package/dist/package/entity/order-platform/foodpanda/foodpanda-menu.dto.d.ts +54 -54
  90. package/dist/package/entity/order-platform/foodpanda/foodpanda-order.do.d.ts +165 -72
  91. package/dist/package/entity/order-platform/foodpanda/foodpanda-order.dto.d.ts +88 -241
  92. package/dist/package/entity/order-platform/grabfood/grabfood-menu.do.d.ts +1 -0
  93. package/dist/package/entity/order-platform/grabfood/grabfood-order.do.d.ts +153 -215
  94. package/dist/package/entity/order-platform/grabfood/grabfood.dto.d.ts +80 -40
  95. package/dist/package/entity/order-platform/menu.dto.d.ts +88 -88
  96. package/dist/package/entity/order-platform/shopeefood/shopeefood-order.do.d.ts +19 -205
  97. package/dist/package/entity/order-setting/kiosk/kiosk.do.d.ts +259 -0
  98. package/dist/package/entity/order-setting/kiosk/kiosk.dto.d.ts +266 -0
  99. package/dist/package/entity/order-setting/order-setting.do.d.ts +172 -0
  100. package/dist/package/entity/order-setting/order-setting.dto.d.ts +344 -0
  101. package/dist/package/entity/payment/payment.dto.d.ts +13 -13
  102. package/dist/package/entity/queue/queue.do.d.ts +80 -80
  103. package/dist/package/entity/queue/queue.dto.d.ts +7 -0
  104. package/dist/package/entity/restaurant/restaurant.dto.d.ts +226 -113
  105. package/dist/package/entity/websocket/websocket.dto.d.ts +384 -0
  106. package/package.json +17 -17
  107. package/src/app.ts +2 -3
  108. package/src/locales/en-US.json +218 -203
  109. package/src/locales/zh-CN.json +218 -203
  110. package/src/modules/order-setting/kiosk/interface.ts +25 -0
  111. package/src/stores/order-setting/mapper.ts +73 -51
  112. package/src/views/kiosk/KioskSummary.vue +40 -5
  113. package/src/views/kiosk/KioskView.vue +153 -101
  114. package/src/views/kiosk/settings/KioskDineInSection.vue +48 -33
  115. package/src/views/kiosk/settings/KioskDisplayStandSection.vue +114 -67
  116. package/src/views/kiosk/settings/KioskMenuItemSection.vue +27 -0
  117. package/src/views/kiosk/settings/KioskPaymentTypeSection.vue +339 -0
  118. package/src/views/kiosk/settings/KioskPickAtCounterSection.vue +15 -14
  119. package/src/views/kiosk/settings/KioskSettingView.vue +169 -108
  120. package/src/views/kiosk/settings/KioskTakeawaySection.vue +16 -22
  121. package/src/views/order-settings/OrderSettingsView.vue +1 -1
  122. package/src/views/order-settings/delivery/DeliverySetting.vue +9 -10
  123. package/src/views/order-settings/pickup/CustomPayment.vue +1 -1
  124. package/dist/App-Dd-xqK-8.js +0 -60
  125. package/dist/KioskSettingView-6Q0qwSTl.js +0 -345
  126. package/dist/KioskView-5I0PelUy.js +0 -289
  127. package/dist/OrderSettingsView-CXZq8QAV.js +0 -51594
  128. package/dist/dayjs.min-DMfenXNY.js +0 -121871
  129. package/dist/index-B9mJLWE5.js +0 -70
  130. package/dist/map-UJBUHidz.js +0 -57
  131. /package/dist/frontend/mf-order/src/views/order-settings/{dinein → dine-in}/DineInSetting.vue.d.ts +0 -0
  132. /package/src/views/order-settings/{dinein → dine-in}/DineInSetting.vue +0 -0
  133. /package/src/views/order-settings/{dinein → dine-in}/OfflinePaymentTypeDialog.vue +0 -0
  134. /package/src/views/order-settings/{dinein → dine-in}/OfflinePaymentTypeDialogContent.vue +0 -0
  135. /package/src/views/order-settings/{dinein → dine-in}/PaymentType.vue +0 -0
@@ -1,6 +1,7 @@
1
- import { OrderSettingsDto, OrderKioskSettings, OrderKioskDineIn, OrderKioskDineInSequenceDto, FdoOrderKioskDineInSequence } from "@entity";
2
- import type { MfKioskOrderSetting, MfKioskDineInSetting, MfDisplayStandSetting, KioskTakeawaySettingForm, MfKioskOrderSettingForm } from '@/modules/order-setting/kiosk/interface';
1
+ import { OrderSettingsDto, OrderKioskDineIn, OrderKioskDineInSequenceDto, FdoOrderKioskDineInSequence, FdoEPaymentMethod } from "@entity";
2
+ import type { MfKioskOrderSetting, MfKioskDineInSetting, MfDisplayStandSetting, KioskTakeawaySettingForm, MfKioskOrderSettingForm, MfKioskPaymentSetting } from '@/modules/order-setting/kiosk/interface';
3
3
  import type { MfOrderSetting } from "@/modules/order-setting/interface";
4
+ import type { OrderKioskSettings, OrderKioskPaymentSetting } from "@entity";
4
5
 
5
6
  export const defaultDisplayStand: MfDisplayStandSetting = {
6
7
  enabled: false,
@@ -25,6 +26,23 @@ export const defaultKioskOrderSetting: MfKioskOrderSettingForm = {
25
26
  },
26
27
  takeaway: {
27
28
  enabled: false,
29
+ },
30
+ paymentSetting: {
31
+ paymentTypes: [],
32
+ offlinePaymentTypes: [],
33
+ ePaymentTypes: {
34
+ card: {
35
+ terminal: false,
36
+ nfc: false
37
+ },
38
+ eWallet: {
39
+ qrPay: false,
40
+ scanPay: false
41
+ }
42
+ },
43
+ },
44
+ menuItem: {
45
+ showAllOnly: false,
28
46
  }
29
47
  }
30
48
 
@@ -42,70 +60,74 @@ const toKiosk = (kioskOrderSettings: OrderKioskSettings, kioskDineInSeq?: OrderK
42
60
  }, kioskOrderSettings.dineIn ?? undefined),
43
61
  takeaway: {
44
62
  enabled: kioskOrderSettings?.canTakeaway ?? false
63
+ },
64
+ paymentSetting: {
65
+ paymentTypes: kioskOrderSettings?.paymentSetting?.paymentTypes ?? [],
66
+ offlinePaymentTypes: kioskOrderSettings?.paymentSetting?.offlinePaymentTypes ?? [],
67
+ ePaymentTypes: kioskOrderSettings?.paymentSetting?.ePaymentTypes ?? FdoEPaymentMethod.parse({
68
+ card: {
69
+ terminal: false,
70
+ nfc: false
71
+ },
72
+ eWallet: {
73
+ qrPay: false,
74
+ scanPay: false
75
+ }
76
+ }),
77
+ },
78
+ menuItem: {
79
+ showAllOnly: kioskOrderSettings.menuItem?.showAllOnly ?? false,
45
80
  }
46
81
  }
47
82
  }
48
83
 
49
84
  const toKioskDineInSetting = (kioskDineInSeq: OrderKioskDineInSequenceDto, kioskDineInSetting?: OrderKioskDineIn): MfKioskDineInSetting => {
50
- if (kioskDineInSetting) {
51
- const enabled = true;
52
- const displayStand = kioskDineInSetting.displayStand;
53
- const pickUp = kioskDineInSetting.pickUp ?? defaultPickUp;
54
- return {
55
- enabled,
56
- sequenceNumber: kioskDineInSeq,
57
- pickUp,
58
- displayStand: displayStand ? {
59
- enabled: displayStand.enabled,
60
- standSlotRange: displayStand.standSlotRange,
61
- prefix: displayStand.prefix,
62
- padDigit: displayStand.padDigit,
63
- } : defaultDisplayStand,
64
- };
65
- } else {
66
- return {
67
- enabled: false,
68
- sequenceNumber: kioskDineInSeq,
69
- displayStand: defaultDisplayStand,
70
- pickUp: defaultPickUp,
71
- }
85
+ return {
86
+ enabled: !!kioskDineInSetting,
87
+ sequenceNumber: kioskDineInSeq,
88
+ pickUp: kioskDineInSetting?.pickUp ?? defaultPickUp,
89
+ displayStand: kioskDineInSetting?.displayStand ? {
90
+ enabled: kioskDineInSetting.displayStand.enabled,
91
+ standSlotRange: kioskDineInSetting.displayStand.standSlotRange,
92
+ prefix: kioskDineInSetting.displayStand.prefix,
93
+ padDigit: kioskDineInSetting.displayStand.padDigit,
94
+ } : defaultDisplayStand
72
95
  }
73
96
  }
74
97
  const toOrderKioskSettingsDto = (kioskSetting: MfKioskOrderSetting): {
75
98
  kioskSettings: OrderKioskSettings,
76
99
  kioskDineIn?: OrderKioskDineInSequenceDto
77
100
  } => {
78
- const toOrderKioskDineIn = (dineInSetting: MfKioskDineInSetting): { dineIn: OrderKioskDineIn, kioskDineIn?: OrderKioskDineInSequenceDto } | undefined => {
79
- if (dineInSetting.enabled) {
80
- return {
81
- dineIn: {
82
- requiredSlot: !!dineInSetting.displayStand,
83
- displayStand: dineInSetting.displayStand,
84
- pickUp: dineInSetting.pickUp,
85
- },
86
- kioskDineIn: dineInSetting.sequenceNumber,
87
- }
88
- } else {
89
- return undefined;
101
+ const createDineInSettings = (dineInSetting: MfKioskDineInSetting) => ({
102
+ requiredSlot: !!dineInSetting.displayStand,
103
+ displayStand: dineInSetting.displayStand,
104
+ pickUp: dineInSetting.pickUp
105
+ })
106
+
107
+ const createKioskSettings = (dineIn?: OrderKioskDineIn) => ({
108
+ canTakeaway: kioskSetting.takeaway.enabled,
109
+ dineIn,
110
+ menuItem: kioskSetting.menuItem,
111
+ paymentSetting: createPaymentSettings(kioskSetting.paymentSetting)
112
+ })
113
+
114
+ const createPaymentSettings = (paymentSetting: MfKioskPaymentSetting) : OrderKioskPaymentSetting | undefined => {
115
+ return {
116
+ paymentTypes: paymentSetting.paymentTypes,
117
+ offlinePaymentTypes: paymentSetting.offlinePaymentTypes,
118
+ ePaymentTypes: paymentSetting.ePaymentTypes,
90
119
  }
91
120
  }
92
- const orderKioskDineIn = toOrderKioskDineIn(kioskSetting.dineIn);
93
- if (orderKioskDineIn) {
94
- const { dineIn, kioskDineIn } = orderKioskDineIn;
121
+
122
+ if (!kioskSetting.dineIn.enabled) {
95
123
  return {
96
- kioskSettings: {
97
- canTakeaway: kioskSetting.takeaway.enabled,
98
- dineIn,
99
- },
100
- kioskDineIn,
124
+ kioskSettings: createKioskSettings()
101
125
  }
102
- } else {
103
- return {
104
- kioskSettings: {
105
- canTakeaway: kioskSetting.takeaway.enabled,
106
- dineIn: undefined,
107
- }
108
- };
126
+ }
127
+
128
+ return {
129
+ kioskSettings: createKioskSettings(createDineInSettings(kioskSetting.dineIn)),
130
+ kioskDineIn: kioskSetting.dineIn.sequenceNumber,
109
131
  }
110
132
  }
111
133
 
@@ -1,7 +1,7 @@
1
1
  <template>
2
- <div class="p-[1.5rem] border fm-corner-radius-lg flex flex-col gap-5">
3
- <span class="fm-typo-en-title-sm-600">{{ t('order.kioskSummary') }}</span>
4
- <hr class="my-[0.25rem]" />
2
+ <div :class="dialogType ? '' : ['p-[1.5rem] border fm-corner-radius-lg flex flex-col gap-5 fixed ml-40 w-[320px]']">
3
+ <span v-if="!dialogType" class="fm-typo-en-title-sm-600">{{ t('order.kioskSummary') }}</span>
4
+ <hr v-if="!dialogType" class="my-[0.25rem]" />
5
5
  <div class="flex flex-col gap-1">
6
6
  <div class="flex flex-col gap-1">
7
7
  <span class="fm-typo-en-body-lg-400 text-fm-color-typo-secondary">{{ t('order.kioskDisplay') }}</span>
@@ -34,7 +34,13 @@
34
34
  </div>
35
35
  </div>
36
36
 
37
-
37
+ <div v-if="acceptedPaymentStatus || offlinePaymentStatus">
38
+ <span class="fm-typo-en-body-lg-400 text-fm-color-typo-secondary">{{t('order.acceptedPayment')}}</span>
39
+ <div class="fm-typo-en-body-lg-600 block">
40
+ <div v-if="offlinePaymentStatus">{{ t('order.offlinePayment') }}</div>
41
+ <div>{{ acceptedPaymentStatus }}</div>
42
+ </div>
43
+ </div>
38
44
  </div>
39
45
  </div>
40
46
  </div>
@@ -45,6 +51,7 @@ import type { MfKioskDevice } from '@/modules/kiosk/interface';
45
51
  import type { MfKioskOrderSetting } from '@/modules/order-setting/kiosk/interface';
46
52
  import { computed } from 'vue'
47
53
  import { useI18n } from '@feedmepos/mf-common'
54
+ import { F_ORDER_PAYMENT_TYPE } from '@entity'
48
55
 
49
56
  const { t } = useI18n()
50
57
 
@@ -52,6 +59,7 @@ interface Props {
52
59
  restaurantId: string,
53
60
  devices: MfKioskDevice[],
54
61
  kioskOrderSetting: MfKioskOrderSetting | undefined,
62
+ dialogType: boolean
55
63
  // getOrderSetting : () => MfKioskOrderSetting | undefined,
56
64
  }
57
65
  const props = defineProps<Props>();
@@ -74,4 +82,31 @@ const dineInType = computed<string>(() => {
74
82
  }
75
83
  });
76
84
 
77
- </script>
85
+ const offlinePaymentStatus = computed<boolean>(() => {
86
+ return props.kioskOrderSetting?.paymentSetting.paymentTypes.includes(F_ORDER_PAYMENT_TYPE.enum.cash) ?? false;
87
+ });
88
+
89
+ const acceptedPaymentStatus = computed<string>(() => {
90
+ const acceptedPayment: string[] = [];
91
+ props.kioskOrderSetting?.paymentSetting.paymentTypes.forEach((type) => {
92
+ if (type === F_ORDER_PAYMENT_TYPE.enum.ePayment) {
93
+ acceptedPayment.push(t('order.ePayment'));
94
+ }
95
+ });
96
+
97
+ if (
98
+ acceptedPayment.length > 0 &&
99
+ !(Object.keys(props.kioskOrderSetting!.paymentSetting.ePaymentTypes).length === 0)
100
+ ) {
101
+ const ePaymentTypes = props.kioskOrderSetting?.paymentSetting.ePaymentTypes;
102
+ if (ePaymentTypes!.card.terminal || ePaymentTypes!.card.nfc) {
103
+ acceptedPayment.push(t('order.bankCard'));
104
+ }
105
+ if (ePaymentTypes!.eWallet.scanPay || ePaymentTypes!.eWallet.qrPay) {
106
+ acceptedPayment.push(t('order.eWallet'));
107
+ }
108
+ }
109
+
110
+ return acceptedPayment.join(', ');
111
+ });
112
+ </script>
@@ -1,127 +1,179 @@
1
1
  <template>
2
- <div class="py-[1.5rem]">
3
- <FmPageHead :title="t('order.kiosk')" />
4
- <div class="flex px-[1.5rem]">
5
- <div class="flex-[2_2_0%]">
6
- <FmTabs v-model:model-value="selectedMenuItem" :items="menuItems"></FmTabs>
7
- <div class="pt-[1.5rem]">
8
- <div class="flex flex-col gap-10">
9
- <div class="flex flex-col gap-2">
10
- <span class="fm-typo-en-title-sm-600"> {{ t('order.activateLocation') }} </span>
11
- <span class="fm-typo-en-title-sm-400"> {{ t('order.selectRestaurant') }}: </span>
12
- <FmSelect class="w-1/2" v-model="currentSelect" :items="restaurantItems" :placeholder="t('order.selectItem')"
13
- @update:model-value="selectRestaurant" />
14
- </div>
15
- <KioskDevicesView v-if="selectedMenuItem == 'device'" :devices="devices"
16
- :request-otp="requestOtp" />
17
- <KioskSettingView :key="`KioskSettingView-${currentRestaurantId}`"
18
- v-if="selectedMenuItem == 'setting'" :restaurant-id="currentRestaurantId"
19
- @update-kiosk-order-setting="updateKioskOrderSetting"
20
- :form="OrderSettingStore.state.kiosk ?? defaultKioskOrderSetting" />
21
- </div>
22
- </div>
23
- </div>
24
- <div class="flex-[1_1_0%]">
25
- <KioskSummary :restaurant-id="currentRestaurantId" :devices="devices"
26
- :kiosk-order-setting="OrderSettingStore.state.kiosk" />
2
+ <div class="py-[1.5rem]">
3
+ <FmPageHead :title="t('order.kiosk')">
4
+ <template #append>
5
+ <FmButton
6
+ v-show="isMobile"
7
+ icon="info"
8
+ variant="tertiary"
9
+ @click="openKioskSummaryDialog"
10
+ />
11
+ </template>
12
+ </FmPageHead>
13
+ <div class="flex px-[1.5rem]">
14
+ <div class="flex-[2_2_0%]">
15
+ <FmTabs v-model:model-value="selectedMenuItem" :items="menuItems"></FmTabs>
16
+ <div class="pt-[1.5rem]">
17
+ <div class="flex flex-col gap-10">
18
+ <div class="flex flex-col gap-2">
19
+ <span class="fm-typo-en-title-sm-600"> {{ t('order.activateLocation') }} </span>
20
+ <span class="fm-typo-en-title-sm-400"> {{ t('order.selectRestaurant') }}: </span>
21
+ <FmSelect
22
+ class="w-1/2"
23
+ v-model="currentSelect"
24
+ :items="restaurantItems"
25
+ :placeholder="t('order.selectItem')"
26
+ @update:model-value="selectRestaurant"
27
+ />
27
28
  </div>
29
+ <KioskDevicesView
30
+ v-if="selectedMenuItem == 'device'"
31
+ :devices="devices"
32
+ :request-otp="requestOtp"
33
+ />
34
+ <KioskSettingView
35
+ :key="`KioskSettingView-${currentRestaurantId}`"
36
+ v-if="selectedMenuItem == 'setting'"
37
+ :restaurant-id="currentRestaurantId"
38
+ @update-kiosk-order-setting="updateKioskOrderSetting"
39
+ :form="OrderSettingStore.state.kiosk ?? defaultKioskOrderSetting"
40
+ />
41
+ </div>
28
42
  </div>
43
+ </div>
44
+ <div v-if="!isMobile" class="flex-[1_1_0%]">
45
+ <KioskSummary
46
+ :restaurant-id="currentRestaurantId"
47
+ :devices="devices"
48
+ :kiosk-order-setting="OrderSettingStore.state.kiosk"
49
+ :dialogType="false"
50
+ />
51
+ </div>
29
52
  </div>
53
+ </div>
30
54
  </template>
55
+
31
56
  <script setup lang="ts">
32
- import KioskDevicesView from '@/views/kiosk/devices/KioskDevicesView.vue';
33
- import KioskSummary from '@/views/kiosk/KioskSummary.vue';
34
- import { useDialog, useSnackbar, type FmTabProps, type ISelectItem } from '@feedmepos/ui-library';
35
- import { ref, computed, defineAsyncComponent, watch } from 'vue';
36
- import { useKioskStore } from '@/stores/kiosk';
37
- import type { MfKioskDevice } from "@/modules/kiosk/interface";
38
- import KioskOtpDialog from "@/views/kiosk/devices/KioskOtpDialog.vue";
39
- import { useCoreStore, useI18n } from "@feedmepos/mf-common";
40
- import { useOrderSettings } from '@/stores/order-setting';
41
- import type { MfKioskOrderSetting } from '@/modules/order-setting/kiosk/interface';
42
- import { defaultKioskOrderSetting } from '@/stores/order-setting/mapper';
43
- import { capitalCase } from 'change-case';
44
-
45
- const { t } = useI18n();
46
-
47
- type KioskMenuItemValue = "device" | "setting";
48
-
49
- const KioskSettingView = defineAsyncComponent(() => import('@/views/kiosk/settings/KioskSettingView.vue'));
50
-
51
- const selectedMenuItem = ref<KioskMenuItemValue>('device');
52
- const KioskStore = useKioskStore();
53
- const OrderSettingStore = useOrderSettings();
54
- const Dialog = useDialog();
55
- const { currentRestaurant, restaurants, changeRestaurant } = useCoreStore();
56
- const SnackBar = useSnackbar();
57
-
58
- const currentSelect = ref<string | undefined>(currentRestaurant.value?._id ?? undefined);
57
+ import KioskDevicesView from '@/views/kiosk/devices/KioskDevicesView.vue'
58
+ import KioskSummary from '@/views/kiosk/KioskSummary.vue'
59
+ import {
60
+ useDialog,
61
+ useSnackbar,
62
+ type FmTabProps,
63
+ type ISelectItem,
64
+ useBreakpoints
65
+ } from '@feedmepos/ui-library'
66
+ import { ref, computed, defineAsyncComponent, watch } from 'vue'
67
+ import { useKioskStore } from '@/stores/kiosk'
68
+ import type { MfKioskDevice } from '@/modules/kiosk/interface'
69
+ import KioskOtpDialog from '@/views/kiosk/devices/KioskOtpDialog.vue'
70
+ import { useCoreStore, useI18n } from '@feedmepos/mf-common'
71
+ import { useOrderSettings } from '@/stores/order-setting'
72
+ import type { MfKioskOrderSetting } from '@/modules/order-setting/kiosk/interface'
73
+ import { defaultKioskOrderSetting } from '@/stores/order-setting/mapper'
74
+ import { capitalCase } from 'change-case'
75
+
76
+ const { t } = useI18n()
77
+
78
+ type KioskMenuItemValue = 'device' | 'setting'
79
+
80
+ const KioskSettingView = defineAsyncComponent(
81
+ () => import('@/views/kiosk/settings/KioskSettingView.vue')
82
+ )
83
+
84
+ const selectedMenuItem = ref<KioskMenuItemValue>('device')
85
+ const KioskStore = useKioskStore()
86
+ const OrderSettingStore = useOrderSettings()
87
+ const Dialog = useDialog()
88
+ const { currentRestaurant, restaurants, changeRestaurant } = useCoreStore()
89
+ const SnackBar = useSnackbar()
90
+
91
+ const breakpoint = useBreakpoints()
92
+ const isMobile = computed(() => breakpoint.breakpoints.value.xs)
93
+
94
+ const currentSelect = ref<string | undefined>(currentRestaurant.value?._id ?? undefined)
59
95
 
60
96
  const restaurantItems = computed<ISelectItem[]>(() => {
61
- return restaurants.value.map((r) => ({
62
- label: r.profile.name,
63
- value: r._id,
64
- }));
65
- });
97
+ return restaurants.value.map((r) => ({
98
+ label: r.profile.name,
99
+ value: r._id
100
+ }))
101
+ })
66
102
 
67
- const currentRestaurantId = ref<string>(currentRestaurant.value?._id ?? '');
103
+ const currentRestaurantId = ref<string>(currentRestaurant.value?._id ?? '')
104
+
105
+ function openKioskSummaryDialog() {
106
+ Dialog.open({
107
+ title: capitalCase(t('order.kioskSummary')),
108
+ contentComponent: KioskSummary,
109
+ contentComponentProps: {
110
+ restaurantId: currentRestaurant.value?._id,
111
+ devices: KioskStore.state.devices,
112
+ kioskOrderSetting: OrderSettingStore.state.kiosk,
113
+ dialogType: true
114
+ }
115
+ })
116
+ }
68
117
 
69
118
  async function selectRestaurant(v: string) {
70
- const restaurant = restaurants.value.find((r) => r._id == v);
71
- await changeRestaurant(restaurant);
72
- await OrderSettingStore.getSetting();
73
- await KioskStore.getDevices();
74
- currentSelect.value = v;
119
+ const restaurant = restaurants.value.find((r) => r._id == v)
120
+ await changeRestaurant(restaurant)
121
+ await OrderSettingStore.getSetting()
122
+ await KioskStore.getDevices()
123
+ currentSelect.value = v
75
124
 
76
- currentRestaurantId.value = v;
125
+ currentRestaurantId.value = v
77
126
  }
78
127
 
79
128
  const menuItems = computed<FmTabProps[]>(() => [
80
- {
81
- label: t('order.deviceBinding'),
82
- value: 'device',
83
- },
84
- {
85
- label: t('order.settings'),
86
- value: 'setting',
87
- }
88
- ]);
129
+ {
130
+ label: t('order.deviceBinding'),
131
+ value: 'device'
132
+ },
133
+ {
134
+ label: t('order.settings'),
135
+ value: 'setting'
136
+ }
137
+ ])
89
138
 
90
139
  const devices = computed<MfKioskDevice[]>(() => {
91
- return KioskStore.state.devices;
92
- });
140
+ return KioskStore.state.devices
141
+ })
93
142
 
94
143
  async function requestOtp() {
95
- await KioskStore.requestOtp();
96
- Dialog.open({
97
- title: capitalCase(t('order.bindDevice')),
98
- contentComponent: KioskOtpDialog,
99
- contentComponentProps: {
100
- otp: KioskStore.state.otp,
101
- }
102
- });
144
+ await KioskStore.requestOtp()
145
+ Dialog.open({
146
+ title: capitalCase(t('order.bindDevice')),
147
+ contentComponent: KioskOtpDialog,
148
+ contentComponentProps: {
149
+ otp: KioskStore.state.otp
150
+ }
151
+ })
103
152
  }
104
153
 
105
154
  async function updateKioskOrderSetting(form: MfKioskOrderSetting) {
106
- try {
107
- OrderSettingStore.setKioskOrderSetting(form);
108
- await OrderSettingStore.updateKioskSetting();
109
- SnackBar.open({
110
- title: t('order.kioskSettingSuccess'),
111
- type: 'success',
112
- });
113
- } catch (e) {
114
- SnackBar.open({
115
- title: t('order.kioskSettingFailed'),
116
- type: 'error',
117
- });
118
- }
155
+ try {
156
+ OrderSettingStore.setKioskOrderSetting(form)
157
+ await OrderSettingStore.updateKioskSetting()
158
+ SnackBar.open({
159
+ title: t('order.kioskSettingSuccess'),
160
+ type: 'success'
161
+ })
162
+ } catch (e) {
163
+ SnackBar.open({
164
+ title: t('order.kioskSettingFailed'),
165
+ type: 'error'
166
+ })
167
+ }
119
168
  }
120
169
 
121
- watch(() => restaurants.value.length, async (_) => {
170
+ watch(
171
+ () => restaurants.value.length,
172
+ async (_) => {
122
173
  if (currentSelect.value === undefined && restaurants.value.length > 0) {
123
- await selectRestaurant(restaurants.value[0]._id)
174
+ await selectRestaurant(restaurants.value[0]._id)
124
175
  }
125
- }, { immediate: true });
126
-
127
- </script>
176
+ },
177
+ { immediate: true }
178
+ )
179
+ </script>
@@ -1,54 +1,69 @@
1
1
  <template>
2
- <div class="flex flex-col gap-5">
3
- <div class="flex flex-col gap-16">
4
- <FmSwitch v-model="form.enabled" :label="t('order.dineIn')" label-placement="right" />
5
- <div v-show="form.enabled" class="flex flex-col gap-16">
6
- <KioskPickAtCounterSection v-if="form.pickUp" :enabled="form.pickUp.enabled"
7
- @update-pick-up="updatePickUp" />
8
- <KioskDisplayStandSection v-if="form.displayStand" :display-stand="form.displayStand"
9
- @update-display-stand="updateDisplayStand" />
10
- </div>
11
- </div>
2
+ <div class="flex flex-col gap-5">
3
+ <div class="flex flex-col gap-16">
4
+ <FmSwitch
5
+ :model-value="v.enabled"
6
+ :label="t('order.dineIn')"
7
+ label-placement="right"
8
+ @update:model-value="updateEnabledDineIn"
9
+ />
10
+ <div v-show="v.enabled" class="flex flex-col gap-16">
11
+ <KioskPickAtCounterSection
12
+ v-if="v.pickUp"
13
+ :enabled="v.pickUp.enabled"
14
+ @update-pick-up="updatePickUp"
15
+ />
16
+ <KioskDisplayStandSection
17
+ v-if="v.displayStand"
18
+ :display-stand="v.displayStand"
19
+ @update-display-stand="updateDisplayStand"
20
+ />
21
+ </div>
12
22
  </div>
23
+ </div>
13
24
  </template>
14
25
  <script lang="ts" setup>
15
- import type { DisplayStandSettingForm, KioskDineInSettingForm } from '@/modules/order-setting/kiosk/interface';
16
- import KioskDisplayStandSection from './KioskDisplayStandSection.vue';
17
- import KioskPickAtCounterSection from './KioskPickAtCounterSection.vue';
18
- import { ref, watch } from 'vue';
19
- import { ObjectUtil } from '@/utils/object';
26
+ import type {
27
+ DisplayStandSettingForm,
28
+ KioskDineInSettingForm
29
+ } from '@/modules/order-setting/kiosk/interface'
30
+ import KioskDisplayStandSection from './KioskDisplayStandSection.vue'
31
+ import KioskPickAtCounterSection from './KioskPickAtCounterSection.vue'
20
32
  import { useI18n } from '@feedmepos/mf-common'
21
33
 
22
34
  const { t } = useI18n()
23
35
 
24
36
  interface Props {
25
- getSetting: () => KioskDineInSettingForm,
26
- isApplyLoading: boolean,
27
- restaurantId: string
37
+ v: KioskDineInSettingForm
28
38
  }
29
39
 
30
40
  interface Emits {
31
- (e: 'updateDineIn', setting: KioskDineInSettingForm): void
41
+ (e: 'updateDineIn', setting: KioskDineInSettingForm): void
32
42
  }
33
43
 
34
44
  function updatePickUp(v: boolean) {
35
- form.value.pickUp = {
36
- enabled: v,
37
- };
38
- emits('updateDineIn', form.value);
45
+ emits('updateDineIn', {
46
+ ...props.v,
47
+ pickUp: {
48
+ enabled: v
49
+ }
50
+ })
39
51
  }
40
52
 
41
53
  function updateDisplayStand(v: DisplayStandSettingForm) {
42
- form.value.displayStand = v;
43
- emits('updateDineIn', form.value);
54
+ emits('updateDineIn', {
55
+ ...props.v,
56
+ displayStand: v
57
+ })
44
58
  }
45
59
 
46
- const props = defineProps<Props>();
47
- const emits = defineEmits<Emits>();
48
- const form = ref<KioskDineInSettingForm>(ObjectUtil.clone<KioskDineInSettingForm>(props.getSetting()));
49
-
50
- watch(() => props.restaurantId, () => {
51
- form.value = props.getSetting();
52
- })
60
+ function updateEnabledDineIn(v: boolean) {
61
+ emits('updateDineIn', {
62
+ ...props.v,
63
+ enabled: v
64
+ })
65
+ }
53
66
 
54
- </script>
67
+ const props = defineProps<Props>()
68
+ const emits = defineEmits<Emits>()
69
+ </script>