@lancom/shared 0.0.456 → 0.0.458
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/assets/js/api/admin.js +12 -0
- package/components/products/products_aside/products-aside.vue +5 -0
- package/components/products/products_color_groups/products-color-groups.scss +69 -0
- package/components/products/products_color_groups/products-color-groups.vue +101 -0
- package/components/products/products_link/products-link.vue +4 -0
- package/components/quotes/quote_view/quote-view.scss +76 -22
- package/components/quotes/quote_view/quote-view.vue +79 -91
- package/components/quotes/quote_view/quote_option_view/quote-option-view.scss +103 -4
- package/components/quotes/quote_view/quote_option_view/quote-option-view.vue +202 -26
- package/components/quotes/quote_view/quote_view_accept/quote-view-accept.scss +33 -0
- package/components/quotes/quote_view/quote_view_accept/quote-view-accept.vue +85 -0
- package/components/quotes/quote_view/quote_view_address_form/quote-view-address-form.scss +17 -0
- package/components/quotes/quote_view/quote_view_address_form/quote-view-address-form.vue +259 -0
- package/components/quotes/quote_view/quote_view_banner/quote-view-banner.scss +67 -0
- package/components/quotes/quote_view/quote_view_banner/quote-view-banner.vue +69 -0
- package/components/quotes/quote_view/quote_view_billing_information/quote-view-billing-information.scss +5 -0
- package/components/quotes/quote_view/quote_view_billing_information/quote-view-billing-information.vue +108 -0
- package/components/quotes/quote_view/quote_view_header/quote-view-header.scss +65 -0
- package/components/quotes/quote_view/quote_view_header/quote-view-header.vue +69 -0
- package/components/quotes/quote_view/quote_view_info/quote-view-info.scss +36 -0
- package/components/quotes/quote_view/quote_view_info/quote-view-info.vue +42 -0
- package/components/quotes/quote_view/quote_view_invalid_stock_modal/quote-view-invalid-stock-modal.scss +17 -0
- package/components/quotes/quote_view/quote_view_invalid_stock_modal/quote-view-invalid-stock-modal.vue +29 -0
- package/components/quotes/quote_view/quote_view_menu/quote-view-menu.scss +74 -0
- package/components/quotes/quote_view/quote_view_menu/quote-view-menu.vue +102 -0
- package/components/quotes/quote_view/quote_view_message/quote-view-message.scss +53 -0
- package/components/quotes/quote_view/quote_view_message/quote-view-message.vue +40 -0
- package/components/quotes/quote_view/quote_view_mobile_menu/quote-view-mobile-menu.scss +1 -0
- package/components/quotes/quote_view/quote_view_mobile_menu/quote-view-mobile-menu.vue +23 -0
- package/components/quotes/quote_view/quote_view_payment/quote-view-payment.scss +58 -0
- package/components/quotes/quote_view/quote_view_payment/quote-view-payment.vue +191 -0
- package/components/quotes/quote_view/quote_view_payment/quote_payment_success/quote-payment-success.scss +40 -0
- package/components/quotes/quote_view/quote_view_payment/quote_payment_success/quote-payment-success.vue +50 -0
- package/components/quotes/quote_view/quote_view_payment_modal/quote-view-payment-modal.scss +10 -0
- package/components/quotes/quote_view/quote_view_payment_modal/quote-view-payment-modal.vue +49 -0
- package/components/quotes/quote_view/quote_view_print/quote-view-print.scss +54 -0
- package/components/quotes/quote_view/quote_view_print/quote-view-print.vue +74 -0
- package/components/quotes/quote_view/quote_view_question/quote-view-question.scss +84 -0
- package/components/quotes/quote_view/quote_view_question/quote-view-question.vue +203 -0
- package/components/quotes/quote_view/quote_view_questions/quote-view-questions.scss +39 -0
- package/components/quotes/quote_view/quote_view_questions/quote-view-questions.vue +50 -0
- package/components/quotes/quote_view_preview/quote-view.scss +29 -0
- package/components/quotes/quote_view_preview/quote-view.vue +121 -0
- package/components/quotes/quote_view_preview/quote_option_view/quote-option-view.scss +10 -0
- package/components/quotes/quote_view_preview/quote_option_view/quote-option-view.vue +73 -0
- package/package.json +1 -1
- package/pages/quotes/view/_id/option/_option.vue +1 -1
- package/plugins/crisp.js +13 -0
- package/store/products.js +11 -2
- /package/components/quotes/{quote_view → quote_view_preview}/quote-view.mixin.js +0 -0
- /package/components/quotes/{quote_view → quote_view_preview}/quote_product_color_simple_products/quote-product-color-simple-products.mixin.js +0 -0
- /package/components/quotes/{quote_view → quote_view_preview}/quote_product_color_simple_products/quote-product-color-simple-products.scss +0 -0
- /package/components/quotes/{quote_view → quote_view_preview}/quote_product_color_simple_products/quote-product-color-simple-products.vue +0 -0
- /package/components/quotes/{quote_view → quote_view_preview}/quote_product_color_simple_products/quote_product_color_simple_product/quote-product-color-simple-product.scss +0 -0
- /package/components/quotes/{quote_view → quote_view_preview}/quote_product_color_simple_products/quote_product_color_simple_product/quote-product-color-simple-product.vue +0 -0
- /package/components/quotes/{quote_view → quote_view_preview}/quote_product_prints/quote-product-prints.scss +0 -0
- /package/components/quotes/{quote_view → quote_view_preview}/quote_product_prints/quote-product-prints.vue +0 -0
- /package/components/quotes/{quote_view → quote_view_preview}/quote_product_prints/quote_product_print/quote-product-print.scss +0 -0
- /package/components/quotes/{quote_view → quote_view_preview}/quote_product_prints/quote_product_print/quote-product-print.vue +0 -0
- /package/components/quotes/{quote_view → quote_view_preview}/quote_view_product/quote-view-product.scss +0 -0
- /package/components/quotes/{quote_view → quote_view_preview}/quote_view_product/quote-view-product.vue +0 -0
package/assets/js/api/admin.js
CHANGED
|
@@ -714,6 +714,18 @@ export default {
|
|
|
714
714
|
removeProductColor(id) {
|
|
715
715
|
return _delete(`admin/colors/${id}`);
|
|
716
716
|
},
|
|
717
|
+
async fetchColorGroups() {
|
|
718
|
+
return sortByName(await _get('admin/color-groups'));
|
|
719
|
+
},
|
|
720
|
+
fetchColorGroupById(id) {
|
|
721
|
+
return _get(`admin/color-groups/${id}`);
|
|
722
|
+
},
|
|
723
|
+
saveColorGroup(colorGroup) {
|
|
724
|
+
return colorGroup._id ? _put(`admin/color-groups/${colorGroup._id}`, colorGroup) : _post('admin/color-groups', colorGroup);
|
|
725
|
+
},
|
|
726
|
+
removeColorGroup(id) {
|
|
727
|
+
return _delete(`admin/color-groups/${id}`);
|
|
728
|
+
},
|
|
717
729
|
async fetchProductSizes() {
|
|
718
730
|
return sortSizes(await _get('admin/sizes'));
|
|
719
731
|
},
|
|
@@ -37,6 +37,9 @@
|
|
|
37
37
|
:has-selected-icon="hasSelectedIcon"
|
|
38
38
|
:selected-icon-circle="selectedIconCircle" />
|
|
39
39
|
</div>
|
|
40
|
+
<div class="ProductsAside__item">
|
|
41
|
+
<products-color-groups />
|
|
42
|
+
</div>
|
|
40
43
|
<div class="ProductsAside__item">
|
|
41
44
|
<products-colors />
|
|
42
45
|
</div>
|
|
@@ -58,6 +61,7 @@ import ProductsBrands from '@lancom/shared/components/products/products_brands/p
|
|
|
58
61
|
import ProductsTags from '@lancom/shared/components/products/products_tags/products-tags';
|
|
59
62
|
import ProductsAttributes from '@lancom/shared/components/products/products_attributes/products-attributes';
|
|
60
63
|
import ProductsColors from '@lancom/shared/components/products/products_colors/products-colors';
|
|
64
|
+
import ProductsColorGroups from '@lancom/shared/components/products/products_color_groups/products-color-groups';
|
|
61
65
|
import ProductsProductionTime from '@lancom/shared/components/products/products_production_time/products-production-time';
|
|
62
66
|
import ProductsMinimumQty from '@lancom/shared/components/products/products_minimum_qty/products-minimum-qty';
|
|
63
67
|
import { generateProductsLink } from '@lancom/shared/assets/js/utils/product';
|
|
@@ -70,6 +74,7 @@ export default {
|
|
|
70
74
|
ProductsTags,
|
|
71
75
|
ProductsAttributes,
|
|
72
76
|
ProductsColors,
|
|
77
|
+
ProductsColorGroups,
|
|
73
78
|
ProductsProductionTime,
|
|
74
79
|
ProductsMinimumQty
|
|
75
80
|
},
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
@import "@/assets/scss/variables";
|
|
2
|
+
|
|
3
|
+
.ProductsColorGroups {
|
|
4
|
+
&__header {
|
|
5
|
+
font-size: 22px;
|
|
6
|
+
line-height: 20px;
|
|
7
|
+
font-weight: 600;
|
|
8
|
+
margin-top: 3px;
|
|
9
|
+
margin-bottom: 24px;
|
|
10
|
+
color: $black;
|
|
11
|
+
}
|
|
12
|
+
&__selected-item {
|
|
13
|
+
display: flex;
|
|
14
|
+
align-items: center;
|
|
15
|
+
font-size: 12px;
|
|
16
|
+
font-weight: bold;
|
|
17
|
+
margin: 12px 0;
|
|
18
|
+
padding-top: 4px;
|
|
19
|
+
color: $grey_1;
|
|
20
|
+
i {
|
|
21
|
+
font-size: 22px;
|
|
22
|
+
}
|
|
23
|
+
a {
|
|
24
|
+
color: $grey_1;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
&__selected-name {
|
|
28
|
+
flex-grow: 1;
|
|
29
|
+
margin-left: 14px;
|
|
30
|
+
text-transform: uppercase;
|
|
31
|
+
}
|
|
32
|
+
&__selected-cancel {
|
|
33
|
+
cursor: pointer;
|
|
34
|
+
}
|
|
35
|
+
&__color-group {
|
|
36
|
+
padding: 2px;
|
|
37
|
+
border: 2px solid $white;
|
|
38
|
+
width: 36px;
|
|
39
|
+
height: 36px;
|
|
40
|
+
border-radius: 13px;
|
|
41
|
+
overflow: hidden;
|
|
42
|
+
flex-shrink: 0;
|
|
43
|
+
&-image {
|
|
44
|
+
width: 100%;
|
|
45
|
+
height: 100%;
|
|
46
|
+
border-radius: 11px;
|
|
47
|
+
overflow: hidden;
|
|
48
|
+
}
|
|
49
|
+
&--selected {
|
|
50
|
+
border: 2px solid $grey_1;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
&__items {
|
|
54
|
+
display: flex;
|
|
55
|
+
flex-wrap: wrap;
|
|
56
|
+
margin-top: 20px;
|
|
57
|
+
margin-left: -5px;
|
|
58
|
+
&-color-group {
|
|
59
|
+
margin: 1px 4px;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
&__toggle-list {
|
|
63
|
+
margin-top: 5px;
|
|
64
|
+
margin-right: 10px;
|
|
65
|
+
font-size: 11px;
|
|
66
|
+
cursor: pointer;
|
|
67
|
+
text-align: right;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
<template>
|
|
2
|
+
<div class="ProductsColorGroups__wrapper">
|
|
3
|
+
<toggle-content label="Colour Groups">
|
|
4
|
+
<div class="ProductsColorGroups__selected">
|
|
5
|
+
<div
|
|
6
|
+
v-for="colorGroup in selectedColorGroups"
|
|
7
|
+
:key="colorGroup._id"
|
|
8
|
+
class="ProductsColorGroups__selected-item">
|
|
9
|
+
<div class="ProductsColorGroups__color-group ProductsColorGroups__color-group--selected">
|
|
10
|
+
<product-color-image
|
|
11
|
+
:color="colorGroup"
|
|
12
|
+
class="ProductsColorGroups__color-group-image" />
|
|
13
|
+
</div>
|
|
14
|
+
<div class="ProductsColorGroups__selected-name">
|
|
15
|
+
{{ colorGroup.name }}
|
|
16
|
+
</div>
|
|
17
|
+
<products-link :color-group="colorGroup.alias">
|
|
18
|
+
<i class="icon-cancel ProductsColorGroups__selected-cancel"></i>
|
|
19
|
+
</products-link>
|
|
20
|
+
</div>
|
|
21
|
+
</div>
|
|
22
|
+
<div class="ProductsColorGroups__items">
|
|
23
|
+
<products-link
|
|
24
|
+
v-for="colorGroup in visibleColorGroups"
|
|
25
|
+
:key="colorGroup._id"
|
|
26
|
+
v-tooltip="colorGroup.name"
|
|
27
|
+
:color-group="colorGroup.alias">
|
|
28
|
+
<div
|
|
29
|
+
class="ProductsColorGroups__items-color-group ProductsColorGroups__color-group"
|
|
30
|
+
:class="{
|
|
31
|
+
'ProductsColorGroups__color-group--selected': isSelectedColorGroup(colorGroup)
|
|
32
|
+
}">
|
|
33
|
+
<product-color-image
|
|
34
|
+
v-if="canLoadImages"
|
|
35
|
+
:color="colorGroup"
|
|
36
|
+
class="ProductsColorGroups__color-group-image" />
|
|
37
|
+
</div>
|
|
38
|
+
</products-link>
|
|
39
|
+
</div>
|
|
40
|
+
<div
|
|
41
|
+
v-if="shortListColorGroupsLimit < colorGroupsCount"
|
|
42
|
+
@click="toggleDisplayAllColorGroups()"
|
|
43
|
+
class="ProductsColorGroups__toggle-list">
|
|
44
|
+
{{ displayAllColorGroups ? 'Hide all colour groups' : 'Show all colour groups' }}
|
|
45
|
+
</div>
|
|
46
|
+
</toggle-content>
|
|
47
|
+
</div>
|
|
48
|
+
</template>
|
|
49
|
+
|
|
50
|
+
<script>
|
|
51
|
+
import { mapGetters } from 'vuex';
|
|
52
|
+
import ToggleContent from '@lancom/shared/components/common/toggle-content';
|
|
53
|
+
import ProductsLink from '@lancom/shared/components/products/products_link/products-link';
|
|
54
|
+
import ProductColorImage from '@lancom/shared/components/product/product_color_image/product-color-image';
|
|
55
|
+
|
|
56
|
+
export default {
|
|
57
|
+
name: 'ProductsColorGroups',
|
|
58
|
+
components: {
|
|
59
|
+
ProductColorImage,
|
|
60
|
+
ProductsLink,
|
|
61
|
+
ToggleContent
|
|
62
|
+
},
|
|
63
|
+
data() {
|
|
64
|
+
return {
|
|
65
|
+
canLoadImages: false,
|
|
66
|
+
displayAllColorGroups: false,
|
|
67
|
+
shortListColorGroupsLimit: 15
|
|
68
|
+
};
|
|
69
|
+
},
|
|
70
|
+
computed: {
|
|
71
|
+
...mapGetters('products', ['colorGroups']),
|
|
72
|
+
colorGroupsCount() {
|
|
73
|
+
return this.colorGroups.length;
|
|
74
|
+
},
|
|
75
|
+
selectedColorGroups() {
|
|
76
|
+
const colorGroups = (this.$route.query.colorGroups || '').split(',');
|
|
77
|
+
return this.colorGroups.filter(colorGroup => colorGroups.includes(colorGroup.alias));
|
|
78
|
+
},
|
|
79
|
+
visibleColorGroups() {
|
|
80
|
+
return this.displayAllColorGroups ? this.colorGroups : this.colorGroups.slice(0, this.shortListColorGroupsLimit);
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
mounted() {
|
|
84
|
+
setTimeout(() => {
|
|
85
|
+
this.canLoadImages = true;
|
|
86
|
+
}, 1000);
|
|
87
|
+
},
|
|
88
|
+
methods: {
|
|
89
|
+
isSelectedColorGroup(colorGroup) {
|
|
90
|
+
return this.selectedColorGroups.some(cg => cg._id === colorGroup._id);
|
|
91
|
+
},
|
|
92
|
+
toggleDisplayAllColorGroups() {
|
|
93
|
+
this.displayAllColorGroups = !this.displayAllColorGroups;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
};
|
|
97
|
+
</script>
|
|
98
|
+
|
|
99
|
+
<style lang="scss" scoped>
|
|
100
|
+
@import 'products-color-groups';
|
|
101
|
+
</style>
|
|
@@ -27,6 +27,9 @@ export default {
|
|
|
27
27
|
color: {
|
|
28
28
|
type: String
|
|
29
29
|
},
|
|
30
|
+
colorGroup: {
|
|
31
|
+
type: String
|
|
32
|
+
},
|
|
30
33
|
productionTime: {
|
|
31
34
|
type: String
|
|
32
35
|
},
|
|
@@ -51,6 +54,7 @@ export default {
|
|
|
51
54
|
brand: this.brand,
|
|
52
55
|
tags: this.tags,
|
|
53
56
|
colors: this.color,
|
|
57
|
+
colorGroups: this.colorGroup,
|
|
54
58
|
productionTime: this.productionTime,
|
|
55
59
|
minimumQty: this.minimumQty,
|
|
56
60
|
option: this.option,
|
|
@@ -1,29 +1,83 @@
|
|
|
1
|
+
@import "@/assets/scss/variables";
|
|
2
|
+
|
|
1
3
|
.QuoteView {
|
|
2
4
|
&__wrapper {
|
|
3
|
-
|
|
5
|
+
display: flex;
|
|
4
6
|
}
|
|
5
|
-
&
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
&__header {
|
|
8
|
+
position: sticky;
|
|
9
|
+
top: 0;
|
|
10
|
+
z-index: 2;
|
|
11
|
+
background-color: $white;
|
|
12
|
+
}
|
|
13
|
+
&__sidebar {
|
|
14
|
+
width: 250px;
|
|
15
|
+
flex-shrink: 0;
|
|
16
|
+
&-content {
|
|
17
|
+
position: sticky;
|
|
18
|
+
top: 30px;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
&__content {
|
|
22
|
+
border-left: 2px solid $gray;
|
|
23
|
+
position: relative;
|
|
24
|
+
flex-grow: 1;
|
|
25
|
+
@media (max-width: $bp-small-max) {
|
|
26
|
+
border-left: none;
|
|
27
|
+
width: 100%;
|
|
28
|
+
}
|
|
9
29
|
}
|
|
10
30
|
&__info {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
31
|
+
margin-top: 32px;
|
|
32
|
+
padding-left: 25px;
|
|
33
|
+
}
|
|
34
|
+
&__info-alert {
|
|
35
|
+
margin: 20px 0;
|
|
36
|
+
padding: 25px;
|
|
37
|
+
text-align: center;
|
|
38
|
+
border: 1px solid $orange;
|
|
39
|
+
color: $orange;
|
|
40
|
+
font-size: 18px;
|
|
41
|
+
line-height: 29px;
|
|
42
|
+
a {
|
|
43
|
+
color: $orange;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
&__text {
|
|
47
|
+
margin-top: 110px;
|
|
48
|
+
font-weight: 800;
|
|
49
|
+
font-size: 22px;
|
|
50
|
+
line-height: 35px;
|
|
51
|
+
@media (max-width: $bp-small-max) {
|
|
52
|
+
margin-top: 50px;
|
|
53
|
+
font-size: 17px;
|
|
54
|
+
line-height: 25px;
|
|
24
55
|
}
|
|
56
|
+
a {
|
|
57
|
+
color: $black;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
&__message {
|
|
61
|
+
margin-top: 120px;
|
|
62
|
+
@media (max-width: $bp-small-max) {
|
|
63
|
+
margin-top: 50px;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
&__element {
|
|
67
|
+
padding-left: 86px;
|
|
68
|
+
@media (max-width: $bp-small-max) {
|
|
69
|
+
padding-left: 0px;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
&__options {
|
|
73
|
+
margin-top: 40px;
|
|
74
|
+
}
|
|
75
|
+
&__option {
|
|
76
|
+
margin-bottom: 120px;
|
|
77
|
+
}
|
|
78
|
+
&__accept {
|
|
79
|
+
position: sticky;
|
|
80
|
+
bottom: 0px;
|
|
81
|
+
margin-top: 120px;
|
|
25
82
|
}
|
|
26
|
-
}
|
|
27
|
-
.uppercase {
|
|
28
|
-
text-transform: uppercase;
|
|
29
|
-
}
|
|
83
|
+
}
|
|
@@ -1,117 +1,105 @@
|
|
|
1
1
|
<template>
|
|
2
2
|
<div class="QuoteView__wrapper">
|
|
3
3
|
<div
|
|
4
|
-
|
|
5
|
-
class="
|
|
6
|
-
<
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
<div>
|
|
10
|
-
<h2 class="lc_h2"> {{ quote.shop.name }} </h2>
|
|
11
|
-
<h4 v-if="shopContacts" class="lc_h4"> ABN: {{ shopContacts.abn }} </h4>
|
|
4
|
+
:data-aos="aosFadeLeft"
|
|
5
|
+
class="QuoteView__sidebar hidden-sm-and-down">
|
|
6
|
+
<div class="QuoteView__sidebar-content">
|
|
7
|
+
<quote-view-info class="QuoteView__info" />
|
|
8
|
+
<quote-view-menu />
|
|
12
9
|
</div>
|
|
13
|
-
<h1 class="text-secondary lc_h1">
|
|
14
|
-
QUOTE
|
|
15
|
-
</h1>
|
|
16
10
|
</div>
|
|
17
|
-
<div
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
11
|
+
<div
|
|
12
|
+
:data-aos="aosFadeRight"
|
|
13
|
+
class="QuoteView__content">
|
|
14
|
+
<quote-view-header class="QuoteView__element QuoteView__header" />
|
|
15
|
+
<quote-view-banner class="QuoteView__banner" />
|
|
16
|
+
<div v-if="checkPayment || (!isExpiredQuote && !isOrdered)">
|
|
17
|
+
<quote-view-message
|
|
18
|
+
id="quote-intro"
|
|
19
|
+
class="QuoteView__element QuoteView__message" />
|
|
20
|
+
<div class="QuoteView__element QuoteView__text">
|
|
21
|
+
As always, if you have any questions about this quote, please reach out to us on 02 8880 3731 or email <email-link :email="['team','workdepot.com.au']" />
|
|
21
22
|
</div>
|
|
22
|
-
<div class="
|
|
23
|
-
|
|
23
|
+
<div class="QuoteView__element QuoteView__options">
|
|
24
|
+
<div
|
|
25
|
+
v-for="o in options"
|
|
26
|
+
:key="o._id"
|
|
27
|
+
class="QuoteView__option">
|
|
28
|
+
<quote-option-view
|
|
29
|
+
:option="o"
|
|
30
|
+
:quote="quote" />
|
|
31
|
+
</div>
|
|
24
32
|
</div>
|
|
25
|
-
<div class="
|
|
26
|
-
|
|
33
|
+
<div class="QuoteView__element QuoteView__question">
|
|
34
|
+
<quote-view-question />
|
|
35
|
+
<quote-view-questions />
|
|
27
36
|
</div>
|
|
37
|
+
<quote-view-accept class="QuoteView__element QuoteView__accept" />
|
|
28
38
|
</div>
|
|
29
|
-
<div>
|
|
30
|
-
<div class="
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
39
|
+
<div v-else>
|
|
40
|
+
<div class="QuoteView__info-alert">
|
|
41
|
+
<p>
|
|
42
|
+
This proposal is already in progress, has been finalised or has expired
|
|
43
|
+
</p>
|
|
44
|
+
<p v-if="isGuestUser">
|
|
45
|
+
You can <a href="/customer/signin">login</a> to your account to see the progress of this order, or request a new quote
|
|
46
|
+
</p>
|
|
35
47
|
</div>
|
|
36
48
|
</div>
|
|
37
49
|
</div>
|
|
38
|
-
|
|
39
|
-
<table class="QuoteView__table mt-4 lc_table bordered">
|
|
40
|
-
<tr>
|
|
41
|
-
<td>
|
|
42
|
-
<div><b>QUOTE</b></div>
|
|
43
|
-
<div v-if="quote.address">
|
|
44
|
-
<div class="lc_regular16">
|
|
45
|
-
{{ quote.address.fullName }}
|
|
46
|
-
</div>
|
|
47
|
-
<div v-if="quote.address.company" class="lc_regular16">
|
|
48
|
-
{{ quote.address.company }}
|
|
49
|
-
</div>
|
|
50
|
-
<div v-if="quote.address.phone" class="lc_regular16">
|
|
51
|
-
{{ quote.address.phone }}
|
|
52
|
-
</div>
|
|
53
|
-
<div class="lc_regular16">
|
|
54
|
-
{{ quote.address.email }}
|
|
55
|
-
</div>
|
|
56
|
-
<div class="lc_regular16">
|
|
57
|
-
{{ quoteAddress }}
|
|
58
|
-
</div>
|
|
59
|
-
<div class="lc_regular16">
|
|
60
|
-
{{ quote.address.additionalInfo }}
|
|
61
|
-
</div>
|
|
62
|
-
</div>
|
|
63
|
-
</td>
|
|
64
|
-
<td class="w-50">
|
|
65
|
-
<div class="lc_regular16">
|
|
66
|
-
<b>{{ MESSAGES.DIRECT_DEPOSIT_DETAILS || 'DIRECT DEPOSIT DETAILS' }}</b>
|
|
67
|
-
</div>
|
|
68
|
-
<div class="lc_regular16">
|
|
69
|
-
Bank: {{ depositInfo.bank }}
|
|
70
|
-
</div>
|
|
71
|
-
<div class="lc_regular16">
|
|
72
|
-
Account name: {{ depositInfo.accountName }}
|
|
73
|
-
</div>
|
|
74
|
-
<div class="lc_regular16">
|
|
75
|
-
{{ bsbLabel }}: {{ depositInfo.BSB }}
|
|
76
|
-
</div>
|
|
77
|
-
<div class="lc_regular16">
|
|
78
|
-
Account: {{ depositInfo.account }}
|
|
79
|
-
</div>
|
|
80
|
-
</td>
|
|
81
|
-
</tr>
|
|
82
|
-
</table>
|
|
83
|
-
<div class="mt-3">
|
|
84
|
-
<quote-option-view
|
|
85
|
-
v-for="(optionItem, index) of options"
|
|
86
|
-
:key="`option-${index}`"
|
|
87
|
-
:option="optionItem"
|
|
88
|
-
:quote="quote"
|
|
89
|
-
class="QuoteView__option" />
|
|
90
|
-
</div>
|
|
91
|
-
<h6
|
|
92
|
-
v-if="quote.expiredAt"
|
|
93
|
-
class="mt-3 lc_title mb-5 lc_h3">
|
|
94
|
-
THIS QUOTE IS VALID UNTIL {{ quote.expiredAt | shortDate }}
|
|
95
|
-
</h6>
|
|
96
50
|
</div>
|
|
97
51
|
</template>
|
|
98
52
|
|
|
99
53
|
<script>
|
|
100
|
-
import { mapGetters } from 'vuex';
|
|
101
|
-
import
|
|
54
|
+
import { mapGetters, mapActions } from 'vuex';
|
|
55
|
+
import { saveViewedOptions } from '@lancom/shared/assets/js/utils/quote';
|
|
56
|
+
import QuoteViewMixin from '@lancom/shared/components/quotes/quote_view_preview/quote-view.mixin';
|
|
57
|
+
import EmailLink from '@lancom/shared/components/email_link/email-link';
|
|
58
|
+
import QuoteViewInfo from './quote_view_info/quote-view-info';
|
|
59
|
+
import QuoteViewMenu from './quote_view_menu/quote-view-menu';
|
|
60
|
+
import QuoteViewHeader from './quote_view_header/quote-view-header';
|
|
61
|
+
import QuoteViewBanner from './quote_view_banner/quote-view-banner';
|
|
62
|
+
import QuoteViewMessage from './quote_view_message/quote-view-message';
|
|
63
|
+
import QuoteViewQuestion from './quote_view_question/quote-view-question';
|
|
64
|
+
import QuoteViewQuestions from './quote_view_questions/quote-view-questions';
|
|
65
|
+
import QuoteViewAccept from './quote_view_accept/quote-view-accept';
|
|
102
66
|
import QuoteOptionView from './quote_option_view/quote-option-view';
|
|
103
67
|
|
|
104
68
|
export default {
|
|
105
|
-
name: '
|
|
69
|
+
name: 'QuoteView',
|
|
106
70
|
components: {
|
|
107
|
-
QuoteOptionView
|
|
71
|
+
QuoteOptionView,
|
|
72
|
+
QuoteViewInfo,
|
|
73
|
+
QuoteViewMenu,
|
|
74
|
+
QuoteViewHeader,
|
|
75
|
+
QuoteViewBanner,
|
|
76
|
+
QuoteViewMessage,
|
|
77
|
+
QuoteViewQuestion,
|
|
78
|
+
QuoteViewQuestions,
|
|
79
|
+
QuoteViewAccept,
|
|
80
|
+
EmailLink
|
|
81
|
+
},
|
|
82
|
+
data() {
|
|
83
|
+
return {
|
|
84
|
+
checkPayment: !!this.$route.query.checkPayment
|
|
85
|
+
};
|
|
108
86
|
},
|
|
109
87
|
mixins: [QuoteViewMixin],
|
|
110
88
|
computed: {
|
|
111
|
-
...mapGetters(['
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
89
|
+
...mapGetters(['contacts']),
|
|
90
|
+
...mapGetters('auth', ['isGuestUser']),
|
|
91
|
+
...mapGetters('quote', ['quote', 'options', 'isExpiredQuote', 'isOrdered'])
|
|
92
|
+
},
|
|
93
|
+
created() {
|
|
94
|
+
if (process.client) {
|
|
95
|
+
this.fetchViewedOptions({ quote: this.quote });
|
|
96
|
+
|
|
97
|
+
const options = this.options.map(({ _id }) => _id);
|
|
98
|
+
saveViewedOptions(this.quote, options);
|
|
99
|
+
}
|
|
100
|
+
},
|
|
101
|
+
methods: {
|
|
102
|
+
...mapActions('quote', ['fetchViewedOptions'])
|
|
115
103
|
}
|
|
116
104
|
};
|
|
117
105
|
</script>
|
|
@@ -1,10 +1,109 @@
|
|
|
1
|
+
@import "@/assets/scss/variables";
|
|
2
|
+
|
|
1
3
|
.QuoteOptionView {
|
|
2
|
-
&
|
|
3
|
-
|
|
4
|
+
&__wrapper {
|
|
5
|
+
&.light {
|
|
6
|
+
opacity: 0.3;
|
|
7
|
+
}
|
|
8
|
+
}
|
|
9
|
+
&__header {
|
|
10
|
+
padding: 22px;
|
|
11
|
+
background-color: $black;
|
|
12
|
+
color: $white;
|
|
13
|
+
display: flex;
|
|
14
|
+
justify-content: space-between;
|
|
15
|
+
align-items: center;
|
|
16
|
+
cursor: pointer;
|
|
17
|
+
@media (max-width: $bp-extra-small-max) {
|
|
18
|
+
flex-direction: column;
|
|
19
|
+
justify-content: flex-start;
|
|
20
|
+
align-items: flex-start;
|
|
21
|
+
}
|
|
22
|
+
&.disabled {
|
|
23
|
+
opacity: 0.7;
|
|
24
|
+
pointer-events: none !important;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
&__title {
|
|
28
|
+
font-weight: 800;
|
|
29
|
+
font-size: 18px;
|
|
30
|
+
line-height: 25px;
|
|
31
|
+
text-transform: uppercase;
|
|
32
|
+
span {
|
|
33
|
+
background: #F38320;
|
|
34
|
+
padding: 1px 7px;
|
|
35
|
+
font-weight: bold;
|
|
36
|
+
font-size: 16.25px;
|
|
37
|
+
line-height: 22px;
|
|
38
|
+
color: $white;
|
|
39
|
+
text-decoration: none;
|
|
40
|
+
display: inline-block;
|
|
41
|
+
margin-left: 9px;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
&__proceed {
|
|
45
|
+
position: relative;
|
|
46
|
+
display: flex;
|
|
47
|
+
@media (max-width: $bp-extra-small-max) {
|
|
48
|
+
margin-top: 20px;
|
|
49
|
+
}
|
|
50
|
+
&-message {
|
|
51
|
+
font-weight: bold;
|
|
52
|
+
font-size: 16px;
|
|
53
|
+
line-height: 22px;
|
|
54
|
+
text-transform: uppercase;
|
|
55
|
+
color: $white;
|
|
56
|
+
cursor: pointer;
|
|
57
|
+
margin-left: 10px;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
&__table {
|
|
61
|
+
border: 1px solid #dee2e6;
|
|
62
|
+
padding: 30px;
|
|
4
63
|
}
|
|
5
64
|
&__product {
|
|
6
|
-
padding-bottom:
|
|
7
|
-
margin-bottom:
|
|
65
|
+
padding-bottom: 20px;
|
|
66
|
+
margin-bottom: 20px;
|
|
8
67
|
border-bottom: 1px solid #dee2e6;
|
|
9
68
|
}
|
|
69
|
+
&__subtotal {
|
|
70
|
+
padding: 24px;
|
|
71
|
+
background-color: $gray;
|
|
72
|
+
display: flex;
|
|
73
|
+
justify-content: space-between;
|
|
74
|
+
font-weight: 800;
|
|
75
|
+
font-size: 16px;
|
|
76
|
+
line-height: 22px;
|
|
77
|
+
text-transform: uppercase;
|
|
78
|
+
@media (max-width: $bp-extra-small-max) {
|
|
79
|
+
flex-direction: column;
|
|
80
|
+
}
|
|
81
|
+
&-item {
|
|
82
|
+
@media (max-width: $bp-extra-small-max) {
|
|
83
|
+
display: flex;
|
|
84
|
+
margin: 5px 0;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
&-label {
|
|
88
|
+
color: $gray_main;
|
|
89
|
+
}
|
|
90
|
+
&-value {
|
|
91
|
+
color: $black;
|
|
92
|
+
margin-left: 10px;
|
|
93
|
+
}
|
|
94
|
+
&.selected {
|
|
95
|
+
background-color: $green;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
&__message {
|
|
99
|
+
margin-top: 30px;
|
|
100
|
+
font-weight: 600;
|
|
101
|
+
font-size: 20px;
|
|
102
|
+
line-height: 27px;
|
|
103
|
+
color: $gray_main;
|
|
104
|
+
@media (max-width: $bp-extra-small-max) {
|
|
105
|
+
font-size: 15px;
|
|
106
|
+
line-height: 19px;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
10
109
|
}
|