Plug into real stored values + new logic
This commit is contained in:
parent
64ab3afa78
commit
6b403ac340
2 changed files with 94 additions and 1 deletions
|
|
@ -7,11 +7,17 @@
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import reviewBlock from "@/layouts/review/review-block/review-block";
|
import reviewBlock from "@/layouts/review/review-block/review-block";
|
||||||
|
import {
|
||||||
|
getHighestFullySatisfiedTier,
|
||||||
|
containsLineItemWithPartType,
|
||||||
|
} from "@/helpers/service-package-helper";
|
||||||
|
import { partTypeStrings } from "@/constants/part-type-strings";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "service-package-review",
|
name: "service-package-review",
|
||||||
props: {
|
props: {
|
||||||
cmsWidgetName: String,
|
cmsWidgetName: String,
|
||||||
|
availableLineItems: Array,
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {};
|
return {};
|
||||||
|
|
@ -23,12 +29,69 @@ export default {
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
displayContent() {
|
displayContent() {
|
||||||
|
return [
|
||||||
|
...this.packageName,
|
||||||
|
"-",
|
||||||
|
...this.defaultPackageText,
|
||||||
|
...this.frontWipersText,
|
||||||
|
...this.rearWipersText,
|
||||||
|
...this.rainDefenseText,
|
||||||
|
];
|
||||||
|
},
|
||||||
|
packageName() {
|
||||||
|
return [this.packageLevel];
|
||||||
|
},
|
||||||
|
defaultPackageText() {
|
||||||
return [
|
return [
|
||||||
"New replacement windshield",
|
"New replacement windshield",
|
||||||
"Expert installation and recalibration",
|
"Expert installation and recalibration",
|
||||||
"Nationwide lifetime warranty",
|
"Nationwide lifetime warranty",
|
||||||
];
|
];
|
||||||
},
|
},
|
||||||
|
hasFrontWiperVAPS() {
|
||||||
|
return containsLineItemWithPartType(partTypeStrings.FRONT_WIPER, this.vaps);
|
||||||
|
},
|
||||||
|
hasRearWiperVAPS() {
|
||||||
|
return containsLineItemWithPartType(partTypeStrings.REAR_WIPER, this.vaps);
|
||||||
|
},
|
||||||
|
hasRainDefenseVAPS() {
|
||||||
|
return containsLineItemWithPartType(partTypeStrings.RAIN_DEFENSE, this.vaps);
|
||||||
|
},
|
||||||
|
packageLevel() {
|
||||||
|
return getHighestFullySatisfiedTier(
|
||||||
|
this.glassToReplace,
|
||||||
|
this.availableLineItems,
|
||||||
|
this.isRepair,
|
||||||
|
this.vaps
|
||||||
|
);
|
||||||
|
},
|
||||||
|
frontWipersText() {
|
||||||
|
if (this.hasFrontWiperVAPS) {
|
||||||
|
return ["New front wiper blades"];
|
||||||
|
}
|
||||||
|
return [];
|
||||||
|
},
|
||||||
|
rearWipersText() {
|
||||||
|
if (this.hasRearWiperVAPS) {
|
||||||
|
return ["New rear wiper blade"];
|
||||||
|
}
|
||||||
|
return [];
|
||||||
|
},
|
||||||
|
rainDefenseText() {
|
||||||
|
if (this.hasRainDefenseVAPS) {
|
||||||
|
return ["Rain Defense treatment"];
|
||||||
|
}
|
||||||
|
return [];
|
||||||
|
},
|
||||||
|
glassToReplace() {
|
||||||
|
return this.$store.getters.order.damage.glassToReplace;
|
||||||
|
},
|
||||||
|
isRepair() {
|
||||||
|
return this.$store.getters.order.damage.isRepair;
|
||||||
|
},
|
||||||
|
vaps() {
|
||||||
|
return this.$store.getters.lineItems.vaps;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
reviewBlock,
|
reviewBlock,
|
||||||
|
|
|
||||||
|
|
@ -55,6 +55,7 @@
|
||||||
|
|
||||||
<servicePackageReview
|
<servicePackageReview
|
||||||
cmsWidgetName="ServicePackageReviewWidget"
|
cmsWidgetName="ServicePackageReviewWidget"
|
||||||
|
:availableLineItems="availableLineItems"
|
||||||
@edit-clicked="editServicePackage" />
|
@edit-clicked="editServicePackage" />
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|
@ -83,12 +84,19 @@ import servicePackageReview from "@/layouts/review/review-sections/service-packa
|
||||||
|
|
||||||
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
|
||||||
import { settleAllPromises } from "@/helpers/layout-helper";
|
import { settleAllPromises } from "@/helpers/layout-helper";
|
||||||
|
import baseMixin from "@/mixins/base-mixin.js";
|
||||||
|
import { storeActions } from "@/constants/store-actions";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "review",
|
name: "review",
|
||||||
async beforeRouteEnter(to, from, next) {
|
async beforeRouteEnter(to, from, next) {
|
||||||
// Call APIs
|
// Call APIs
|
||||||
const cmsContentPromise = fetchCmsContentForPage(to.query.fmgPage);
|
const cmsContentPromise = fetchCmsContentForPage(to.query.fmgPage);
|
||||||
|
// Get rain defense and wiper availability for package review section.
|
||||||
|
const wipersPromise = baseMixin.methods.dispatchStoreAction(storeActions.GET_WIPERS);
|
||||||
|
const rainDefensePromise = baseMixin.methods.dispatchStoreAction(
|
||||||
|
storeActions.GET_RAIN_DEFENSE
|
||||||
|
);
|
||||||
|
|
||||||
// Settle promises and get results
|
// Settle promises and get results
|
||||||
const promiseResultMap = [
|
const promiseResultMap = [
|
||||||
|
|
@ -96,16 +104,30 @@ export default {
|
||||||
resultKey: "cmsContent",
|
resultKey: "cmsContent",
|
||||||
promise: cmsContentPromise,
|
promise: cmsContentPromise,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
resultKey: "wipers",
|
||||||
|
promise: wipersPromise,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
resultKey: "rainDefense",
|
||||||
|
promise: rainDefensePromise,
|
||||||
|
},
|
||||||
];
|
];
|
||||||
|
|
||||||
const resultMap = await settleAllPromises(promiseResultMap);
|
const resultMap = await settleAllPromises(promiseResultMap);
|
||||||
|
|
||||||
next((vm) => {
|
next((vm) => {
|
||||||
vm.setCmsContent(resultMap.cmsContent);
|
vm.setCmsContent(resultMap.cmsContent);
|
||||||
|
|
||||||
|
vm.availableWipers = resultMap.wipers;
|
||||||
|
vm.availableRainDefense = [resultMap.rainDefense];
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {};
|
return {
|
||||||
|
availableWipers: null,
|
||||||
|
availableRainDefense: null,
|
||||||
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
arePagePrerequisitesValid() {
|
arePagePrerequisitesValid() {
|
||||||
|
|
@ -143,6 +165,14 @@ export default {
|
||||||
damageInfo() {
|
damageInfo() {
|
||||||
return this.$store.getters.damage;
|
return this.$store.getters.damage;
|
||||||
},
|
},
|
||||||
|
availableLineItems() {
|
||||||
|
return [
|
||||||
|
...(this.$store.getters.lineItems.glassParts ?? []),
|
||||||
|
...(this.$store.getters.lineItems.supportingItems ?? []),
|
||||||
|
...(this.availableWipers ?? []),
|
||||||
|
...(this.availableRainDefense ?? []),
|
||||||
|
];
|
||||||
|
},
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
funnelHeader,
|
funnelHeader,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue