@feedmepos/mf-order-setting 0.0.20 → 0.0.21-beta.2

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 (99) hide show
  1. package/dist/{KioskDevicesView-BnU_Z30B.js → KioskDevicesView-TgyDh8aI.js} +1 -1
  2. package/dist/{KioskDevicesView.vue_vue_type_script_setup_true_lang-2dGio8Lw.js → KioskDevicesView.vue_vue_type_script_setup_true_lang-CiYEoMoW.js} +4 -3
  3. package/dist/KioskSettingView-fbOxH9m8.js +649 -0
  4. package/dist/KioskView-C0Vn5S89.js +334 -0
  5. package/dist/{OrderSettingsView-CIUddOED.js → OrderSettingsView-mYvRn7u9.js} +1630 -1703
  6. package/dist/{app-CuyLbKuN.js → app-A306cfER.js} +478 -448
  7. package/dist/app.js +1 -1
  8. package/dist/{dayjs.min-BJrst4DM.js → auth.dto-C5PLip9a.js} +34577 -36584
  9. package/dist/dayjs.min-CLR5r0qf.js +2110 -0
  10. package/dist/frontend/mf-order/src/App.vue.d.ts +1 -1
  11. package/dist/frontend/mf-order/src/Entry.vue.d.ts +1 -1
  12. package/dist/frontend/mf-order/src/app.d.ts +439 -409
  13. package/dist/frontend/mf-order/src/components/GoogleMap.vue.d.ts +3 -1
  14. package/dist/frontend/mf-order/src/modules/order-setting/kiosk/interface.d.ts +18 -0
  15. package/dist/frontend/mf-order/src/stores/order-setting/index.d.ts +240 -0
  16. package/dist/frontend/mf-order/src/stores/order-setting/mapper.d.ts +2 -1
  17. package/dist/frontend/mf-order/src/stores/restaurant/index.d.ts +8 -8
  18. package/dist/frontend/mf-order/src/views/all-orders/ActionMenuCell.vue.d.ts +1 -1
  19. package/dist/frontend/mf-order/src/views/all-orders/FilterRestaurant.vue.d.ts +8 -1593
  20. package/dist/frontend/mf-order/src/views/all-orders/FilterStatus.vue.d.ts +6 -9
  21. package/dist/frontend/mf-order/src/views/all-orders/FilterStatusMenu.vue.d.ts +5 -11
  22. package/dist/frontend/mf-order/src/views/all-orders/ReflowOrder.vue.d.ts +17 -21
  23. package/dist/frontend/mf-order/src/views/all-orders/UpdateDeliveryOrderDialog.vue.d.ts +1 -1
  24. package/dist/frontend/mf-order/src/views/kiosk/KioskSummary.vue.d.ts +1 -1
  25. package/dist/frontend/mf-order/src/views/kiosk/KioskView.vue.d.ts +1 -1
  26. package/dist/frontend/mf-order/src/views/kiosk/devices/KioskDeviceCard.vue.d.ts +1 -1
  27. package/dist/frontend/mf-order/src/views/kiosk/devices/KioskDeviceDetail.vue.d.ts +1 -1
  28. package/dist/frontend/mf-order/src/views/kiosk/devices/KioskDevicesView.vue.d.ts +1 -1
  29. package/dist/frontend/mf-order/src/views/kiosk/devices/KioskOtpDialog.vue.d.ts +1 -1
  30. package/dist/frontend/mf-order/src/views/kiosk/devices/KioskUnbindConfirm.vue.d.ts +1 -1
  31. package/dist/frontend/mf-order/src/views/kiosk/settings/KioskDineInSection.vue.d.ts +2 -4
  32. package/dist/frontend/mf-order/src/views/kiosk/settings/KioskDisplayStandSection.vue.d.ts +1 -1
  33. package/dist/frontend/mf-order/src/views/kiosk/settings/KioskMenuItemSection.vue.d.ts +9 -0
  34. package/dist/frontend/mf-order/src/views/kiosk/settings/KioskPaymentTypeSection.vue.d.ts +93 -0
  35. package/dist/frontend/mf-order/src/views/kiosk/settings/KioskPickAtCounterSection.vue.d.ts +1 -1
  36. package/dist/frontend/mf-order/src/views/kiosk/settings/KioskTakeawaySection.vue.d.ts +2 -4
  37. package/dist/frontend/mf-order/src/views/order-settings/delivery/DeliveryList.vue.d.ts +1 -1
  38. package/dist/frontend/mf-order/src/views/order-settings/delivery/components/TaxInput.vue.d.ts +1 -1
  39. package/dist/frontend/mf-order/src/views/order-settings/delivery/inhouse/DeliveryOrder.vue.d.ts +136 -1
  40. package/dist/frontend/mf-order/src/views/order-settings/delivery/inhouse/TimePicker.vue.d.ts +6 -120
  41. package/dist/frontend/mf-order/src/views/order-settings/{dinein → dine-in}/OfflinePaymentTypeDialogContent.vue.d.ts +1 -1
  42. package/dist/frontend/mf-order/src/views/order-settings/pickup/AddressInput.vue.d.ts +8 -12
  43. package/dist/frontend/mf-order/src/views/order-settings/pickup/CustomPayment.vue.d.ts +6 -12
  44. package/dist/frontend/mf-order/src/views/order-settings/pickup/PaymentSidesheet.vue.d.ts +18 -15
  45. package/dist/frontend/mf-order/src/views/order-settings/pickup/PickUpPointDialogContent.vue.d.ts +142 -15
  46. package/dist/frontend/mf-order/src/views/order-settings/pickup/PickupList.vue.d.ts +1 -1
  47. package/dist/frontend/mf-order/tsconfig.app.tsbuildinfo +1 -1
  48. package/dist/{index-DPl0R4fg.js → index-BJuGDir8.js} +25 -24
  49. package/dist/index-DSCb3ndM.js +150 -0
  50. package/dist/package/entity/food-court/order.dto.d.ts +223 -223
  51. package/dist/package/entity/incoming-order/incoming-order-to-bill.dto.d.ts +2 -2
  52. package/dist/package/entity/incoming-order/incoming-order.dto.d.ts +8 -8
  53. package/dist/package/entity/kiosk/kiosk.do.d.ts +12 -12
  54. package/dist/package/entity/kiosk/kiosk.dto.d.ts +15 -15
  55. package/dist/package/entity/kiosk/scanner/scanner.do.d.ts +9 -9
  56. package/dist/package/entity/kiosk/scanner/scanner.dto.d.ts +9 -9
  57. package/dist/package/entity/kiosk/scanner/scanner.enum.d.ts +1 -1
  58. package/dist/package/entity/order/manager/manager.dto.d.ts +8 -8
  59. package/dist/package/entity/order/order-item/order-item.dto.d.ts +3986 -0
  60. package/dist/package/entity/order/order.do.d.ts +946 -0
  61. package/dist/package/entity/order/order.dto.d.ts +25328 -2337
  62. package/dist/package/entity/order/order.enum.d.ts +5 -1
  63. package/dist/package/entity/order/payment/payment.dto.d.ts +930 -930
  64. package/dist/package/entity/order-platform/grabfood/grabfood-order.do.d.ts +10 -10
  65. package/dist/package/entity/order-platform/grabfood/grabfood.dto.d.ts +4 -4
  66. package/dist/package/entity/order-setting/kiosk/kiosk.do.d.ts +259 -0
  67. package/dist/package/entity/order-setting/kiosk/kiosk.dto.d.ts +266 -0
  68. package/dist/package/entity/order-setting/order-setting.do.d.ts +172 -0
  69. package/dist/package/entity/order-setting/order-setting.dto.d.ts +344 -0
  70. package/dist/package/entity/payment/payment.dto.d.ts +2 -2
  71. package/dist/package/entity/restaurant/restaurant.dto.d.ts +220 -48
  72. package/dist/package/entity/websocket/websocket.dto.d.ts +384 -0
  73. package/package.json +2 -2
  74. package/src/locales/en-US.json +218 -203
  75. package/src/locales/zh-CN.json +218 -203
  76. package/src/modules/order-setting/kiosk/interface.ts +25 -0
  77. package/src/stores/order-setting/mapper.ts +73 -51
  78. package/src/views/kiosk/KioskSummary.vue +36 -2
  79. package/src/views/kiosk/KioskView.vue +115 -96
  80. package/src/views/kiosk/settings/KioskDineInSection.vue +48 -33
  81. package/src/views/kiosk/settings/KioskDisplayStandSection.vue +114 -67
  82. package/src/views/kiosk/settings/KioskMenuItemSection.vue +27 -0
  83. package/src/views/kiosk/settings/KioskPaymentTypeSection.vue +339 -0
  84. package/src/views/kiosk/settings/KioskPickAtCounterSection.vue +15 -14
  85. package/src/views/kiosk/settings/KioskSettingView.vue +169 -108
  86. package/src/views/kiosk/settings/KioskTakeawaySection.vue +16 -22
  87. package/src/views/order-settings/OrderSettingsView.vue +1 -1
  88. package/src/views/order-settings/delivery/DeliverySetting.vue +8 -10
  89. package/src/views/order-settings/pickup/CustomPayment.vue +1 -1
  90. package/dist/KioskSettingView-6Q0qwSTl.js +0 -345
  91. package/dist/KioskView-DqV4IW7U.js +0 -289
  92. package/dist/index-B9mJLWE5.js +0 -70
  93. /package/dist/frontend/mf-order/src/views/order-settings/{dinein → dine-in}/DineInSetting.vue.d.ts +0 -0
  94. /package/dist/frontend/mf-order/src/views/order-settings/{dinein → dine-in}/OfflinePaymentTypeDialog.vue.d.ts +0 -0
  95. /package/dist/frontend/mf-order/src/views/order-settings/{dinein → dine-in}/PaymentType.vue.d.ts +0 -0
  96. /package/src/views/order-settings/{dinein → dine-in}/DineInSetting.vue +0 -0
  97. /package/src/views/order-settings/{dinein → dine-in}/OfflinePaymentTypeDialog.vue +0 -0
  98. /package/src/views/order-settings/{dinein → dine-in}/OfflinePaymentTypeDialogContent.vue +0 -0
  99. /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
 
