carDetail.vue 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. <template>
  2. <view class="">
  3. <navBar type="carDetail"/>
  4. <view class="car-detail-main">
  5. <view v-if="car_detail.image" class="flex-row">
  6. <img style="width: 600rpx;height: 406rpx; margin: auto; margin-bottom: 20rpx;" :src="car_detail.image"
  7. alt="">
  8. </view>
  9. <view class="car-detail-model">
  10. <view class="car-detail-name">{{car_detail.car_model_name}}</view>
  11. <view class="car-detail-price"><allPrice :amount="Number(price)"/></view>
  12. <view style="flex-wrap: wrap;justify-content: flex-start;" class="flex-row car-detail-time">
  13. <view v-for="(item,index) in car_detail.rental_setting" :key="index" @tap="tapSelectType" :data-price="item.hire_price"
  14. :data-select_type="item.hire_duration_unit"
  15. :class="['time-unit',selectType==item.hire_duration_unit? 'time-unit-i':'']">
  16. <text v-if="item.hire_duration_unit==1">日租</text>
  17. <text v-if="item.hire_duration_unit==2">月租</text>
  18. <text v-if="item.hire_duration_unit==3">年租</text>
  19. <text v-if="item.hire_duration_unit==4">时租</text>
  20. <text v-if="item.hire_duration_unit==5">分租</text>
  21. <text v-if="item.hire_duration_unit==6">周租</text>
  22. <text v-if="item.hire_duration_unit==7">季租</text>
  23. </view>
  24. <view @tap="tapSelectType" :data-select_type="100" :data-price="car_detail.sell_price"
  25. :class="['time-unit',selectType==100? 'time-unit-i':'']">购买</view>
  26. </view>
  27. </view>
  28. <!-- <view class="free-num-model">
  29. <view class="flex-row flex-between">
  30. <view class="free-num-view">
  31. <img style="width: 40rpx;height: 40rpx;" src="https://qiniu.bms16.com/FtlfBtBE5-TeTI5EdrciX_u8u_Sx" alt="">
  32. <text class="free-num-text">免费换电次数</text>
  33. </view>
  34. <view class="free-num-time">1 次/日</view>
  35. </view>
  36. <view class="free-num-tip">日租享1次免费换电数,超出后需要单独支付换电费用;</view>
  37. </view> -->
  38. <useGuidance />
  39. <view class="card-car-detail">
  40. <view class="step-title-view flex-row align-center">
  41. <img style="width: 208rpx;height: 40rpx;" src="https://qiniu.bms16.com/Fms8V0l4bNwGUgWwkdRku4dIx_tt"
  42. alt="">
  43. <img style="width: 86rpx;height: 80rpx;" src="https://qiniu.bms16.com/FibAaPERzqi6m95EP2jREUKixjUi"
  44. alt="">
  45. <view class="w-bg flex-row"></view>
  46. </view>
  47. <view class="step-car-view">
  48. <view class="step-img-view"></view>
  49. <view class="flex-row flex-between" style="margin-bottom: 24rpx;">
  50. <view class="store-name-view">
  51. <view>{{car_detail.shop_name}}</view>
  52. <view class="address-txt">{{car_detail.address}}</view>
  53. </view>
  54. <view class="distance-num">{{car_detail.distance}}m</view>
  55. </view>
  56. <view class="flex-row flex-between align-center">
  57. <view class="time-view flex-row alert-center">
  58. <img class="time-icon" src="https://qiniu.bms16.com/FlGVpR2fdrD1GfeHfDgt-dUMgkOq" alt="">
  59. <text>{{car_detail.work_begin_time + '-' + car_detail.work_end_time}}</text>
  60. </view>
  61. <view class="phone-or-nav flex-row">
  62. <view @tap="tapCallPhone">
  63. <img style="width: 84rpx;height: 64rpx;margin-right: 20rpx;" src="https://qiniu.bms16.com/FkZYljvsgGtXUGnQaA0wk_sbjlUC" alt="">
  64. </view>
  65. <view @tap="">
  66. <img style="width: 112rpx;height: 64rpx;" src="https://qiniu.bms16.com/Fts38M35doVjK09GfOza5qD-wwkK" alt="">
  67. </view>
  68. </view>
  69. </view>
  70. </view>
  71. </view>
  72. </view>
  73. <rich-text v-if="car_detail.desc" class="rich_text" :nodes="car_detail.desc"></rich-text>
  74. <view v-else style="height: 150rpx;"></view>
  75. <view class="use-car-view flex-row">
  76. <view @tap="useCarBtn" class="use-car-btn">我要用车</view>
  77. </view>
  78. <carPlan v-if="showCarPlan" @changeSelectType="changeSelectType" @closeShowMore="closeShowMore" :params="params" :selectType="selectType"/>
  79. </view>
  80. </template>
  81. <script module="tools" lang="wxs" src="@/pages/common/wxs/tools.wxs"></script>
  82. <script module="tools" lang="sjs" src="@/pages/common/wxs/tools.sjs"></script>
  83. <script>
  84. import CarPlan from '@/component/carPlan/carPlan';
  85. import UseGuidance from '@/component/useGuidance/useGuidance';
  86. import allPrice from '@/component/allPrice/allPrice';
  87. import {
  88. LEASE_TYPE_ARR
  89. } from '@/common/constant.js'
  90. var app = getApp();
  91. var config = require('@/common/config.js');
  92. var common = require('@/common/common.js');
  93. var http = require('@/common/http.js');
  94. var storage = require('@/common/storage.js');
  95. export default {
  96. data() {
  97. return {
  98. recommend_id: '',
  99. car_detail: {},
  100. showCarPlan: false,
  101. selectType: 1,
  102. myLocation: {
  103. latitude: 23.099994,
  104. longitude: 113.324004,
  105. },
  106. destance: 0,
  107. price:0,
  108. params:{}
  109. };
  110. },
  111. components: {
  112. CarPlan,
  113. UseGuidance,
  114. allPrice
  115. },
  116. onLoad: function(options) {
  117. if(options.model_id){
  118. this.model_id= options.model_id
  119. this.locationFn()
  120. }
  121. // this.loadCarInfo()
  122. // getFlatternDistance 获取直线距离
  123. },
  124. methods: {
  125. locationFn() {
  126. let _this = this
  127. uni.getLocation({
  128. success(res) {
  129. _this.loadCarInfo(res.longitude, res.latitude)
  130. }
  131. })
  132. },
  133. loadCarInfo(latitude,longitude) {
  134. const me = this
  135. http.postApi(config.API_FLK_INDEX_CAR_MODEL_DETAIL, {
  136. model_id:me.model_id,
  137. latitude: latitude,
  138. longitude: longitude,
  139. }, (resp) => {
  140. if (resp.data.code === 200) {
  141. me.setData({
  142. car_detail:resp.data.data,
  143. price:((resp.data.data.rental_setting[0]?.hire_price || 0)/100).toFixed(2)
  144. })
  145. } else {
  146. common.simpleToast(resp.data.msg);
  147. }
  148. })
  149. },
  150. tapSelectType(e) {
  151. const {select_type,price} = e.currentTarget.dataset
  152. console.log(select_type,price,'select_type,price');
  153. this.setData({
  154. selectType: select_type,
  155. price:(price/100).toFixed(2)
  156. })
  157. },
  158. tapCallPhone(){
  159. const me = this
  160. const phone = this.car_detail.link_phone
  161. // const phone = 18170410707
  162. uni.showModal({
  163. content: `您是否要拨打电话${phone}?`,
  164. confirmText: '确定',
  165. success: (res) => {
  166. if (res.confirm) {
  167. me.clearTimer()
  168. uni.makePhoneCall({
  169. phoneNumber: phone,
  170. success() {},
  171. fail() {}
  172. })
  173. }
  174. },
  175. fail: (res) => {}
  176. })
  177. },
  178. navAddress(){
  179. const {
  180. address,
  181. latitude,
  182. longitude,
  183. shop_name
  184. } = this.car_detail
  185. uni.openLocation({
  186. latitude: latitude - 0,
  187. longitude: longitude - 0,
  188. scale: 15,
  189. name: shop_name,
  190. address: address,
  191. success: function (res) {},
  192. })
  193. },
  194. useCarBtn(){
  195. const pData={
  196. ...this.car_detail,
  197. price:this.price
  198. }
  199. this.setData({
  200. showCarPlan:true,
  201. params:pData
  202. })
  203. },
  204. changeSelectType(select_type,price){
  205. this.setData({
  206. selectType: select_type,
  207. price:(price/100).toFixed(2)
  208. })
  209. },
  210. closeShowMore(){
  211. this.setData({
  212. showCarPlan:false
  213. })
  214. }
  215. }
  216. };
  217. </script>
  218. <style>
  219. @import './carDetail.css';
  220. </style>