-price.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <template>
  2. <view class="card-box">
  3. <view class="title">
  4. <u-image width="40rpx" height="40rpx" src="/static/index/electric.png"></u-image>
  5. <view>时段价格</view>
  6. </view>
  7. <view v-if="priceDetail && priceDetail.length > 0">
  8. <view v-for="(price, priceIndex) in priceDetail" :key="priceIndex" :class="['card-flex', { 'current-price': priceIndex == currentTimeIndex }]">
  9. <view class="card-title">
  10. {{price.startTm.slice(0, 2)}}:{{price.startTm.slice(2)}}-{{price.endTm.slice(0, 2)}}:{{price.endTm.slice(2)}}
  11. <view class="current-tag" v-if="priceIndex == currentTimeIndex">当前时段</view>
  12. </view>
  13. <view class="card-content">
  14. <view class="total-price">
  15. ¥{{(Number(price.elecPrice) + Number(price.servicePrice)).toFixed(2)}}
  16. <text class="unit-price">/度</text>
  17. </view>
  18. <text class="sub-price">电价:¥{{ Number(price.elecPrice).toFixed(2) }}</text>
  19. <text class="sub-price">服务费:¥{{ Number(price.servicePrice).toFixed(2) }}</text>
  20. </view>
  21. </view>
  22. </view>
  23. <div v-else class="stationNoMore">
  24. <u-empty text="暂无分时段价格" mode="message"></u-empty>
  25. </div>
  26. <view style="height:20rpx;"></view>
  27. </view>
  28. </template>
  29. <script>
  30. export default {
  31. data() {
  32. return {
  33. lightColor: this.$lightColor,
  34. priceDetail: [],
  35. };
  36. },
  37. props: {
  38. stationData: {
  39. default: {},
  40. type: Object,
  41. },
  42. currentTimeIndex: {
  43. type: Number,
  44. },
  45. },
  46. watch: {
  47. stationData: {
  48. handler(val) {
  49. this.priceDetail = val.priceList;
  50. },
  51. deep: true,
  52. immediate: true,
  53. },
  54. },
  55. mounted() {
  56. },
  57. methods: {
  58. },
  59. };
  60. </script>
  61. <style lang="scss" scoped>
  62. @import "./connector.scss";
  63. .card-title {
  64. flex: none;
  65. font-weight: 400;
  66. padding-left: 12rpx;
  67. }
  68. .card-content {
  69. padding: 0 40rpx;
  70. text-align: right;
  71. flex: 1;
  72. .total-price {
  73. font-size: 32rpx;
  74. font-weight: 500;
  75. color: #333333;
  76. }
  77. .unit-price {
  78. font-size: 24rpx;
  79. font-weight: 400;
  80. color: #333333;
  81. margin-left: 5rpx;
  82. }
  83. .sub-price {
  84. font-size: 24rpx;
  85. color: #bdbfc0;
  86. & + .sub-price {
  87. margin-left: 30rpx;
  88. }
  89. }
  90. }
  91. .title {
  92. display: flex;
  93. padding: 20rpx 0;
  94. u-image {
  95. margin-right: 10rpx;
  96. }
  97. }
  98. .card-flex {
  99. display: flex;
  100. font-size: 28rpx;
  101. padding: 20rpx 0;
  102. border-bottom: 2rpx solid #80808020;
  103. }
  104. .current-price {
  105. background-color: #e6f3fa;
  106. .current-tag {
  107. background-color: #0089c9;
  108. color: #fff;
  109. font-size: 24rpx;
  110. line-height: 1.5;
  111. text-align: center;
  112. border-radius: 10rpx;
  113. margin-top: 5rpx;
  114. }
  115. }
  116. /* DarkMode 下的样式 start */
  117. @media (prefers-color-scheme: dark) {
  118. .card-content {
  119. .total-price,
  120. .unit-price {
  121. color: #bdbfc0;
  122. }
  123. }
  124. }
  125. </style>