WIP MMCM
This commit is contained in:
@@ -60,7 +60,7 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
watch(searchTerm, (selection, prevSelection) => {
|
watch(searchTerm, (selection, prevSelection) => {
|
||||||
console.log(selection)
|
|
||||||
searchCountries= addressSearch(searchCountries)
|
searchCountries= addressSearch(searchCountries)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import {defineStore} from 'pinia'
|
import {defineStore} from 'pinia'
|
||||||
import {add} from "date-fns";
|
import {add, format} from "date-fns";
|
||||||
|
|
||||||
const today = new Date();
|
const today = new Date();
|
||||||
|
|
||||||
@@ -13,6 +13,58 @@ const afterTomorrow =
|
|||||||
days: 2
|
days: 2
|
||||||
})
|
})
|
||||||
|
|
||||||
|
let date = {collectExpress: null, deliveryExpress: null, collectFacteur: null, deliveryFacteur: null}
|
||||||
|
|
||||||
|
const currentDay = format(today, 'e')
|
||||||
|
//const isWeekEnd = (currentDay === '7' || currentDay === '8')
|
||||||
|
|
||||||
|
if (format(today, 'HH') > 17) {
|
||||||
|
date.collectExpress = date.deliveryExpress = tomorrow
|
||||||
|
} else {
|
||||||
|
date.collectExpress = date.deliveryExpress = today
|
||||||
|
}
|
||||||
|
|
||||||
|
date.collectFacteur = tomorrow
|
||||||
|
date.deliveryFacteur = afterTomorrow
|
||||||
|
|
||||||
|
if (currentDay === '5') // jeudi
|
||||||
|
{
|
||||||
|
date.deliveryFacteur = add(today, {
|
||||||
|
days: 4
|
||||||
|
})
|
||||||
|
} else if (currentDay === '6') // vendredi
|
||||||
|
{
|
||||||
|
date.collectFacteur = add(today, {
|
||||||
|
days: 3
|
||||||
|
})
|
||||||
|
date.deliveryFacteur = add(today, {
|
||||||
|
days: 4
|
||||||
|
})
|
||||||
|
|
||||||
|
if (format(today, 'HH') > 17) {
|
||||||
|
date.collectExpress = date.deliveryExpress = add(today, {
|
||||||
|
days: 3
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
} else if (currentDay === '7') // samedi
|
||||||
|
{
|
||||||
|
date.collectFacteur = add(today, {
|
||||||
|
days: 2
|
||||||
|
})
|
||||||
|
date.deliveryFacteur = add(today, {
|
||||||
|
days: 3
|
||||||
|
})
|
||||||
|
|
||||||
|
date.collectExpress = date.deliveryExpress = add(today, {
|
||||||
|
days: 2
|
||||||
|
})
|
||||||
|
} else if (currentDay === '8') // dimanche ou 17
|
||||||
|
{
|
||||||
|
date.collectExpress = date.deliveryExpress = tomorrow
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const timestampConverter = (digit13) => digit13 / 1000
|
const timestampConverter = (digit13) => digit13 / 1000
|
||||||
|
|
||||||
export const useMMCMStore = defineStore('counter', {
|
export const useMMCMStore = defineStore('counter', {
|
||||||
@@ -30,9 +82,11 @@ export const useMMCMStore = defineStore('counter', {
|
|||||||
fullAddress: (state) => state.street + ' ' + state.zipCode + ' ' + state.city,
|
fullAddress: (state) => state.street + ' ' + state.zipCode + ' ' + state.city,
|
||||||
deliveryMethod: (state) => state.productList.filter(p => p.id === state.idProduct)[0].name,
|
deliveryMethod: (state) => state.productList.filter(p => p.id === state.idProduct)[0].name,
|
||||||
dateDeliveryString: (state) => new Date(state.dateDelivery).toLocaleDateString("fr-FR"),
|
dateDeliveryString: (state) => new Date(state.dateDelivery).toLocaleDateString("fr-FR"),
|
||||||
minDateForDelivery: (state) => (state.productList.filter(p => p.id === state.idProduct)[0].ref === 'MMCM_EXPRESS') ? today : tomorrow,
|
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),
|
needPrescriptionDateCollect: (state) => !!(state.productList.filter(p => p.id === state.idProduct)[0].ref === 'MMCM_FACTEUR' && state.withPrescription),
|
||||||
dateDeliveryTimestampInSecond: (state) => timestampConverter(state.dateDelivery)
|
dateDeliveryTimestampInSecond: (state) => timestampConverter(state.dateDelivery),
|
||||||
|
|
||||||
},
|
},
|
||||||
actions: {
|
actions: {
|
||||||
setStreet(street) {
|
setStreet(street) {
|
||||||
|
|||||||
@@ -34,6 +34,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import {ref} from 'vue';
|
import {ref} from 'vue';
|
||||||
import {useMMCMStore} from '../stores/mmcm.js'
|
import {useMMCMStore} from '../stores/mmcm.js'
|
||||||
|
import {add, format} from "date-fns";
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
|
|||||||
@@ -19,8 +19,6 @@ import {useMMCMStore} from '../stores/mmcm.js'
|
|||||||
export default {
|
export default {
|
||||||
setup() {
|
setup() {
|
||||||
const store = useMMCMStore()
|
const store = useMMCMStore()
|
||||||
|
|
||||||
console.log(store.productList)
|
|
||||||
return {
|
return {
|
||||||
store
|
store
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,14 +1,26 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="step_title">Date de livraison des médicaments :</div>
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-6" v-for="picker in pickerList">
|
||||||
|
|
||||||
|
<div class="step_title">{{ picker.title }}</div>
|
||||||
<div class="input-group has-validation">
|
<div class="input-group has-validation">
|
||||||
<Datepicker v-model="dateDelivery" autoApply @update:modelValue="isErrorDelivery = false" model-type="timestamp"
|
<Datepicker v-model="picker.vModel" autoApply @update:modelValue="picker.error = false" model-type="timestamp"
|
||||||
select-text="Choisir" cancel-text="Annuler"
|
select-text="Choisir" cancel-text="Annuler"
|
||||||
monthNameFormat="long" format="dd MMMM yyyy" :minDate="store.minDateForDelivery" :enableTimePicker="false"
|
monthNameFormat="long" format="dd MMMM yyyy" :minDate="picker.minDate"
|
||||||
|
:enableTimePicker="false"
|
||||||
:disabledWeekDays="[6, 0]" :format-locale="fr" locale="fr-FR"/>
|
:disabledWeekDays="[6, 0]" :format-locale="fr" locale="fr-FR"/>
|
||||||
|
|
||||||
|
<div v-if="picker.error" class="invalid-feedback d-block text-start">
|
||||||
|
Merci de renseigner la date
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-lg-12 text-center mt-4">
|
||||||
<button class="btn btn-primary" @click="gotToNextStep"><i class="fa-regular fa-circle-check fa-fw"></i> Valider
|
<button class="btn btn-primary" @click="gotToNextStep"><i class="fa-regular fa-circle-check fa-fw"></i> Valider
|
||||||
</button>
|
</button>
|
||||||
<div v-if="isErrorDelivery" class="invalid-feedback d-block text-start">
|
|
||||||
Merci de renseigner la date
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -16,40 +28,54 @@
|
|||||||
<script>
|
<script>
|
||||||
import {storeToRefs} from 'pinia'
|
import {storeToRefs} from 'pinia'
|
||||||
import {useMMCMStore} from '../stores/mmcm.js'
|
import {useMMCMStore} from '../stores/mmcm.js'
|
||||||
import {ref} from 'vue';
|
import {ref, computed, reactive} from 'vue';
|
||||||
import {add, endOfMonth, endOfYear, startOfMonth, startOfYear, subMonths} from 'date-fns';
|
import {add, endOfMonth, endOfYear, startOfMonth, startOfYear, subMonths} from 'date-fns';
|
||||||
import {fr} from 'date-fns/locale';
|
import {fr} from 'date-fns/locale';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
setup() {
|
setup() {
|
||||||
const store = useMMCMStore()
|
const store = useMMCMStore()
|
||||||
const isErrorCollect = ref(false);
|
|
||||||
const isErrorDelivery = ref(false);
|
|
||||||
|
|
||||||
const {dateDelivery, dateCollect} = storeToRefs(store)
|
const {dateDelivery, dateCollect} = storeToRefs(store)
|
||||||
|
|
||||||
|
let pickerList = []
|
||||||
|
if (store.needPrescriptionDateCollect) {
|
||||||
|
pickerList.push(reactive({
|
||||||
|
title: 'Date de collect de l\'ordonnance :',
|
||||||
|
vModel: dateCollect,
|
||||||
|
error: false,
|
||||||
|
minDate: store.minDateForCollect,
|
||||||
|
}))
|
||||||
|
}
|
||||||
|
|
||||||
|
pickerList.push(reactive({
|
||||||
|
title: 'Date de livraison des médicaments :',
|
||||||
|
vModel: dateDelivery,
|
||||||
|
error: false,
|
||||||
|
minDate: store.minDateForDelivery,
|
||||||
|
}))
|
||||||
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
fr,
|
|
||||||
isErrorCollect,
|
|
||||||
isErrorDelivery,
|
|
||||||
dateDelivery,
|
dateDelivery,
|
||||||
dateCollect,
|
dateCollect,
|
||||||
store
|
fr,
|
||||||
|
pickerList,
|
||||||
|
store,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
name: "delivery-option-step-3",
|
name: "delivery-option-step-3",
|
||||||
methods: {
|
methods: {
|
||||||
gotToNextStep: function () {
|
gotToNextStep: function () {
|
||||||
|
|
||||||
if (this.dateDelivery !== null) {
|
this.pickerList.forEach(p => {
|
||||||
this.isError = false
|
p.error = p.vModel === null;
|
||||||
|
})
|
||||||
|
|
||||||
|
if (this.pickerList.filter(p => p.error).length === 0) {
|
||||||
this.$router.push({path: '/delivery-option-summary'});
|
this.$router.push({path: '/delivery-option-summary'});
|
||||||
} else {
|
|
||||||
this.isError = true
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
Reference in New Issue
Block a user