calculator.vue 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. <template>
  2. <view class="page">
  3. <!-- 公共组件-每个页面必须引入 -->
  4. <public-module></public-module>
  5. <view style="margin-bottom: 20upx;">
  6. <view class="title d-flex a-center j-sb"><view>原价(元)</view></view>
  7. <view class="content d-flex a-center j-center">
  8. <view class="d-flex a-center j-center">交强险</view>
  9. <input class="flex-1 uni-input" type="digit" v-model="compulsoryPrice" maxlength="8"/>
  10. </view>
  11. <view class="content d-flex a-center j-center">
  12. <view class="d-flex a-center j-center">商业险</view>
  13. <input class="flex-1 uni-input" type="digit" v-model="bueinessPrice" maxlength="8" />
  14. </view>
  15. <view class="content d-flex a-center j-center">
  16. <view class="d-flex a-center j-center">车船税</view>
  17. <input class="flex-1 uni-input" type="digit" v-model="vesselTaxPrice" maxlength="8" />
  18. </view>
  19. </view>
  20. <view style="margin-bottom: 20upx;">
  21. <view class="title d-flex a-center j-sb"><view>返点(%)</view></view>
  22. <view class="content d-flex a-center j-center">
  23. <view class="d-flex a-center j-center">交强险</view>
  24. <input class="flex-1 uni-input" type="number" v-model="compulsoryPoint" maxlength="2" />
  25. </view>
  26. <view class="content d-flex a-center j-center">
  27. <view class="d-flex a-center j-center">商业险</view>
  28. <input class="flex-1 uni-input" type="number" v-model="bueinessPoint" maxlength="2" />
  29. </view>
  30. <view class="content d-flex a-center j-center">
  31. <view class="d-flex a-center j-center">车船税</view>
  32. <input class="flex-1 uni-input" type="number" v-model="vesselTaxPoint" maxlength="2" />
  33. </view>
  34. </view>
  35. <view class="total">
  36. <view class="title d-flex a-center j-sb">
  37. <view>总计</view>
  38. <view class="clearBtn" @tap="clear">清空</view>
  39. </view>
  40. <view class="originalTotal d-flex a-center">原价金额合计:¥ <text>{{originalTotal}}</text></view>
  41. <view class="actualTotal d-flex a-center">实收金额合计:¥ <text style="color:red;font-size: 34upx;">{{actualTotal}}</text></view>
  42. <view class="discountTotal d-flex a-center">总共为您节省:¥ <text style="color: #60ca1d;font-size: 34upx;">{{discountTotal}}</text></view>
  43. </view>
  44. </view>
  45. </template>
  46. <script>
  47. export default {
  48. data() {
  49. return {
  50. compulsoryPrice: '', //交强险原价
  51. bueinessPrice: '', //商业险原价
  52. vesselTaxPrice: '', //车船税原价
  53. compulsoryPoint: '', //交强险返点
  54. bueinessPoint: '', //商业险返点
  55. vesselTaxPoint: '', //车船税返点
  56. }
  57. },
  58. computed: {
  59. originalTotal() {
  60. let result = 0;
  61. if (this.compulsoryPrice != undefined && this.bueinessPrice != undefined && this.vesselTaxPrice != undefined) {
  62. result = ((this.compulsoryPrice - 0) + (this.bueinessPrice - 0) + (this.vesselTaxPrice - 0)).toFixed(2);
  63. }
  64. return result;
  65. },
  66. actualTotal() {
  67. let result = 0;
  68. if (this.compulsoryPrice != undefined && this.bueinessPrice != undefined && this.vesselTaxPrice != undefined) {
  69. result = ((this.compulsoryPrice - 0) * (1 - this.compulsoryPoint / 100) + (this.bueinessPrice - 0) * (1 - this.bueinessPoint /100) + (this.vesselTaxPrice - 0) * (1 - this.vesselTaxPoint / 100)).toFixed(2);
  70. }
  71. return result;
  72. },
  73. discountTotal() {
  74. let result1 = 0;
  75. let result2 = 0;
  76. if (this.compulsoryPrice != undefined && this.bueinessPrice != undefined && this.vesselTaxPrice != undefined) {
  77. result1 = (this.compulsoryPrice - 0) + (this.bueinessPrice - 0) + (this.vesselTaxPrice - 0);
  78. result2 = (this.compulsoryPrice - 0) * (1 - this.compulsoryPoint / 100) + (this.bueinessPrice - 0) * (1 - this.bueinessPoint / 100) + (this.vesselTaxPrice - 0) * (1 - this.vesselTaxPoint / 100);
  79. }
  80. return (result1 - result2).toFixed(2);
  81. }
  82. },
  83. onLoad() {
  84. // #ifdef H5
  85. document.getElementsByTagName('uni-page-head')[0].style.display = 'none'
  86. // #endif
  87. },
  88. methods: {
  89. clear(){
  90. this.compulsoryPrice = "";
  91. this.bueinessPrice = "";
  92. this.vesselTaxPrice = "";
  93. this.compulsoryPoint = "";
  94. this.bueinessPoint = "";
  95. this.vesselTaxPoint = "";
  96. }
  97. }
  98. }
  99. </script>
  100. <style>
  101. .page{
  102. padding: 25upx;
  103. }
  104. .uni-input{
  105. border: 1px solid #EEEEEE;
  106. padding: 5upx 12upx;
  107. margin: 15upx 10upx;
  108. }
  109. .title{
  110. height: 60upx;
  111. border-bottom: 2upx solid #CCCCCC;
  112. }
  113. .title>view{
  114. font-size: 32upx;
  115. }
  116. .content>view:nth-of-type(1){
  117. width: 150upx;
  118. }
  119. .total .originalTotal,.total .actualTotal,.total .discountTotal{
  120. height:70upx;
  121. }
  122. .clearBtn{
  123. color: #0094ff;
  124. }
  125. </style>