-price.vue 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. <template>
  2. <view class="evaluate-box">
  3. <view class="eva-section">
  4. <view class="e-header">
  5. <view class="evaluate-title">分时段价格</view>
  6. </view>
  7. <view v-if="priceDetail && priceDetail.length > 0">
  8. <view
  9. v-for="(price, priceIndex) in priceDetail"
  10. :key="priceIndex"
  11. class="card-flex"
  12. :class="{ 'current-price': priceIndex == currentTimeIndex }"
  13. >
  14. <view class="card-title">
  15. {{price.startTm.slice(0, 2)}}:{{price.startTm.slice(2)}}-{{price.endTm.slice(0, 2)}}:{{price.endTm.slice(2)}}
  16. <view class="current-tag" v-if="priceIndex == currentTimeIndex">当前时段</view>
  17. </view>
  18. <view class="card-content">
  19. <view class="total-price">
  20. ¥{{(Number(price.elecPrice) + Number(price.servicePrice)).toFixed(2)}}
  21. <text class="unit-price">/度</text>
  22. </view>
  23. <text class="sub-price">电价:¥{{ Number(price.elecPrice).toFixed(2) }}</text>
  24. <text class="sub-price">服务费:¥{{ Number(price.servicePrice).toFixed(2) }}</text>
  25. </view>
  26. </view>
  27. </view>
  28. <div v-else class="stationNoMore">
  29. <u-empty text="暂无价格" mode="message"></u-empty>
  30. </div>
  31. </view>
  32. </view>
  33. </template>
  34. <script>
  35. export default {
  36. data() {
  37. return {
  38. lightColor: this.$lightColor,
  39. priceDetail: [],
  40. };
  41. },
  42. props: {
  43. stationData: {
  44. default: {},
  45. type: Object,
  46. },
  47. currentTimeIndex: {
  48. type: Number,
  49. },
  50. },
  51. watch: {
  52. stationData: {
  53. handler(val) {
  54. this.priceDetail = val.priceList;
  55. },
  56. deep: true,
  57. immediate: true,
  58. },
  59. },
  60. mounted() {
  61. },
  62. methods: {
  63. },
  64. };
  65. </script>
  66. <style lang="scss" scoped>
  67. .evaluate-box {
  68. border-radius: 20rpx;
  69. padding: 0rpx 20rpx;
  70. box-shadow: 0 1px 5px 2px rgba(0, 0, 0, 0.05);
  71. overflow: hidden;
  72. margin: 20rpx;
  73. }
  74. .evaluate-title {
  75. font-size: 28rpx;
  76. font-weight: 400;
  77. height: 90rpx;
  78. line-height: 90rpx;
  79. position: relative;
  80. &::before {
  81. background-color: #0974C5;
  82. content: "";
  83. position: absolute;
  84. border-radius: 3rpx;
  85. left: -20rpx;
  86. top: 50%;
  87. -webkit-transform: translateY(-50%);
  88. transform: translateY(-50%);
  89. width: 3px;
  90. height: 15px;
  91. }
  92. }
  93. .card-flex {
  94. display: flex;
  95. align-items: center;
  96. font-size: 26rpx;
  97. padding: 30rpx 0;
  98. border-bottom: 2rpx solid #80808020;
  99. &:last-child {
  100. border: none;
  101. }
  102. }
  103. .card-title {
  104. flex: none;
  105. font-weight: 400;
  106. padding-left: 12rpx;
  107. }
  108. .card-content {
  109. padding: 0 40rpx;
  110. text-align: right;
  111. flex: 1;
  112. // flex: 6;
  113. .total-price {
  114. font-size: 32rpx;
  115. font-weight: 500;
  116. color: #333333;
  117. }
  118. .unit-price {
  119. font-size: 24rpx;
  120. font-weight: 400;
  121. color: #333333;
  122. margin-left: 5rpx;
  123. }
  124. .sub-price {
  125. font-size: 24rpx;
  126. color: #bdbfc0;
  127. & + .sub-price {
  128. margin-left: 30rpx;
  129. }
  130. }
  131. }
  132. .current-price {
  133. border: 1px solid #ff9920;
  134. background-color: #ff992030;
  135. border-radius: 10rpx;
  136. .current-tag {
  137. background-color: #ff9920;
  138. color: #fff;
  139. font-size: 24rpx;
  140. line-height: 1.5;
  141. text-align: center;
  142. border-radius: 10rpx;
  143. margin-top: 5rpx;
  144. }
  145. }
  146. /* DarkMode 下的样式 start */
  147. @media (prefers-color-scheme: dark) {
  148. .card-content {
  149. .total-price,
  150. .unit-price {
  151. color: #bdbfc0;
  152. }
  153. }
  154. }
  155. </style>