chargeStandard.vue 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210
  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" v-if="item.list.length">
  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 ql-editor">
  40. <u-parse :html="chargeContent" />
  41. </view>
  42. </view>
  43. </template>
  44. <script>
  45. export default {
  46. data() {
  47. return {
  48. roadNo: '',
  49. parkNo: '',
  50. info: {
  51. freeTime: '',
  52. topAmt: ''
  53. },
  54. chargeRulesInfo: [],
  55. // 收费标准说明
  56. chargeContent: ''
  57. };
  58. },
  59. onLoad(page) {
  60. const { roadNo, parkNo } = page;
  61. if (roadNo) {
  62. this.roadNo = roadNo;
  63. this.getSystems(3);
  64. this.getChargeRulesInfo(roadNo);
  65. } else if (parkNo) {
  66. this.parkNo = parkNo;
  67. this.getSystems(3);
  68. this.getParkingChargeRulesInfo(parkNo);
  69. } else {
  70. uni.showToast({
  71. title: '参数丢失,返回上一个页面',
  72. duration: 2000,
  73. icon: 'none',
  74. mask: true
  75. });
  76. }
  77. },
  78. methods: {
  79. /**
  80. * 获取收费标准
  81. * {roadNo} 路段
  82. * */
  83. async getChargeRulesInfo(roadNo) {
  84. const { code, data } = await this.$u.api.roadChargeRule({ roadNo });
  85. if (code === 200) {
  86. let chargeRulesArr = [];
  87. for (let i = 0; i < data.length; i++) {
  88. let item = data[i];
  89. this.info.freeTime = data[0].freeTime;
  90. this.info.topAmt = data[0].topAmt;
  91. const obj = {
  92. feeName: item.feeName,
  93. feeNo: item.feeNo,
  94. feePeriod: item.feePeriod,
  95. feeStep: item.feeStep,
  96. feeType: item.feeType,
  97. freeTime: item.freeTime,
  98. topAmt: item.topAmt,
  99. id: item.id,
  100. list: [],
  101. repeatList: [] // 用来检验已存在
  102. };
  103. for (let j = 0; j < item.vehicleRules.length; j++) {
  104. let jItem = item.vehicleRules[j];
  105. const obj1 = {
  106. amt: jItem.amt,
  107. beginTime: jItem.beginTime,
  108. endTime: jItem.endTime,
  109. vehicleFeeNo: jItem.vehicleFeeNo,
  110. vehicleType: jItem.vehicleType,
  111. list: []
  112. };
  113. if (obj.repeatList.indexOf(jItem.vehicleType) === -1) {
  114. obj.repeatList.push(jItem.vehicleType);
  115. obj1.list.push(jItem);
  116. } else {
  117. for (let k = 0; k < item.vehicleRules.length; k++) {
  118. if (obj1.vehicleType === item.vehicleRules[k].vehicleType) {
  119. obj1.list.push(item.vehicleRules[k]);
  120. obj.list.push(obj1);
  121. }
  122. }
  123. }
  124. }
  125. // 存在重复,去除重复操作
  126. obj.list = obj.list.reduce((cur, next) => {
  127. obj[next.vehicleType] ? '' : (obj[next.vehicleType] = true && cur.push(next));
  128. return cur;
  129. }, []);
  130. chargeRulesArr.push(obj);
  131. }
  132. this.chargeRulesInfo = chargeRulesArr;
  133. }
  134. },
  135. /**
  136. * 获取收费标准
  137. * {roadNo} 路段
  138. * */
  139. async getParkingChargeRulesInfo(parkNo) {
  140. const { code, data } = await this.$u.api.parkingLotChargeRule({ parkNo });
  141. if (code === 200) {
  142. // 数据整合后
  143. let chargeRulesArr = [];
  144. for (let i = 0; i < data.length; i++) {
  145. let item = data[i];
  146. this.info.freeTime = data[0].freeTime;
  147. this.info.topAmt = data[0].topAmt;
  148. const obj = {
  149. feeName: item.feeName,
  150. feeNo: item.feeNo,
  151. feePeriod: item.feePeriod,
  152. feeStep: item.feeStep,
  153. feeType: item.feeType,
  154. freeTime: item.freeTime,
  155. topAmt: item.topAmt,
  156. id: item.id,
  157. list: [],
  158. repeatList: [] // 用来检验已存在
  159. };
  160. for (let j = 0; j < item.vehicleRules.length; j++) {
  161. let jItem = item.vehicleRules[j];
  162. const obj1 = {
  163. amt: jItem.amt,
  164. beginTime: jItem.beginTime,
  165. endTime: jItem.endTime,
  166. vehicleFeeNo: jItem.vehicleFeeNo,
  167. vehicleType: jItem.vehicleType,
  168. list: []
  169. };
  170. if (obj.repeatList.indexOf(jItem.vehicleType) === -1) {
  171. obj.repeatList.push(jItem.vehicleType);
  172. obj1.list.push(jItem);
  173. } else {
  174. for (let k = 0; k < item.vehicleRules.length; k++) {
  175. if (obj1.vehicleType === item.vehicleRules[k].vehicleType) {
  176. obj1.list.push(item.vehicleRules[k]);
  177. obj.list.push(obj1);
  178. }
  179. }
  180. }
  181. }
  182. // 存在重复,去除重复操作
  183. obj.list = obj.list.reduce((cur, next) => {
  184. obj[next.vehicleType] ? '' : (obj[next.vehicleType] = true && cur.push(next));
  185. return cur;
  186. }, []);
  187. chargeRulesArr.push(obj);
  188. }
  189. this.chargeRulesInfo = chargeRulesArr;
  190. }
  191. },
  192. /**
  193. * @description: 获取收费标准
  194. * @param {*} termsType
  195. * @return {*}
  196. */
  197. async getSystems(termsType) {
  198. const { code, data } = await this.$u.api.getSystems({ termsType: Number(termsType) });
  199. if (code === 200) {
  200. this.chargeContent = data?.content;
  201. }
  202. }
  203. }
  204. };
  205. </script>
  206. <style lang="scss" scoped>
  207. @import './chargeStandard.scss';
  208. </style>