Advertisement
Guest User

Untitled

a guest
Jun 20th, 2018
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.98 KB | None | 0 0
  1. <template>
  2. <div id="estimate-form">
  3. <div class="p-t-2">
  4. <SelectInput
  5. input-id="car-model"
  6. input-name="car_model"
  7. :value.sync="configurator.carModelId"
  8. :label="$t('checkout.adjust_configuration.car_model')"
  9. :options="adjustableCarModels"
  10. :disabled="configurator.rateEstimated"
  11. :default="deal.final_offer.final_car_model_id"
  12. vv-validate="required|numeric"/>
  13. </div>
  14.  
  15. <div class="p-t-1">
  16. <h5 class="font-weight-bold m-b-half">{{ $t('checkout.adjust_configuration.calculate_deal') }}</h5>
  17. <span class="h6 text-muted">{{ $t('checkout.adjust_configuration.insert_data') }}</span>
  18. </div>
  19.  
  20. <div class="row p-t-2">
  21. <div class="col-md-4">
  22. <TextInput
  23. input-id="msrp"
  24. input-name="msrp"
  25. :value.sync="configurator.msrp"
  26. :label="$t('checkout.adjust_configuration.msrp')"
  27. :disabled="configurator.rateEstimated"
  28. vv-validate="required|decimal:2|min_value:1"/>
  29. </div>
  30.  
  31. <div class="col-md-4">
  32. <SelectInput
  33. input-id="km-per-year"
  34. input-name="km_per_year"
  35. :value.sync="configurator.kmPerYear"
  36. :label="$t('checkout.car_information.km_per_year')"
  37. :options="kmPerYearOptions"
  38. :disabled="configurator.rateEstimated"
  39. :default="deal.final_offer.km_per_year"
  40. vv-validate="required|numeric"/>
  41. </div>
  42.  
  43. <div class="col-md-4">
  44. <SelectInput
  45. input-id="months"
  46. input-name="months"
  47. :value.sync="configurator.months"
  48. :label="$t('checkout.general.months')"
  49. :options="monthsOptions"
  50. :disabled="configurator.rateEstimated"
  51. :default="deal.final_offer.months"
  52. vv-validate="required|numeric"/>
  53. </div>
  54. </div>
  55.  
  56. <div class="text-center p-y-2" v-if="!configurator.rateEstimated">
  57. <button
  58. class="btn btn-success"
  59. @click="estimate"
  60. :disabled="loading || hasErrors">
  61.  
  62. {{ $t('checkout.buttons.estimate') }}
  63. </button>
  64. </div>
  65. </div>
  66. </template>
  67.  
  68. <script>
  69. import { mapActions, mapGetters } from 'vuex'
  70. import TextInput from 'shared/components/form/TextInput'
  71. import SelectInput from 'shared/components/form/SelectInput'
  72. import _range from 'lodash/range'
  73.  
  74. const TAX_RATE = 1.19
  75.  
  76. export default {
  77. components: { TextInput, SelectInput },
  78.  
  79. data() {
  80. return {
  81. kmPerYearOptions: _range(10000, 55000, 5000),
  82. monthsOptions: _range(24, 60, 12)
  83. }
  84. },
  85.  
  86. computed: {
  87. ...mapGetters(['deal', 'loading', 'adjustableCarModels', 'configurator']),
  88.  
  89. hasErrors() {
  90. return this.errors.items.length > 0
  91. }
  92. },
  93.  
  94. methods: {
  95. ...mapActions(['getLeasingCalculation', 'updateConfigurator']),
  96.  
  97. estimate() {
  98. this.$validator.validateAll().then((result) => {
  99. if(!result) { return }
  100.  
  101. this.getLeasingCalculation({
  102. price: this.configurator.msrp / TAX_RATE,
  103. kmPerYear: this.configurator.kmPerYear,
  104. months: this.configurator.months,
  105. modelId: this.configurator.carModelId
  106. }).then(({ data }) => {
  107. this.updateConfigurator({
  108. rateEstimated: true,
  109. leasingRate: parseFloat(data.finance_rate.fractional),
  110. serviceRate: parseFloat(data.service_rate.fractional),
  111. insuranceRate: parseFloat(data.insurance_rate.fractional),
  112. untappedKmDiscount: parseFloat(data.discount_per_untapped_km_cents),
  113. extraKmPrice: parseFloat(data.price_per_extra_km_cents)
  114. })
  115. }).catch((error) => {
  116. this.flash(this.$t('checkout.errors.estimated_rates'), 'error')
  117. })
  118. })
  119. }
  120. }
  121. }
  122. </script>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement