From 643749dd8764aa2c3aa29b1c39f0c364c9438bd9 Mon Sep 17 00:00:00 2001 From: "US\\katie.kroell" Date: Thu, 1 May 2025 16:03:33 -0400 Subject: [PATCH 01/14] save isBigTruck, add to payload --- src/store/index.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/store/index.js b/src/store/index.js index 84f40697..b5cfb241 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -89,7 +89,8 @@ export const getDefaultState = () => ({ zipCode: null, firstName: null, lastName: null - } + }, + isBigTruck: null }, damage: { isRepair: null, @@ -1017,11 +1018,13 @@ export const useMainStore = defineStore({ const windshieldPartWithRecal = partsWithRecal?.length > 0 ? partsWithRecal[0] : null; const safeliteOnly = true; const shopRadiusInMiles = 100; + const isHeavyTruck = this.order.vehicle.isHeavyTruck; let url = `${endpoints.GetProviders.url}/${serviceZipCode}/${damageType}/${shopRadiusInMiles}/${parentAccountNumber}/${safeliteOnly}/${carId}`; if (windshieldPartWithRecal) { url += `/${windshieldPartWithRecal.partNumber}`; } + url += `/${isHeavyTruck}`; return globalMethods.callHttpClient({ method: endpoints.GetProviders.method, endpoint: url @@ -1984,6 +1987,7 @@ export const useMainStore = defineStore({ this.order.vehicle.imageUrl = vehicle.imageUrl; this.order.vehicle.imageVifNumber = vehicle.imageVifNumber; this.order.vehicle.imageColor = vehicle.imageVifColor; + this.order.vehicle.isBigTruck = vehicle.isBigTruck; if (vehicle.canSafeliteService !== undefined && !vehicle.canSafeliteService) { this.setBailout(bailoutMessage.HeavyTruckVehicle(vehicle.carId)); @@ -2114,6 +2118,7 @@ export const useMainStore = defineStore({ this.order.vehicle.registration.zipCode = null; this.order.vehicle.registration.firstName = null; this.order.vehicle.registration.lastName = null; + this.order.vehicle.isBigTruck = null; if (this.isBailout && this.bailoutCode === bailoutCode.HeavyTruckVehicle) { this.resetBailout(); From 7827f70a0c40c2b4bfb1d0d5b262cf1cdb50730b Mon Sep 17 00:00:00 2001 From: "US\\katie.kroell" Date: Tue, 13 May 2025 15:02:57 -0400 Subject: [PATCH 02/14] fix value --- src/store/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/store/index.js b/src/store/index.js index b5cfb241..d0bd9b29 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1018,7 +1018,7 @@ export const useMainStore = defineStore({ const windshieldPartWithRecal = partsWithRecal?.length > 0 ? partsWithRecal[0] : null; const safeliteOnly = true; const shopRadiusInMiles = 100; - const isHeavyTruck = this.order.vehicle.isHeavyTruck; + const isHeavyTruck = this.order.vehicle.isBigTruck; let url = `${endpoints.GetProviders.url}/${serviceZipCode}/${damageType}/${shopRadiusInMiles}/${parentAccountNumber}/${safeliteOnly}/${carId}`; if (windshieldPartWithRecal) { From f4eb96ecb354fd29f55c319256c0d0fae2e367b8 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Mon, 8 Sep 2025 10:37:45 -0400 Subject: [PATCH 03/14] add big truck alert to policy-vehicles page --- .../policy-vehicles/policy-vehicles.vue | 24 +++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/src/layouts/policy-vehicles/policy-vehicles.vue b/src/layouts/policy-vehicles/policy-vehicles.vue index 65cc7ea6..10ef05d9 100644 --- a/src/layouts/policy-vehicles/policy-vehicles.vue +++ b/src/layouts/policy-vehicles/policy-vehicles.vue @@ -24,10 +24,17 @@ cmsWidgetName="PolicyVehiclesQuestion" :vehicles="VehiclesForQuestions" :validationRules="rules.optionRequired" /> + @@ -58,6 +65,7 @@ import { repairWaivedForSelectedVehicle } from '@/helpers/policy-vehicle-helper'; import coverageType from '@/constants/coverage-type'; +import alert from '@/ux-components/alert/alert.vue'; export default { name: 'policy-vehicles', @@ -67,7 +75,8 @@ export default { vehicleBanner, policyVehiclesQuestion, // eslint-disable-next-line vue/no-reserved-component-names - Form + Form, + alert }, mixins: [BaseFormMixin], async beforeRouteEnter(to, from, next) { @@ -89,7 +98,8 @@ export default { policyVinFound: true, rules: { optionRequired: globalRules.OPTION_REQUIRED - } + }, + displayNoServiceAlert: false }; }, computed: { @@ -115,7 +125,6 @@ export default { if (this.selectedVehicleVin !== vehicleSelectionOptions.VEHICLE_NOT_LISTED) { return this.policyVehicles.find((p) => p.vin === this.selectedVehicleVin); } - return null; }, noCoverageForSelectedVehicle() { @@ -137,6 +146,7 @@ export default { }, watch: { async selectedVehicleVin(value) { + this.resetAlert(); if (value === vehicleSelectionOptions.VEHICLE_NOT_LISTED) { // clear previously selected vehicle and image this.mainStore.resetVehicleState(); @@ -151,6 +161,9 @@ export default { this.displayGeneric = true; return; } + if (vehicle.data.isBigTruck && !vehicle.data.canSafeliteService) { + this.displayNoServiceAlert = true; + } if (vehicle) { // save selected vehicle to the store this.displayGeneric = false; @@ -273,6 +286,9 @@ export default { data: responseError.data }; } + }, + resetAlert() { + this.displayNoServiceAlert = false; } } }; From f0413c2a908e84ec40a10552b1f8ed1761f34a56 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Mon, 8 Sep 2025 10:38:19 -0400 Subject: [PATCH 04/14] add big truck alert to vehicle selection page, get vehicle info --- .../vehicle-selection/vehicle-selection.vue | 50 ++++++++++++++++--- 1 file changed, 42 insertions(+), 8 deletions(-) diff --git a/src/layouts/vehicle-selection/vehicle-selection.vue b/src/layouts/vehicle-selection/vehicle-selection.vue index 59b96b38..b8858e63 100644 --- a/src/layouts/vehicle-selection/vehicle-selection.vue +++ b/src/layouts/vehicle-selection/vehicle-selection.vue @@ -52,18 +52,23 @@ :updateValues="updateStyleValues" validationRules="style-required" inputId="styleQuestionField" /> - - + @@ -79,6 +84,7 @@ import siteFooter from '@/iss-components/site-footer/site-footer.vue'; import siteSubHeader from '@/iss-components/site-sub-header/site-sub-header.vue'; import vehicleBanner from '@/iss-components/vehicle-banner/vehicle-banner.vue'; import vehicleQuestion from '@/layouts/vehicle-selection/vehicle-question/vehicle-question.vue'; +import alert from '@/ux-components/alert/alert.vue'; import { useMainStore } from '@/store'; // Supporting files @@ -105,7 +111,8 @@ export default { siteFooter, // eslint-disable-next-line vue/no-reserved-component-names Form, - vehicleQuestion + vehicleQuestion, + alert }, mixins: [baseFormMixin], @@ -138,7 +145,8 @@ export default { selectedYear: year, selectedMake: make, selectedModel: model, - selectedStyle: style + selectedStyle: style, + displayNoServiceAlert: false }; }, computed: { @@ -146,9 +154,9 @@ export default { return !this.selectedStyle; } }, - watch: { selectedYear(value) { + this.resetAlert(); this.mainStore.updateVehicleYear(value); this.$refs.vehicleMakeQuestion.clearValues(); if (value) { @@ -156,6 +164,7 @@ export default { } }, selectedMake(value) { + this.resetAlert(); this.mainStore.updateVehicleMake(value); this.$refs.vehicleModelQuestion.clearValues(); if (value) { @@ -163,6 +172,7 @@ export default { } }, selectedModel(value) { + this.resetAlert(); this.mainStore.updateVehicleModel(value); this.$refs.vehicleStyleQuestion.clearValues(); if (value) { @@ -170,11 +180,16 @@ export default { } }, selectedStyle(value) { + this.resetAlert(); this.mainStore.updateVehicleStyle(value); - this.mainStore.setVehicle(); + this.getVehicle(this.selectedYear, this.selectedMake, this.selectedModel, this.selectedStyle); } }, mounted() { + this.$refs.vehicleYearQuestion.clearValues(); + this.$refs.vehicleMakeQuestion.clearValues(); + this.$refs.vehicleModelQuestion.clearValues(); + this.$refs.vehicleStyleQuestion.clearValues(); this.$refs.vehicleYearQuestion.getNewValues(); if (this.selectedYear) { this.$refs.vehicleMakeQuestion.getNewValues(); @@ -185,6 +200,9 @@ export default { if (this.selectedModel) { this.$refs.vehicleStyleQuestion.getNewValues(); } + if (this.selectedStyle) { + this.getVehicle(this.selectedYear, this.selectedMake, this.selectedModel, this.selectedStyle); + } }, methods: { arePagePrerequisitesValid() { @@ -196,6 +214,10 @@ export default { navigateForward() { this.mainStore.setVehicle().then(() => { + if (this.isBigTruck && !this.canSafeliteService) { + this.$refs.vehicleSelectionAlert.show(); + return; + } if (this.mainStore.isBailout) { this.$router.navigate( this.navigationScenarios.CLICKED_FORWARD_WITH_BAILOUT, @@ -264,7 +286,19 @@ export default { this.$route ); }); - } + }, + async getVehicle() { + const result = await this.mainStore.setVehicle( + this.selectedYear, + this.selectedMake, + this.selectedModel, + this.selectedStyle + ); + this.displayNoServiceAlert = result.data.isBigTruck && !result.data.canSafeliteService; + }, + resetAlert() { + this.displayNoServiceAlert = false; + } } }; From 8dcca6951d30223c7d749f4b51aba51566efa9ed Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Mon, 8 Sep 2025 10:39:08 -0400 Subject: [PATCH 05/14] set canSafeliteService --- src/store/index.js | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/store/index.js b/src/store/index.js index 1959a140..49210c19 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -90,7 +90,8 @@ export const getDefaultState = () => ({ firstName: null, lastName: null }, - isBigTruck: null + isBigTruck: null, + canSafeliteService: null }, damage: { isRepair: null, @@ -1018,7 +1019,6 @@ export const useMainStore = defineStore({ const windshieldPartWithRecal = partsWithRecal?.length > 0 ? partsWithRecal[0] : null; const safeliteOnly = true; const shopRadiusInMiles = 100; - const isHeavyTruck = this.order.vehicle.isBigTruck; let url = `${endpoints.GetProviders.url}/${serviceZipCode}/${damageType}/${shopRadiusInMiles}/${parentAccountNumber}/${safeliteOnly}/${carId}`; if (windshieldPartWithRecal) { @@ -1343,7 +1343,7 @@ export const useMainStore = defineStore({ }); }, - setVehicle() { + async setVehicle() { const encodedMake = encodeURIComponent(this.order.vehicle.make); const encodedModel = encodeURIComponent(this.order.vehicle.model); return globalMethods @@ -1988,12 +1988,13 @@ export const useMainStore = defineStore({ this.order.vehicle.imageVifNumber = vehicle.imageVifNumber; this.order.vehicle.imageColor = vehicle.imageVifColor; this.order.vehicle.isBigTruck = vehicle.isBigTruck; + this.order.vehicle.canSafeliteService = vehicle.canSafeliteService; - if (vehicle.canSafeliteService !== undefined && !vehicle.canSafeliteService) { - this.setBailout(bailoutMessage.HeavyTruckVehicle(vehicle.carId)); - } else if (this.isBailout && this.bailoutCode === bailoutCode.HeavyTruckVehicle) { - this.resetBailout(); - } + // if (vehicle.canSafeliteService !== undefined && !vehicle.canSafeliteService) { + // this.setBailout(bailoutMessage.HeavyTruckVehicle(vehicle.carId)); + // } else if (this.isBailout && this.bailoutCode === bailoutCode.HeavyTruckVehicle) { + // this.resetBailout(); + // } this.updateSupportingItems(null); this.updateVaps(null); @@ -2119,6 +2120,7 @@ export const useMainStore = defineStore({ this.order.vehicle.registration.firstName = null; this.order.vehicle.registration.lastName = null; this.order.vehicle.isBigTruck = null; + this.order.vehicle.canSafeliteService = null; if (this.isBailout && this.bailoutCode === bailoutCode.HeavyTruckVehicle) { this.resetBailout(); From 490641cebaf8a836ce0e36c9a31cbfc28062b9c0 Mon Sep 17 00:00:00 2001 From: Katie Kroell Date: Mon, 8 Sep 2025 11:51:12 -0400 Subject: [PATCH 06/14] add big truck no service alert to vin/license/address lookup, remove bailout --- src/constants/vehicle-lookup-alert-types.js | 3 ++- src/layouts/address-lookup/address-lookup.vue | 20 +++++++++++++- .../license-plate-lookup.vue | 19 +++++++++++++- .../no-service-alert/no-service-alert.vue | 26 +++++++++++++++++++ .../vin-lookup-alerts/vin-lookup-alerts.vue | 9 ++++++- src/layouts/vin-lookup/vin-lookup.vue | 11 ++++---- 6 files changed, 79 insertions(+), 9 deletions(-) create mode 100644 src/layouts/vin-lookup/vin-lookup-alerts/no-service-alert/no-service-alert.vue diff --git a/src/constants/vehicle-lookup-alert-types.js b/src/constants/vehicle-lookup-alert-types.js index 551ebe0a..98961165 100644 --- a/src/constants/vehicle-lookup-alert-types.js +++ b/src/constants/vehicle-lookup-alert-types.js @@ -2,7 +2,8 @@ const vehicleLookupAlertTypes = Object.freeze({ NOT_FOUND: 'notFound', NOT_MATCHED: 'notMatched', TWO_IDENTICAL_YMM_MATCHED: 'twoIdenticalYMMMatched', - PERFECT_MATCH: 'perfectMatch' + PERFECT_MATCH: 'perfectMatch', + NO_SERVICE: 'noService' }); export default vehicleLookupAlertTypes; diff --git a/src/layouts/address-lookup/address-lookup.vue b/src/layouts/address-lookup/address-lookup.vue index 6a63e895..24aa2f20 100644 --- a/src/layouts/address-lookup/address-lookup.vue +++ b/src/layouts/address-lookup/address-lookup.vue @@ -53,6 +53,13 @@ cmsWidgetName="AlertVinLookupsByHomeAddressNotAllowedWidget" alertClass="alert-danger" :isDismissible="false" /> + @@ -137,7 +144,8 @@ export default { isCarIdDifferent: false, isSelectedGlassAvailableForVehicle: true, customAlertData: {}, - forwardButtonCarStyle: '' + forwardButtonCarStyle: '', + displayNoServiceAlert: false }; }, computed: { @@ -255,6 +263,15 @@ export default { return this.$refs.siteFooter.removeLoader(); } + // Check if vehicle is a non-servicable big truck + if (resultMap.vinLookupResponse.isBigTruck && !resultMap.vinLookupResponse.canSafeliteService) { + this.displayNoServiceAlert = true; + this.resetVehicleFromLookup(); + this.$refs.siteFooter.disableForwardButton(); + this.$refs.siteFooter.removeLoader(); + return; + } + const carsFound = resultMap.vinLookupResponse.vinVehicles; // Handle cases for different amounts of VINS found for the address. @@ -370,6 +387,7 @@ export default { this.displayVinNotFoundAlert = false; this.displayMatchedDifferentVehicleAlert = false; this.displayVinLookupByHomeAddressNotAllowedAlert = false; + this.displayNoServiceAlert = false; this.$refs.siteFooter.enableForwardAction(); } } diff --git a/src/layouts/license-plate-lookup/license-plate-lookup.vue b/src/layouts/license-plate-lookup/license-plate-lookup.vue index cca0a20a..1df5b919 100644 --- a/src/layouts/license-plate-lookup/license-plate-lookup.vue +++ b/src/layouts/license-plate-lookup/license-plate-lookup.vue @@ -47,6 +47,13 @@ :manualCopy="AlertMatchedTwoIdenticalYMMVehicleBody" alertClass="alert-warning" :isDismissible="false" /> + + + + + \ No newline at end of file diff --git a/src/layouts/vin-lookup/vin-lookup-alerts/vin-lookup-alerts.vue b/src/layouts/vin-lookup/vin-lookup-alerts/vin-lookup-alerts.vue index 014fcad0..f9be7ede 100644 --- a/src/layouts/vin-lookup/vin-lookup-alerts/vin-lookup-alerts.vue +++ b/src/layouts/vin-lookup/vin-lookup-alerts/vin-lookup-alerts.vue @@ -10,6 +10,8 @@ v-else-if="isVehicleNotMatchedVisible" /> +