Files
zhongPin/BagStation/pages/makeOrder/payResult.vue
2023-02-15 09:25:11 +08:00

394 lines
13 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>
<cu-custom class="main-totextbar bg-main-oil" :isBack="true" bgColor="bg-main-oil">
<block slot="backText">返回</block>
<block slot="content">订单支付结果</block>
</cu-custom>
<view :class="showQr ? 'bg-blue' :''" >
<view class="text-center text-bold text-xl padding-xl" >
{{ textstatus }}
<!-- 支付{{status=='success'?'成功':'失败'}} -->
</view>
<view class="text-center " v-if="showtext">
<image :src="imgURL+'pay-'+ status+'.png'" mode="widthFix"></image>
</view>
</view>
<view class="qr-container margin move-tops padding-bottom-xs text-centers my-shadow" v-if="showQr">
<view class="qr-container ">
<view class="qrimg">
<view class="qrimg" @tap="newQrString">
<tki-qrcode ref="qrcode" cid="2" loadMake :val="val" :size="250" unit="upx"
background="#fff" foreground="#000" pdground="#000" :icon="iconUrl" iconSize="40" onval
:usingComponents="usingComponents" showLoading />
</view>
</view>
</view>
<view class="text-center text-sm justify-center align-center flex">
<image src="../../static/img/YDJY.png" mode="" style="width: 60upx;height:60upx;" class="margin-right-sm"></image>
<text>壳牌</text>
</view>
<div class="times">
<span>{{ hour }} : {{ minutes }}</span>
<span style="font-size: 38upx;margin-left: 10upx;;">{{ seconds }}s</span>
</div>
<view class="text-center padding-top text-sm margin-bottom">
提示该二维码每隔3分钟自动刷新一次
</view>
</view>
<view class=" radius my-shadow solid-top margin margin-top-0">
<view class="bg-gray text-center padding-sm margin-bottom-sm" v-if="status=='success'">
请提醒加油员使用
<text class="oil-main-color"> {{showtitles}} </text>
进行订单核销
</view>
<view class="bg-gray text-center padding-sm margin-bottom-sm" v-if="status!='success'">
{{errMsg}}
</view>
<view class="padding">
<view class="padding-bottom-xs margin-bottom-xs dashed-bottom">
<view class="padding-tb-xs text-left" @tap="onCopy(order.orderSerialNumber)">
订单编号
<text class="fr">{{order.orderSerialNumber?order.orderSerialNumber:''}} <text class="cuIcon-copy padding-left-xs"></text></text>
</view>
</view>
<view class="padding-tb-xs text-left">
油站
<text class="fr">{{order.siteName?order.siteName:''}}</text>
</view>
<view class="padding-tb-xs text-left">
油品油枪
<text class="fr nowrap">
{{order.oilsCode?order.oilsCode+' ':''}}&{{order.oilsBar?order.oilsBar+'号枪':'未选择油枪'}} </text>
</view>
<view class="padding-tb-xs text-left">
加油升数
<text class="fr">{{order.volume?order.volume :'未输入' |moneyFormath}}L</text>
</view>
<view class="padding-tb-xs text-left">
加油员
<text class="fr">{{order.siteUserName}}</text>
</view>
<!-- <view class="padding-tb-xs flex text-left">
<view class="flex-sub">
加油渠道 <text class="fr">{{order.channelCode|channelCodeFamt}}</text>
</view>
<view class="flex-sub" v-if="tyPayMethod==2">
<third-party-voucher :pay-data="tySqRes" :show-third-result="showThirdResult" @hideModal="hideModal"
@onShowThirdResult="onShowThirdResult"></third-party-voucher>
</view>
</view> -->
<view class="dashed-top margin-top-xs padding-top-sm">
<view class="padding-tb-xs text-left">
加油金额<text class="fr">{{order.xoilAmountGun |moneyFormat}}</text>
<!-- <text class="fr">{{order.oilDiscountAmount>0?order.realAmount+order.oilDiscountAmount:order.realAmount|moneyFormat}}</text> -->
</view>
</view>
<view class="padding-tb-xs text-left">
星油优惠
<text class="text-red fr">{{order.oilDiscountAmount>0?order.oilDiscountAmount:'xxx.x'|moneyFormat}}</text>
</view>
<view class="padding-tb-xs text-left">
优惠券
<text class="text-red fr">{{order.couponDiscountAmount>0?order.couponDiscountAmount:'xxx.x'|moneyFormat}}</text>
</view>
<view class="padding-tb-xs text-left">
合计
<text class="text-red text-bold text-lg fr">{{order.realAmount>0?'¥'+order.realAmount:'xxx.x'}}</text>
</view>
<view class="dashed-top margin-top-xs padding-top-sm">
<view class="padding-tb-xs text-left">
加油车牌
<text class=" fr">{{order.plateNumber}}</text>
</view>
</view>
<view class="padding-tb-xs text-left">
加油司机
<text class=" fr">{{user.customerCode}}</text>
</view>
<view class="padding-tb-xs text-left">
油卡性质
<!-- <text class=" fr">{{order.couponDiscountAmount>0?order.couponDiscountAmount:'xxx.x'|moneyFormat}}</text> -->
<text class="fr">个人</text>
</view>
</view>
</view>
<view class=" fixed-bottom bg-white padding">
<button class="cu-btn block lg bg-main-oil" open-type="contact">联系客服</button>
<button class="cu-btn block lg margin-top" @tap="backToIndex">关闭</button>
</view>
<view class="margin-top padding placeholder-hidden bg-white">
<button class="cu-btn block lg bg-main-oil" open-type="contact">联系客服</button>
<button class="cu-btn block lg margin-top" @tap="backToIndex">关闭</button>
</view>
</view>
</template>
<script>
import toilApi from '@/api/toil.js'
import oilSiteApi from '@/api/oil-site.js'
import tkiQrcode from "../components/tki-qrcode/tki-qrcode.vue" //二维码生成器
import ThirdPartyVoucher from '../components/third-party-voucher/third-party-voucher.vue'
export default {
components: {
ThirdPartyVoucher,
tkiQrcode
},
data() {
const now = new Date()
return {
showtitles:"",
hour: now.getHours() < 10 ? '0' + now.getHours() : now.getHours(), //当小时为个为数时在在前加001以下同理
minutes: now.getMinutes() < 10 ? '0' + now.getMinutes() : now.getMinutes(),
seconds: now.getSeconds() < 10 ? '0' + now.getSeconds() : now.getSeconds(),
timer: null,
showtext:true,
showQr:false,
val:'',
textstatus:'正在支付中',
showThirdResult: false,
imgURL: this.global.imgURL,
status: 'fail',
order: uni.getStorageSync('orderMade'),
user: uni.getStorageSync('user'),
errMsg: '',
tyIntervalCount: 0,
tySqRes: {},
tyPayMethod: null
}
},
methods: {
// 创建音频
ContextAudio(url){
this.innerAudioContext = uni.createInnerAudioContext();
this.innerAudioContext.autoplay = true;
this.innerAudioContext.src = url;
this.innerAudioContext.onPlay(() => {
console.log('开始播放');
});
this.innerAudioContext.onError((res) => {
console.log(res.errMsg);
console.log(res.errCode);
});
},
getTime () {
var date = new Date()
this.hour = date.getHours() < 10 ? '0' + date.getHours() : date.getHours()
this.minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()
this.seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds()
},
newQrString() {
this.getOrderQrCode()
},
getOrderQrCode(){
oilSiteApi.getOrderQrCode(this.order.orderSerialNumber).then( (res)=>{
console.log(res)
if(res.code == 40000){
this.showQr = false
this.showtext=true
}else if(res.code == 20000){
this.showQr = true
this.showtext =false
this.val =res.data.codeStr
}
} )
},
// 三方支付结果弹窗开始
hideModal() {
this.showThirdResult = false
},
getThirdStatus() {
if (this.tyIntervalCount > 5 || this.tySqRes.otherOrderStatus != 0) {
this.onShowThirdResult()
} else {
setTimeout(() => {
this.queryOrderStatusSq()
}, 500)
}
},
onShowThirdResult() {
this.showThirdResult = true
},
// 上汽联名卡支付状态
queryOrderStatusSq() {
toilApi.queryOrderStatusSq(this.order.orderSerialNumber).then(res => {
console.log('+++++++++')
console.log(res)
console.log('+++++++++')
if (res.code == 20000) {
console.log('进入')
this.tySqRes = res.data
this.tyIntervalCount++
if(res.data.otherOrderStatus == 0){
this.textstatus = '支付中'
}else if(res.data.otherOrderStatus == 1){
let _that = this
_that.textstatus = '支付成功'
_that.status ='success'
console.log(_that.oilItem)
let oilItems = _that.oilItem
if(oilItems.listTag == '万金油'){
_that.audioUrl = 'https://publicxingyou.oss-cn-hangzhou.aliyuncs.com/mp-oil/wanjinyou.mp3'
}else if(oilItems.listTag == '星油'){
_that.audioUrl = 'https://publicxingyou.oss-cn-hangzhou.aliyuncs.com/mp-oil/xingyouyunzhan.mp3'
}else if(oilItems.listTag == '壳牌'){
_that.audioUrl = 'https://publicxingyou.oss-cn-hangzhou.aliyuncs.com/mp-oil/qiaopainew.mp3'
}else if(oilItems.listTag == '上汽联名卡'){
_that.audioUrl = 'https://publicxingyou.oss-cn-hangzhou.aliyuncs.com/mp-oil/shangqi.mp3'
}
this.ContextAudio(this.audioUrl)
}else if(res.data.otherOrderStatus == -1){
this.textstatus = '三方支付失败,已退款'
}
// otherOrderStatus //三方支付状态 0待通知 1通知成功 -1通知失败
// console.log('联名卡支付结果', res.data)
this.getThirdStatus()
}
})
},
// 三方支付结果弹窗结束
backToIndex() {
this.innerAudioContext.stop()
uni.switchTab({
url: '/pages/tabbar/home/home'
})
},
onCopy(id) {
uni.setClipboardData({
data: id,
success: () => {
uni.showToast({
icon: 'none',
title: '订单号复制成功'
})
}
})
}
},
onLoad(option) {
console.log(option)
console.log('支付进入onload')
let oilItem = uni.getStorageSync('oilItem')
this.showtitles = oilItem.listTag
if(oilItem.listTag == '万金油'){
this.audioUrl = 'https://publicxingyou.oss-cn-hangzhou.aliyuncs.com/mp-oil/wanjinyou.mp3'
}else if(oilItem.listTag == '星油'){
this.audioUrl = 'https://publicxingyou.oss-cn-hangzhou.aliyuncs.com/mp-oil/xingyouyunzhan.mp3'
}else if(oilItem.listTag == '壳牌'){
this.audioUrl = 'https://publicxingyou.oss-cn-hangzhou.aliyuncs.com/mp-oil/qiaopainew.mp3'
}else if(oilItem.listTag == '上汽联名卡'){
this.audioUrl = 'https://publicxingyou.oss-cn-hangzhou.aliyuncs.com/mp-oil/shangqi.mp3'
}
this.ContextAudio(this.audioUrl)
if (this.timer) {
clearInterval(this.timer)
}
setInterval(() => {
this.getTime()
},1000) //设置定时器,时时间每隔一秒钟走一次(即每秒)
this.timeinterval = setInterval(() => {
console.log('1')
this.newQrString()
}, 1000 * 60 * 3);
if(option.payMethod == '1' && option.status == 'success'){
if(option.status == 'success') {
console.log('这里是支付成功')
this.textstatus = '支付成功'
this.status = option.status
this.getOrderQrCode()
}else{
console.log('这里是支付失败')
this.textstatus = '支付失败'
this.status = option.status
}
return
}
if(option.status == 'fail'){
console.log('fail')
this.textstatus = '支付失败'
this.errMsg = option.errMsg
this.status = option.status
return
}
if (this.order.payMethod && this.order.payMethod == 2) {
console.log('这里是则一')
this.tyPayMethod = 2
this.queryOrderStatusSq()
return
}
},
filters: {
moneyFormath(value) {
console.log(value)
if (value != 'xxx.x') {
let number = value.toFixed(2)
return number
} else {
return value
}
},
moneyFormat(value) {
if (value != 'xxx.x') {
return "¥" + (parseInt(value * 100) / 100).toFixed(2)
} else {
return value
}
},
channelCodeFamt(value) {
if (value) {
// 渠道编码 ( XOIL星油 WJY万金油 LV老吕找油网 TY团油 YDJY一点加油壳牌)
switch (value) {
case 'XOIL':
return '星油'
case 'WJY':
return '万金油'
case 'LV':
return '老吕(找油网)'
case 'TY':
return '团油'
case 'YDJY':
return '一点加油(壳牌)'
}
}
},
}
,
onHide() {
console.log('这里是hiden')
this.innerAudioContext.stop()
},
onUnload() {
console.log('这里是卸载页面')
this.innerAudioContext.stop()
},
}
</script>
<style>
.move-tops{
transform: translateY(-17px);
}
.bg-blue{
background-color: red;
}
.text-centers {
text-align: center;
width: 90%;
margin: 0 auto;
border-radius: 7px;
overflow: hidden;
}.times {
margin-left: 250upx ;
font-size: 60upx;
padding-top: 60upx;
font-weight: bold;
}
</style>