@@ -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
 
@@ -74,4 +81,31 @@ const dineInType = computed<string>(() => {
74
81
  }
75
82
  });
76
83
 
77
- </script>
84
+ const offlinePaymentStatus = computed<boolean>(() => {
85
+ return props.kioskOrderSetting?.paymentSetting.paymentTypes.includes(F_ORDER_PAYMENT_TYPE.enum.cash) ?? false;
86
+ });
87
+
88
+ const acceptedPaymentStatus = computed<string>(() => {
89
+ const acceptedPayment: string[] = [];
90
+ props.kioskOrderSetting?.paymentSetting.paymentTypes.forEach((type) => {
91
+ if (type === F_ORDER_PAYMENT_TYPE.enum.ePayment) {
92
+ acceptedPayment.push(t('order.ePayment'));
93
+ }
94
+ });
95
+
96
+ if (
97
+ acceptedPayment.length > 0 &&
98
+ !(Object.keys(props.kioskOrderSetting!.paymentSetting.ePaymentTypes).length === 0)
99
+ ) {
100
+ const ePaymentTypes = props.kioskOrderSetting?.paymentSetting.ePaymentTypes;
101
+ if (ePaymentTypes!.card.terminal || ePaymentTypes!.card.nfc) {
102
+ acceptedPayment.push(t('order.bankCard'));
103
+ }
104
+ if (ePaymentTypes!.eWallet.scanPay || ePaymentTypes!.eWallet.qrPay) {
105
+ acceptedPayment.push(t('order.eWallet'));
106
+ }
107
+ }
108
+
109
+ return acceptedPayment.join(', ');
110
+ });
111
+ </script>
@@ -1,127 +1,146 @@
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
+ <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
13
+ class="w-1/2"
14
+ v-model="currentSelect"
15
+ :items="restaurantItems"
16
+ :placeholder="t('order.selectItem')"
17
+ @update:model-value="selectRestaurant"
18
+ />
27
19
  </div>
