|  |  |  | 
|---|
|  |  |  | <view class="index_nav" | 
|---|
|  |  |  | :style="{ height: 'calc(' + (statusbarHeight + navHeight) + 'px' + ' + ' + '224rpx' + ')' }"> | 
|---|
|  |  |  | <view class="index_nav_a" :style="{ height: statusbarHeight + 'px' }"></view> | 
|---|
|  |  |  | <view class="index_nav_b" :style="{ height: navHeight + 'px', lineHeight: navHeight + 'px', top: navHeight + 'px' }"> | 
|---|
|  |  |  | <text>印象滨湖自行车</text> | 
|---|
|  |  |  | <view :style="{ height: navHeight + 'px' }"></view> | 
|---|
|  |  |  | <view class="index_nav_box" :style="{ background: top > 0 ? '#9AE2DF' : 'rgba(0,0,0,0)' }"> | 
|---|
|  |  |  | <view class="index_nav_a" :style="{ height: statusbarHeight + 'px' }"></view> | 
|---|
|  |  |  | <view :style="{ height: navHeight + 'px' }"></view> | 
|---|
|  |  |  | <view class="index_nav_b" :style="{ height: navHeight + 'px', lineHeight: navHeight + 'px', top: statusbarHeight + 'px' }"> | 
|---|
|  |  |  | <text>印象滨湖趣味自行车</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="index_box"> | 
|---|
|  |  |  | <view class="index_box_map"> | 
|---|
|  |  |  | <map class="map" :show-location="true" :markers="markers" :latitude="latitude" :longitude="longitude" /> | 
|---|
|  |  |  | <cover-view class="index_box_icon" @click="jumpMap"> | 
|---|
|  |  |  | <map | 
|---|
|  |  |  | id="mapId" | 
|---|
|  |  |  | class="map" | 
|---|
|  |  |  | scale="15" | 
|---|
|  |  |  | :show-location="true" | 
|---|
|  |  |  | :polygons="eleBusinessArea" | 
|---|
|  |  |  | :markers="markers" | 
|---|
|  |  |  | :latitude="latitude" | 
|---|
|  |  |  | :longitude="longitude" /> | 
|---|
|  |  |  | <view class="index_box_map_type"> | 
|---|
|  |  |  | <view :class="type === item.id ? 'index_box_map_type_row active' : 'index_box_map_type_row'" v-for="(item, index) in types" :key="index" @click="clickType(item.id)">{{item.name}}</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="index_box_icon" @click="jumpMap"> | 
|---|
|  |  |  | <image src="@/static/icon/ic_fullscreen@2x.png" mode="widthFix"></image> | 
|---|
|  |  |  | </cover-view> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="index_box_title" :style="{ backgroundImage: 'url(' + bgImg + ')' }"> | 
|---|
|  |  |  | <view class="index_box_title"> | 
|---|
|  |  |  | <view class="index_box_title_left"> | 
|---|
|  |  |  | <text>{{info.parkName}}</text> | 
|---|
|  |  |  | <text>服务电话:{{info.serverPhone}}</text> | 
|---|
|  |  |  | 
|---|
|  |  |  | </image> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="index_box_function"> | 
|---|
|  |  |  | <view class="fx1 cXYC" v-for="(item, index) in functionList" :key="index" @click="jump(item)"> | 
|---|
|  |  |  | <view class="cXYC" :style="{ marginTop: item.id === 5 ? '30rpx' : '' }" v-for="(item, index) in functionList" :key="index" @click.stop="jump(item)"> | 
|---|
|  |  |  | <button open-type="getPhoneNumber" @getphonenumber="getPhone" v-if="!userInfo.mobile"></button> | 
|---|
|  |  |  | <image class="img80" :src="item.icon" mode="widthFix"></image> | 
|---|
|  |  |  | <text class="f26 b c3 mt10">{{item.name}}</text> | 
|---|
|  |  |  | <text class="f26 c3 mt10">{{item.name}}</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="index_box_poster"> | 
|---|
|  |  |  | <view class="index_box_vip"> | 
|---|
|  |  |  | <view class="index_box_vip_head"> | 
|---|
|  |  |  | <text>热销套餐</text> | 
|---|
|  |  |  | <text @click="jumpTC">更多优惠 ></text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <scroll-view scroll-x class="scrollView"> | 
|---|
|  |  |  | <view class="index_box_vip_row" v-for="(item, index) in tcList" :key="index"> | 
|---|
|  |  |  | <view class="vip1"> | 
|---|
|  |  |  | <view class="vip1_left"> | 
|---|
|  |  |  | {{item.name || ''}} | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="vip1_right"> | 
|---|
|  |  |  | {{item.price || ''}} | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="vip2"> | 
|---|
|  |  |  | <text>{{item.descs || ''}}</text> | 
|---|
|  |  |  | <u>¥{{item.linePrice || ''}}</u> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="vip3"> | 
|---|
|  |  |  | <view class="vip3_info">低至{{item.dayPrice}}元/天</view> | 
|---|
|  |  |  | <view class="vip3_button" @click="purchase(item.id)">购买</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </scroll-view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="index_box_poster" @click="jumpX"> | 
|---|
|  |  |  | <image class="imgfull" :src="info.leaseNoticeUrl" mode="widthFix"></image> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="index_box_video" v-if="info.leaseVideoUrl"> | 
|---|
|  |  |  | <video class="img100b" :src="info.leaseVideoUrl" enable-danmu danmu-btn controls></video> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="index_zw"></view> | 
|---|
|  |  |  | <template v-if="info.memberRidesResponse && info.memberRidesResponse.ridesType === 0"> | 
|---|
|  |  |  | <view style="width: 100%; height: calc(env(safe-area-inset-bottom) + 600rpx);" v-if="show5"></view> | 
|---|
|  |  |  | <view style="width: 100%; height: calc(env(safe-area-inset-bottom) + 660rpx);" v-else-if="show6"></view> | 
|---|
|  |  |  | <view style="width: 100%; height: calc(env(safe-area-inset-bottom) + 660rpx);" v-else-if="show2"></view> | 
|---|
|  |  |  | <view style="width: 100%; height: calc(env(safe-area-inset-bottom) + 580rpx);" v-else-if="show1"></view> | 
|---|
|  |  |  | <view style="width: 100%; height: calc(env(safe-area-inset-bottom) + 500rpx);" v-else-if="show3"></view> | 
|---|
|  |  |  | <view class="index_zw1" v-else></view> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | <template v-else-if="info.memberRidesResponse && info.memberRidesResponse.ridesType === 1"> | 
|---|
|  |  |  | <view style="width: 100%; height: calc(env(safe-area-inset-bottom) + 660rpx);" v-if="$refs.d_tram.d_show3 || $refs.d_tram.d_show4"></view> | 
|---|
|  |  |  | <view class="index_zw1" v-else></view> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | <view class="index_zw1" v-else></view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="index_scancode"> | 
|---|
|  |  |  | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <image src="@/static/images/ic_safe@2x.png" mode="widthFix"></image> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <button class="index_scancode_bottom" open-type="getPhoneNumber" @getphonenumber="getPhone" | 
|---|
|  |  |  | v-if="!userInfo.mobile">扫码租车</button> | 
|---|
|  |  |  | <button class="index_scancode_bottom" open-type="getPhoneNumber" @getphonenumber="getPhone" v-if="!userInfo.mobile">扫码租车</button> | 
|---|
|  |  |  | <view class="index_scancode_bottom" @click="carRental" v-else>扫码租车</view> | 
|---|
|  |  |  | <view class="index_scancode_zw"></view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <!-- 广告 --> | 
|---|
|  |  |  | <u-popup :show="show" mode="center" bgColor="transparent" :round="10" @close="show = false"> | 
|---|
|  |  |  | <view class="popupbox"> | 
|---|
|  |  |  | <view class="advertisement"> | 
|---|
|  |  |  | <image :src="info.adList[0].imgurl" mode="widthFix"></image> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <image class="close" @click="show = false" src="@/static/images/ic_close@2x.png" mode="widthFix"> | 
|---|
|  |  |  | </image> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </u-popup> | 
|---|
|  |  |  | <!-- 缴纳押金 --> | 
|---|
|  |  |  | <u-popup :show="show1" :closeOnClickOverlay="false" mode="bottom" bgColor="#fff" :round="10" | 
|---|
|  |  |  | <!-- 自行车-缴纳押金 --> | 
|---|
|  |  |  | <u-popup :show="show1" :closeOnClickOverlay="true" mode="bottom" bgColor="#fff" :round="10" | 
|---|
|  |  |  | @close="show1 = false"> | 
|---|
|  |  |  | <view class="deposit"> | 
|---|
|  |  |  | <view class="deposit_text"> | 
|---|
|  |  |  | 
|---|
|  |  |  | <image src="@/static/icon/ic_select@2x.png" mode="widthFix" v-if="!active"></image> | 
|---|
|  |  |  | <image src="@/static/icon/ic_selected@2x.png" mode="widthFix" v-else></image> | 
|---|
|  |  |  | <view class="deposit_read_z"> | 
|---|
|  |  |  | 我已阅读<text>《租赁须知》</text>和<text @click.stop="jumpgz">《计价规则》</text> | 
|---|
|  |  |  | 我已阅读<text @click.stop="jumpX">《租赁须知》</text>和<text @click.stop="jumpgz">《计价规则》</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="deposit_footer"> | 
|---|
|  |  |  | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </u-popup> | 
|---|
|  |  |  | <!-- 开锁 --> | 
|---|
|  |  |  | <u-popup :show="show5" :closeOnClickOverlay="false" mode="bottom" bgColor="#fff" :round="10" | 
|---|
|  |  |  | <!-- 自行车-开锁 --> | 
|---|
|  |  |  | <u-popup :show="show5" :overlay="false" :closeOnClickOverlay="true" mode="bottom" bgColor="#fff" :round="10" | 
|---|
|  |  |  | @close="show5 = false"> | 
|---|
|  |  |  | <view class="loading"> | 
|---|
|  |  |  | <view class="loading_box"> | 
|---|
|  |  |  | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="loading_box_info">请按照交规行驶</view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="loading_box_err" @click="toFaultReporting"> | 
|---|
|  |  |  | <!-- <view class="loading_box_err" @click="toFaultReporting"> | 
|---|
|  |  |  | <image src="@/static/icon/ic_guzhang@2x.png" mode="widthFix"></image> | 
|---|
|  |  |  | <text>车辆故障上报</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> --> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </u-popup> | 
|---|
|  |  |  | <!-- 骑行中 --> | 
|---|
|  |  |  | <u-popup :show="show2" :closeOnClickOverlay="false" mode="bottom" bgColor="#fff" :round="10" | 
|---|
|  |  |  | <!-- 自行车-骑行中 --> | 
|---|
|  |  |  | <u-popup :show="show2" overlayOpacity="0" :closeOnClickOverlay="true" mode="bottom" bgColor="#fff" :round="10" | 
|---|
|  |  |  | @close="show2 = false"> | 
|---|
|  |  |  | <view class="ride"> | 
|---|
|  |  |  | <view class="ride_head"> | 
|---|
|  |  |  | 
|---|
|  |  |  | <image src="@/static/icon/ar_detail@2x.png" mode="widthFix"></image> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <!-- 有套餐显示 --> | 
|---|
|  |  |  | <view class="info_des_tc" v-if="info && info.memberRidesResponse && info.memberRidesResponse.discountMember"> | 
|---|
|  |  |  | <u-icon name="info-circle" color="#FF5A31" size="18"></u-icon> | 
|---|
|  |  |  | <text v-if="info.memberRidesResponse.discountMember.limitType === 0">您有骑行套餐,本次行程免费骑行</text> | 
|---|
|  |  |  | <text v-if="info.memberRidesResponse.discountMember.limitType === 1">您已购买骑行套餐,本次行程免费骑行{{convertMinutesToHours(info.memberRidesResponse.discountMember.surplusTime)}}~</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="ride_content" v-if="info.memberRidesResponse"> | 
|---|
|  |  |  | <view class="ride_content_a"> | 
|---|
|  |  |  | <text>开始时间:{{info.memberRidesResponse.rideStartTimeStr}}</text> | 
|---|
|  |  |  | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="ride_content_info"> | 
|---|
|  |  |  | <image src="@/static/icon/ic_tip@2x.png" mode="widthFix"></image> | 
|---|
|  |  |  | <text>支持中途还车,骑行时间自动累计,如更换车型,按所取车辆中最高车型计费</text> | 
|---|
|  |  |  | <text v-if="info.tips">{{info.tips}}</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="ride_btn" @click="navigationReturn">导航至园区站还车点</view> | 
|---|
|  |  |  | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </u-popup> | 
|---|
|  |  |  | <!-- 已还车 --> | 
|---|
|  |  |  | <u-popup :show="show6" :closeOnClickOverlay="false" mode="bottom" bgColor="#fff" :round="10" | 
|---|
|  |  |  | <!-- 自行车-已还车 --> | 
|---|
|  |  |  | <u-popup :show="show6" overlayOpacity="0" :closeOnClickOverlay="true" mode="bottom" bgColor="#fff" :round="10" | 
|---|
|  |  |  | @close="show6 = false"> | 
|---|
|  |  |  | <view class="ride"> | 
|---|
|  |  |  | <view class="ride_head"> | 
|---|
|  |  |  | 
|---|
|  |  |  | <image src="@/static/icon/ar_detail@2x.png" mode="widthFix"></image> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <!-- 有套餐显示 --> | 
|---|
|  |  |  | <view class="info_des_tc" v-if="info && info.memberRidesResponse && info.memberRidesResponse.discountMember"> | 
|---|
|  |  |  | <u-icon name="info-circle" color="#FF5A31" size="18"></u-icon> | 
|---|
|  |  |  | <text v-if="info.memberRidesResponse.discountMember.limitType === 0">您有骑行套餐,本次行程免费骑行</text> | 
|---|
|  |  |  | <text v-if="info.memberRidesResponse.discountMember.limitType === 1">您已购买骑行套餐,本次行程免费骑行{{convertMinutesToHours(info.memberRidesResponse.discountMember.surplusTime)}}~</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="ride_content" v-if="info.memberRidesResponse"> | 
|---|
|  |  |  | <view class="ride_content_a"> | 
|---|
|  |  |  | <text>最后骑行:{{info.memberRidesResponse.rideStartTimeStr}}~{{info.memberRidesResponse.rideEndTimeStr}}({{info.memberRidesResponse.rideTime}}分钟)</text> | 
|---|
|  |  |  | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="ride_content_info"> | 
|---|
|  |  |  | <image src="@/static/icon/ic_tip@2x.png" mode="widthFix"></image> | 
|---|
|  |  |  | <text>支持中途还车,骑行时间自动累计,如更换车型,按所取车辆中最高车型计费</text> | 
|---|
|  |  |  | <text v-if="info.tips">{{info.tips}}</text> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <view class="ride_btn" @click="carRental">扫码继续骑行</view> | 
|---|
|  |  |  | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </u-popup> | 
|---|
|  |  |  | <!-- 确认结算 --> | 
|---|
|  |  |  | <u-popup :show="show3" :closeOnClickOverlay="false" mode="bottom" bgColor="#fff" :round="10" @close="show3 = false"> | 
|---|
|  |  |  | <!-- 自行车-确认结算 --> | 
|---|
|  |  |  | <u-popup :show="show3" :closeOnClickOverlay="true" mode="bottom" bgColor="#fff" :round="10" @close="show3 = false"> | 
|---|
|  |  |  | <template> | 
|---|
|  |  |  | <view class="deposit1"> | 
|---|
|  |  |  | <view class="deposit_text"> | 
|---|
|  |  |  | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  | </u-popup> | 
|---|
|  |  |  | <!-- 提示 --> | 
|---|
|  |  |  | <u-modal :show="show4" :content='content' confirmColor="#01B6AD" @confirm="show4 = false"></u-modal> | 
|---|
|  |  |  | <!-- 确认结算弹框 --> | 
|---|
|  |  |  | <u-modal :show="show4" :title="title" :content='content' confirmColor="#01B6AD" @confirm="show4 = false"></u-modal> | 
|---|
|  |  |  | <!-- 自行车-确认结算弹框 --> | 
|---|
|  |  |  | <u-modal :show="show7" title="提示" content='确认结算吗?' :showCancelButton="true" cancelText="取消" @confirm="settlement1" @cancel="show7 = false"></u-modal> | 
|---|
|  |  |  | <!-- 广告 --> | 
|---|
|  |  |  | <u-popup :show="show" mode="center" :overlayStyle="{ zIndex: '99999' }" :closeOnClickOverlay="true" zIndex="99999" bgColor="transparent" :round="10" @close="show = false"> | 
|---|
|  |  |  | <view class="popupbox"> | 
|---|
|  |  |  | <view class="advertisement"> | 
|---|
|  |  |  | <image :src="info.adList[0].imgfullurl" mode="widthFix"></image> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | <image class="close" @click="show = false" src="@/static/images/ic_close@2x.png" mode="widthFix"> | 
|---|
|  |  |  | </image> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </u-popup> | 
|---|
|  |  |  | <!-- 电车 --> | 
|---|
|  |  |  | <tram ref="d_tram" @unlockDoor="refresh('tram')" /> | 
|---|
|  |  |  | </view> | 
|---|
|  |  |  | </template> | 
|---|
|  |  |  |  | 
|---|
|  |  |  | 
|---|
|  |  |  | import { | 
|---|
|  |  |  | mapState | 
|---|
|  |  |  | } from 'vuex' | 
|---|
|  |  |  |  | 
|---|
|  |  |  | import tram from '@/components/tram/tram.vue' | 
|---|
|  |  |  | export default { | 
|---|
|  |  |  | data() { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | disable: false, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | top: 0, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | title: '', | 
|---|
|  |  |  | latitude: null, | 
|---|
|  |  |  | longitude: null, | 
|---|
|  |  |  | bgImg: require('@/static/images/bg_service@2x.png'), | 
|---|
|  |  |  | 
|---|
|  |  |  | name: '消费明细', | 
|---|
|  |  |  | icon: require('@/static/images/home_ic_mingxi@2x.png') | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | { | 
|---|
|  |  |  | id: 5, | 
|---|
|  |  |  | name: '运营中心', | 
|---|
|  |  |  | icon: require('@/static/icon/home_ic_mingxi.png') | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | ], | 
|---|
|  |  |  |  | 
|---|
|  |  |  | info: {}, | 
|---|
|  |  |  | content: '' | 
|---|
|  |  |  | content: '', | 
|---|
|  |  |  |  | 
|---|
|  |  |  | timer: null, | 
|---|
|  |  |  | isDisabled: true, | 
|---|
|  |  |  |  | 
|---|
|  |  |  | tcList: [], | 
|---|
|  |  |  | type: 1, | 
|---|
|  |  |  | types: [ | 
|---|
|  |  |  | { name: '自行车', id: 1 }, | 
|---|
|  |  |  | { name: '电动车', id: 2 } | 
|---|
|  |  |  | ], | 
|---|
|  |  |  | eleBusinessArea: [ | 
|---|
|  |  |  | { | 
|---|
|  |  |  | points: [], | 
|---|
|  |  |  | fillColor: "#0077FF12", | 
|---|
|  |  |  | strokeColor: "#0077FF", | 
|---|
|  |  |  | strokeWidth: 3, | 
|---|
|  |  |  | zIndex: 7 | 
|---|
|  |  |  | } | 
|---|
|  |  |  | ], | 
|---|
|  |  |  | onPullDownRefresh: false, | 
|---|
|  |  |  | timerdian: null | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | components: { tram }, | 
|---|
|  |  |  | computed: { | 
|---|
|  |  |  | ...mapState(['navHeight', 'statusbarHeight', 'userInfo']) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | async onLoad() { | 
|---|
|  |  |  | async onLoad(options) { | 
|---|
|  |  |  | var that = this; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (JSON.stringify(this.userInfo) == '{}') { | 
|---|
|  |  |  | await this.$onLaunched; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.getAddress() | 
|---|
|  |  |  | this.getHomeInfo() | 
|---|
|  |  |  | this.getSite() | 
|---|
|  |  |  | await this.getAddress() | 
|---|
|  |  |  | // await this.getHomeInfo() | 
|---|
|  |  |  | await this.getSite() | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.$u.api.home() | 
|---|
|  |  |  | .then(async res => { | 
|---|
|  |  |  | if (res.code === 200) { | 
|---|
|  |  |  | let code = decodeURIComponent(options.scene) | 
|---|
|  |  |  | // 是否弹出广告图 | 
|---|
|  |  |  | if (res.data.adList.length > 0 && !res.data.memberRidesResponse) { | 
|---|
|  |  |  | this.show = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (res.data.memberRidesResponse && res.data.memberRidesResponse.ridesType === 0 && code !== 'undefined' && res.data.rideStatus !== 2) { | 
|---|
|  |  |  | let typeName = '' | 
|---|
|  |  |  | if (code.substring(0, code.indexOf('-')) === 'ebike') { | 
|---|
|  |  |  | typeName = '电动车' | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | typeName = '自行车' | 
|---|
|  |  |  | } | 
|---|
|  |  |  | uni.showToast({ | 
|---|
|  |  |  | title: `当前存在未结算自行车订单,请先结算订单后再扫码租${typeName}`, | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } else if (res.data.memberRidesResponse && res.data.memberRidesResponse.ridesType === 1 && code !== 'undefined') { | 
|---|
|  |  |  | let typeName = '' | 
|---|
|  |  |  | if (code.substring(0, code.indexOf('-')) === 'ebike') { | 
|---|
|  |  |  | typeName = '电动车' | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | typeName = '自行车' | 
|---|
|  |  |  | } | 
|---|
|  |  |  | uni.showToast({ | 
|---|
|  |  |  | title: `当前存在未结算电动车订单,请先结算订单后再扫码租${typeName}`, | 
|---|
|  |  |  | icon: 'none' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 自行车 | 
|---|
|  |  |  | if (res.data.memberRidesResponse && res.data.memberRidesResponse.ridesType === 0) { | 
|---|
|  |  |  | // 解锁中 | 
|---|
|  |  |  | if (res.data.rideStatus === 0) { | 
|---|
|  |  |  | this.show5 = true | 
|---|
|  |  |  | // 循环次数 | 
|---|
|  |  |  | var num = 1 | 
|---|
|  |  |  | // 循环查看解锁结果 | 
|---|
|  |  |  | let timer = setInterval(async () => { | 
|---|
|  |  |  | num += 1 | 
|---|
|  |  |  | let res1 = await this.$u.api.refreshLock({ | 
|---|
|  |  |  | id: res.data.memberRidesResponse.rideId | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | // 开锁成功 | 
|---|
|  |  |  | if (res1.data.status === 1) { | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | this.show5 = false | 
|---|
|  |  |  | setTimeout(() => { | 
|---|
|  |  |  | this.show2 = true | 
|---|
|  |  |  | }, 500) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 开锁失败 | 
|---|
|  |  |  | if (res1.data.status === 3) { | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | this.show5 = false | 
|---|
|  |  |  | uni.showToast({ title: '开锁失败', icon: 'error', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 开锁超时 | 
|---|
|  |  |  | if (num === 180) { | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | this.show5 = false | 
|---|
|  |  |  | uni.showToast({ title: '开锁超时', icon: 'error', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, 1000) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 骑行中 | 
|---|
|  |  |  | if (res.data.rideStatus === 1) { | 
|---|
|  |  |  | this.show2 = true | 
|---|
|  |  |  | this.refreshStatus() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (res.data.rideStatus === 5) { | 
|---|
|  |  |  | this.show5 = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (res.data.rideStatus === 2) { | 
|---|
|  |  |  | this.show6 = true | 
|---|
|  |  |  | this.refreshStatus() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if (res.data.memberRidesResponse && res.data.memberRidesResponse.ridesType === 1) { | 
|---|
|  |  |  | that.$refs.d_tram.info = { | 
|---|
|  |  |  | ...res.data.memberRidesResponse.discountMember, | 
|---|
|  |  |  | ...res.data.memberRidesResponse, | 
|---|
|  |  |  | deposit: res.data.deposit, | 
|---|
|  |  |  | goodsOrderId: res.data.goodsOrderId | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 骑行中 | 
|---|
|  |  |  | if (res.data.rideStatus === 1) { | 
|---|
|  |  |  | that.$refs.d_tram.d_show3 = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 临时锁车 | 
|---|
|  |  |  | if (res.data.rideStatus === 4) { | 
|---|
|  |  |  | that.$refs.d_tram.d_show4 = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 轮询刷新电车骑行状态 | 
|---|
|  |  |  | that.refreshTram() | 
|---|
|  |  |  | // 没有骑行订单 | 
|---|
|  |  |  | } else if (!res.data.memberRidesResponse) { | 
|---|
|  |  |  | if (decodeURIComponent(options.scene) !== 'undefined') { | 
|---|
|  |  |  | let code = decodeURIComponent(options.scene) | 
|---|
|  |  |  | if (code.substring(0, code.indexOf('-')) === 'ebike') { | 
|---|
|  |  |  | console.log('电动车') | 
|---|
|  |  |  | this.carRentalCopy(decodeURIComponent(options.scene), 2) | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | console.log('自行车') | 
|---|
|  |  |  | this.carRentalCopy(decodeURIComponent(options.scene), 1) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 是否营业 | 
|---|
|  |  |  | if (res.data.isBusiness === 0) { | 
|---|
|  |  |  | this.title = '暂停营业提醒' | 
|---|
|  |  |  | this.content = res.data.unBusinessTips | 
|---|
|  |  |  | this.show4 = true | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 是否停止服务 | 
|---|
|  |  |  | if (res.data.isStopServe === 1) { | 
|---|
|  |  |  | this.title = '暂停服务提醒' | 
|---|
|  |  |  | this.content = res.data.stopServeTips | 
|---|
|  |  |  | this.show4 = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.tcList = res.data.discountList | 
|---|
|  |  |  | let arr = JSON.parse(res.data.eleBusinessArea) | 
|---|
|  |  |  | this.eleBusinessArea[0].points = arr.map(item => { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | latitude: item.lat, | 
|---|
|  |  |  | longitude: item.lng | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | uni.$on('update', data => { | 
|---|
|  |  |  | this.carRental() | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | onPullDownRefresh() { | 
|---|
|  |  |  | this.onPullDownRefresh = true | 
|---|
|  |  |  | this.refresh() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | onShow() { | 
|---|
|  |  |  | this.refresh() | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | onPageScroll(e) { | 
|---|
|  |  |  | this.top = e.scrollTop | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | methods: { | 
|---|
|  |  |  | // 分钟转换 | 
|---|
|  |  |  | convertMinutesToHours(minutes) { | 
|---|
|  |  |  | const hours = Math.floor(minutes / 60);  // 计算小时数 | 
|---|
|  |  |  | const remainingMinutes = minutes % 60;  // 计算剩余的分钟数 | 
|---|
|  |  |  | if (hours > 0 && remainingMinutes > 0) { | 
|---|
|  |  |  | return `${hours}小时${remainingMinutes}分钟`; | 
|---|
|  |  |  | } else if (hours == 0) { | 
|---|
|  |  |  | return `${remainingMinutes}分钟`; | 
|---|
|  |  |  | } else if (remainingMinutes == 0) { | 
|---|
|  |  |  | return `${hours}小时`; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | clickcontrol() { | 
|---|
|  |  |  | let mapObjs = uni.createMapContext('mapId', this) | 
|---|
|  |  |  | mapObjs.moveToLocation({ | 
|---|
|  |  |  | complete: res => { | 
|---|
|  |  |  | console.log('移动完成:', res) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | async getEleBikeList() { | 
|---|
|  |  |  | let res = await this.$u.api.eleBikeList({}) | 
|---|
|  |  |  | if (res.code === 200) { | 
|---|
|  |  |  | this.markers = [] | 
|---|
|  |  |  | res.data.forEach((item, index) => { | 
|---|
|  |  |  | this.markers.push({ | 
|---|
|  |  |  | id: index, | 
|---|
|  |  |  | width: 40, | 
|---|
|  |  |  | height: 40, | 
|---|
|  |  |  | latitude: item.latitude, | 
|---|
|  |  |  | longitude: item.longitude, | 
|---|
|  |  |  | title: item.name, | 
|---|
|  |  |  | iconPath: '/static/icon/ic_bike@2x.png' | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.clickcontrol() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | clickType(id) { | 
|---|
|  |  |  | this.type = id | 
|---|
|  |  |  | if (id === 1) { | 
|---|
|  |  |  | this.getSite() | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | this.getEleBikeList() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | purchase(id) { | 
|---|
|  |  |  | uni.navigateTo({ | 
|---|
|  |  |  | url: `/pages/packageDetails/packageDetails?id=${id}` | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | jumpTC() { | 
|---|
|  |  |  | uni.navigateTo({ | 
|---|
|  |  |  | url: '/pages/setMenu/setMenu' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 微信打开小程序开锁方法 | 
|---|
|  |  |  | async carRentalCopy(code, type) { | 
|---|
|  |  |  | var that = this; | 
|---|
|  |  |  | let ddd = await this.$u.api.home() | 
|---|
|  |  |  | if (ddd.code === 200) { | 
|---|
|  |  |  | this.info = ddd.data | 
|---|
|  |  |  | // 判断有没有交押金 | 
|---|
|  |  |  | if (this.info.depositStatus === 0) { | 
|---|
|  |  |  | this.show1 = true | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } else if (this.info.depositStatus === 2) { | 
|---|
|  |  |  | uni.showToast({ title: '结算申请提交成功,请耐心等待退款!', icon: 'none', duration: 2000 }); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 自行车 | 
|---|
|  |  |  | if (type === 1) { | 
|---|
|  |  |  | if (!that.disable) { | 
|---|
|  |  |  | that.disable = true | 
|---|
|  |  |  | // 打开开锁弹框 | 
|---|
|  |  |  | that.show5 = true | 
|---|
|  |  |  | // 调用开锁接口 | 
|---|
|  |  |  | let res = await that.$u.api.openLock({ | 
|---|
|  |  |  | code: code | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | if (res.code === 200) { | 
|---|
|  |  |  | that.disable = false | 
|---|
|  |  |  | that.show6 = false | 
|---|
|  |  |  | that.show5 = true | 
|---|
|  |  |  | // 循环次数 | 
|---|
|  |  |  | var num = 1 | 
|---|
|  |  |  | // 循环查看解锁结果 | 
|---|
|  |  |  | let timer = setInterval(async () => { | 
|---|
|  |  |  | num += 1 | 
|---|
|  |  |  | let res1 = await that.$u.api.refreshLock({ | 
|---|
|  |  |  | id: res.data.id | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | // 开锁成功 | 
|---|
|  |  |  | if (res1.data.status === 1) { | 
|---|
|  |  |  | that.refresh() | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | that.show5 = false | 
|---|
|  |  |  | setTimeout(() => { | 
|---|
|  |  |  | that.show2 = true | 
|---|
|  |  |  | }, 500) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 开锁失败 | 
|---|
|  |  |  | if (res1.data.status === 3) { | 
|---|
|  |  |  | that.refresh() | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | that.show5 = false | 
|---|
|  |  |  | uni.showToast({ title: '开锁失败', icon: 'error', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 开锁超时 | 
|---|
|  |  |  | if (num === 180) { | 
|---|
|  |  |  | that.refresh() | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | that.show5 = false | 
|---|
|  |  |  | uni.showToast({ title: '开锁超时', icon: 'error', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, 1000) | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | that.show5 = false | 
|---|
|  |  |  | that.disable = false | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | let res = await that.$u.api.getBikeChargingRule({ code: code }) | 
|---|
|  |  |  | if (res.code === 200) { | 
|---|
|  |  |  | that.$refs.d_tram.info = res.data | 
|---|
|  |  |  | that.$refs.d_tram.d_show1 = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | jumpX() { | 
|---|
|  |  |  | uni.navigateTo({ | 
|---|
|  |  |  | url: '/pages/leaseNotice/leaseNotice' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | jumpMap() { | 
|---|
|  |  |  | uni.navigateTo({ | 
|---|
|  |  |  | url: '/pages/maps/maps' | 
|---|
|  |  |  | url: `/pages/maps/maps?type=${this.type}` | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 计价规则 | 
|---|
|  |  |  | 
|---|
|  |  |  | res.data.forEach((item, index) => { | 
|---|
|  |  |  | this.markers.push({ | 
|---|
|  |  |  | id: index, | 
|---|
|  |  |  | width: 30, | 
|---|
|  |  |  | width: 40, | 
|---|
|  |  |  | height: 40, | 
|---|
|  |  |  | latitude: item.latitude, | 
|---|
|  |  |  | longitude: item.longitude, | 
|---|
|  |  |  | title: item.name, | 
|---|
|  |  |  | iconPath: '/static/icon/ic_bike@2x.png', | 
|---|
|  |  |  | addr: item.addr, | 
|---|
|  |  |  | clusterId: 1, | 
|---|
|  |  |  | joinCluster: true | 
|---|
|  |  |  | addr: item.addr | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.clickcontrol() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 结算 | 
|---|
|  |  |  | settlement1() { | 
|---|
|  |  |  | this.$u.api.goodsOrderSettlement({ | 
|---|
|  |  |  | orderId: this.info.goodsOrderId | 
|---|
|  |  |  | }).then(res => { | 
|---|
|  |  |  | if (res.code === 200) { | 
|---|
|  |  |  | if (this.isDisabled) { | 
|---|
|  |  |  | this.isDisabled = false | 
|---|
|  |  |  | this.$u.api.goodsOrderSettlement({}).then(res => { | 
|---|
|  |  |  | if (res.code === 200) { | 
|---|
|  |  |  | this.show3 = false | 
|---|
|  |  |  | this.show6 = false | 
|---|
|  |  |  | this.show7 = false | 
|---|
|  |  |  | uni.showToast({ title: '结算申请提交成功,请耐心等待退款!', icon: 'none', duration: 2000 }); | 
|---|
|  |  |  | // this.refresh() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }).finally(() => { | 
|---|
|  |  |  | this.refresh() | 
|---|
|  |  |  | uni.showToast({ title: '结算成功!', icon: 'success', duration: 2000 }); | 
|---|
|  |  |  | // this.info.rideStatus = -1 | 
|---|
|  |  |  | // this.info.depositStatus = 0 | 
|---|
|  |  |  | this.show3 = false | 
|---|
|  |  |  | this.show7 = false | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | this.isDisabled = true | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | minute() { | 
|---|
|  |  |  | this.show3 = false | 
|---|
|  |  |  | if (this.info.rideStatus !== -1) { | 
|---|
|  |  |  | if (this.info.rideStatus != -1) { | 
|---|
|  |  |  | this.show6 = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | settlement() { | 
|---|
|  |  |  | if (this.info.depositStatus === 2) { | 
|---|
|  |  |  | uni.showToast({ title: '结算申请提交成功,请耐心等待退款!', icon: 'none', duration: 2000 }); | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.show6 = false | 
|---|
|  |  |  | this.show3 = true | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 跳转 | 
|---|
|  |  |  | jump(item) { | 
|---|
|  |  |  | async jump(item) { | 
|---|
|  |  |  | await this.refresh() | 
|---|
|  |  |  | if (item.id === 3) { | 
|---|
|  |  |  | uni.navigateTo({ | 
|---|
|  |  |  | url: '/pages/pricingRules/pricingRules' | 
|---|
|  |  |  | 
|---|
|  |  |  | } else if (item.id === 4) { | 
|---|
|  |  |  | uni.navigateTo({ | 
|---|
|  |  |  | url: '/pages/consumptionDetails/consumptionDetails' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } else if (item.id === 5) { | 
|---|
|  |  |  | if (!this.userInfo.sysuser) { | 
|---|
|  |  |  | uni.navigateTo({ | 
|---|
|  |  |  | url: '/pages/operationLogin/operationLogin' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | uni.navigateTo({ | 
|---|
|  |  |  | url: '/pages/operationsCenter/operationsCenter' | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if (item.id === 2) { | 
|---|
|  |  |  | if (!this.userInfo.mobile) return | 
|---|
|  |  |  | if (this.info.rideStatus === 1) { | 
|---|
|  |  |  | uni.showToast({ title: '骑行中不能结算押金', icon: 'none', duration: 2000 }) | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (this.info.depositStatus === 1) { | 
|---|
|  |  |  | // this.settlement1() | 
|---|
|  |  |  | // this.show7 = true | 
|---|
|  |  |  | this.show3 = true | 
|---|
|  |  |  | } else if (this.info.depositStatus === 2) { | 
|---|
|  |  |  | uni.showToast({ title: '结算申请提交成功,请耐心等待退款!', icon: 'none', duration: 2000 }); | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | uni.showToast({ title: '您暂无押金,无需结算!', icon: 'none', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if (item.id === 1) { | 
|---|
|  |  |  | if (!this.userInfo.mobile) return | 
|---|
|  |  |  | if (this.info.depositStatus === 1) { | 
|---|
|  |  |  | uni.showToast({ title: '押金已充值', icon: 'none', duration: 2000 }); | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } else if (this.info.depositStatus === 2) { | 
|---|
|  |  |  | uni.showToast({ title: '结算申请提交成功,请耐心等待退款!', icon: 'none', duration: 2000 }); | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.show1 = true | 
|---|
|  |  |  | 
|---|
|  |  |  | // 骑行明细 | 
|---|
|  |  |  | toRidingDetails() { | 
|---|
|  |  |  | uni.navigateTo({ | 
|---|
|  |  |  | url: `/pages/ridingDetails/ridingDetails?id=${this.info.goodsOrderId}` | 
|---|
|  |  |  | url: `/pages/ridingDetails/ridingDetails?id=${this.info.goodsOrderId}&price=${this.info.deposit / 100}` | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 跳转故障上报 | 
|---|
|  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 押金支付 | 
|---|
|  |  |  | depositPayment() { | 
|---|
|  |  |  | var that = this; | 
|---|
|  |  |  | if (this.active) { | 
|---|
|  |  |  | var that = this; | 
|---|
|  |  |  | this.$u.api.createGoodsOrderPay() | 
|---|
|  |  |  | .then(res => { | 
|---|
|  |  |  | if (res.code === 200) { | 
|---|
|  |  |  | wx.requestPayment({ | 
|---|
|  |  |  | timeStamp: res.data.timeStamp, | 
|---|
|  |  |  | nonceStr: res.data.nonceStr, | 
|---|
|  |  |  | package: res.data.packageValue, | 
|---|
|  |  |  | signType: 'MD5', | 
|---|
|  |  |  | paySign: res.data.paySign, | 
|---|
|  |  |  | success (res) { | 
|---|
|  |  |  | if (res.errMsg = 'requestPayment:ok') { | 
|---|
|  |  |  | that.show1 = false | 
|---|
|  |  |  | that.info.depositStatus = 1 | 
|---|
|  |  |  | that.carRental() | 
|---|
|  |  |  | that.refresh() | 
|---|
|  |  |  | uni.showToast({ title: '充值成功', icon: 'success', duration: 2000 }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (!this.disable) { | 
|---|
|  |  |  | that.disable = true | 
|---|
|  |  |  | that.$u.api.createGoodsOrderPay() | 
|---|
|  |  |  | .then(res => { | 
|---|
|  |  |  | if (res.code === 200) { | 
|---|
|  |  |  | wx.requestPayment({ | 
|---|
|  |  |  | timeStamp: res.data.timeStamp, | 
|---|
|  |  |  | nonceStr: res.data.nonceStr, | 
|---|
|  |  |  | package: res.data.packageVal, | 
|---|
|  |  |  | signType: 'MD5', | 
|---|
|  |  |  | paySign: res.data.paySign, | 
|---|
|  |  |  | success (res) { | 
|---|
|  |  |  | that.disable = false | 
|---|
|  |  |  | if (res.errMsg = 'requestPayment:ok') { | 
|---|
|  |  |  | that.show1 = false | 
|---|
|  |  |  | that.info.depositStatus = 1 | 
|---|
|  |  |  | that.carRental() | 
|---|
|  |  |  | uni.showToast({ title: '充值成功', icon: 'success', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | fail(err) { | 
|---|
|  |  |  | that.disable = false | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | fail(err) { | 
|---|
|  |  |  | console.log(err) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }).catch((err) => { | 
|---|
|  |  |  | that.disable = false | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | uni.showToast({ | 
|---|
|  |  |  | title: '请先勾选协议', | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 扫码租车 | 
|---|
|  |  |  | carRental() { | 
|---|
|  |  |  | // 判断有没有交押金 | 
|---|
|  |  |  | if (this.info.depositStatus === 0) { | 
|---|
|  |  |  | this.show1 = true | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | async carRental() { | 
|---|
|  |  |  | var that = this; | 
|---|
|  |  |  | // 扫码解锁骑行 | 
|---|
|  |  |  | uni.scanCode({ | 
|---|
|  |  |  | success: async function(result) { | 
|---|
|  |  |  | // 打开开锁弹框 | 
|---|
|  |  |  | that.show5 = true | 
|---|
|  |  |  | // 调用开锁接口 | 
|---|
|  |  |  | let res = await that.$u.api.openLock({ | 
|---|
|  |  |  | code: result.result | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | if (res.code === 200) { | 
|---|
|  |  |  | that.show6 = false | 
|---|
|  |  |  | that.show5 = true | 
|---|
|  |  |  | // 循环次数 | 
|---|
|  |  |  | var num = 1 | 
|---|
|  |  |  | // 循环查看解锁结果 | 
|---|
|  |  |  | let timer = setInterval(async () => { | 
|---|
|  |  |  | num += 1 | 
|---|
|  |  |  | let res1 = await that.$u.api.refreshLock({ | 
|---|
|  |  |  | id: res.data.id | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | // 开锁成功 | 
|---|
|  |  |  | if (res1.data.status === 1) { | 
|---|
|  |  |  | that.refresh() | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | that.show5 = false | 
|---|
|  |  |  | setTimeout(() => { | 
|---|
|  |  |  | that.show2 = true | 
|---|
|  |  |  | }, 500) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 开锁失败 | 
|---|
|  |  |  | if (res1.data.status === 3) { | 
|---|
|  |  |  | that.refresh() | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | that.show5 = false | 
|---|
|  |  |  | uni.showToast({ title: '开锁失败', icon: 'error', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 开锁超时 | 
|---|
|  |  |  | if (num === 120) { | 
|---|
|  |  |  | that.refresh() | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | that.show5 = false | 
|---|
|  |  |  | uni.showToast({ title: '开锁超时', icon: 'error', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, 1000) | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | that.show5 = false | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | let res = await this.$u.api.home() | 
|---|
|  |  |  | if (res.code === 200) { | 
|---|
|  |  |  | this.info = res.data | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 判断有没有交押金 | 
|---|
|  |  |  | if (this.info.depositStatus === 0) { | 
|---|
|  |  |  | this.show1 = true | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } else if (this.info.depositStatus === 2) { | 
|---|
|  |  |  | uni.showToast({ title: '结算申请提交成功,请耐心等待退款!', icon: 'none', duration: 2000 }); | 
|---|
|  |  |  | return; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 扫码获取车辆信息 | 
|---|
|  |  |  | uni.scanCode({ | 
|---|
|  |  |  | success: async function(result) { | 
|---|
|  |  |  | let code = decodeURIComponent(result.path).split('=')[1] | 
|---|
|  |  |  | let res = await that.$u.api.getBikeChargingRule({ code }) | 
|---|
|  |  |  | // 自行车 | 
|---|
|  |  |  | if (res.code === 200 && res.data.ridesType === 0) { | 
|---|
|  |  |  | that.disable = true | 
|---|
|  |  |  | that.show5 = true | 
|---|
|  |  |  | // 调用开锁接口 | 
|---|
|  |  |  | let bicycle = await that.$u.api.openLock({ code }) | 
|---|
|  |  |  | if (bicycle.code === 200) { | 
|---|
|  |  |  | that.disable = false | 
|---|
|  |  |  | that.show6 = false | 
|---|
|  |  |  | that.show5 = true | 
|---|
|  |  |  |  | 
|---|
|  |  |  | // 循环次数 | 
|---|
|  |  |  | var num = 1 | 
|---|
|  |  |  | // 循环查看解锁结果 | 
|---|
|  |  |  | let timer = setInterval(async () => { | 
|---|
|  |  |  | num += 1 | 
|---|
|  |  |  | let res1 = await that.$u.api.refreshLock({ id: bicycle.data.id }) | 
|---|
|  |  |  | // 开锁成功 | 
|---|
|  |  |  | if (res1.data.status === 1) { | 
|---|
|  |  |  | that.refresh() | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | that.show5 = false | 
|---|
|  |  |  | setTimeout(() => { | 
|---|
|  |  |  | that.show2 = true | 
|---|
|  |  |  | }, 500) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 开锁失败 | 
|---|
|  |  |  | if (res1.data.status === 3) { | 
|---|
|  |  |  | that.refresh() | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | that.show5 = false | 
|---|
|  |  |  | uni.showToast({ title: '开锁失败', icon: 'error', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 开锁超时 | 
|---|
|  |  |  | if (num === 180) { | 
|---|
|  |  |  | that.refresh() | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | that.show5 = false | 
|---|
|  |  |  | uni.showToast({ title: '开锁超时', icon: 'error', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, 1000) | 
|---|
|  |  |  | } else { | 
|---|
|  |  |  | that.show5 = false | 
|---|
|  |  |  | that.disable = false | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if (res.code === 200 && res.data.ridesType === 1) { | 
|---|
|  |  |  | that.$refs.d_tram.info = res.data | 
|---|
|  |  |  | that.$refs.d_tram.d_show1 = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | fail() { | 
|---|
|  |  |  | that.disable = false | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 获取经纬度 | 
|---|
|  |  |  | getAddress() { | 
|---|
|  |  |  | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 刷新骑行状态 | 
|---|
|  |  |  | refreshStatus() { | 
|---|
|  |  |  | this.timer = setInterval(async () => { | 
|---|
|  |  |  | let res = await this.$u.api.home() | 
|---|
|  |  |  | if (res.code === 200) { | 
|---|
|  |  |  | this.info = res.data | 
|---|
|  |  |  | // 骑行中 | 
|---|
|  |  |  | if (res.data.rideStatus === 1) { | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.show2 = false | 
|---|
|  |  |  | // 已换车 | 
|---|
|  |  |  | if (res.data.rideStatus === 2) { | 
|---|
|  |  |  | this.show6 = true | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (res.data.rideStatus === -1) { | 
|---|
|  |  |  | this.show6 = false | 
|---|
|  |  |  | } | 
|---|
|  |  |  | clearInterval(this.timer) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, 10000) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 刷新电车信息 | 
|---|
|  |  |  | refreshTram() { | 
|---|
|  |  |  | this.timerdian = setInterval(() => { | 
|---|
|  |  |  | this.$u.api.home() | 
|---|
|  |  |  | .then(res => { | 
|---|
|  |  |  | if (res.code === 200) { | 
|---|
|  |  |  | this.info = res.data | 
|---|
|  |  |  | // 未查到骑行订单 | 
|---|
|  |  |  | if (!res.data.memberRidesResponse) { | 
|---|
|  |  |  | this.$refs.d_tram.d_show = false | 
|---|
|  |  |  | this.$refs.d_tram.d_show1 = false | 
|---|
|  |  |  | this.$refs.d_tram.d_show2 = false | 
|---|
|  |  |  | this.$refs.d_tram.d_show3 = false | 
|---|
|  |  |  | this.$refs.d_tram.d_show4 = false | 
|---|
|  |  |  | this.$refs.d_tram.d_show5 = false | 
|---|
|  |  |  | this.$refs.d_tram.d_show6 = false | 
|---|
|  |  |  | this.$refs.d_tram.d_show7 = false | 
|---|
|  |  |  | this.$refs.d_tram.d_show8 = false | 
|---|
|  |  |  | this.$refs.d_tram.d_show9 = false | 
|---|
|  |  |  | clearInterval(this.timerdian) | 
|---|
|  |  |  | this.timerdian = null | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, 30000) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 获取首页信息 | 
|---|
|  |  |  | getHomeInfo() { | 
|---|
|  |  |  | var that = this | 
|---|
|  |  |  | this.$u.api.home() | 
|---|
|  |  |  | .then(res => { | 
|---|
|  |  |  | .then(async res => { | 
|---|
|  |  |  | if (res.code === 200) { | 
|---|
|  |  |  | this.info = res.data | 
|---|
|  |  |  | console.log('是否弹出广告图', res.data.adList.length > 0 && !res.data.memberRidesResponse) | 
|---|
|  |  |  | // 是否弹出广告图 | 
|---|
|  |  |  | if (res.data.adList.length > 0) { | 
|---|
|  |  |  | if (res.data.adList.length > 0 && !res.data.memberRidesResponse) { | 
|---|
|  |  |  | this.show = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 解锁中 | 
|---|
|  |  |  | if (res.data.rideStatus === 0) { | 
|---|
|  |  |  | this.show5 = true | 
|---|
|  |  |  | // 循环次数 | 
|---|
|  |  |  | var num = 1 | 
|---|
|  |  |  | // 循环查看解锁结果 | 
|---|
|  |  |  | let timer = setInterval(async () => { | 
|---|
|  |  |  | num += 1 | 
|---|
|  |  |  | let res1 = await this.$u.api.refreshLock({ | 
|---|
|  |  |  | id: res.data.memberRidesResponse.rideId | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | // 开锁成功 | 
|---|
|  |  |  | if (res1.data.status === 1) { | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | this.show5 = false | 
|---|
|  |  |  | setTimeout(() => { | 
|---|
|  |  |  | this.show2 = true | 
|---|
|  |  |  | }, 500) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 开锁失败 | 
|---|
|  |  |  | if (res1.data.status === 3) { | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | this.show5 = false | 
|---|
|  |  |  | uni.showToast({ title: '开锁失败', icon: 'error', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 开锁超时 | 
|---|
|  |  |  | if (num === 120) { | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | this.show5 = false | 
|---|
|  |  |  | uni.showToast({ title: '开锁超时', icon: 'error', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, 1000) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (res.data.rideStatus === 1) { | 
|---|
|  |  |  | this.show2 = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (res.data.rideStatus === 5) { | 
|---|
|  |  |  | this.show5 = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (res.data.rideStatus === 2) { | 
|---|
|  |  |  | this.show6 = true | 
|---|
|  |  |  | // 自行车 | 
|---|
|  |  |  | if (res.data.memberRidesResponse && res.data.memberRidesResponse.ridesType === 0) { | 
|---|
|  |  |  | // 解锁中 | 
|---|
|  |  |  | if (res.data.rideStatus === 0) { | 
|---|
|  |  |  | this.show5 = true | 
|---|
|  |  |  | // 循环次数 | 
|---|
|  |  |  | var num = 1 | 
|---|
|  |  |  | // 循环查看解锁结果 | 
|---|
|  |  |  | let timer = setInterval(async () => { | 
|---|
|  |  |  | num += 1 | 
|---|
|  |  |  | let res1 = await this.$u.api.refreshLock({ | 
|---|
|  |  |  | id: res.data.memberRidesResponse.rideId | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | // 开锁成功 | 
|---|
|  |  |  | if (res1.data.status === 1) { | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | this.show5 = false | 
|---|
|  |  |  | setTimeout(() => { | 
|---|
|  |  |  | this.show2 = true | 
|---|
|  |  |  | }, 500) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 开锁失败 | 
|---|
|  |  |  | if (res1.data.status === 3) { | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | this.show5 = false | 
|---|
|  |  |  | uni.showToast({ title: '开锁失败', icon: 'error', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 开锁超时 | 
|---|
|  |  |  | if (num === 180) { | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | this.show5 = false | 
|---|
|  |  |  | uni.showToast({ title: '开锁超时', icon: 'error', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, 1000) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 骑行中 | 
|---|
|  |  |  | if (res.data.rideStatus === 1) { | 
|---|
|  |  |  | this.show2 = true | 
|---|
|  |  |  | this.refreshStatus() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (res.data.rideStatus === 5) { | 
|---|
|  |  |  | this.show5 = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (res.data.rideStatus === 2) { | 
|---|
|  |  |  | this.show6 = true | 
|---|
|  |  |  | this.refreshStatus() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if (res.data.memberRidesResponse && res.data.memberRidesResponse.ridesType === 1) { | 
|---|
|  |  |  | that.$refs.d_tram.info = { | 
|---|
|  |  |  | ...res.data.memberRidesResponse.discountMember, | 
|---|
|  |  |  | ...res.data.memberRidesResponse, | 
|---|
|  |  |  | deposit: res.data.deposit, | 
|---|
|  |  |  | goodsOrderId: res.data.goodsOrderId | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 骑行中 | 
|---|
|  |  |  | if (res.data.rideStatus === 1) { | 
|---|
|  |  |  | that.$refs.d_tram.d_show3 = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 临时锁车 | 
|---|
|  |  |  | if (res.data.rideStatus === 4) { | 
|---|
|  |  |  | that.$refs.d_tram.d_show4 = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 是否营业 | 
|---|
|  |  |  | if (res.data.isBusiness === 0) { | 
|---|
|  |  |  | this.title = '暂停营业提醒' | 
|---|
|  |  |  | this.content = res.data.unBusinessTips | 
|---|
|  |  |  | this.show4 = true | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 是否停止服务 | 
|---|
|  |  |  | if (res.data.isStopServe === 1) { | 
|---|
|  |  |  | this.title = '暂停服务提醒' | 
|---|
|  |  |  | this.content = res.data.stopServeTips | 
|---|
|  |  |  | this.show4 = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | this.tcList = res.data.discountList | 
|---|
|  |  |  | let arr = JSON.parse(res.data.eleBusinessArea) | 
|---|
|  |  |  | this.eleBusinessArea[0].points = arr.map(item => { | 
|---|
|  |  |  | return { | 
|---|
|  |  |  | latitude: item.lat, | 
|---|
|  |  |  | longitude: item.lng | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | // 刷新首页信息 | 
|---|
|  |  |  | refresh() { | 
|---|
|  |  |  | refresh(type) { | 
|---|
|  |  |  | this.$u.api.home() | 
|---|
|  |  |  | .then(res => { | 
|---|
|  |  |  | uni.stopPullDownRefresh() | 
|---|
|  |  |  | if (res.code === 200) { | 
|---|
|  |  |  | this.info = res.data | 
|---|
|  |  |  | // 解锁中 | 
|---|
|  |  |  | if (res.data.rideStatus === 0) { | 
|---|
|  |  |  | this.show5 = true | 
|---|
|  |  |  | // 循环次数 | 
|---|
|  |  |  | var num = 1 | 
|---|
|  |  |  | // 循环查看解锁结果 | 
|---|
|  |  |  | let timer = setInterval(async () => { | 
|---|
|  |  |  | num += 1 | 
|---|
|  |  |  | let res1 = await this.$u.api.refreshLock({ | 
|---|
|  |  |  | id: res.data.memberRidesResponse.rideId | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | // 开锁成功 | 
|---|
|  |  |  | if (res1.data.status === 1) { | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | this.show5 = false | 
|---|
|  |  |  | setTimeout(() => { | 
|---|
|  |  |  | this.show2 = true | 
|---|
|  |  |  | }, 500) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 开锁失败 | 
|---|
|  |  |  | if (res1.data.status === 3) { | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | this.show5 = false | 
|---|
|  |  |  | uni.showToast({ title: '开锁失败', icon: 'error', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 开锁超时 | 
|---|
|  |  |  | if (num === 120) { | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | this.show5 = false | 
|---|
|  |  |  | uni.showToast({ title: '开锁超时', icon: 'error', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, 1000) | 
|---|
|  |  |  | if (type === 'tram') { | 
|---|
|  |  |  | this.refreshTram() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (res.data.rideStatus === 1) { | 
|---|
|  |  |  | this.show2 = true | 
|---|
|  |  |  | // 未查到骑行订单 | 
|---|
|  |  |  | if (!res.data.memberRidesResponse && this.onPullDownRefresh) { | 
|---|
|  |  |  | this.show1 = false | 
|---|
|  |  |  | this.show2 = false | 
|---|
|  |  |  | this.show3 = false | 
|---|
|  |  |  | this.show4 = false | 
|---|
|  |  |  | this.show5 = false | 
|---|
|  |  |  | this.show6 = false | 
|---|
|  |  |  | this.show7 = false | 
|---|
|  |  |  |  | 
|---|
|  |  |  | this.$refs.d_tram.d_show = false | 
|---|
|  |  |  | this.$refs.d_tram.d_show1 = false | 
|---|
|  |  |  | this.$refs.d_tram.d_show2 = false | 
|---|
|  |  |  | this.$refs.d_tram.d_show3 = false | 
|---|
|  |  |  | this.$refs.d_tram.d_show4 = false | 
|---|
|  |  |  | this.$refs.d_tram.d_show5 = false | 
|---|
|  |  |  | this.$refs.d_tram.d_show6 = false | 
|---|
|  |  |  | this.$refs.d_tram.d_show7 = false | 
|---|
|  |  |  | this.$refs.d_tram.d_show8 = false | 
|---|
|  |  |  | this.$refs.d_tram.d_show9 = false | 
|---|
|  |  |  | this.onPullDownRefresh = false | 
|---|
|  |  |  | return | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (res.data.rideStatus === 5) { | 
|---|
|  |  |  | this.show5 = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (res.data.rideStatus === 2) { | 
|---|
|  |  |  | this.show6 = true | 
|---|
|  |  |  | // 自行车 | 
|---|
|  |  |  | if (res.data.memberRidesResponse.ridesType === 0) { | 
|---|
|  |  |  | // 解锁中 | 
|---|
|  |  |  | if (res.data.rideStatus === 0) { | 
|---|
|  |  |  | this.show5 = true | 
|---|
|  |  |  | // 循环次数 | 
|---|
|  |  |  | var num = 1 | 
|---|
|  |  |  | // 循环查看解锁结果 | 
|---|
|  |  |  | let timer = setInterval(async () => { | 
|---|
|  |  |  | num += 1 | 
|---|
|  |  |  | let res1 = await this.$u.api.refreshLock({ | 
|---|
|  |  |  | id: res.data.memberRidesResponse.rideId | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | // 开锁成功 | 
|---|
|  |  |  | if (res1.data.status === 1) { | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | this.show5 = false | 
|---|
|  |  |  | setTimeout(() => { | 
|---|
|  |  |  | this.show2 = true | 
|---|
|  |  |  | }, 500) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 开锁失败 | 
|---|
|  |  |  | if (res1.data.status === 3) { | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | this.show5 = false | 
|---|
|  |  |  | uni.showToast({ title: '开锁失败', icon: 'error', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 开锁超时 | 
|---|
|  |  |  | if (num === 180) { | 
|---|
|  |  |  | clearInterval(timer) | 
|---|
|  |  |  | this.show5 = false | 
|---|
|  |  |  | uni.showToast({ title: '开锁超时', icon: 'error', duration: 2000 }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, 1000) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (res.data.rideStatus === 1) { | 
|---|
|  |  |  | this.show2 = true | 
|---|
|  |  |  | this.refreshStatus() | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (res.data.rideStatus === 5) { | 
|---|
|  |  |  | this.show5 = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (res.data.rideStatus === 2) { | 
|---|
|  |  |  | this.show6 = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } else if (res.data.memberRidesResponse.ridesType === 1) { | 
|---|
|  |  |  | this.$refs.d_tram.info = { | 
|---|
|  |  |  | ...res.data.memberRidesResponse.discountMember, | 
|---|
|  |  |  | ...res.data.memberRidesResponse, | 
|---|
|  |  |  | deposit: res.data.deposit, | 
|---|
|  |  |  | goodsOrderId: res.data.goodsOrderId | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 骑行中 | 
|---|
|  |  |  | if (res.data.rideStatus === 1) { | 
|---|
|  |  |  | this.$refs.d_tram.d_show3 = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | // 临时锁车 | 
|---|
|  |  |  | if (res.data.rideStatus === 4) { | 
|---|
|  |  |  | this.$refs.d_tram.d_show4 = true | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }) | 
|---|
|  |  |  | 
|---|
|  |  |  | phoneNumber: mobile | 
|---|
|  |  |  | }); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | }, | 
|---|
|  |  |  | destroyed() { | 
|---|
|  |  |  | clearInterval(this.timer) | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | </script> | 
|---|
|  |  |  | 
|---|
|  |  |  | <style lang="scss" scoped> | 
|---|
|  |  |  | .index { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | height: auto; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .index_nav { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | height: auto; | 
|---|
|  |  |  | background: repeating-linear-gradient(to bottom, #9AE2DF, #ffffff); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .index_nav_b { | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .index_nav_box { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | padding: 0 30rpx; | 
|---|
|  |  |  | box-sizing: border-box; | 
|---|
|  |  |  | position: sticky; | 
|---|
|  |  |  | z-index: 9; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | text { | 
|---|
|  |  |  | font-size: 38rpx; | 
|---|
|  |  |  | font-family: PingFangSC-Semibold, PingFang SC; | 
|---|
|  |  |  | font-weight: 600; | 
|---|
|  |  |  | color: #222222; | 
|---|
|  |  |  | height: auto; | 
|---|
|  |  |  | position: fixed; | 
|---|
|  |  |  | top: 0; | 
|---|
|  |  |  | left: 0; | 
|---|
|  |  |  | z-index: 999; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .index_nav_b { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | padding: 0 30rpx; | 
|---|
|  |  |  | box-sizing: border-box; | 
|---|
|  |  |  | position: fixed; | 
|---|
|  |  |  | z-index: 9; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | text { | 
|---|
|  |  |  | font-size: 38rpx; | 
|---|
|  |  |  | font-family: PingFangSC-Semibold, PingFang SC; | 
|---|
|  |  |  | font-weight: 600; | 
|---|
|  |  |  | color: #222222; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .index_box { | 
|---|
|  |  |  | 
|---|
|  |  |  | padding: 6rpx; | 
|---|
|  |  |  | box-sizing: border-box; | 
|---|
|  |  |  | position: relative; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .index_box_map_type { | 
|---|
|  |  |  | position: absolute; | 
|---|
|  |  |  | bottom: 20rpx; | 
|---|
|  |  |  | left: 50%; | 
|---|
|  |  |  | width: 244rpx; | 
|---|
|  |  |  | height: 56rpx; | 
|---|
|  |  |  | transform: translate(-50%, 0); | 
|---|
|  |  |  | background: #FFFFFF; | 
|---|
|  |  |  | box-shadow: 0rpx 0rpx 12rpx 0rpx rgba(0,0,0,0.08); | 
|---|
|  |  |  | border-radius: 16rpx; | 
|---|
|  |  |  | padding: 6rpx; | 
|---|
|  |  |  | box-sizing: border-box; | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | justify-content: space-between; | 
|---|
|  |  |  | .index_box_map_type_row { | 
|---|
|  |  |  | width: 116rpx; | 
|---|
|  |  |  | height: 44rpx; | 
|---|
|  |  |  | line-height: 44rpx; | 
|---|
|  |  |  | text-align: center; | 
|---|
|  |  |  | border-radius: 12rpx; | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | font-size: 28rpx; | 
|---|
|  |  |  | color: #666666; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .active { | 
|---|
|  |  |  | background: rgba(1,182,173,0.08) !important; | 
|---|
|  |  |  | color: #01B6AD; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .map { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | height: 100%; | 
|---|
|  |  |  | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | position: relative; | 
|---|
|  |  |  | top: -16rpx; | 
|---|
|  |  |  | // filter: blur(3px); | 
|---|
|  |  |  | // -webkit-filter: blur(3px); | 
|---|
|  |  |  | background: linear-gradient(270deg, #C5FAF7 0%, rgba(10,201,192,0.63) 65%, rgba(214,251,249,0.81) 100%); | 
|---|
|  |  |  | box-shadow: inset 0rpx 1rpx 0rpx 0rpx #E3FFFE; | 
|---|
|  |  |  | border-radius: 20rpx 20rpx 0rpx 0rpx; | 
|---|
|  |  |  | backdrop-filter: blur(3px); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .index_box_title_left { | 
|---|
|  |  |  | flex: 1; | 
|---|
|  |  |  | 
|---|
|  |  |  | border-radius: 20rpx; | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | justify-content: space-between; | 
|---|
|  |  |  | flex-wrap: wrap; | 
|---|
|  |  |  | position: relative; | 
|---|
|  |  |  | top: -24rpx; | 
|---|
|  |  |  | text { | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .cXYC { | 
|---|
|  |  |  | width: 23%; | 
|---|
|  |  |  | position: relative; | 
|---|
|  |  |  | button { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | height: 100%; | 
|---|
|  |  |  | position: absolute; | 
|---|
|  |  |  | top: 0; | 
|---|
|  |  |  | left: 0; | 
|---|
|  |  |  | background-color: rgba(0,0,0,0); | 
|---|
|  |  |  | border: none; | 
|---|
|  |  |  | opacity: 0; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .index_box_vip { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | padding: 24rpx 30rpx; | 
|---|
|  |  |  | box-sizing: border-box; | 
|---|
|  |  |  | background: linear-gradient(#FCEADC 0%, #FFFFFF 100%); | 
|---|
|  |  |  | border-radius: 20rpx; | 
|---|
|  |  |  | .index_box_vip_head { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | justify-content: space-between; | 
|---|
|  |  |  | text { | 
|---|
|  |  |  | &:nth-child(1) { | 
|---|
|  |  |  | font-weight: 600; | 
|---|
|  |  |  | font-size: 34rpx; | 
|---|
|  |  |  | color: #303030; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | &:nth-child(2) { | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | font-size: 26rpx; | 
|---|
|  |  |  | color: #666666; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .scrollView { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | margin-top: 20rpx; | 
|---|
|  |  |  | white-space: nowrap; | 
|---|
|  |  |  | .index_box_vip_row { | 
|---|
|  |  |  | display: inline-block; | 
|---|
|  |  |  | width: 580rpx; | 
|---|
|  |  |  | height: 216rpx; | 
|---|
|  |  |  | background: #FFFFFF; | 
|---|
|  |  |  | box-shadow: 0rpx 4rpx 16rpx 0rpx rgba(0,0,0,0.06); | 
|---|
|  |  |  | border-radius: 12rpx; | 
|---|
|  |  |  | margin-right: 16rpx; | 
|---|
|  |  |  | padding: 24rpx; | 
|---|
|  |  |  | box-sizing: border-box; | 
|---|
|  |  |  | &:last-child { | 
|---|
|  |  |  | margin: 0 !important; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .vip1 { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | justify-content: space-between; | 
|---|
|  |  |  | .vip1_left { | 
|---|
|  |  |  | flex: 1; | 
|---|
|  |  |  | font-weight: 500; | 
|---|
|  |  |  | font-size: 32rpx; | 
|---|
|  |  |  | color: #303030; | 
|---|
|  |  |  | white-space: nowrap; | 
|---|
|  |  |  | overflow: hidden; | 
|---|
|  |  |  | text-overflow: ellipsis; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .vip1_right { | 
|---|
|  |  |  | flex-shrink: 0; | 
|---|
|  |  |  | margin-left: 30rpx; | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | font-size: 40rpx; | 
|---|
|  |  |  | color: #FF5A31; | 
|---|
|  |  |  | white-space: nowrap; | 
|---|
|  |  |  | overflow: hidden; | 
|---|
|  |  |  | text-overflow: ellipsis; | 
|---|
|  |  |  | &:before { | 
|---|
|  |  |  | content: '¥'; | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | font-size: 26rpx; | 
|---|
|  |  |  | color: #FF5A31; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .vip2 { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | justify-content: space-between; | 
|---|
|  |  |  | margin-top: 10rpx; | 
|---|
|  |  |  | margin-bottom: 16rpx; | 
|---|
|  |  |  | text { | 
|---|
|  |  |  | flex: 1; | 
|---|
|  |  |  | white-space: nowrap; | 
|---|
|  |  |  | overflow: hidden; | 
|---|
|  |  |  | text-overflow: ellipsis; | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | font-size: 26rpx; | 
|---|
|  |  |  | color: #777777; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | u { | 
|---|
|  |  |  | flex-shrink: 0; | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | font-size: 24rpx; | 
|---|
|  |  |  | color: #999999; | 
|---|
|  |  |  | text-decoration: line-through; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .vip3 { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | justify-content: space-between; | 
|---|
|  |  |  | .vip3_info { | 
|---|
|  |  |  | padding: 6rpx 12rpx; | 
|---|
|  |  |  | box-sizing: border-box; | 
|---|
|  |  |  | background: rgba(255,90,49,0.1); | 
|---|
|  |  |  | border-radius: 8rpx; | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | font-size: 24rpx; | 
|---|
|  |  |  | color: #FF5A31; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | .vip3_button { | 
|---|
|  |  |  | width: 120rpx; | 
|---|
|  |  |  | height: 60rpx; | 
|---|
|  |  |  | line-height: 60rpx; | 
|---|
|  |  |  | text-align: center; | 
|---|
|  |  |  | background: #01B6AD; | 
|---|
|  |  |  | box-shadow: 0rpx 6rpx 16rpx 0rpx rgba(1,182,173,0.24); | 
|---|
|  |  |  | border-radius: 30rpx; | 
|---|
|  |  |  | font-weight: 500; | 
|---|
|  |  |  | font-size: 28rpx; | 
|---|
|  |  |  | color: #FFFFFF; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .index_box_poster { | 
|---|
|  |  |  | 
|---|
|  |  |  | overflow: hidden; | 
|---|
|  |  |  | margin-top: 20rpx; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .index_zw1 { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | height: calc(env(safe-area-inset-bottom) + 310rpx); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .index_zw { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | height: 336rpx; | 
|---|
|  |  |  | // height: 336rpx; | 
|---|
|  |  |  | height: 680rpx; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .red { | 
|---|
|  |  |  | color: #FC2525 !important; | 
|---|
|  |  |  | font-size: 30rpx !important; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | text { | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .info_des_tc { | 
|---|
|  |  |  | width: 100%; | 
|---|
|  |  |  | height: 60rpx; | 
|---|
|  |  |  | line-height: 60rpx; | 
|---|
|  |  |  | background: #F4EFEA; | 
|---|
|  |  |  | border-radius: 16rpx; | 
|---|
|  |  |  | margin: 20rpx 0; | 
|---|
|  |  |  | display: flex; | 
|---|
|  |  |  | align-items: center; | 
|---|
|  |  |  | padding: 0 20rpx; | 
|---|
|  |  |  | box-sizing: border-box; | 
|---|
|  |  |  | text { | 
|---|
|  |  |  | font-weight: 400; | 
|---|
|  |  |  | font-size: 26rpx; | 
|---|
|  |  |  | color: #FF5A31; | 
|---|
|  |  |  | margin-left: 10rpx; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | .ride_content { | 
|---|
|  |  |  | width: 100%; | 
|---|