fix:修复订单列表页面订单待支付状态下点击支付异常的问题

This commit is contained in:
2025-07-08 15:19:32 +08:00
parent 893a2a55c6
commit 4851e0500d
8 changed files with 84 additions and 28 deletions
+1 -1
View File
@@ -1,5 +1,5 @@
// export const URL = "https://my.gxfs123.com/api" //正式服务器 // export const URL = "https://my.gxfs123.com/api" //正式服务器
export const URL = "https://unifans.gxfs123.com/api" //测试服务器 export const URL = "https://unifans.gxfs123.com/api" //测试服务器
// export const URL = "http://192.168.10.60:8080" //本地调试 // export const URL = "http://192.168.10.70:8080" //本地调试
export const appid = "wx2165f0be356ae7a9" //小程序appid export const appid = "wx2165f0be356ae7a9" //小程序appid
+39 -6
View File
@@ -115,8 +115,12 @@
queryById, queryById,
getOrderByOrderNoScorePayStatus, getOrderByOrderNoScorePayStatus,
cancelOrder, cancelOrder,
confirmPaymentAndRent confirmPaymentAndRent,
updateUserBalance
} from '../../config/user.js'; } from '../../config/user.js';
import {
URL
} from '../../config/url.js';
// 初始化状态 // 初始化状态
const currentTab = ref(0); const currentTab = ref(0);
@@ -312,19 +316,48 @@
title: '处理中' title: '处理中'
}); });
const res = await confirmPaymentAndRent(order.orderNo); // 调用后端创建微信支付订单接口
if (res.code === 200) { const res = await uni.request({
uni.hideLoading(); url: `${URL || 'http://127.0.0.1:8080'}/app/wx-payment/create/${order.orderNo}`,
method: 'GET',
header: {
'Authorization': "Bearer " + uni.getStorageSync('token'),
'Clientid': uni.getStorageSync('client_id')
}
});
if (res.statusCode === 200 && res.data.code === 200) {
const payParams = res.data.data;
// 调用微信支付
await uni.requestPayment({
...payParams,
success: async () => {
uni.showToast({ uni.showToast({
title: '支付成功', title: '支付成功',
icon: 'success' icon: 'success'
}); });
// 更新用户余额
try {
await updateUserBalance(order.orderId || order.orderNo);
} catch (error) {
console.warn('更新用户余额失败:', error);
}
// 刷新订单列表 // 刷新订单列表
await loadOrderList(orderStatusTabs[currentTab.value].status); await loadOrderList(orderStatusTabs[currentTab.value].status);
} else { },
throw new Error(res.msg || '支付失败'); fail: (err) => {
console.error('支付失败:', err);
throw new Error('支付失败,请重试');
} }
});
} else {
throw new Error(res.data.msg || '创建支付订单失败');
}
uni.hideLoading();
} catch (error) { } catch (error) {
uni.hideLoading(); uni.hideLoading();
uni.showToast({ uni.showToast({
+1 -1
View File
@@ -1 +1 @@
"use strict";const t=require("../../common/vendor.js"),e=require("../../common/assets.js"),a=require("../../config/user.js"),s={__name:"index",setup(s){const o=t.ref(0),r=t.ref([]),n=t.reactive({0:{text:"待支付",class:"status-waiting"},1:{text:"使用中",class:"status-using"},2:{text:"已完成",class:"status-finished"},3:{text:"已取消",class:"status-cancelled"},waiting_for_payment:{text:"待支付",class:"status-waiting"},in_used:{text:"使用中",class:"status-using"},used_done:{text:"已完成",class:"status-finished"},order_cancelled:{text:"已取消",class:"status-cancelled"}}),d=t.reactive([{text:"全部",status:[]},{text:"待付款",status:["waiting_for_payment"]},{text:"使用中",status:["in_used"]},{text:"已完成",status:["used_done"]},{text:"已取消",status:["order_cancelled"]}]);t.onLoad((async t=>{if(t&&t.orderId)try{const e=await a.queryById(t.orderId);if(200===e.code&&e.data){const t=e.data,a=t.startTime||t.createTime||"",s={orderNo:t.orderId,status:t.orderStatus,deviceId:t.deviceNo,payWay:t.payWay,startTime:a,endTime:t.endTime||"",amount:t.payAmount||t.actualDeviceAmount||"0.00"};r.value=[s,...r.value];const o=d.findIndex((e=>e.status.includes(t.orderStatus)));-1!==o&&i(o)}}catch(e){console.error("获取订单详情失败:",e)}await c()}));const i=async t=>{o.value=t;const e=d[t].status[0];await c(e)},c=async e=>{try{null!=e&&(e={orderStatus:e});const t=await a.getOrderList(e);200===t.code&&t.data&&t.data.records&&(r.value=t.data.records.map((t=>{const e=t.startTime||t.createTime||"";return{orderNo:t.orderNo,orderId:t.orderId,orderStatus:t.orderStatus,deviceId:t.deviceNo,payWay:t.payWay,startTime:e,endTime:t.endTime||"",amount:t.payAmount||t.actualDeviceAmount||"0.00"}})))}catch(s){console.error("获取订单列表失败:",s),t.index.showToast({title:"获取订单列表失败",icon:"none"})}};return(s,u)=>t.e({a:t.f(d,((e,a,s)=>({a:t.t(e.text),b:a,c:o.value===a?1:"",d:t.o((t=>i(a)),a)}))),b:0===r.value.length},(r.value.length,{}),{c:t.f(r.value,((s,r,i)=>{var u,l;return t.e({a:t.t(s.orderNo),b:t.t(null==(u=n[s.orderStatus])?void 0:u.text),c:t.n(null==(l=n[s.orderStatus])?void 0:l.class),d:t.t(s.deviceId),e:"wx_score_pay"==s.payWay},"wx_score_pay"==s.payWay?{f:e._imports_0$2}:{},{g:t.t(s.startTime),h:t.t(s.endTime||"-"),i:t.t(s.amount),j:"waiting_for_payment"===s.status||"waiting_for_payment"===s.orderStatus},"waiting_for_payment"===s.status||"waiting_for_payment"===s.orderStatus?{k:t.o((e=>(async e=>{try{t.index.showLoading({title:"处理中"});const s=await a.confirmPaymentAndRent(e.orderNo);if(200!==s.code)throw new Error(s.msg||"支付失败");t.index.hideLoading(),t.index.showToast({title:"支付成功",icon:"success"}),await c(d[o.value].status)}catch(s){t.index.hideLoading(),t.index.showToast({title:s.message||"支付失败",icon:"none"})}})(s)),r)}:{},{l:"waiting_for_payment"===s.status||"waiting_for_payment"===s.orderStatus},"waiting_for_payment"===s.status||"waiting_for_payment"===s.orderStatus?{m:t.o((e=>(async e=>{try{t.index.showModal({title:"确认取消",content:"确定要取消此订单吗?",success:async s=>{if(s.confirm){t.index.showLoading({title:"处理中"});const s=await a.cancelOrder({orderId:e.orderNo});if(!s)throw new Error(s.msg||"取消订单失败");t.index.hideLoading(),t.index.showToast({title:"订单已取消",icon:"success"}),await c()}}})}catch(s){t.index.hideLoading(),t.index.showToast({title:s.message||"取消订单失败",icon:"none"})}})(s)),r)}:{},{n:"in_used"==s.status||"in_used"==s.orderStatus},"in_used"==s.status||"in_used"==s.orderStatus?{o:t.o((e=>{return a=s.deviceId,o=s.orderId,console.log(o),void t.index.navigateTo({url:`/pages/return/index?deviceId=${a}&orderId=${o}`});var a,o}),r)}:{},{p:t.o((e=>(e=>{t.index.navigateTo({url:`/pages/order/details?orderId=${e.orderId||e.orderNo}`})})(s)),r),q:r})}))})}},o=t._export_sfc(s,[["__scopeId","data-v-2998ff8e"]]);wx.createPage(o); "use strict";const e=require("../../common/vendor.js"),t=require("../../common/assets.js"),a=require("../../config/user.js"),s=require("../../config/url.js"),r={__name:"index",setup(r){const o=e.ref(0),n=e.ref([]),d=e.reactive({0:{text:"待支付",class:"status-waiting"},1:{text:"使用中",class:"status-using"},2:{text:"已完成",class:"status-finished"},3:{text:"已取消",class:"status-cancelled"},waiting_for_payment:{text:"待支付",class:"status-waiting"},in_used:{text:"使用中",class:"status-using"},used_done:{text:"已完成",class:"status-finished"},order_cancelled:{text:"已取消",class:"status-cancelled"}}),i=e.reactive([{text:"全部",status:[]},{text:"待付款",status:["waiting_for_payment"]},{text:"使用中",status:["in_used"]},{text:"已完成",status:["used_done"]},{text:"已取消",status:["order_cancelled"]}]);e.onLoad((async e=>{if(e&&e.orderId)try{const t=await a.queryById(e.orderId);if(200===t.code&&t.data){const e=t.data,a=e.startTime||e.createTime||"",s={orderNo:e.orderId,status:e.orderStatus,deviceId:e.deviceNo,payWay:e.payWay,startTime:a,endTime:e.endTime||"",amount:e.payAmount||e.actualDeviceAmount||"0.00"};n.value=[s,...n.value];const r=i.findIndex((t=>t.status.includes(e.orderStatus)));-1!==r&&c(r)}}catch(t){console.error("获取订单详情失败:",t)}await u()}));const c=async e=>{o.value=e;const t=i[e].status[0];await u(t)},u=async t=>{try{null!=t&&(t={orderStatus:t});const e=await a.getOrderList(t);200===e.code&&e.data&&e.data.records&&(n.value=e.data.records.map((e=>{const t=e.startTime||e.createTime||"";return{orderNo:e.orderNo,orderId:e.orderId,orderStatus:e.orderStatus,deviceId:e.deviceNo,payWay:e.payWay,startTime:t,endTime:e.endTime||"",amount:e.payAmount||e.actualDeviceAmount||"0.00"}})))}catch(s){console.error("获取订单列表失败:",s),e.index.showToast({title:"获取订单列表失败",icon:"none"})}};return(r,l)=>e.e({a:e.f(i,((t,a,s)=>({a:e.t(t.text),b:a,c:o.value===a?1:"",d:e.o((e=>c(a)),a)}))),b:0===n.value.length},(n.value.length,{}),{c:e.f(n.value,((r,n,c)=>{var l,m;return e.e({a:e.t(r.orderNo),b:e.t(null==(l=d[r.orderStatus])?void 0:l.text),c:e.n(null==(m=d[r.orderStatus])?void 0:m.class),d:e.t(r.deviceId),e:"wx_score_pay"==r.payWay},"wx_score_pay"==r.payWay?{f:t._imports_0$2}:{},{g:e.t(r.startTime),h:e.t(r.endTime||"-"),i:e.t(r.amount),j:"waiting_for_payment"===r.status||"waiting_for_payment"===r.orderStatus},"waiting_for_payment"===r.status||"waiting_for_payment"===r.orderStatus?{k:e.o((t=>(async t=>{try{e.index.showLoading({title:"处理中"});const r=await e.index.request({url:`${s.URL||"http://127.0.0.1:8080"}/app/wx-payment/create/${t.orderNo}`,method:"GET",header:{Authorization:"Bearer "+e.index.getStorageSync("token"),Clientid:e.index.getStorageSync("client_id")}});if(200!==r.statusCode||200!==r.data.code)throw new Error(r.data.msg||"创建支付订单失败");{const s=r.data.data;await e.index.requestPayment({...s,success:async()=>{e.index.showToast({title:"支付成功",icon:"success"});try{await a.updateUserBalance(t.orderId||t.orderNo)}catch(s){console.warn("更新用户余额失败:",s)}await u(i[o.value].status)},fail:e=>{throw console.error("支付失败:",e),new Error("支付失败,请重试")}})}e.index.hideLoading()}catch(r){e.index.hideLoading(),e.index.showToast({title:r.message||"支付失败",icon:"none"})}})(r)),n)}:{},{l:"waiting_for_payment"===r.status||"waiting_for_payment"===r.orderStatus},"waiting_for_payment"===r.status||"waiting_for_payment"===r.orderStatus?{m:e.o((t=>(async t=>{try{e.index.showModal({title:"确认取消",content:"确定要取消此订单吗?",success:async s=>{if(s.confirm){e.index.showLoading({title:"处理中"});const s=await a.cancelOrder({orderId:t.orderNo});if(!s)throw new Error(s.msg||"取消订单失败");e.index.hideLoading(),e.index.showToast({title:"订单已取消",icon:"success"}),await u()}}})}catch(s){e.index.hideLoading(),e.index.showToast({title:s.message||"取消订单失败",icon:"none"})}})(r)),n)}:{},{n:"in_used"==r.status||"in_used"==r.orderStatus},"in_used"==r.status||"in_used"==r.orderStatus?{o:e.o((t=>{return a=r.deviceId,s=r.orderId,console.log(s),void e.index.navigateTo({url:`/pages/return/index?deviceId=${a}&orderId=${s}`});var a,s}),n)}:{},{p:e.o((t=>(t=>{e.index.navigateTo({url:`/pages/order/details?orderId=${t.orderId||t.orderNo}`})})(r)),n),q:n})}))})}},o=e._export_sfc(r,[["__scopeId","data-v-57aa6fd9"]]);wx.createPage(o);
+1 -1
View File
@@ -1 +1 @@
<view class="order-container data-v-2998ff8e"><view class="status-tabs data-v-2998ff8e"><view wx:for="{{a}}" wx:for-item="tab" wx:key="b" class="{{['tab-item', 'data-v-2998ff8e', tab.c && 'active']}}" bindtap="{{tab.d}}">{{tab.a}}</view></view><view class="order-list data-v-2998ff8e"><view wx:if="{{b}}" class="empty-state data-v-2998ff8e"><view class="empty-icon data-v-2998ff8e"></view><text class="empty-text data-v-2998ff8e">暂无订单记录</text></view><view wx:for="{{c}}" wx:for-item="order" wx:key="q" class="order-item data-v-2998ff8e"><view class="order-header data-v-2998ff8e"><view class="order-id data-v-2998ff8e"><text class="data-v-2998ff8e">订单号:{{order.a}}</text></view><view class="{{['order-status', 'data-v-2998ff8e', order.c]}}">{{order.b}}</view></view><view class="order-body data-v-2998ff8e"><view class="device-info data-v-2998ff8e"><view class="device-left data-v-2998ff8e"><view class="device-name data-v-2998ff8e">共享风扇</view><view class="device-id data-v-2998ff8e">设备号:{{order.d}}</view></view><view class="device-right data-v-2998ff8e"><view wx:if="{{order.e}}" class="payment-badge wx-score data-v-2998ff8e"><image src="{{order.f}}" mode="aspectFit" class="badge-icon data-v-2998ff8e"></image><view class="badge-text data-v-2998ff8e"><text class="data-v-2998ff8e">微信支付分</text><text class="divider data-v-2998ff8e">|</text><text class="highlight data-v-2998ff8e">免押租借</text></view></view><view wx:else class="payment-badge deposit data-v-2998ff8e"><text class="badge-text data-v-2998ff8e">押金租借</text></view></view></view><view class="order-times data-v-2998ff8e"><view class="time-row data-v-2998ff8e"><text class="time-label data-v-2998ff8e">开始时间:</text><text class="time-value data-v-2998ff8e">{{order.g}}</text></view><view class="time-row data-v-2998ff8e"><text class="time-label data-v-2998ff8e">结束时间:</text><text class="time-value data-v-2998ff8e">{{order.h}}</text></view></view></view><view class="order-footer data-v-2998ff8e"><view class="price data-v-2998ff8e">¥{{order.i}}</view><view class="actions data-v-2998ff8e"><view wx:if="{{order.j}}" class="action-item primary data-v-2998ff8e" bindtap="{{order.k}}"> 立即支付 </view><view wx:if="{{order.l}}" class="action-item secondary data-v-2998ff8e" bindtap="{{order.m}}"> 取消订单 </view><view wx:if="{{order.n}}" class="action-item primary data-v-2998ff8e" bindtap="{{order.o}}"> 归还设备 </view><view class="action-item secondary data-v-2998ff8e" bindtap="{{order.p}}"> 查看详情 </view></view></view></view></view></view> <view class="order-container data-v-57aa6fd9"><view class="status-tabs data-v-57aa6fd9"><view wx:for="{{a}}" wx:for-item="tab" wx:key="b" class="{{['tab-item', 'data-v-57aa6fd9', tab.c && 'active']}}" bindtap="{{tab.d}}">{{tab.a}}</view></view><view class="order-list data-v-57aa6fd9"><view wx:if="{{b}}" class="empty-state data-v-57aa6fd9"><view class="empty-icon data-v-57aa6fd9"></view><text class="empty-text data-v-57aa6fd9">暂无订单记录</text></view><view wx:for="{{c}}" wx:for-item="order" wx:key="q" class="order-item data-v-57aa6fd9"><view class="order-header data-v-57aa6fd9"><view class="order-id data-v-57aa6fd9"><text class="data-v-57aa6fd9">订单号:{{order.a}}</text></view><view class="{{['order-status', 'data-v-57aa6fd9', order.c]}}">{{order.b}}</view></view><view class="order-body data-v-57aa6fd9"><view class="device-info data-v-57aa6fd9"><view class="device-left data-v-57aa6fd9"><view class="device-name data-v-57aa6fd9">共享风扇</view><view class="device-id data-v-57aa6fd9">设备号:{{order.d}}</view></view><view class="device-right data-v-57aa6fd9"><view wx:if="{{order.e}}" class="payment-badge wx-score data-v-57aa6fd9"><image src="{{order.f}}" mode="aspectFit" class="badge-icon data-v-57aa6fd9"></image><view class="badge-text data-v-57aa6fd9"><text class="data-v-57aa6fd9">微信支付分</text><text class="divider data-v-57aa6fd9">|</text><text class="highlight data-v-57aa6fd9">免押租借</text></view></view><view wx:else class="payment-badge deposit data-v-57aa6fd9"><text class="badge-text data-v-57aa6fd9">押金租借</text></view></view></view><view class="order-times data-v-57aa6fd9"><view class="time-row data-v-57aa6fd9"><text class="time-label data-v-57aa6fd9">开始时间:</text><text class="time-value data-v-57aa6fd9">{{order.g}}</text></view><view class="time-row data-v-57aa6fd9"><text class="time-label data-v-57aa6fd9">结束时间:</text><text class="time-value data-v-57aa6fd9">{{order.h}}</text></view></view></view><view class="order-footer data-v-57aa6fd9"><view class="price data-v-57aa6fd9">¥{{order.i}}</view><view class="actions data-v-57aa6fd9"><view wx:if="{{order.j}}" class="action-item primary data-v-57aa6fd9" bindtap="{{order.k}}"> 立即支付 </view><view wx:if="{{order.l}}" class="action-item secondary data-v-57aa6fd9" bindtap="{{order.m}}"> 取消订单 </view><view wx:if="{{order.n}}" class="action-item primary data-v-57aa6fd9" bindtap="{{order.o}}"> 归还设备 </view><view class="action-item secondary data-v-57aa6fd9" bindtap="{{order.p}}"> 查看详情 </view></view></view></view></view></view>
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -1 +1 @@
{"version":3,"file":"url.js","sources":["config/url.js"],"sourcesContent":["// export const URL = \"https://my.gxfs123.com/api\" //正式服务器\r\nexport const URL = \"https://unifans.gxfs123.com/api\" //测试服务器\r\n// export const URL = \"http://192.168.10.60:8080\" \t\t//本地调试\r\n\r\nexport const appid = \"wx2165f0be356ae7a9\" //小程序appid"],"names":[],"mappings":";AACY,MAAC,MAAM;AAGP,MAAC,QAAQ;;;"} {"version":3,"file":"url.js","sources":["config/url.js"],"sourcesContent":["// export const URL = \"https://my.gxfs123.com/api\" //正式服务器\r\nexport const URL = \"https://unifans.gxfs123.com/api\" //测试服务器\r\n// export const URL = \"http://192.168.10.70:8080\" \t\t//本地调试\r\n\r\nexport const appid = \"wx2165f0be356ae7a9\" //小程序appid"],"names":[],"mappings":";AACY,MAAC,MAAM;AAGP,MAAC,QAAQ;;;"}
File diff suppressed because one or more lines are too long
+32 -9
View File
@@ -2,6 +2,7 @@
const common_vendor = require("../../common/vendor.js"); const common_vendor = require("../../common/vendor.js");
const common_assets = require("../../common/assets.js"); const common_assets = require("../../common/assets.js");
const config_user = require("../../config/user.js"); const config_user = require("../../config/user.js");
const config_url = require("../../config/url.js");
const _sfc_main = { const _sfc_main = {
__name: "index", __name: "index",
setup(__props) { setup(__props) {
@@ -88,7 +89,7 @@ const _sfc_main = {
} }
} }
} catch (error) { } catch (error) {
common_vendor.index.__f__("error", "at pages/order/index.vue:222", "获取订单详情失败:", error); common_vendor.index.__f__("error", "at pages/order/index.vue:226", "获取订单详情失败:", error);
} }
} }
await loadOrderList(); await loadOrderList();
@@ -122,7 +123,7 @@ const _sfc_main = {
}); });
} }
} catch (error) { } catch (error) {
common_vendor.index.__f__("error", "at pages/order/index.vue:266", "获取订单列表失败:", error); common_vendor.index.__f__("error", "at pages/order/index.vue:270", "获取订单列表失败:", error);
common_vendor.index.showToast({ common_vendor.index.showToast({
title: "获取订单列表失败", title: "获取订单列表失败",
icon: "none" icon: "none"
@@ -130,7 +131,7 @@ const _sfc_main = {
} }
}; };
const navigateToReturn = (deviceId, orderId) => { const navigateToReturn = (deviceId, orderId) => {
common_vendor.index.__f__("log", "at pages/order/index.vue:295", orderId); common_vendor.index.__f__("log", "at pages/order/index.vue:299", orderId);
common_vendor.index.navigateTo({ common_vendor.index.navigateTo({
url: `/pages/return/index?deviceId=${deviceId}&orderId=${orderId}` url: `/pages/return/index?deviceId=${deviceId}&orderId=${orderId}`
}); });
@@ -145,17 +146,39 @@ const _sfc_main = {
common_vendor.index.showLoading({ common_vendor.index.showLoading({
title: "处理中" title: "处理中"
}); });
const res = await config_user.confirmPaymentAndRent(order.orderNo); const res = await common_vendor.index.request({
if (res.code === 200) { url: `${config_url.URL || "http://127.0.0.1:8080"}/app/wx-payment/create/${order.orderNo}`,
common_vendor.index.hideLoading(); method: "GET",
header: {
"Authorization": "Bearer " + common_vendor.index.getStorageSync("token"),
"Clientid": common_vendor.index.getStorageSync("client_id")
}
});
if (res.statusCode === 200 && res.data.code === 200) {
const payParams = res.data.data;
await common_vendor.index.requestPayment({
...payParams,
success: async () => {
common_vendor.index.showToast({ common_vendor.index.showToast({
title: "支付成功", title: "支付成功",
icon: "success" icon: "success"
}); });
await loadOrderList(orderStatusTabs[currentTab.value].status); try {
} else { await config_user.updateUserBalance(order.orderId || order.orderNo);
throw new Error(res.msg || "支付失败"); } catch (error) {
common_vendor.index.__f__("warn", "at pages/order/index.vue:345", "更新用户余额失败:", error);
} }
await loadOrderList(orderStatusTabs[currentTab.value].status);
},
fail: (err) => {
common_vendor.index.__f__("error", "at pages/order/index.vue:352", "支付失败:", err);
throw new Error("支付失败,请重试");
}
});
} else {
throw new Error(res.data.msg || "创建支付订单失败");
}
common_vendor.index.hideLoading();
} catch (error) { } catch (error) {
common_vendor.index.hideLoading(); common_vendor.index.hideLoading();
common_vendor.index.showToast({ common_vendor.index.showToast({