Merge branch 'develop' into feature/CSR-1388-tech-review-changes
This commit is contained in:
commit
eda0eb7d06
5 changed files with 68 additions and 23 deletions
|
|
@ -1,6 +1,6 @@
|
||||||
<template>
|
<template>
|
||||||
<div class="cart">
|
<div class="cart">
|
||||||
<div>
|
<div class="px-0">
|
||||||
<div
|
<div
|
||||||
class="row vin-toggle flex align-items-center py-4"
|
class="row vin-toggle flex align-items-center py-4"
|
||||||
:class="[isExpanded ? 'expanded' : '']"
|
:class="[isExpanded ? 'expanded' : '']"
|
||||||
|
|
@ -48,7 +48,7 @@
|
||||||
href="#!"
|
href="#!"
|
||||||
@click-event="removeItem(cartItem.cartItemType, cartItem.category)" />
|
@click-event="removeItem(cartItem.cartItemType, cartItem.category)" />
|
||||||
<textLink
|
<textLink
|
||||||
v-else-if="cartItem == recycleFeeCartItem"
|
v-else-if="cartItem == recycleFeeCartItem && recyclingModalCmsWidgetName"
|
||||||
linkType="text"
|
linkType="text"
|
||||||
:text="recycleFeeCartItem.name"
|
:text="recycleFeeCartItem.name"
|
||||||
href="#!"
|
href="#!"
|
||||||
|
|
@ -65,6 +65,10 @@
|
||||||
<span>{{ salesTaxText }}</span
|
<span>{{ salesTaxText }}</span
|
||||||
><span>{{ getFormattedAmount("", salesTax) }}</span>
|
><span>{{ getFormattedAmount("", salesTax) }}</span>
|
||||||
</div>
|
</div>
|
||||||
|
<div v-if="showAsPaid" class="amount-paid">
|
||||||
|
<span>{{ amountPaidText }}</span
|
||||||
|
><span>{{ getFormattedAmount("", amountPaid) }}</span>
|
||||||
|
</div>
|
||||||
<div class="amount-due">
|
<div class="amount-due">
|
||||||
<span>{{ amountDueText }}</span
|
<span>{{ amountDueText }}</span
|
||||||
><span>{{ getFormattedAmount("", amountDue) }}</span>
|
><span>{{ getFormattedAmount("", amountDue) }}</span>
|
||||||
|
|
@ -105,6 +109,7 @@ export default {
|
||||||
availableVaps: Object,
|
availableVaps: Object,
|
||||||
allowItemRemoval: Boolean,
|
allowItemRemoval: Boolean,
|
||||||
recyclingModalCmsWidgetName: String,
|
recyclingModalCmsWidgetName: String,
|
||||||
|
showAsPaid: Boolean,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
|
|
@ -317,7 +322,6 @@ export default {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
return nonpackageCartItems;
|
return nonpackageCartItems;
|
||||||
},
|
},
|
||||||
frontWiperCartItemName() {
|
frontWiperCartItemName() {
|
||||||
|
|
@ -668,6 +672,9 @@ export default {
|
||||||
amountDueText() {
|
amountDueText() {
|
||||||
return this.getCmsContent("AmountDueTextWidget", "Text");
|
return this.getCmsContent("AmountDueTextWidget", "Text");
|
||||||
},
|
},
|
||||||
|
amountPaidText() {
|
||||||
|
return this.getCmsContent("AmountPaidTextWidget", "Text");
|
||||||
|
},
|
||||||
subtotalText() {
|
subtotalText() {
|
||||||
return this.getCmsContent("SubtotalTextWidget", "Text");
|
return this.getCmsContent("SubtotalTextWidget", "Text");
|
||||||
},
|
},
|
||||||
|
|
@ -689,6 +696,15 @@ export default {
|
||||||
return salesTax;
|
return salesTax;
|
||||||
},
|
},
|
||||||
amountDue() {
|
amountDue() {
|
||||||
|
if (this.showAsPaid) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
return this.subTotal + this.salesTax;
|
||||||
|
},
|
||||||
|
amountPaid() {
|
||||||
|
if (!this.showAsPaid) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
return this.subTotal + this.salesTax;
|
return this.subTotal + this.salesTax;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
@ -710,6 +726,8 @@ export default {
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.cart {
|
.cart {
|
||||||
|
margin-bottom: 1rem;
|
||||||
|
|
||||||
h5 {
|
h5 {
|
||||||
border-bottom: 1px solid $gray-500;
|
border-bottom: 1px solid $gray-500;
|
||||||
color: $black;
|
color: $black;
|
||||||
|
|
@ -733,6 +751,7 @@ export default {
|
||||||
max-height: 0;
|
max-height: 0;
|
||||||
transition: all 350ms ease-in;
|
transition: all 350ms ease-in;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
|
||||||
div {
|
div {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
|
|
@ -796,7 +815,8 @@ export default {
|
||||||
}
|
}
|
||||||
.sub-total,
|
.sub-total,
|
||||||
.sales-tax,
|
.sales-tax,
|
||||||
.amount-due {
|
.amount-due,
|
||||||
|
.amount-paid {
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
.sub-total {
|
.sub-total {
|
||||||
|
|
@ -823,7 +843,7 @@ export default {
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
position: relative;
|
position: relative;
|
||||||
right: 0.75rem;
|
right: 0.75rem;
|
||||||
margin: 1rem 0 1rem 1rem;
|
margin: 0.5rem 0 0.5rem 1rem;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
&.expanded:after {
|
&.expanded:after {
|
||||||
|
|
@ -833,6 +853,7 @@ export default {
|
||||||
max-height: 650px;
|
max-height: 650px;
|
||||||
transition: all 350ms ease-in;
|
transition: all 350ms ease-in;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
|
padding-top: 1rem;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -56,6 +56,9 @@ beforeEach(() => {
|
||||||
damage: {
|
damage: {
|
||||||
isRepair: false,
|
isRepair: false,
|
||||||
},
|
},
|
||||||
|
payment: {
|
||||||
|
isPia: true,
|
||||||
|
},
|
||||||
referralNumber: "1234567",
|
referralNumber: "1234567",
|
||||||
vehicle: {
|
vehicle: {
|
||||||
year: "2004",
|
year: "2004",
|
||||||
|
|
@ -113,6 +116,7 @@ beforeEach(() => {
|
||||||
emailAddress: "test@test.com",
|
emailAddress: "test@test.com",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
damage: {},
|
||||||
payment: {
|
payment: {
|
||||||
isInsurance: true,
|
isInsurance: true,
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,15 @@
|
||||||
|
|
||||||
<div class="appoinmenttext" v-html="AppointmentWordingText"></div>
|
<div class="appoinmenttext" v-html="AppointmentWordingText"></div>
|
||||||
</div>
|
</div>
|
||||||
|
<hr />
|
||||||
|
<cart
|
||||||
|
:damage="damageInfo"
|
||||||
|
:availableVaps="vaps"
|
||||||
|
:allowItemRemoval="false"
|
||||||
|
v-model="lineItems"
|
||||||
|
:showAsPaid="isPia"
|
||||||
|
servicePackageOptionsCmsName="ServicePackageTitle" />
|
||||||
|
<hr class="mb-5" />
|
||||||
<div class="emailtext" v-html="ConfirmationEmailText"></div>
|
<div class="emailtext" v-html="ConfirmationEmailText"></div>
|
||||||
<navbar
|
<navbar
|
||||||
cmsWidgetName="FunnelFooterWidget"
|
cmsWidgetName="FunnelFooterWidget"
|
||||||
|
|
@ -57,19 +66,21 @@ import funnelHeader from "@/fmg-components/funnel-header/funnel-header";
|
||||||
import vehicleBanner from "@/fmg-components/vehicle-banner/vehicle-banner";
|
import vehicleBanner from "@/fmg-components/vehicle-banner/vehicle-banner";
|
||||||
import navbar from "@/fmg-components/nav-bar/nav-bar";
|
import navbar from "@/fmg-components/nav-bar/nav-bar";
|
||||||
import addToCalendar from "@/layouts/confirmation/add-to-calendar/add-to-calendar";
|
import addToCalendar from "@/layouts/confirmation/add-to-calendar/add-to-calendar";
|
||||||
|
import cart from "@/fmg-components/cart/cart";
|
||||||
|
|
||||||
//Supporting files
|
//Supporting files
|
||||||
import baseMixin from "@/mixins/base-mixin.js";
|
import baseMixin from "@/mixins/base-mixin.js";
|
||||||
|
import store from "@/store";
|
||||||
import { storeActions } from "@/constants/store-actions";
|
import { storeActions } from "@/constants/store-actions";
|
||||||
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
||||||
import { AppointmentTypeStrings } from "@/constants/schedule-constants";
|
import { AppointmentTypeStrings } from "@/constants/schedule-constants";
|
||||||
import { settleAllPromises } from "@/helpers/layout-helper";
|
import { settleAllPromises } from "@/helpers/layout-helper";
|
||||||
import { applicationConfig } from "@/constants/application-config.js";
|
import { applicationConfig } from "@/constants/application-config.js";
|
||||||
import { convertDateStringToDate } from "@/layouts/schedule/helpers/schedule-helper";
|
import { convertDateStringToDate } from "@/layouts/schedule/helpers/schedule-helper";
|
||||||
|
import { deepClone } from "@/helpers/object-helper";
|
||||||
import { Form } from "vee-validate";
|
import { Form } from "vee-validate";
|
||||||
import store from "@/store";
|
|
||||||
|
|
||||||
import { get12HourTimeFormat, get12HourTimeMobileFormat } from "@/helpers/date-helper";
|
import { get12HourTimeFormat, get12HourTimeMobileFormat } from "@/helpers/date-helper";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "confirmation",
|
name: "confirmation",
|
||||||
async beforeRouteEnter(to, from, next) {
|
async beforeRouteEnter(to, from, next) {
|
||||||
|
|
@ -87,11 +98,21 @@ export default {
|
||||||
];
|
];
|
||||||
|
|
||||||
const resultMap = await settleAllPromises(promiseResultMap);
|
const resultMap = await settleAllPromises(promiseResultMap);
|
||||||
|
const lineItemsFromStore = deepClone(store.getters.order.lineItems);
|
||||||
|
|
||||||
// Call the "next" function to complete the transition to this page.
|
// Call the "next" function to complete the transition to this page.
|
||||||
next((vm) => {
|
next((vm) => {
|
||||||
vm.setCmsContent(resultMap.cmsContent);
|
vm.setCmsContent(resultMap.cmsContent);
|
||||||
|
vm.lineItems = lineItemsFromStore;
|
||||||
|
vm.vaps = lineItemsFromStore.vaps;
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
lineItems: [],
|
||||||
|
vaps: [],
|
||||||
|
};
|
||||||
|
},
|
||||||
computed: {
|
computed: {
|
||||||
ScheduleConfirmationText() {
|
ScheduleConfirmationText() {
|
||||||
return this.getCmsContent("ScheduleConfirmationWidget", "BodyText");
|
return this.getCmsContent("ScheduleConfirmationWidget", "BodyText");
|
||||||
|
|
@ -209,6 +230,12 @@ export default {
|
||||||
vehicleBannerImageUrl() {
|
vehicleBannerImageUrl() {
|
||||||
return store.getters.submittedOrder?.vehicle.imageUrl;
|
return store.getters.submittedOrder?.vehicle.imageUrl;
|
||||||
},
|
},
|
||||||
|
damageInfo() {
|
||||||
|
return store.getters.damage;
|
||||||
|
},
|
||||||
|
isPia() {
|
||||||
|
return store.getters.submittedOrder?.payment.isPia;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
arePagePrerequisitesValid() {
|
arePagePrerequisitesValid() {
|
||||||
|
|
@ -258,12 +285,14 @@ export default {
|
||||||
navbar,
|
navbar,
|
||||||
vehicleBanner,
|
vehicleBanner,
|
||||||
addToCalendar,
|
addToCalendar,
|
||||||
|
cart,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
.main {
|
.main {
|
||||||
|
margin-bottom: 1.5rem;
|
||||||
padding: 1rem 1.5rem 1.5rem;
|
padding: 1rem 1.5rem 1.5rem;
|
||||||
box-shadow: 0 3px 10px rgb(0 0 0 / 0.2);
|
box-shadow: 0 3px 10px rgb(0 0 0 / 0.2);
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
|
|
@ -336,7 +365,7 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
.emailtext {
|
.emailtext {
|
||||||
padding: 1.5rem 0 0;
|
padding: 0.5rem 0 0;
|
||||||
|
|
||||||
p {
|
p {
|
||||||
font-size: 0.875rem;
|
font-size: 0.875rem;
|
||||||
|
|
|
||||||
|
|
@ -30,12 +30,13 @@
|
||||||
recyclingModalCmsWidgetName="RecycleModal" />
|
recyclingModalCmsWidgetName="RecycleModal" />
|
||||||
|
|
||||||
<promoModalQuestion
|
<promoModalQuestion
|
||||||
|
class="pb-2"
|
||||||
v-model="lineItems"
|
v-model="lineItems"
|
||||||
:availableVaps="availableVaps"
|
:availableVaps="availableVaps"
|
||||||
linkWidgetName="PromoLinkWidget"
|
linkWidgetName="PromoLinkWidget"
|
||||||
modalWidgetName="PromoModalWidget" />
|
modalWidgetName="PromoModalWidget" />
|
||||||
|
|
||||||
<hr class="mt-5 mb-0" />
|
<hr class="mb-5" />
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<alert
|
<alert
|
||||||
|
|
@ -409,7 +410,6 @@ export default {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.dispatchStoreAction(storeActions.RESET_SAVE_SESSION_PROMISE);
|
this.dispatchStoreAction(storeActions.RESET_SAVE_SESSION_PROMISE);
|
||||||
this.$router.navigateWithoutSaving(
|
this.$router.navigateWithoutSaving(
|
||||||
this.navigationScenarios.CLICKED_PAY_NOW,
|
this.navigationScenarios.CLICKED_PAY_NOW,
|
||||||
|
|
|
||||||
|
|
@ -26,13 +26,13 @@
|
||||||
|
|
||||||
<cart
|
<cart
|
||||||
:damage="damageInfo"
|
:damage="damageInfo"
|
||||||
:availableLineItems="availableLineItems"
|
:availableVaps="availableVaps"
|
||||||
:allowItemRemoval="false"
|
:allowItemRemoval="false"
|
||||||
v-model="lineItems"
|
v-model="lineItems"
|
||||||
servicePackageOptionsCmsName="ServicePackageTitle"
|
servicePackageOptionsCmsName="ServicePackageTitle"
|
||||||
recyclingModalCmsWidgetName="RecycleModal" />
|
recyclingModalCmsWidgetName="RecycleModal" />
|
||||||
|
|
||||||
<hr />
|
<hr class="mb-5" />
|
||||||
|
|
||||||
<paymentSwitch
|
<paymentSwitch
|
||||||
cmsWidgetName="PaymentMethodWidget"
|
cmsWidgetName="PaymentMethodWidget"
|
||||||
|
|
@ -267,12 +267,6 @@ export default {
|
||||||
"payment"
|
"payment"
|
||||||
);
|
);
|
||||||
|
|
||||||
const supportingItemsPromise = baseMixin.methods.dispatchStoreActionWithLogging(
|
|
||||||
storeActions.GET_SUPPORTING_ITEMS,
|
|
||||||
null,
|
|
||||||
"payment"
|
|
||||||
);
|
|
||||||
|
|
||||||
// TODO: Data fetching Promise declarations
|
// TODO: Data fetching Promise declarations
|
||||||
|
|
||||||
const promiseResultMap = [
|
const promiseResultMap = [
|
||||||
|
|
@ -292,10 +286,6 @@ export default {
|
||||||
resultKey: "rainDefense",
|
resultKey: "rainDefense",
|
||||||
promise: rainDefensePromise,
|
promise: rainDefensePromise,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
resultKey: "supportingItems",
|
|
||||||
promise: supportingItemsPromise,
|
|
||||||
},
|
|
||||||
];
|
];
|
||||||
|
|
||||||
const resultMap = await settleAllPromises(promiseResultMap);
|
const resultMap = await settleAllPromises(promiseResultMap);
|
||||||
|
|
@ -363,6 +353,7 @@ export default {
|
||||||
taxedVaps,
|
taxedVaps,
|
||||||
lineItems
|
lineItems
|
||||||
);
|
);
|
||||||
|
lineItems.vaps = lineItems.vaps ?? [];
|
||||||
lineItems.vaps.push(...vapsToAddToCart);
|
lineItems.vaps.push(...vapsToAddToCart);
|
||||||
|
|
||||||
// Call the "next" function to complete the transition to this page.
|
// Call the "next" function to complete the transition to this page.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue