chargeStandard.vue 7.0 KB

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