@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.
- package/dist/{KioskDevicesView-BnU_Z30B.js → KioskDevicesView-TgyDh8aI.js} +1 -1
- package/dist/{KioskDevicesView.vue_vue_type_script_setup_true_lang-2dGio8Lw.js → KioskDevicesView.vue_vue_type_script_setup_true_lang-CiYEoMoW.js} +4 -3
- package/dist/KioskSettingView-fbOxH9m8.js +649 -0
- package/dist/KioskView-C0Vn5S89.js +334 -0
- package/dist/{OrderSettingsView-CIUddOED.js → OrderSettingsView-mYvRn7u9.js} +1630 -1703
- package/dist/{app-CuyLbKuN.js → app-A306cfER.js} +478 -448
- package/dist/app.js +1 -1
- package/dist/{dayjs.min-BJrst4DM.js → auth.dto-C5PLip9a.js} +34577 -36584
- package/dist/dayjs.min-CLR5r0qf.js +2110 -0
- package/dist/frontend/mf-order/src/App.vue.d.ts +1 -1
- package/dist/frontend/mf-order/src/Entry.vue.d.ts +1 -1
- package/dist/frontend/mf-order/src/app.d.ts +439 -409
- package/dist/frontend/mf-order/src/components/GoogleMap.vue.d.ts +3 -1
- package/dist/frontend/mf-order/src/modules/order-setting/kiosk/interface.d.ts +18 -0
- package/dist/frontend/mf-order/src/stores/order-setting/index.d.ts +240 -0
- package/dist/frontend/mf-order/src/stores/order-setting/mapper.d.ts +2 -1
- package/dist/frontend/mf-order/src/stores/restaurant/index.d.ts +8 -8
- package/dist/frontend/mf-order/src/views/all-orders/ActionMenuCell.vue.d.ts +1 -1
- package/dist/frontend/mf-order/src/views/all-orders/FilterRestaurant.vue.d.ts +8 -1593
- package/dist/frontend/mf-order/src/views/all-orders/FilterStatus.vue.d.ts +6 -9
- package/dist/frontend/mf-order/src/views/all-orders/FilterStatusMenu.vue.d.ts +5 -11
- package/dist/frontend/mf-order/src/views/all-orders/ReflowOrder.vue.d.ts +17 -21
- package/dist/frontend/mf-order/src/views/all-orders/UpdateDeliveryOrderDialog.vue.d.ts +1 -1
- package/dist/frontend/mf-order/src/views/kiosk/KioskSummary.vue.d.ts +1 -1
- package/dist/frontend/mf-order/src/views/kiosk/KioskView.vue.d.ts +1 -1
- package/dist/frontend/mf-order/src/views/kiosk/devices/KioskDeviceCard.vue.d.ts +1 -1
- package/dist/frontend/mf-order/src/views/kiosk/devices/KioskDeviceDetail.vue.d.ts +1 -1
- package/dist/frontend/mf-order/src/views/kiosk/devices/KioskDevicesView.vue.d.ts +1 -1
- package/dist/frontend/mf-order/src/views/kiosk/devices/KioskOtpDialog.vue.d.ts +1 -1
- package/dist/frontend/mf-order/src/views/kiosk/devices/KioskUnbindConfirm.vue.d.ts +1 -1
- package/dist/frontend/mf-order/src/views/kiosk/settings/KioskDineInSection.vue.d.ts +2 -4
- package/dist/frontend/mf-order/src/views/kiosk/settings/KioskDisplayStandSection.vue.d.ts +1 -1
- package/dist/frontend/mf-order/src/views/kiosk/settings/KioskMenuItemSection.vue.d.ts +9 -0
- package/dist/frontend/mf-order/src/views/kiosk/settings/KioskPaymentTypeSection.vue.d.ts +93 -0
- package/dist/frontend/mf-order/src/views/kiosk/settings/KioskPickAtCounterSection.vue.d.ts +1 -1
- package/dist/frontend/mf-order/src/views/kiosk/settings/KioskTakeawaySection.vue.d.ts +2 -4
- package/dist/frontend/mf-order/src/views/order-settings/delivery/DeliveryList.vue.d.ts +1 -1
- package/dist/frontend/mf-order/src/views/order-settings/delivery/components/TaxInput.vue.d.ts +1 -1
- package/dist/frontend/mf-order/src/views/order-settings/delivery/inhouse/DeliveryOrder.vue.d.ts +136 -1
- package/dist/frontend/mf-order/src/views/order-settings/delivery/inhouse/TimePicker.vue.d.ts +6 -120
- package/dist/frontend/mf-order/src/views/order-settings/{dinein → dine-in}/OfflinePaymentTypeDialogContent.vue.d.ts +1 -1
- package/dist/frontend/mf-order/src/views/order-settings/pickup/AddressInput.vue.d.ts +8 -12
- package/dist/frontend/mf-order/src/views/order-settings/pickup/CustomPayment.vue.d.ts +6 -12
- package/dist/frontend/mf-order/src/views/order-settings/pickup/PaymentSidesheet.vue.d.ts +18 -15
- package/dist/frontend/mf-order/src/views/order-settings/pickup/PickUpPointDialogContent.vue.d.ts +142 -15
- package/dist/frontend/mf-order/src/views/order-settings/pickup/PickupList.vue.d.ts +1 -1
- package/dist/frontend/mf-order/tsconfig.app.tsbuildinfo +1 -1
- package/dist/{index-DPl0R4fg.js → index-BJuGDir8.js} +25 -24
- package/dist/index-DSCb3ndM.js +150 -0
- package/dist/package/entity/food-court/order.dto.d.ts +223 -223
- package/dist/package/entity/incoming-order/incoming-order-to-bill.dto.d.ts +2 -2
- package/dist/package/entity/incoming-order/incoming-order.dto.d.ts +8 -8
- package/dist/package/entity/kiosk/kiosk.do.d.ts +12 -12
- package/dist/package/entity/kiosk/kiosk.dto.d.ts +15 -15
- package/dist/package/entity/kiosk/scanner/scanner.do.d.ts +9 -9
- package/dist/package/entity/kiosk/scanner/scanner.dto.d.ts +9 -9
- package/dist/package/entity/kiosk/scanner/scanner.enum.d.ts +1 -1
- package/dist/package/entity/order/manager/manager.dto.d.ts +8 -8
- package/dist/package/entity/order/order-item/order-item.dto.d.ts +3986 -0
- package/dist/package/entity/order/order.do.d.ts +946 -0
- package/dist/package/entity/order/order.dto.d.ts +25328 -2337
- package/dist/package/entity/order/order.enum.d.ts +5 -1
- package/dist/package/entity/order/payment/payment.dto.d.ts +930 -930
- package/dist/package/entity/order-platform/grabfood/grabfood-order.do.d.ts +10 -10
- package/dist/package/entity/order-platform/grabfood/grabfood.dto.d.ts +4 -4
- package/dist/package/entity/order-setting/kiosk/kiosk.do.d.ts +259 -0
- package/dist/package/entity/order-setting/kiosk/kiosk.dto.d.ts +266 -0
- package/dist/package/entity/order-setting/order-setting.do.d.ts +172 -0
- package/dist/package/entity/order-setting/order-setting.dto.d.ts +344 -0
- package/dist/package/entity/payment/payment.dto.d.ts +2 -2
- package/dist/package/entity/restaurant/restaurant.dto.d.ts +220 -48
- package/dist/package/entity/websocket/websocket.dto.d.ts +384 -0
- package/package.json +2 -2
- package/src/locales/en-US.json +218 -203
- package/src/locales/zh-CN.json +218 -203
- package/src/modules/order-setting/kiosk/interface.ts +25 -0
- package/src/stores/order-setting/mapper.ts +73 -51
- package/src/views/kiosk/KioskSummary.vue +36 -2
- package/src/views/kiosk/KioskView.vue +115 -96
- package/src/views/kiosk/settings/KioskDineInSection.vue +48 -33
- package/src/views/kiosk/settings/KioskDisplayStandSection.vue +114 -67
- package/src/views/kiosk/settings/KioskMenuItemSection.vue +27 -0
- package/src/views/kiosk/settings/KioskPaymentTypeSection.vue +339 -0
- package/src/views/kiosk/settings/KioskPickAtCounterSection.vue +15 -14
- package/src/views/kiosk/settings/KioskSettingView.vue +169 -108
- package/src/views/kiosk/settings/KioskTakeawaySection.vue +16 -22
- package/src/views/order-settings/OrderSettingsView.vue +1 -1
- package/src/views/order-settings/delivery/DeliverySetting.vue +8 -10
- package/src/views/order-settings/pickup/CustomPayment.vue +1 -1
- package/dist/KioskSettingView-6Q0qwSTl.js +0 -345
- package/dist/KioskView-DqV4IW7U.js +0 -289
- package/dist/index-B9mJLWE5.js +0 -70
- /package/dist/frontend/mf-order/src/views/order-settings/{dinein → dine-in}/DineInSetting.vue.d.ts +0 -0
- /package/dist/frontend/mf-order/src/views/order-settings/{dinein → dine-in}/OfflinePaymentTypeDialog.vue.d.ts +0 -0
- /package/dist/frontend/mf-order/src/views/order-settings/{dinein → dine-in}/PaymentType.vue.d.ts +0 -0
- /package/src/views/order-settings/{dinein → dine-in}/DineInSetting.vue +0 -0
- /package/src/views/order-settings/{dinein → dine-in}/OfflinePaymentTypeDialog.vue +0 -0
- /package/src/views/order-settings/{dinein → dine-in}/OfflinePaymentTypeDialogContent.vue +0 -0
- /package/src/views/order-settings/{dinein → dine-in}/PaymentType.vue +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { OrderSettingsDto,
|
|
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
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
enabled,
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
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
|
-
|
|
93
|
-
if (
|
|
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
|
-
}
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
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
|
-
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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
|
|
38
|
-
import KioskOtpDialog from
|
|
39
|
-
import { useCoreStore, useI18n } from
|
|
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 =
|
|
61
|
+
type KioskMenuItemValue = 'device' | 'setting'
|
|
48
62
|
|
|
49
|
-
const KioskSettingView = defineAsyncComponent(
|
|
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
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
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
|
-
|
|
92
|
+
currentRestaurantId.value = v
|
|
77
93
|
}
|
|
78
94
|
|
|
79
95
|
const menuItems = computed<FmTabProps[]>(() => [
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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
|
-
|
|
92
|
-
})
|
|
107
|
+
return KioskStore.state.devices
|
|
108
|
+
})
|
|
93
109
|
|
|
94
110
|
async function requestOtp() {
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
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(
|
|
137
|
+
watch(
|
|
138
|
+
() => restaurants.value.length,
|
|
139
|
+
async (_) => {
|
|
122
140
|
if (currentSelect.value === undefined && restaurants.value.length > 0) {
|
|
123
|
-
|
|
141
|
+
await selectRestaurant(restaurants.value[0]._id)
|
|
124
142
|
}
|
|
125
|
-
},
|
|
126
|
-
|
|
127
|
-
|
|
143
|
+
},
|
|
144
|
+
{ immediate: true }
|
|
145
|
+
)
|
|
146
|
+
</script>
|
|
@@ -1,54 +1,69 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
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 {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
import
|
|
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
|
-
|
|
26
|
-
isApplyLoading: boolean,
|
|
27
|
-
restaurantId: string
|
|
37
|
+
v: KioskDineInSettingForm
|
|
28
38
|
}
|
|
29
39
|
|
|
30
40
|
interface Emits {
|
|
31
|
-
|
|
41
|
+
(e: 'updateDineIn', setting: KioskDineInSettingForm): void
|
|
32
42
|
}
|
|
33
43
|
|
|
34
44
|
function updatePickUp(v: boolean) {
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
45
|
+
emits('updateDineIn', {
|
|
46
|
+
...props.v,
|
|
47
|
+
pickUp: {
|
|
48
|
+
enabled: v
|
|
49
|
+
}
|
|
50
|
+
})
|
|
39
51
|
}
|
|
40
52
|
|
|
41
53
|
function updateDisplayStand(v: DisplayStandSettingForm) {
|
|
42
|
-
|
|
43
|
-
|
|
54
|
+
emits('updateDineIn', {
|
|
55
|
+
...props.v,
|
|
56
|
+
displayStand: v
|
|
57
|
+
})
|
|
44
58
|
}
|
|
45
59
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
})
|
|
60
|
+
function updateEnabledDineIn(v: boolean) {
|
|
61
|
+
emits('updateDineIn', {
|
|
62
|
+
...props.v,
|
|
63
|
+
enabled: v
|
|
64
|
+
})
|
|
65
|
+
}
|
|
53
66
|
|
|
54
|
-
|
|
67
|
+
const props = defineProps<Props>()
|
|
68
|
+
const emits = defineEmits<Emits>()
|
|
69
|
+
</script>
|