Files
tcwm-uniapp-shop/pages/order/orderMap.vue
2024-06-06 11:49:50 +08:00

235 lines
5.9 KiB
Vue

<template>
<view>
<map id="map" style="width: 100%; height: 720px;" :latitude="latitude" :longitude="longitude" :markers="markers"
:show-location="true">
</map>
<!-- #ifndef APP-PLUS -->
<cover-view class="controls-title">
<cover-view class="tabs_box">
<cover-image class="pay_img" src="../../static/images/my/avatar.png"></cover-image>
<cover-view class="flex flex-sub margin-left-sm flex-direction justify-between">
<cover-view class="pay_name">骑手预计<text class="text-df">{{rider.mDateTime}}</text>送达</cover-view>
<cover-view class="text-gray margin-top" style="margin-top: 5rpx;">
距离您{{rider.aDouble}}
</cover-view>
</cover-view>
<cover-view class="flex">
<cover-image class="pay_img1 margin-right" @click="goNav" src="../../static/images/my/im.png">
</cover-image>
<cover-image class="pay_img1" @click="call" src="../../static/images/my/phone.png"></cover-image>
</cover-view>
</cover-view>
</cover-view>
<!-- #endif -->
<!-- #ifdef APP-PLUS -->
<cover-view class="controls-titles">
<cover-view class="tabs_box">
<cover-view style="position: relative;top: 0rpx;left: 0rpx;">
<cover-image class="pay_img" src="../../static/images/my/avatar.png"></cover-image>
<cover-view style="position: absolute;top: 5rpx;left: 120rpx;">
<cover-view class="pay_name">骑手预计{{rider.mDateTime}}送达</cover-view>
<cover-view class="text-gray margin-top" style="margin-top: 5rpx;">
距离您{{rider.aDouble}}
</cover-view>
</cover-view>
<cover-view style="position: absolute;top: 5rpx;right: 0rpx;">
<cover-view style="position: relative;top: 0rpx;left: 0rpx;">
<cover-view style="position: absolute;top: 15rpx;right: 40rpx;">
<cover-image class="pay_img1 margin-right" @click="goNav" src="../../static/images/my/im.png">
</cover-image>
</cover-view>
<cover-view style="position: absolute;top: 15rpx;right: 0rpx;">
<cover-image class="pay_img1" @click="call" src="../../static/images/my/phone.png"></cover-image>
</cover-view>
</cover-view>
</cover-view>
</cover-view>
</cover-view>
</cover-view>
<!-- #endif -->
</view>
</template>
<script>
export default {
data() {
return {
latitude: '',
longitude: '',
markers: [], //标记点
indentNumber: '',
riderUserId: '',
orderDetails: {},
rider: {},
timer: '',
orderId:'',
}
},
onLoad(option) {
let that = this
that.indentNumber = option.indentNumber
that.orderId = option.orderId
that.getData()
},
onShow() {
let that = this
this.timer = setInterval(function() {
that.getData()
}, 10000)
},
onHide() {
console.log(this.timer, '定时器')
clearInterval(this.timer)
},
methods: {
getData() {
this.$Request.postT('/app/tbindent/userIndentMessage?indentNumber=' + this.indentNumber).then(res => {
console.log(res)
if (res.code == 0) {
this.orderDetails = res.data
this.riderUserId = this.orderDetails.riderUserId
this.getLocation()
}
});
},
getLocation() {
let data = {
riderUserId: this.riderUserId,
lat: this.orderDetails.userLat,
lng: this.orderDetails.userLng
}
this.$Request.getT('/timedtask/selectRiderLocation', data).then(res => {
if (res.code === 0) {
this.latitude = res.data.riderLocation.lat;
this.longitude = res.data.riderLocation.lng;
this.rider = res.data
let mDateTime = res.data.mDateTime.length - 14;
// this.dataDet.orderCode = res.data.orderCode.substring(start, res.data.orderCode.length)
this.rider.mDateTime = res.data.mDateTime.substring(mDateTime, res.data.mDateTime.length)
if (this.rider.aDouble > 1000) {
this.rider.aDouble = Number((this.rider.aDouble / 1000)).toFixed(2) + "km"
} else {
if (this.rider.aDouble == 0) {
this.rider.aDouble = "0m";
} else {
this.rider.aDouble = Number(this.rider.aDouble).toFixed(1) + "m";
}
}
let marker = {
id: 2,
latitude: res.data.riderLocation.lat,
longitude: res.data.riderLocation.lng,
iconPath: '../../static/images/order/rider.png',
width: '40',
height: '40',
}
this.markers.push(marker)
}
});
},
call() {
uni.makePhoneCall({
phoneNumber: this.orderDetails.phone
});
},
goNav() {
// uni.navigateTo({
// url: '/pages/my/chat'
// })
uni.navigateTo({
url: '/pages/my/im?orderId=' + this.orderId
})
}
},
}
</script>
<style>
.controls-title {
width: 90%;
/* height: 220upx; */
/* line-height: 220upx; */
background: #FFFFFF;
position: fixed;
bottom: 0rpx;
margin: 40upx;
border-radius: 26upx;
box-shadow: 0upx 30upx 40upx 0upx rgba(187, 170, 163, 0.20);
/* margin: 0 40rpx; */
margin-bottom: 50rpx;
}
.controls-titles {
width: 90%;
/* height: 220upx; */
/* line-height: 220upx; */
background: #FFFFFF;
position: fixed;
bottom: 180rpx;
margin: 40upx;
border-radius: 26upx;
box-shadow: 0upx 30upx 40upx 0upx rgba(187, 170, 163, 0.20);
/* margin: 0 40rpx; */
margin-bottom: 50rpx;
}
.tabs_box {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20rpx;
margin: 20rpx;
}
.pay_tit {
flex: 1;
display: flex;
flex-direction: column;
justify-content: space-between;
}
.pay_img {
width: 100rpx;
height: 100rpx;
border-radius: 10rpx;
}
.pay_img1 {
width: 60rpx;
height: 60rpx;
border-radius: 10rpx;
}
.tabs_bottom {
margin: 0 20rpx 20rpx;
display: flex;
}
.pay_btn {
padding: 5rpx 16rpx;
border: solid 2rpx #999999;
margin-right: 20rpx;
display: flex;
align-items: center;
border-radius: 10rpx;
}
.pay_name {
font-size: 28rpx;
font-weight: bold;
display: flex;
flex-wrap: wrap;
}
.pay_line {
height: 2rpx;
background-color: #afafaf;
margin: 10rpx 0;
}
</style>