-
+
+
@@ -22,43 +44,104 @@
import funnelHeader from "@/fmg-components/funnel-header/funnel-header";
import navbar from "@/fmg-components/nav-bar/nav-bar";
import funnelSubHeader from "@/fmg-components/funnel-sub-header/funnel-sub-header";
+import loadingModal from "@/fmg-components/loading-modal/loading-modal.vue";
+import cart from "@/fmg-components/cart/cart";
+import addVapsModalButtons from "@/fmg-components/add-vaps-modal-buttons/add-vaps-modal-buttons";
import { submitWorkOrder } from "@/helpers/heritage-integration/order-helper.js";
-import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
+import baseMixin from "@/mixins/base-mixin.js";
import { settleAllPromises } from "@/helpers/layout-helper";
-
-// Validation
+import { storeActions } from "@/constants/store-actions";
+import store from "@/store";
+import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
import { Form } from "vee-validate";
export default {
- name: "payment-method",
+ name: "paymentMethod",
async beforeRouteEnter(to, from, next) {
// Call APIs
const cmsContentPromise = fetchCmsContentForPage(to.query.fmgPage);
- // TODO: Data fetching Promise declarations
+ const wipersPromise = baseMixin.methods.dispatchStoreActionWithLogging(
+ storeActions.GET_WIPERS,
+ null,
+ "payment-method"
+ );
+ const rainDefensePromise = baseMixin.methods.dispatchStoreActionWithLogging(
+ storeActions.GET_RAIN_DEFENSE,
+ null,
+ "payment-method"
+ );
+ const supportingItemsPromise = baseMixin.methods.dispatchStoreActionWithLogging(
+ storeActions.GET_SUPPORTING_ITEMS,
+ null,
+ "payment-method"
+ );
const promiseResultMap = [
{
resultKey: "cmsContent",
promise: cmsContentPromise,
},
+ {
+ resultKey: "wipers",
+ promise: wipersPromise,
+ },
+ {
+ resultKey: "rainDefense",
+ promise: rainDefensePromise,
+ },
+ {
+ resultKey: "supportingItems",
+ promise: supportingItemsPromise,
+ },
];
const resultMap = await settleAllPromises(promiseResultMap);
+ const clonedGlassParts = store.getters.order.lineItems.glassParts
+ ? JSON.parse(JSON.stringify(store.getters.order.lineItems.glassParts))
+ : [];
+ const availableLineItems = [
+ resultMap.rainDefense,
+ ...resultMap.supportingItems,
+ ...resultMap.wipers,
+ ...clonedGlassParts,
+ ];
+ const pricingResults = await baseMixin.methods.dispatchStoreActionWithLogging(
+ storeActions.PRICE_ORDER_ITEMS_AND_SAVE_SERVER_DATA,
+ {
+ availableLineItems: availableLineItems,
+ },
+ "payment-method",
+ false
+ );
// Call the "next" function to complete the transition to this page.
next((vm) => {
vm.setCmsContent(resultMap.cmsContent);
+ vm.pricedGlassParts = clonedGlassParts;
+ vm.supportingItems = resultMap.supportingItems;
+ vm.availableLineItems = pricingResults;
+ vm.availableWipers = resultMap.wipers;
+ vm.availableRainDefense = resultMap.rainDefense;
});
},
data() {
- return {};
+ return {
+ cartItems: [],
+ availableWipers: null,
+ availableRainDefense: null,
+ availableLineItems: null,
+ supportingItems: null,
+ pricedGlassParts: null,
+ };
},
methods: {
arePagePrerequisitesValid() {
- // TODO
return true;
},
+ vapsItemsSelectedAction(vapsItemsSelected) {
+ this.cartItems = vapsItemsSelected;
+ },
backButtonAction() {
this.$router.navigateWithoutSaving(this.navigationScenarios.CLICKED_BACK, this.$route);
},
@@ -71,13 +154,22 @@ export default {
);
},
},
+ computed: {
+ damageInfo() {
+ return this.$store.getters.damage;
+ },
+ orderLineItems() {
+ return this.$store.getters.lineItems;
+ },
+ },
components: {
funnelHeader,
navbar,
funnelSubHeader,
Form,
+ loadingModal,
+ cart,
+ addVapsModalButtons,
},
};
-
-
diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue
index c61394f3a..e2836ed9e 100644
--- a/src/layouts/quote/quote.vue
+++ b/src/layouts/quote/quote.vue
@@ -146,7 +146,6 @@ export default {
resultMap.supportingItems,
false
);
-
// Call the "next" function to complete the transition to this page.
next((vm) => {
vm.setCmsContent(resultMap.cmsContent);