chargeStandard.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. <template>
  2. <!-- 收费标准 -->
  3. <view class="charge">
  4. <view class="charge-rules-container" v-for="(item, index) in chargeRulesInfo" :key="index">
  5. <view class="charge-list">
  6. <!-- <view class="charge-list-item">
  7. <view>2.5元/小时</view>
  8. <view>收费标准</view>
  9. </view> -->
  10. <view class="charge-list-item">
  11. <view>{{item.freeTime}}分钟内</view>
  12. <view>免费时长</view>
  13. </view>
  14. <view class="charge-list-item">
  15. <view>{{item.topAmt}}元</view>
  16. <view>封顶金额</view>
  17. </view>
  18. </view>
  19. <view class="charge-rules-list">
  20. <view class="charge-type">
  21. <text v-if="item.feePeriod ==1">节假日规则</text>
  22. <text v-else>非节假日规则</text>
  23. </view>
  24. <view class="charge-rules" v-for="(type, tIndex) in item.list" :key="tIndex">
  25. <view v-if="type.vehicleType == 0">小车</view>
  26. <view v-if="type.vehicleType == 1">大车</view>
  27. <view v-if="type.vehicleType == 2">超大型车</view>
  28. <view v-if="type.vehicleType == 3">摩托车</view>
  29. <view v-if="type.vehicleType == 4">非机动车</view>
  30. <view v-if="type.vehicleType == 5">其他</view>
  31. <view class="charge-rules-right">
  32. <view v-for="(time, tIndex) in type.list" :key="tIndex">
  33. <text>{{time.beginTime.substring(0, 5)}}-{{time.beginTime > time.endTime ? '次日': ''}}{{time.endTime.substring(0, 5)}}</text>
  34. <text>{{time.amt}}元/小时</text>
  35. </view>
  36. </view>
  37. </view>
  38. </view>
  39. </view>
  40. <view class="charge-instructions">
  41. <view class="charge-instructions-title">相关说明</view>
  42. <view class="charge-instructions-item">1、全天任何时段,封停必须扫码;</view>
  43. <view class="charge-instructions-item">2、停车5分钟未扫码启动缴费程序,将按违法停车处罚;</view>
  44. <view class="charge-instructions-item">3、停车时间在30分钟内不收费;超过30分钟按1小时收费;</view>
  45. <view class="charge-instructions-item">4、停放车辆须按车位停放,禁止乱停乱放,否则停车场有权采取相应措施;</view>
  46. <view class="charge-instructions-item">5、路边临停收费仅是收起个人占用公共资源的费用,非保管合同法律关系,如车辆发生刮蹭,责任由相关部门认定,与运营方无关;</view>
  47. <view class="charge-instructions-item">6、贵重东西请妥善保管或随身带走,如有遗失概不负责;</view>
  48. <view class="charge-telphone">
  49. <view>客服电话</view>
  50. <view>0851-8888888</view>
  51. </view>
  52. <view class="charge-telphone">
  53. <view>监督电话</view>
  54. <view>0851-8888888</view>
  55. </view>
  56. </view>
  57. </view>
  58. </template>
  59. <script>
  60. import getUrlParams from './../../utils/getUrlParams.js'
  61. export default {
  62. data() {
  63. return {
  64. roadNo: '',
  65. info: {
  66. freeTime: '',
  67. topAmt: ''
  68. },
  69. chargeRulesInfo: []
  70. }
  71. },
  72. onLoad() {
  73. let locationLocaturl = window.location.hash
  74. const roadNo = getUrlParams(locationLocaturl, "roadNo"); // 截取roadId
  75. if (roadNo) {
  76. this.roadNo = roadNo
  77. this.getChargeRulesInfo(roadNo)
  78. } else {
  79. uni.showToast({
  80. title: '参数丢失,返回上一个页面',
  81. duration: 2000,
  82. icon: 'none',
  83. mask: true
  84. })
  85. }
  86. },
  87. onShow() {
  88. },
  89. methods: {
  90. /**
  91. * 获取收费标准
  92. * {roadNo} 路段
  93. * */
  94. getChargeRulesInfo (roadNo) {
  95. this.$u.api.roadChargeRule({
  96. roadNo: roadNo
  97. })
  98. .then(res => {
  99. if (res.code === 200) {
  100. // 数据整合后
  101. let chargeRulesArr = []
  102. for (let i = 0; i < res.data.length; i++) {
  103. let item = res.data[i]
  104. this.info.freeTime = res.data[0].freeTime
  105. this.info.topAmt = res.data[0].topAmt
  106. const obj = {
  107. feeName: item.feeName,
  108. feeNo: item.feeNo,
  109. feePeriod: item.feePeriod,
  110. feeStep: item.feeStep,
  111. feeType: item.feeType,
  112. freeTime: item.freeTime,
  113. topAmt: item.topAmt,
  114. id: item.id,
  115. list: [],
  116. repeatList: [] // 用来检验已存在
  117. }
  118. for (let j = 0; j < item.vehicleRules.length; j++) {
  119. let jItem = item.vehicleRules[j]
  120. const obj1 = {
  121. amt: jItem.amt,
  122. beginTime: jItem.beginTime,
  123. endTime: jItem.endTime,
  124. vehicleFeeNo: jItem.vehicleFeeNo,
  125. vehicleType: jItem.vehicleType,
  126. list: []
  127. }
  128. if (obj.repeatList.indexOf(jItem.vehicleType) === -1) {
  129. obj.repeatList.push(jItem.vehicleType)
  130. obj1.list.push(jItem)
  131. } else {
  132. for (let k = 0; k < item.vehicleRules.length; k++) {
  133. if (obj1.vehicleType === item.vehicleRules[k].vehicleType) {
  134. obj1.list.push(item.vehicleRules[k])
  135. obj.list.push(obj1)
  136. }
  137. }
  138. }
  139. }
  140. // 存在重复,去除重复操作
  141. let obj2 = {}
  142. obj.list = obj.list.reduce((cur,next) => {
  143. obj[next.vehicleType] ? "" : obj[next.vehicleType] = true && cur.push(next);
  144. return cur;
  145. },[])
  146. chargeRulesArr.push(obj)
  147. }
  148. this.chargeRulesInfo = chargeRulesArr
  149. } else {
  150. uni.showToast({
  151. title: `${res.msg}`,
  152. duration: 3000,
  153. icon: 'none',
  154. mask: true
  155. })
  156. }
  157. })
  158. }
  159. }
  160. }
  161. </script>
  162. <style lang="scss" scoped>
  163. @import './chargeStandard.scss';
  164. </style>