chuangte_bike_newxcx/page_user/yongche/orderxq.vue
2025-04-16 09:14:52 +08:00

477 lines
11 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<view class="page">
<u-navbar title="订单详情" :border-bottom="false" :background="bgc" title-color='#000' title-size='36' height='45' back-icon-color='#000'></u-navbar>
<view class="jiaoyi">
<view class="pic">
<image src="https://api.ccttiot.com/smartmeter/img/static/uiXte3LpSV30jyvTUR2R" mode=""></image>
<text v-if="info.status == 'PROCESSING'">进行中</text>
<text v-if="info.status == 'WAIT_PAY'">待支付</text>
<text v-if="info.status == 'CANCELED'">已取消</text>
<text v-if="info.status == 'FINISHED'">交易完成</text>
<text v-if="info.status == 'WAIT_VERIFY'">待审核</text>
</view>
<view class="gx">
<text v-if="info.status == 'PROCESSING'">订单进行中</text>
<text v-if="info.status == 'WAIT_PAY'">订单待支付</text>
<text v-if="info.status == 'CANCELED'">订单已取消</text>
<text v-if="info.status == 'FINISHED'">感谢您的支持,欢迎再次光临</text>
<text v-if="info.status == 'WAIT_VERIFY'">订单待审核</text>
</view>
</view>
<view class="ordermx">
<view class="top">
订单明细
</view>
<view class="xuxian">
<view class="one">
<view class="qian">
订单编号
</view>
<view class="shen">
{{info.no == null ? '--' : info.no}} <image src="https://api.ccttiot.com/smartmeter/img/static/uimYURcxkn9ItLquwPpM" mode=""></image>
</view>
</view>
<view class="one">
<view class="qian">
下单时间
</view>
<view class="shen">
{{info.createTime == null ? '--' : info.createTime}}
</view>
</view>
<view class="one">
<view class="qian">
结束时间
</view>
<view class="shen">
{{info.endTime == null ? '--' : info.endTime}}
</view>
</view>
</view>
<view class="xuxian">
<view class="one">
<view class="qian">
骑行费
</view>
<view class="shen">
{{info.ridingFee == null ? '0.00' : info.ridingFee}}元
</view>
</view>
<view class="one">
<view class="qian">
停车点外调度费
</view>
<view class="shen">
{{info.manageFee == null ? '0.00' : info.manageFee}}元
</view>
</view>
<view class="one">
<view class="qian">
运营区外调度费
</view>
<view class="shen">
{{info.dispatchFee == null ? '0.00' : info.dispatchFee}}元
</view>
</view>
</view>
<view class="xuxian">
<view class="one">
<view class="qian">
合计
</view>
<view class="shen">
{{info.totalFee == null ? '0.00' : info.totalFee}}元
</view>
</view>
<view class="one">
<view class="qian">
预存金额
</view>
<view class="shen">
{{info.depositFee == null ? '0.00' : info.depositFee}}元
</view>
</view>
<view class="one">
<view class="qian">
退款金额
</view>
<view class="shen">
{{info.payRefunded == null ? '0.00' : info.payRefunded}}元
</view>
</view>
</view>
<view class="xuxian" style="border: 0;">
<view class="one">
<view class="qian">
实付金额
</view>
<view class="shen">
<span style="color: #E7612E;font-size: 40rpx;">{{info.payAmount == null ? '0.00' : info.payAmount}}</span>元
</view>
</view>
</view>
</view>
<view class="qixing">
<view class="top">
骑行信息
</view>
<view class="xuxian">
<view class="one">
<view class="qian">
骑行时长
</view>
<view class="shen">
{{ rideDuration == '' ? '--' : rideDuration}}
</view>
</view>
<view class="one">
<view class="qian">
骑行距离
</view>
<view class="shen">
{{info.distance > 1000 ? (info.distance / 1000).toFixed(2) + 'km' : info.distance + 'm'}}
</view>
</view>
<view class="one">
<view class="qian">
运营区
</view>
<view class="shen">
{{info.areaName == null ? '--' : info.areaName}}
</view>
</view>
<view class="one">
<view class="qian">
车牌号
</view>
<view class="shen">
{{info.deviceVehicleNum == null ? '--' : info.deviceVehicleNum}}
</view>
</view>
<view class="one">
<view class="qian">
车辆编号SN
</view>
<view class="shen">
{{info.deviceSn == null ? '--' : info.deviceSn}}
</view>
</view>
</view>
</view>
<view class="kefu" @click="btntel">
联系客服
</view>
<!-- 平台客服弹窗 -->
<view class="kefutc" v-if="kefuflag">
<image src="https://api.ccttiot.com/smartmeter/img/static/umtjJg2CJLiOS6hfAEzo" mode="" @click="kefuflag = false"></image>
<view class="box">
<view class="" style="max-height: 280rpx;overflow: scroll;">
<view class="top" v-for="(item,index) in kefulist" :key="index">
<view class="dianhua">
{{item.name == null ? '--' : item.name}}{{item.contact == null ? '--' : item.contact}}
<view class="wz">
工作时间{{item.startTime}}~{{item.endTime}}
</view>
</view>
<view class="boda" @click.stop="btnptkf(item.contact)">
<u-icon name="phone-fill" color="#4297F3" size="28"></u-icon>
<text>拨打</text>
</view>
</view>
</view>
<view class="bot">
<view class="wzs">
客服电话高峰期可能遇忙请耐心等待
</view>
</view>
</view>
</view>
<view class="mask" v-if="kefuflag"></view>
</view>
</template>
<script>
export default {
data() {
return {
bgc: {
backgroundColor: "#fff",
},
id: 0,
info: {},
rideDuration: '' ,// 新增属性用于存储骑行时间
kefulist:[],
kefuflag:false,
}
},
onLoad(e) {
this.id = e.id
this.orderInfo()
},
methods: {
// 请求订单详情
orderInfo() {
this.$u.get("/app/order/mineDetail?id=" + this.id).then((res) => {
if (res.code == 200) {
this.info = res.data
this.calculateRideDuration() // 计算骑行时间
}
})
},
// 计算骑行时间
calculateRideDuration() {
const createTime = new Date(this.info.startTime)
let returnTime = ''
if(this.info.endTime == null){
returnTime = new Date()
}else{
returnTime = new Date(this.info.endTime)
}
console.log(returnTime,'0202020');
const duration = (returnTime - createTime) / 1000// 时间差,单位秒
const hours = Math.floor(duration / 3600)
const minutes = Math.floor((duration % 3600) / 60)
const seconds = Math.floor(duration % 60)
if (hours > 0) {
this.rideDuration = `${hours}小时${minutes}${seconds}`
} else {
this.rideDuration = `${minutes}${seconds}`
}
},
// 点击拨打平台客服电话
btnptkf(tel){
uni.makePhoneCall({
phoneNumber: tel,
success: function(res) {
console.log('拨打电话成功', res)
},
fail: function(err) {
console.error('拨打电话失败', err)
}
})
},
btntel(){
this.$u.get(`/app/customerService/list?pageNum=1&pageSize=999&areald=${this.info.areaId}`).then(res => {
if(res.code == 200){
if(res.rows.length > 0){
this.kefulist = res.rows
this.kefuflag = true
}else{
uni.showToast({
title: '暂无客服电话',
icon: 'none',
duration:2000
})
}
}
})
}
}
}
</script>
<style lang="scss" >
page{
background-color: #F7FAFE;
}
.kefutc{
animation: fadeIn 0.5s ease-in-out forwards;
position: fixed;
top: 660rpx;
left: 50%;
transform: translateX(-50%);
z-index: 10;
.bot{
margin-top: 30rpx;
.wz{
margin-top: 10rpx;
font-weight: 600;
font-size: 28rpx;
color: #3D3D3D;
}
.wzs{
margin-top: 10rpx;
font-size: 24rpx;
color: #7C7C7C;
}
}
.top{
width: 538rpx;
height: 122rpx;
background: #FFFFFF;
box-shadow: 0rpx 0rpx 10rpx 0rpx rgba(0,0,0,0.1);
border-radius: 14rpx 14rpx 14rpx 14rpx;
display: flex;
justify-content: space-between;
align-items: center;
padding-right: 14rpx;
box-sizing: border-box;
margin-top: 20rpx;
.dianhua{
font-weight: 600;
font-size: 28rpx;
color: #3D3D3D;
padding-left: 26rpx;
box-sizing: border-box;
}
.boda{
width: 94rpx;
height: 94rpx;
background: #DCEDFF;
border-radius: 8rpx 8rpx 8rpx 8rpx;
text-align: center;
padding-top: 8rpx;
box-sizing: border-box;
text{
display: block;
}
}
}
image{
position: absolute;
top: -280rpx;
z-index: -1;
left: 50%;
transform: translateX(-50%);
width: 614rpx;
height: 748rpx;
}
}
.mask{
width: 100%;
height: 100vh;
position: fixed;
top: 0;
left: 0;
background-color: rgba(0,0,0,0.3);
z-index: 9;
}
.page{
width: 750rpx;
background: #F7F7F7;
border-radius: 0rpx 0rpx 0rpx 0rpx;
padding-bottom: 200rpx;
box-sizing: border-box;
.kefu{
width: 680rpx;
height: 100rpx;
line-height: 100rpx;
background-color: #4C97E7;
color: #fff;
font-size: 36rpx;
font-weight: 600;
text-align: center;
position: fixed;
left: 50%;
transform: translateX(-50%);
bottom: 50rpx;
border-radius: 20rpx;
}
.qixing{
width: 702rpx;
height: 466rpx;
background: #FFFFFF;
border-radius: 16rpx 16rpx 16rpx 16rpx;
padding: 0 42rpx;
box-sizing: border-box;
margin: auto;
margin-top: 32rpx;
.top{
font-weight: 600;
font-size: 32rpx;
color: #3D3D3D;
padding: 36rpx 0 24rpx 0;
box-sizing: border-box;
border-bottom: 1px dashed #D8D8D8;
}
.xuxian{
.one{
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 30rpx;
.qian{
color: #808080;
font-size: 28rpx;
}
.shen{
color: #3D3D3D;
}
}
}
}
.ordermx{
width: 702rpx;
max-height: 1862rpx;
background: #FFFFFF;
border-radius: 16rpx 16rpx 16rpx 16rpx;
padding: 0 42rpx;
box-sizing: border-box;
margin: auto;
margin-top: 32rpx;
.xuxian{
padding-bottom: 24rpx;
box-sizing: border-box;
border-bottom: 1px dashed #D8D8D8;
.one{
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 30rpx;
.qian{
color: #808080;
font-size: 28rpx;
}
.shen{
color: #3D3D3D;
image{
width: 23rpx;
height: 28rpx;
vertical-align: baseline;
margin-left: 10rpx;
}
}
}
}
.top{
font-weight: 600;
font-size: 32rpx;
color: #3D3D3D;
padding: 36rpx 0 24rpx 0;
box-sizing: border-box;
border-bottom: 1px dashed #D8D8D8;
}
}
.jiaoyi{
width: 702rpx;
height: 182rpx;
background: #FFFFFF;
border-radius: 16rpx 16rpx 16rpx 16rpx;
margin: auto;
text-align: center;
margin-top: 26rpx;
.pic{
padding-top: 34rpx;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
image{
width: 38rpx;
height: 38rpx;
margin-right: 10rpx;
}
font-weight: 600;
font-size: 40rpx;
color: #4C97E7;
}
.gx{
font-size: 28rpx;
color: #808080;
margin-top: 20rpx;
}
}
}
</style>