calculator.vue 4.4 KB

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