chargeStandard.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  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-rules-list">
  6. <view class="charge-rule-list-header">
  7. <view class="charge-type">
  8. <text v-if="item.feePeriod == 1">节假日规则</text>
  9. <text v-else>非节假日规则</text>
  10. </view>
  11. <view class="charge-time">
  12. <view
  13. >免费时长<text>{{ item.freeTime || 0 }}分钟内</text></view
  14. >
  15. <view v-if="item.topAmt"
  16. >封顶金额<text>{{ item.topAmt || 0 }}元</text></view
  17. >
  18. <view v-else>无封顶金额</view>
  19. </view>
  20. </view>
  21. <view class="charge-rules" v-for="(type, tIndex) in item.list" :key="tIndex">
  22. <view v-if="type.list[0].amt || type.list[1].amt" class="charge-rules-box">
  23. <view v-if="type.vehicleType == 0">小车</view>
  24. <view v-if="type.vehicleType == 1">大车</view>
  25. <view v-if="type.vehicleType == 2">超大型车</view>
  26. <view v-if="type.vehicleType == 3">摩托车</view>
  27. <view v-if="type.vehicleType == 4">非机动车</view>
  28. <view v-if="type.vehicleType == 5">其他</view>
  29. <view class="charge-rules-right">
  30. <view v-for="(time, tIndex) in type.list" :key="tIndex">
  31. <text>{{ time.beginTime.substring(0, 5) }}-{{ time.beginTime > time.endTime ? '次日' : '' }}{{ time.endTime.substring(0, 5) }}</text>
  32. <text>{{ time.amt }}元/小时</text>
  33. </view>
  34. </view>
  35. </view>
  36. </view>
  37. </view>
  38. </view>
  39. <view class="charge-instructions">
  40. <u-parse :html="chargeContent"></u-parse>
  41. </view>
  42. </view>
  43. </template>
  44. <script>
  45. export default {
  46. data() {
  47. return {
  48. roadNo: '',
  49. info: {
  50. freeTime: '',
  51. topAmt: ''
  52. },
  53. chargeRulesInfo: [],
  54. // 收费标准说明
  55. chargeContent: ''
  56. };
  57. },
  58. onLoad(page) {
  59. const { roadNo } = page;
  60. if (roadNo) {
  61. this.roadNo = roadNo;
  62. this.getSysterms(3);
  63. this.getChargeRulesInfo(roadNo);
  64. } else {
  65. uni.showToast({
  66. title: '参数丢失,返回上一个页面',
  67. duration: 2000,
  68. icon: 'none',
  69. mask: true
  70. });
  71. }
  72. },
  73. onShow() {},
  74. methods: {
  75. /**
  76. * 获取收费标准
  77. * {roadNo} 路段
  78. * */
  79. getChargeRulesInfo(roadNo) {
  80. this.$u.api.roadChargeRule({ roadNo }).then((res) => {
  81. if (res.code === 200) {
  82. // 数据整合后
  83. let chargeRulesArr = [];
  84. for (let i = 0; i < res.data.length; i++) {
  85. let item = res.data[i];
  86. this.info.freeTime = res.data[0].freeTime;
  87. this.info.topAmt = res.data[0].topAmt;
  88. const obj = {
  89. feeName: item.feeName,
  90. feeNo: item.feeNo,
  91. feePeriod: item.feePeriod,
  92. feeStep: item.feeStep,
  93. feeType: item.feeType,
  94. freeTime: item.freeTime,
  95. topAmt: item.topAmt,
  96. id: item.id,
  97. list: [],
  98. repeatList: [] // 用来检验已存在
  99. };
  100. for (let j = 0; j < item.vehicleRules.length; j++) {
  101. let jItem = item.vehicleRules[j];
  102. const obj1 = {
  103. amt: jItem.amt,
  104. beginTime: jItem.beginTime,
  105. endTime: jItem.endTime,
  106. vehicleFeeNo: jItem.vehicleFeeNo,
  107. vehicleType: jItem.vehicleType,
  108. list: []
  109. };
  110. if (obj.repeatList.indexOf(jItem.vehicleType) === -1) {
  111. obj.repeatList.push(jItem.vehicleType);
  112. obj1.list.push(jItem);
  113. } else {
  114. for (let k = 0; k < item.vehicleRules.length; k++) {
  115. if (obj1.vehicleType === item.vehicleRules[k].vehicleType) {
  116. obj1.list.push(item.vehicleRules[k]);
  117. obj.list.push(obj1);
  118. }
  119. }
  120. }
  121. }
  122. // 存在重复,去除重复操作
  123. let obj2 = {};
  124. obj.list = obj.list.reduce((cur, next) => {
  125. obj[next.vehicleType] ? '' : (obj[next.vehicleType] = true && cur.push(next));
  126. return cur;
  127. }, []);
  128. chargeRulesArr.push(obj);
  129. }
  130. this.chargeRulesInfo = chargeRulesArr;
  131. } else {
  132. uni.showToast({
  133. title: `${res.msg}`,
  134. duration: 3000,
  135. icon: 'none',
  136. mask: true
  137. });
  138. }
  139. });
  140. },
  141. /**
  142. * 获取收费标准
  143. * */
  144. getSysterms(termsType) {
  145. this.$u.api
  146. .getSysterms({
  147. termsType: Number(termsType)
  148. })
  149. .then((res) => {
  150. if (res.code === 200) {
  151. this.chargeContent = res.data?.content;
  152. } else {
  153. this.$refs.uToast.show({
  154. title: res.msg,
  155. type: 'error'
  156. });
  157. }
  158. })
  159. .catch((err) => {
  160. this.$refs.uToast.show({
  161. title: '系统错误!',
  162. type: 'error'
  163. });
  164. });
  165. }
  166. }
  167. };
  168. </script>
  169. <style lang="scss" scoped>
  170. @import './chargeStandard.scss';
  171. </style>