You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
484 lines
14 KiB
484 lines
14 KiB
<template> |
|
<view class="" style="background-color: #efefef;"> |
|
<cu-custom class="main-topbar bg-main-oil" :isBack="true" bgColor="bg-main-oil"> |
|
<block slot="backText">返回</block> |
|
<block slot="content">{{'支付状态'}}</block> |
|
</cu-custom> |
|
<view class="text-center margin-top icon-container boxsings_main_top"> |
|
<view class="cu-avatar xl round text-sl headImg showIcons"> |
|
<image src="../../static/img/new_logo.png" class='showimgs' mode=""></image> |
|
</view> |
|
</view> |
|
<view class="radius margin bg-white padding-top padding " style="padding-top: 125rpx;"> |
|
<view class=""> |
|
<view class="payStatue_text"> |
|
<text>{{PayTitle}}</text> |
|
</view> |
|
<view class="number text-xl text-center oil-main-color">¥{{displayMoney|numberFormat}}</view> |
|
</view> |
|
<view class="payStatue"> |
|
<view class="payStatue_p" v-if="payState == 0"> |
|
<text>请勿离开当前页面,等待支付完成</text> |
|
</view> |
|
<view class="payStatue_p" v-if="payState == 2"> |
|
<button style="width: 500upx;margin-bottom: 40upx;" v-if="payState == 2" |
|
class="round large cu-btn bg-main-oil" @tap="singleCheck(orderId)">手动刷新</button> |
|
</view> |
|
</view> |
|
<view class="margin-bottom-sm" @tap="copyId(orderInfos.customerId,'司机编号')"> |
|
司机编号 |
|
<text class="fr">{{orderInfos.customerId}}<text :class="orderInfos.customerId?'cuIcon-copy':''" |
|
class="flex-sub padding-left-sm text-right text-lg text-red"> |
|
</text></text> |
|
</view> |
|
<view class="margin-bottom-sm"> |
|
加油司机 |
|
<view class="fr"> |
|
<text>{{ orderInfos.customerName ? orderInfos.customerName : '丰油用户' }}</text> <text |
|
class="padding-left-sm">{{orderInfos.plateNumber|plateFilter}} |
|
</text> |
|
</view> |
|
|
|
</view> |
|
|
|
<!-- <view class="margin-bottom-sm" @tap="copyId(orderItem.carNo,'司机车牌')"> |
|
司机车牌 |
|
<text class="fr">{{orderItem.carNo?orderItem.carNo:'暂无'}}<text :class="orderItem.carNo?'cuIcon-copy':''" class="flex-sub padding-left-sm text-right text-lg text-red"> |
|
</text></text> |
|
</view> --> |
|
|
|
<view class="margin-bottom-sm"> |
|
油枪油号 |
|
<text class="fr">{{orderInfos.oilsBar}}号枪{{orderInfos.oilName||orderInfos.oilsCode}}</text> |
|
</view> |
|
<view class="margin-bottom-sm"> |
|
油机单价 |
|
<text class="fr">¥{{orderInfos.sitePrice||orderInfos.price |UnitPriceFormat}} / 升</text> |
|
</view> |
|
<view class="margin-bottom-sm"> |
|
加油升数 |
|
<text class="fr">{{orderInfos.volume|numberFormat}} 升</text> |
|
</view> |
|
<view class="margin-bottom-sm" v-if="orderSource=='mpxoil'"> |
|
油机总价 |
|
<text class="fr">¥{{displayMoney|numberFormat}}</text> |
|
</view> |
|
|
|
<!-- <view class="margin-bottom-sm" v-if="orderItem.xoilDiscountAmount"> |
|
星卡优惠 |
|
<text class="fr">¥ {{(orderItem.xoilDiscountAmount)|numberFormat}}</text> |
|
</view> |
|
<view class="margin-bottom-sm" v-else> |
|
星卡优惠 |
|
<text class="fr">¥ {{(orderItem.amount-orderItem.realamount)|numberFormat}}</text> |
|
</view> |
|
<view class="margin-bottom-sm"> |
|
优惠券 |
|
<text class="fr">{{orderItem.coupon|couponFormat}}</text> |
|
</view> --> |
|
<!-- <view class="margin-bottom-sm"> |
|
实扣款 |
|
<text class="fr oil-main-color">¥ {{orderItem.realamount|numberFormat}}</text> |
|
</view> --> |
|
</view> |
|
<view class="radius bg-white margin padding "> |
|
<view class="flex padding-bottom-sm"> |
|
<view class="basis-sm"> |
|
加油站名称 |
|
</view> |
|
<view class="basis-lg text-right text-cut">{{orderItem.siteName}}</view> |
|
</view> |
|
<view class="flex padding-bottom-sm"> |
|
<view class="basis-xs"> |
|
地址 |
|
</view> |
|
<view class="basis-xl text-right text-cut">{{orderItem.siteAddress}}</view> |
|
</view> |
|
</view> |
|
<view class="radius bg-white margin margin-bottom-0 padding"> |
|
<view class="margin-bottom-sm" @tap="copyId(orderInfos.orderSerialNumber,'订单号')"> |
|
订单号 |
|
<text class=" fr">{{orderInfos.orderSerialNumber}}<text |
|
class="flex-sub padding-left-sm text-right cuIcon-copy text-lg text-red"> |
|
</text></text> |
|
</view> |
|
<view class="margin-bottom-sm"> |
|
下单时间 |
|
<text class="fr">{{orderInfos.createTime}}</text> |
|
</view> |
|
<!-- <view class="margin-bottom-sm"> |
|
扣款时间 |
|
<text class="fr">{{orderItem.paydatetime}}</text> |
|
</view> --> |
|
<!-- <view class="padding-bottom-sm"> |
|
开票状态 |
|
<text class="fr" v-if="formQr">未开票</text> |
|
<text class="fr" v-else>{{orderItem.invoiceState|invoiceStateFormat}}</text> |
|
</view> --> |
|
<!-- <view class="margin-bottom-sm" v-if="orderItem.paydatetime"> |
|
支付时间 |
|
<text class="fr">{{orderItem.paydatetime}}</text> |
|
</view>--> |
|
</view> |
|
<view class="radius bg-white margin margin-bottom-0 padding" v-if='orderItem.plateNumberImages'> |
|
<view class="flex padding-bottom-sm"> |
|
<view class="basis-sm"> |
|
车辆照片 |
|
</view> |
|
<view class="basis-lg text-right text-cut" @tap="showImg('car')">点击查看</view> |
|
</view> |
|
<view class="flex padding-bottom-sm"> |
|
<view class="basis-xs"> |
|
油站照片 |
|
</view> |
|
<view class="basis-xl text-right text-cut" @tap="showImg('oli')">点击查看</view> |
|
</view> |
|
</view> |
|
<view class="padding-lg padding-top-40 padding-bottom-xl"> |
|
<!-- <button v-show="formQr" @tap="scanQr" class="bg-main-oil margin-bottom"> |
|
<text class="cuIcon-scan padding-right-xs"></text> |
|
继续加油</button> --> |
|
<button v-if="payState == 1" class="round large cu-btn bg-main-oil btn-oils" |
|
@tap="toDetails(orderId)">前往订单</button> |
|
<button v-if="payState == 2" class="round large cu-btn bg-main-oil btn-oils" |
|
@tap="getScanning()">重新扫码下单</button> |
|
<button v-if="payState != 0" class="round large cu-btn bg-main-oil btn-oils" |
|
@tap="gotoHome()">返回首页</button> |
|
<!-- <button class="bg-red light margin-bottom" @tap="backHome"> |
|
<text class="cuIcon-home padding-right-xs"></text> |
|
返回首页</button> --> |
|
|
|
</view> |
|
<u-popup v-model="show" mode="center" @close="close"> |
|
<view style="width: 100%;height: 100%;"> |
|
<image :src="showUrl" style=" max-width: 80%;max-height: 80%;" mode=""></image> |
|
</view> |
|
</u-popup> |
|
<!-- <view class="margin-sm bg-white padding-lg"> |
|
<view class="padding-top margin-bottom"></view> |
|
<view class="text-xsl text-center"> |
|
<text class="cuIcon-rechargefill oil-main-color"></text> |
|
</view> |
|
<view class="text-center text-bold" style='font-size:40upx;margin-bottom: 40upx;'> |
|
{{PayTitle}} |
|
</view> |
|
<view class="text-center"> |
|
<button style="width: 500upx;margin-bottom: 40upx;" v-if="payState == 1" class="round large cu-btn bg-main-oil" @tap="toDetails(orderId)">前往订单</button> |
|
<button style="width: 500upx;margin-bottom: 40upx;" v-if="payState == 2" class="round large cu-btn bg-main-oil" @tap="getScanning()">重新扫码下单</button> |
|
<button style="width: 500upx; margin-bottom: 40upx;" v-if="payState != 0" class="round large cu-btn bg-main-oil" @tap="gotoHome()">返回首页</button> |
|
</view> |
|
</view> |
|
<view class="margin-sm bg-white padding"> |
|
<view class="margin-bottom-sm" > |
|
加油司机 |
|
<text class="fr"> |
|
{{driverMsg.customerName}} |
|
</text> |
|
</view> |
|
<view class="margin-bottom-sm" > |
|
司机车牌 |
|
<text class="fr"> |
|
{{driverMsg.plateNumbers[0]}} |
|
</text> |
|
</view> |
|
<view class="margin-bottom-sm"> |
|
油号 |
|
<text class="fr"> {{insertResult.oilsCode}}</text> |
|
</view> |
|
<view class="margin-bottom-sm"> |
|
加油总金额 |
|
<text class="fr">¥ {{insertResult.totalPrice }}</text> |
|
</view> |
|
<view class="margin-bottom-sm"> |
|
加油升数 |
|
<text class="fr">{{insertResult.volume }} 升</text> |
|
</view> |
|
<view class="margin-bottom-sm"> |
|
星游优惠 |
|
<text class="fr">¥ {{insertResult.xoilDiscountAmount }}</text> |
|
</view> |
|
|
|
<view class="margin-bottom-sm"> |
|
实扣款 |
|
<text class="fr oil-main-color">¥ {{insertResult.payRealAmount }}</text> |
|
</view> |
|
</view> --> |
|
</view> |
|
</template> |
|
|
|
<script> |
|
import oilFinanceApi from '@/api/oil-finance.js' |
|
export default { |
|
data() { |
|
return { |
|
orderItem: uni.getStorageSync('SiteInfo'), |
|
insertResult: {}, |
|
orderId: '', |
|
timerF: '', |
|
checkTime: 40, |
|
payState: 0, |
|
PayTitle: '正在支付中', |
|
orderInfos: {} |
|
} |
|
}, |
|
filters: { |
|
numberFormat(value) { |
|
if (value != 'xxx.x') { |
|
console.log('old:', value) |
|
let realAmount = value.toFixed(2) |
|
console.log('new:', realAmount) |
|
return realAmount |
|
} else { |
|
return value |
|
} |
|
}, |
|
UnitPriceFormat(value) { |
|
console.log('++++++++++++++++++++', value) |
|
if (value) { |
|
return value |
|
} else { |
|
return '--' |
|
} |
|
}, |
|
}, |
|
onLoad(option) { |
|
console.log(option) |
|
let insertResult = JSON.parse(option.item) |
|
this.insertResult = insertResult |
|
console.log(this.insertResult) |
|
this.orderId = insertResult.orderId |
|
let orderId = insertResult.orderId |
|
console.log(this.orderId) |
|
this.checkSf(orderId) //进入获取订单信息 |
|
this.timerF = setInterval((res) => { |
|
this.checkSf(orderId) |
|
}, 5000) |
|
}, |
|
|
|
methods: { |
|
getScanning() { //支付取消 或失败 前往重新下单 |
|
uni.redirectTo({ |
|
url: '/pages/stationDetail/stationDetail', |
|
fail: (err) => {} |
|
}) |
|
}, |
|
gotoHome() { // 返回首页 |
|
uni.reLaunch({ |
|
url: '/pages/index/index', |
|
fail: (err) => {} |
|
}) |
|
}, |
|
singleCheck(ids) { //单独调用check 订单状态 |
|
let _that = this |
|
oilFinanceApi.checkOrderState(ids).then((res) => { |
|
console.log(res) |
|
if (res.code == 20000) { |
|
_that.displayMoney = res.data.sitePriceAmount |
|
_that.orderInfos = res.data |
|
console.log(_that.orderInfos) |
|
_that.payState = res.data.orderStatus |
|
if (res.data.orderStatus == 0) { |
|
_that.PayTitle = '正在支付中....' |
|
} |
|
if (res.data.orderStatus == 1) { |
|
_that.PayTitle = '支付成功' |
|
if (_that.payState != 0 || res.data.orderStatus == 1) { |
|
console.log('测试手动刷新是否进入清除计时器') |
|
clearInterval(_that.timerF) |
|
} |
|
} |
|
if (res.data.orderStatus == 2) { |
|
if (!res.data.cancelRemak) { |
|
_that.PayTitle = '支付已取消' |
|
} else { |
|
_that.PayTitle = res.data.cancelRemak |
|
} |
|
if (_that.payState != 0 || res.data.orderStatus == 2) { |
|
console.log('测试手动刷新是否进入清除计时器') |
|
clearInterval(_that.timerF) |
|
} |
|
} |
|
} |
|
}) |
|
}, |
|
toDetails(id) { |
|
uni.setStorageSync('orderId', id) |
|
console.log('id', id) |
|
uni.redirectTo({ |
|
url: '/packageOrders/pages/orderList/OrderDetail/OrderDetail' |
|
}) |
|
|
|
}, |
|
checkSf(id) { // 轮询 check 顺丰订单状态 |
|
let _that = this, |
|
time = _that.checkTime, |
|
ids = id |
|
if (time <= 0) { |
|
uni.showToast({ |
|
title: '支付已取消' |
|
}) |
|
_that.payState = 0 |
|
_that.PayTitle = '三分钟自动取消....' |
|
clearInterval(_that.timerF) |
|
// uni.navigateBack({}) |
|
} else { |
|
time-- |
|
_that.singleCheck(ids) |
|
// oilFinanceApi.checkOrderState(ids).then( (res)=>{ |
|
// console.log(res) |
|
// if(res.code == 20000){ |
|
// _that.payState = res.data.orderStatus |
|
// if(res.data.orderStatus == 0){ |
|
// _that.PayTitle = '正在支付中....' |
|
// } |
|
// if(res.data.orderStatus == 1){ |
|
// _that.PayTitle = '支付成功' |
|
// clearInterval(_that.timerF) |
|
// } |
|
// if(res.data.orderStatus == 2){ |
|
// _that.PayTitle = '支付已取消' |
|
// clearInterval(_that.timerF) |
|
// } |
|
// console.log('this.payState+++',this.payState) |
|
// console.log('res.data.orderStatuse+++',res.data.orderStatus) |
|
// } |
|
|
|
// // if(res.data.orderStatus == 1){ |
|
// // clearInterval(this.timerF ) |
|
// // this.payState = 1 |
|
// // if (!_that.isG7) { |
|
// // setTimeout(() => { |
|
// // // this.gotoOrderStatus() |
|
// // // _that.toDetails(ids) |
|
// // }, 400) |
|
// // } else { |
|
// // _that.beforePay = false |
|
// // setTimeout(() => { |
|
// // _that_that.orderId = res.data.orderId |
|
// // _that.queryTimer() |
|
// // _that.getPayStatus(_that.orderId) |
|
// // }, 400) |
|
// // } |
|
// // }else if(res.data.orderStatus == 2){ |
|
// // this.payState = 2 |
|
// // uni.showToast({ |
|
// // title:'支付已取消' |
|
// // }) |
|
// // uni.navigateBack({ }) |
|
// // } |
|
// } ) |
|
_that.checkTime = time |
|
} |
|
}, |
|
}, |
|
} |
|
</script> |
|
|
|
<style scoped> |
|
page { |
|
background-color: #efefef; |
|
} |
|
|
|
.page-content { |
|
background-color: #f1f2f7; |
|
min-height: 100%; |
|
position: relative; |
|
} |
|
|
|
.navigation { |
|
position: absolute; |
|
right: 16px; |
|
top: 10px; |
|
} |
|
|
|
.icon-self { |
|
width: 1rem; |
|
height: 1rem; |
|
} |
|
|
|
.oil-price { |
|
position: relative; |
|
} |
|
|
|
.oil-price radio { |
|
position: absolute; |
|
left: 0rem; |
|
top: 10px; |
|
} |
|
|
|
.qr-icon { |
|
font-size: 2rem; |
|
} |
|
|
|
.pay-desc { |
|
line-height: 2rem; |
|
} |
|
|
|
.bottom-pay { |
|
min-height: 100rpx; |
|
width: 750upx; |
|
} |
|
|
|
.pay-bar { |
|
width: 750upx; |
|
position: absolute; |
|
bottom: 0; |
|
} |
|
|
|
.money-container { |
|
position: relative; |
|
} |
|
|
|
.money-position { |
|
position: absolute; |
|
top: 0; |
|
right: 0; |
|
display: block; |
|
border-radius: 0 0 0 100upx; |
|
} |
|
|
|
.payStatue_text { |
|
font-size: 36rpx; |
|
color: #737373; |
|
font-weight: bold; |
|
margin-bottom: 10rpx; |
|
text-align: center; |
|
margin-top: 6rpx; |
|
} |
|
|
|
.payStatue_p { |
|
font-size: 26rpx; |
|
color: #888888; |
|
font-weight: bold; |
|
text-align: center; |
|
margin-bottom: 30rpx; |
|
margin-top: 20rpx; |
|
} |
|
|
|
.btn-oils { |
|
width: 100%; |
|
border-radius: 14rpx; |
|
margin-top: 30rpx; |
|
font-size: 32rpx; |
|
/* padding: 14rpx; */ |
|
height: 80rpx; |
|
} |
|
|
|
.showimgs { |
|
width: 130rpx; |
|
height: 130rpx; |
|
} |
|
|
|
.boxsings_main_top { |
|
position: relative; |
|
margin-top: 90rpx; |
|
} |
|
|
|
.showIcons { |
|
background-color: #fff; |
|
background-size: cover; |
|
position: absolute; |
|
top: -30rpx; |
|
left: 40%; |
|
} |
|
</style>
|
|
|