parkingInformation.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. <template>
  2. <view class="parking-information">
  3. <view class="parking-information-slider">
  4. <image src="/static/img/parking-info-bg.png" mode=""></image>
  5. </view>
  6. <view class="parking-information-content">
  7. <view class="parking-information-content-title">
  8. <view class="pict-left">
  9. <view class="title">{{ roadInfo.areaName }}</view>
  10. <view class="subtitle">{{ roadInfo.roadName }}</view>
  11. </view>
  12. <view class="pict-right" @click="navigation(roadInfo.latitude, roadInfo.longitude, roadInfo.areaName)">
  13. <image src="/static/img/distance-icon.png" mode=""></image>
  14. <view class="m">{{ roadInfo.distance | kmUnit }}</view>
  15. </view>
  16. </view>
  17. <view class="parking-information-content-time">
  18. <view
  19. >服务时间:<text>{{ roadInfo.workBeginTime }}-{{ roadInfo.workEndTime }}</text></view
  20. >
  21. <view
  22. >包月费用:<text>{{ roadInfo.monthAmount }}</text
  23. >元</view
  24. >
  25. </view>
  26. <view class="parking-information-content-cars">
  27. <view class="picc-tag">
  28. <view>{{ roadInfo.spaceTotal }}</view>
  29. <view>共有车位</view>
  30. </view>
  31. <view class="picc-tag">
  32. <view>{{ roadInfo.spaceIdle }}</view>
  33. <view>空闲车位</view>
  34. </view>
  35. </view>
  36. <view class="parking-information-content-price" @click="lookParkingRule(roadInfo)">
  37. <text>点击查看停车规则</text>
  38. <u-icon name="arrow-right"></u-icon>
  39. </view>
  40. <u-button class="parking-information-content-button" @click="createMonth(roadInfo)">办理包月</u-button>
  41. </view>
  42. <u-select v-model="mapSelect" :list="mapSelectList" @confirm="mapSelectConfirm"></u-select>
  43. </view>
  44. </template>
  45. <script>
  46. export default {
  47. data() {
  48. return {
  49. roadInfo: [],
  50. latitude: '',
  51. longitude: '',
  52. mapSelect: false,
  53. mapSelectList: [
  54. {
  55. value: '1',
  56. label: '腾讯地图'
  57. },
  58. {
  59. value: '2',
  60. label: '百度地图'
  61. },
  62. {
  63. value: '3',
  64. label: '高德地图'
  65. }
  66. ],
  67. // 选中位置经纬度
  68. currentPositionHover: {}
  69. };
  70. },
  71. onLoad(page) {
  72. const { current, id, longitude, latitude } = page;
  73. if (id) {
  74. const obj = {
  75. 0: 'getNearRoadsl',
  76. 1: 'getParkingLotList'
  77. };
  78. this[obj[current]](id, longitude, latitude);
  79. this.latitude = latitude;
  80. this.longitude = longitude;
  81. }
  82. },
  83. methods: {
  84. /**
  85. *获取路段列表
  86. * @date 2021-08-10
  87. * @param {String} longitude
  88. * @param {String} latitude
  89. * @param {String} id
  90. * @returns {any}
  91. */
  92. async getNearRoadsl(id, longitude, latitude) {
  93. try {
  94. const { code, data } = await this.$u.api.nearRoadsl({ latitude, longitude });
  95. if (code === 200) {
  96. this.roadInfo = data.find((item) => item.id === id);
  97. }
  98. } catch (error) {}
  99. },
  100. /**
  101. * @description: 获取停车场列表
  102. * @param {*} id
  103. * @param {*} longitude
  104. * @param {*} latitude
  105. * @return {*}
  106. */
  107. async getParkingLotList(id, longitude, latitude) {
  108. try {
  109. const { code, data } = await this.$u.api.nearParkingLot({ status: 1, latitude, longitude });
  110. if (code === 200) {
  111. this.roadInfo = data?.rows.find((item) => item.id === id);
  112. console.log(this.roadInfo);
  113. }
  114. } catch (error) {}
  115. },
  116. /**
  117. * 跳转停车标准页面
  118. * {roadNo} 路段编码
  119. * */
  120. lookParkingRule(item) {
  121. this.$u.route({
  122. url: 'pages/chargeStandard/chargeStandard',
  123. params: {
  124. roadNo: item.roadNo
  125. }
  126. });
  127. },
  128. createMonth(item) {
  129. this.$u.route({
  130. url: 'pages/handleMonthly/handleMonthly',
  131. params: {
  132. roadNo: item.roadNo
  133. }
  134. });
  135. },
  136. /**
  137. * 导航
  138. * */
  139. navigation(latitude, longitude, areaName) {
  140. this.currentPositionHover = {
  141. latitude,
  142. longitude,
  143. areaName
  144. };
  145. this.mapSelect = true;
  146. },
  147. // 多地图选择
  148. mapSelectConfirm(item) {
  149. const name = item[0].label;
  150. switch (name) {
  151. case '腾讯地图':
  152. location.href = `https://apis.map.qq.com/uri/v1/routeplan?type=drive&from=我的位置&fromcoord=${this.latitude},${this.longitude}&to=${this.currentPositionHover.areaName}&tocoord=${this.currentPositionHover.latitude},${this.currentPositionHover.longitude}&policy=1&referer=BOGBZ-2BZ33-O4L32-Y3QJR-PGN66-RFFEL`;
  153. break;
  154. case '百度地图':
  155. location.href = `http://api.map.baidu.com/marker?location=
  156. ${this.currentPositionHover.latitude},${this.currentPositionHover.longitude}&title=目的地&content=${this.currentPositionHover.areaName}
  157. &output=html&src=webapp.baidu.openAPIdemo`;
  158. break;
  159. case '高德地图':
  160. location.href = `https://uri.amap.com/navigation?from=${this.longitude},${this.latitude},我的位置&to=${this.currentPositionHover.longitude},${this.currentPositionHover.latitude},${this.currentPositionHover.areaName}&mode=car&policy=1&src=mypage&coordinate=gaode&callnative=0`;
  161. break;
  162. }
  163. }
  164. }
  165. };
  166. </script>
  167. <style lang="scss" scoped>
  168. @import './parkingInformation';
  169. </style>