20
+ <KioskDevicesView
21
+ v-if="selectedMenuItem == 'device'"
22
+ :devices="devices"
23
+ :request-otp="requestOtp"
24
+ />
25
+ <KioskSettingView
26
+ :key="`KioskSettingView-${currentRestaurantId}`"
27
+ v-if="selectedMenuItem == 'setting'"
28
+ :restaurant-id="currentRestaurantId"
29
+ @update-kiosk-order-setting="updateKioskOrderSetting"
30
+ :form="OrderSettingStore.state.kiosk ?? defaultKioskOrderSetting"
31
+ />
32
+ </div>
28
33
  </div>
34
+ </div>
35
+ <div class="flex-[1_1_0%]">
36
+ <KioskSummary
37
+ :restaurant-id="currentRestaurantId"
38
+ :devices="devices"
39
+ :kiosk-order-setting="OrderSettingStore.state.kiosk"
40
+ />
41
+ </div>
29
42
  </div>
43
+ </div>
30
44
  </template>
31
45
  <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';
46
+ import KioskDevicesView from '@/views/kiosk/devices/KioskDevicesView.vue'
47
+ import KioskSummary from '@/views/kiosk/KioskSummary.vue'
48
+ import { useDialog, useSnackbar, type FmTabProps, type ISelectItem } from '@feedmepos/ui-library'
49
+ import { ref, computed, defineAsyncComponent, watch } from 'vue'
50
+ import { useKioskStore } from '@/stores/kiosk'
51
+ import type { MfKioskDevice } from '@/modules/kiosk/interface'
52
+ import KioskOtpDialog from '@/views/kiosk/devices/KioskOtpDialog.vue'
53
+ import { useCoreStore, useI18n } from '@feedmepos/mf-common'
54
+ import { useOrderSettings } from '@/stores/order-setting'
55
+ import type { MfKioskOrderSetting } from '@/modules/order-setting/kiosk/interface'
56
+ import { defaultKioskOrderSetting } from '@/stores/order-setting/mapper'
57
+ import { capitalCase } from 'change-case'
44
58
 
