From df00483087d02c801b8597ae004d555320bc9249 Mon Sep 17 00:00:00 2001 From: Jonathan Chevalier Date: Fri, 25 Nov 2022 17:40:02 +0100 Subject: [PATCH] WIP MMCM --- src/stores/mmcm.js | 11 ++-- src/views/delivery-option-step-3.vue | 90 ++++++++++++++++++++++----- src/views/delivery-option-summary.vue | 7 ++- 3 files changed, 83 insertions(+), 25 deletions(-) diff --git a/src/stores/mmcm.js b/src/stores/mmcm.js index 746a8ec..8452300 100644 --- a/src/stores/mmcm.js +++ b/src/stores/mmcm.js @@ -19,7 +19,6 @@ let date = {collectExpress: null, deliveryExpress: null, collectFacteur: null, d const currentDay = format(today, 'e') //const isWeekEnd = (currentDay === '7' || currentDay === '8') - if (format(today, 'HH') > 16) { date.collectExpress = date.deliveryExpress = tomorrow } else { @@ -43,7 +42,7 @@ if (currentDay === '5') // jeudi days: 4 }) - if (format(today, 'HH') > 17) { + if (format(today, 'HH') > 16) { date.collectExpress = date.deliveryExpress = add(today, { days: 3 }) @@ -66,7 +65,6 @@ if (currentDay === '5') // jeudi date.collectExpress = date.deliveryExpress = tomorrow } - const timestampConverter = (digit13) => digit13 / 1000 export const useMMCMStore = defineStore('counter', { @@ -82,7 +80,7 @@ export const useMMCMStore = defineStore('counter', { dateCollect: null, methodDelivery: 'Main propre', methodCollect: 'Main propre', - timeSlot : '09h30-11h00', + timeSlot : null, }), getters: { fullAddress: (state) => (state.street !== null) ? state.street + ' ' + state.zipCode + ' ' + state.city : null, @@ -90,7 +88,7 @@ export const useMMCMStore = defineStore('counter', { deliveryMethodCode: (state) => state.productList.filter(p => p.id === state.idProduct)[0].ref, dateDeliveryString: (state) => new Date(state.dateDelivery).toLocaleDateString("fr-FR"), dateCollectString: (state) => new Date(state.dateCollect).toLocaleDateString("fr-FR"), - displayTimeSlot: (state) => (state.productList.filter(p => p.id === state.idProduct)[0].ref === 'MMCM_EXPRESS') ? 'entre ' +state.timeSlot : 'entre 09h00-17h00', + displayTimeSlot: (state) => (state.productList.filter(p => p.id === state.idProduct)[0].ref === 'MMCM_EXPRESS') ? state.timeSlot : '09h00-17h00', minDateForDelivery: (state) => (state.productList.filter(p => p.id === state.idProduct)[0].ref === 'MMCM_EXPRESS') ? date.deliveryExpress : date.deliveryFacteur, minDateForCollect: (state) => (state.productList.filter(p => p.id === state.idProduct)[0].ref === 'MMCM_EXPRESS') ? date.collectExpress : date.collectFacteur, needPrescriptionDateCollect: (state) => !!(state.productList.filter(p => p.id === state.idProduct)[0].ref === 'MMCM_FACTEUR' && state.withPrescription), @@ -157,6 +155,9 @@ export const useMMCMStore = defineStore('counter', { }, setTimeSlot(timeSlot) { this.timeSlot = timeSlot + }, + setDateCollect(dateCollect){ + this.dateCollect = dateCollect } }, }) diff --git a/src/views/delivery-option-step-3.vue b/src/views/delivery-option-step-3.vue index e095dca..d5195c3 100644 --- a/src/views/delivery-option-step-3.vue +++ b/src/views/delivery-option-step-3.vue @@ -18,15 +18,17 @@
- +
- +
@@ -35,19 +37,26 @@ -
+
Créneau horaire :
-
- +
+
+
Nous sommes désolé il n'y a plus de créneau disponible pour cette date
- +
+ Merci de renseigner la creneau horaire
+ + +
+
@@ -58,7 +67,8 @@
-

* L'utilisation d'une boîte aux lettres normalisée est idéale pour ce service.
+

* L'utilisation d'une boîte aux lettres normalisée est idéale pour ce + service.
Dimensions d'une boîte aux lettres normalisée : hauteur : 26 cm, largeur : 26 cm, profondeur : 34 cm.
Si vous avez déjà reçu un colis dans votre boîte aux lettres, c'est sûr, le facteur pourra l'utiliser.
@@ -84,8 +94,8 @@ export default { id: 1, title: 'Date de collecte de l\'ordonnance :', vModel: dateCollect, - method : methodCollect, - methodLabel : 'Collecte des documents de santé', + method: methodCollect, + methodLabel: 'Collecte des documents de santé', error: false, minDate: store.minDateForCollect, })) @@ -96,16 +106,17 @@ export default { title: 'Date de livraison des médicaments :', vModel: dateDelivery, error: false, - method : methodDelivery, - methodLabel : 'Livraison', + method: methodDelivery, + methodLabel: 'Livraison', minDate: (store.needPrescriptionDateCollect) ? store.minDateForDelivery : store.minDateForCollect, })) - const timeSlotList = ['09h30-11h00', '11h00-12h30', ' 15h30-17h00', '17h00-18h30'] + + const timeSlotError = ref(false) return { - timeSlotList, timeSlot, + timeSlotError, dateDelivery, dateCollect, fr, @@ -114,6 +125,42 @@ export default { } }, name: "delivery-option-step-3", + computed: { + timeSlotList: function () { + + const today = new Date(); + + let checkDate + + if (this.dateDelivery === null) { + checkDate = new Date(this.store.minDateForDelivery) + } + else{ + checkDate = new Date(this.dateDelivery) + } + + const timeLimit = [{ + label: '09h30-11h00', + start: new Date(checkDate.getFullYear(), checkDate.getMonth(), checkDate.getDate(), 9, 30, 0), + }, + { + label: '11h00-12h30', + start: new Date(checkDate.getFullYear(), checkDate.getMonth(), checkDate.getDate(), 11, 0, 0), + }, + { + label: '15h30-17h00', + start: new Date(checkDate.getFullYear(), checkDate.getMonth(), checkDate.getDate(), 15, 30, 0), + }, + { + label: '17h00-18h30', + start: new Date(checkDate.getFullYear(), checkDate.getMonth(), checkDate.getDate(), 17, 0, 0), + }, + ] + + return timeLimit.filter(d=>d.start.getTime() > today.getTime()) + + } + }, methods: { gotToNextStep: function () { @@ -121,12 +168,21 @@ export default { p.error = p.vModel === null; }) - if (this.pickerList.filter(p => p.error).length === 0) { + if (this.store.deliveryMethodCode === 'MMCM_EXPRESS') { + this.timeSlotError = this.timeSlot === null; + this.store.setDateCollect(null) + } else { + this.timeSlotError = false; + this.store.setTimeSlot(null) + } + + if (this.pickerList.filter(p => p.error).length === 0 && this.timeSlotError === false) { this.$router.push({path: '/delivery-option-summary'}); } }, pickerUpdate(picker) { picker.error = false + this.timeSlot = null if (this.pickerList.length > 1 && picker.id === 1) { diff --git a/src/views/delivery-option-summary.vue b/src/views/delivery-option-summary.vue index ec18b5f..30a8d78 100644 --- a/src/views/delivery-option-summary.vue +++ b/src/views/delivery-option-summary.vue @@ -30,10 +30,10 @@
Date de collecte de l'ordonnance - : {{ (store.dateCollect) ? store.dateCollectString : store.dateDeliveryString }} {{store.displayTimeSlot}} + : {{ (store.dateCollect) ? store.dateCollectString : store.dateDeliveryString }} entre {{store.displayTimeSlot}}
Date de livraison des - medicaments : {{ store.dateDeliveryString }} {{store.displayTimeSlot}} + medicaments : {{ store.dateDeliveryString }} entre {{store.displayTimeSlot}}
@@ -66,6 +66,7 @@ export default { + '&with_prescription=' + this.store.withPrescription + '&date_delivery=' + this.store.dateDeliveryTimestampInSecond + '&method_delivery=' + this.store.methodDelivery + + '&time_slot=' + this.store.displayTimeSlot + '&street=' + encodeURI(this.store.street) + '&zip_code=' + this.store.zipCode + '&city=' + this.store.city @@ -78,7 +79,7 @@ export default { } if (import.meta.env.DEV) { - urlApi += '&ID_SESSION=5GGl6BtF'; + urlApi += '&ID_SESSION=YN2nLi3m'; console.log(urlApi) }