2025-04-28 15:37:57 +08:00
|
|
|
|
<template>
|
|
|
|
|
|
<div style="padding: 15px;background-color: white;">
|
|
|
|
|
|
<div class="divPay">
|
|
|
|
|
|
<div class="divTitle">
|
|
|
|
|
|
<label>
|
|
|
|
|
|
<image class="divImg" :src='imgPath+"static/userui/home/money.png"' />
|
|
|
|
|
|
</label>
|
|
|
|
|
|
<label>待支付:</label>
|
2025-05-09 16:36:41 +08:00
|
|
|
|
<label>{{data.totalAmount}}元</label>
|
2025-04-28 15:37:57 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
<div class="divFont">
|
2025-05-09 16:36:41 +08:00
|
|
|
|
{{data.createdAt}}
|
2025-04-28 15:37:57 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
<div class="divTitle2">
|
|
|
|
|
|
费用明细
|
|
|
|
|
|
</div>
|
2025-05-09 16:36:41 +08:00
|
|
|
|
<div class="divRow divFont" v-for="(item,index) in data.details" :key="index">
|
|
|
|
|
|
<label>{{item.itemName}}</label>
|
|
|
|
|
|
<label>{{item.itemAmount}}元</label>
|
2025-04-28 15:37:57 +08:00
|
|
|
|
</div>
|
2025-05-09 16:36:41 +08:00
|
|
|
|
<!-- <div class="divRow divFont">
|
2025-04-28 15:37:57 +08:00
|
|
|
|
<label>时长费</label>
|
|
|
|
|
|
<label>{{data.scf}}元</label>
|
2025-05-09 16:36:41 +08:00
|
|
|
|
</div> -->
|
2025-04-28 15:37:57 +08:00
|
|
|
|
<div class="divHJ">
|
|
|
|
|
|
<label>合计:</label>
|
2025-05-13 17:05:09 +08:00
|
|
|
|
<label>¥{{data.totalAmount}}元</label>
|
2025-04-28 15:37:57 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
<div>
|
2025-05-09 16:36:41 +08:00
|
|
|
|
<div class="divBtn" @click="handlePaymentClick">
|
2025-04-28 15:37:57 +08:00
|
|
|
|
<label>
|
|
|
|
|
|
<uni-icons custom-prefix="iconfont" type="icon-ebikeweixin" color="white" size="25" />
|
|
|
|
|
|
</label>
|
|
|
|
|
|
支付
|
|
|
|
|
|
</div>
|
2025-05-12 17:18:04 +08:00
|
|
|
|
<view class="cu-btn" @click="gotoRefundRequest">退款</view>
|
2025-04-28 15:37:57 +08:00
|
|
|
|
</div>
|
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
|
|
<script setup>
|
|
|
|
|
|
import {
|
2025-05-09 16:36:41 +08:00
|
|
|
|
ref,
|
|
|
|
|
|
onMounted
|
2025-04-28 15:37:57 +08:00
|
|
|
|
} from 'vue';
|
|
|
|
|
|
import config from '@/utils/config';
|
2025-05-09 16:36:41 +08:00
|
|
|
|
import * as api from '@/utils/api.js';
|
2025-04-28 15:37:57 +08:00
|
|
|
|
import {
|
|
|
|
|
|
showModelMessage
|
|
|
|
|
|
} from "@/utils/tools.js";
|
|
|
|
|
|
const imgPath = config.imgPath;
|
2025-05-09 16:36:41 +08:00
|
|
|
|
const props = defineProps(["orderId"]);
|
2025-04-28 15:37:57 +08:00
|
|
|
|
const data = ref({
|
|
|
|
|
|
hj: "2.5",
|
|
|
|
|
|
sj: "2025-04-03 14:15:13",
|
|
|
|
|
|
qbj: "2.0",
|
|
|
|
|
|
scf: "0.5"
|
|
|
|
|
|
})
|
2025-05-09 16:36:41 +08:00
|
|
|
|
|
|
|
|
|
|
onMounted(() => {
|
|
|
|
|
|
getInfoOrderData();
|
2025-04-28 15:37:57 +08:00
|
|
|
|
})
|
2025-05-09 16:36:41 +08:00
|
|
|
|
const getInfoOrderData = () => {
|
|
|
|
|
|
api.callOrdereApi("userOrders/orderDetailsInfo?orderId=" + props.orderId, {}, "get").then(res => {
|
|
|
|
|
|
if (res.code == 200) {
|
|
|
|
|
|
data.value = res.data;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
const handlePaymentClick = () => {
|
|
|
|
|
|
console.log('支付按钮被点击');
|
|
|
|
|
|
const params = {
|
|
|
|
|
|
"orderId": props.orderId
|
|
|
|
|
|
}
|
|
|
|
|
|
api.callPaymentApi("wxPayment/prepay", params).then(res => {
|
|
|
|
|
|
if (res.code == 200) {
|
|
|
|
|
|
wx.requestPayment({
|
|
|
|
|
|
"timeStamp": res.data.timeStamp,
|
|
|
|
|
|
"nonceStr": res.data.nonceStr,
|
|
|
|
|
|
"package": res.data.package,
|
|
|
|
|
|
"signType": res.data.signType,
|
|
|
|
|
|
"paySign": res.data.paySign,
|
|
|
|
|
|
"success": function(res) {
|
|
|
|
|
|
//轮询看是否支付成功
|
|
|
|
|
|
checkPaymentStatus();
|
|
|
|
|
|
},
|
|
|
|
|
|
"fail": function(res) {
|
|
|
|
|
|
showModelMessage("支付失败")
|
|
|
|
|
|
},
|
|
|
|
|
|
"complete": function(res) {
|
|
|
|
|
|
showModelMessage("支付失败")
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
2025-05-12 17:18:04 +08:00
|
|
|
|
}else{
|
|
|
|
|
|
showModelMessage("支付失败")
|
2025-05-09 16:36:41 +08:00
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
function checkPaymentStatus() {
|
|
|
|
|
|
api.callPaymentApi("wxPayment/queryOrderByOutTradeNo?outTradeNo=" + props.orderId, {}, "get")
|
|
|
|
|
|
.then(res => {
|
|
|
|
|
|
if (res.code == 200) {
|
|
|
|
|
|
gotoHome();
|
|
|
|
|
|
} else {
|
|
|
|
|
|
console.log("支付未成功,继续轮询");
|
|
|
|
|
|
checkPaymentStatus(); // 继续轮询
|
|
|
|
|
|
}
|
|
|
|
|
|
})
|
|
|
|
|
|
.catch(error => {
|
|
|
|
|
|
console.log("请求失败,继续轮询", error);
|
|
|
|
|
|
checkPaymentStatus(); // 请求失败也继续轮询
|
|
|
|
|
|
});
|
|
|
|
|
|
}
|
|
|
|
|
|
const gotoHome = () => {
|
|
|
|
|
|
uni.navigateTo({
|
|
|
|
|
|
url: "/pages/user/home/home"
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
2025-05-12 17:18:04 +08:00
|
|
|
|
|
|
|
|
|
|
const gotoRefundRequest=()=>{
|
|
|
|
|
|
uni.navigateTo({
|
|
|
|
|
|
url: "/pages/user/views/PaymentFeedback?orderId="+props.orderId
|
|
|
|
|
|
})
|
|
|
|
|
|
}
|
2025-04-28 15:37:57 +08:00
|
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
|
|
<style scoped>
|
|
|
|
|
|
.divPay {
|
|
|
|
|
|
width: 260px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.divTitle {
|
|
|
|
|
|
line-height: 30px;
|
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
|
color: #000;
|
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.divTitle2 {
|
|
|
|
|
|
font-size: 16px;
|
|
|
|
|
|
line-height: 35px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.divImg {
|
|
|
|
|
|
width: 15px;
|
|
|
|
|
|
height: 12px;
|
|
|
|
|
|
margin-right: 5px;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.divFont {
|
|
|
|
|
|
color: #000;
|
|
|
|
|
|
font-size: 12px;
|
|
|
|
|
|
opacity: 0.7;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.divRow {
|
|
|
|
|
|
line-height: 20px;
|
|
|
|
|
|
display: flex;
|
|
|
|
|
|
justify-content: space-between;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.divHJ {
|
|
|
|
|
|
text-align: right;
|
|
|
|
|
|
font-size: 14px;
|
|
|
|
|
|
color: red;
|
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
.divBtn {
|
|
|
|
|
|
text-align: center;
|
|
|
|
|
|
background: #61D145;
|
|
|
|
|
|
color: white;
|
|
|
|
|
|
line-height: 40px;
|
|
|
|
|
|
border-radius: 5px;
|
|
|
|
|
|
margin-top: 20px;
|
|
|
|
|
|
}
|
|
|
|
|
|
</style>
|