45
- const { t } = useI18n();
59
+ const { t } = useI18n()
46
60
 
47
- type KioskMenuItemValue = "device" | "setting";
61
+ type KioskMenuItemValue = 'device' | 'setting'
48
62
 
49
- const KioskSettingView = defineAsyncComponent(() => import('@/views/kiosk/settings/KioskSettingView.vue'));
63
+ const KioskSettingView = defineAsyncComponent(
64
+ () => import('@/views/kiosk/settings/KioskSettingView.vue')
65
+ )
50
66
 
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();
67
+ const selectedMenuItem = ref<KioskMenuItemValue>('device')
68
+ const KioskStore = useKioskStore()
69
+ const OrderSettingStore = useOrderSettings()
70
+ const Dialog = useDialog()
71
+ const { currentRestaurant, restaurants, changeRestaurant } = useCoreStore()
72
+ const SnackBar = useSnackbar()
57
73
 
58
- const currentSelect = ref<string | undefined>(currentRestaurant.value?._id ?? undefined);
74
+ const currentSelect = ref<string | undefined>(currentRestaurant.value?._id ?? undefined)
59
75
 
60
76
  const restaurantItems = computed<ISelectItem[]>(() => {
61
- return restaurants.value.map((r) => ({
62
- label: r.profile.name,
63
- value: r._id,
64
- }));
65
- });
77
+ return restaurants.value.map((r) => ({
78
+ label: r.profile.name,
79
+ value: r._id
80
+ }))
81
+ })
66
82
 
67
- const currentRestaurantId = ref<string>(currentRestaurant.value?._id ?? '');
83
+ const currentRestaurantId = ref<string>(currentRestaurant.value?._id ?? '')
68
84
 
69
85
  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;
86
+ const restaurant = restaurants.value.find((r) => r._id == v)
87
+ await changeRestaurant(restaurant)
88
+ await OrderSettingStore.getSetting()
89
+ await KioskStore.getDevices()
90
+ currentSelect.value = v
75
91
 
76
- currentRestaurantId.value = v;
92
+ currentRestaurantId.value = v
77
93
  }
78
94
 
79
95
  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
- ]);
96
+ {
97
+ label: t('order.deviceBinding'),
98
+ value: 'device'
99
+ },
100
+ {
101
+ label: t('order.settings'),
102
+ value: 'setting'
103
+ }
104
+ ])
89
105
 
90
106
  const devices = computed<MfKioskDevice[]>(() => {
91
- return KioskStore.state.devices;
92
- });
107
+ return KioskStore.state.devices
108
+ })
93
109
 
94
110
  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
- });
111
+ await KioskStore.requestOtp()
112
+ Dialog.open({
113
+ title: capitalCase(t('order.bindDevice')),
114
+ contentComponent: KioskOtpDialog,
115
+ contentComponentProps: {
116
+ otp: KioskStore.state.otp
117
+ }
118
+ })
103
119
  }
104
120
 
105
121
  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
- }
122
+ try {
123
+ OrderSettingStore.setKioskOrderSetting(form)
124
+ await OrderSettingStore.updateKioskSetting()
125
+ SnackBar.open({
126
+ title: t('order.kioskSettingSuccess'),
127
+ type: 'success'
128
+ })
129
+ } catch (e) {
130
+ SnackBar.open({
131
+ title: t('order.kioskSettingFailed'),
132
+ type: 'error'
133
+ })
134
+ }
119
135
  }
120
136
 
121
- watch(() => restaurants.value.length, async (_) => {
137
+ watch(
138
+ () => restaurants.value.length,
139
+ async (_) => {
122
140
  if (currentSelect.value === undefined && restaurants.value.length > 0) {
123
- await selectRestaurant(restaurants.value[0]._id)
141
+ await selectRestaurant(restaurants.value[0]._id)
124
142
  }
125
- }, { immediate: true });
126
-
127
- </script>
143
+ },
144
+ { immediate: true }
145
+ )
146
+ </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>