From c1817b625585b0289477a5bb43189bf627c9b094 Mon Sep 17 00:00:00 2001
From: chen-xin-zhi <3588068430@qq.com>
Date: Fri, 8 Aug 2025 19:21:04 +0800
Subject: [PATCH] =?UTF-8?q?=E6=A8=A1=E6=8B=9F=E4=BA=86=E5=BE=AE=E4=BF=A1?=
=?UTF-8?q?=E6=94=AF=E4=BB=98=E5=8A=9F=E8=83=BD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../course/courseOrderList/courseOrderList.js | 70 ++++++++++++--
.../courseOrderList/courseOrderList.wxml | 4 +-
.../courseOrderList/courseOrderList.wxss | 7 ++
.../createCourseOrder/createCourseOrder.js | 92 +++++++++++++++++--
.../createCourseOrder/createCourseOrder.wxml | 4 +-
.../createCourseOrder/createCourseOrder.wxss | 8 ++
pages/course/orderDetail/orderDetail.js | 59 +++++++++++-
pages/course/orderDetail/orderDetail.wxml | 3 +-
pages/course/orderDetail/orderDetail.wxss | 9 +-
.../accountSetting/accountSetting.js | 6 +-
.../accountSetting/accountSetting.wxml | 2 +-
.../accountSetting/accountSetting.wxss | 1 +
pages/personCenter/mine/mine.wxml | 4 +-
pages/personCenter/mine/mine.wxss | 7 +-
14 files changed, 246 insertions(+), 30 deletions(-)
diff --git a/pages/course/courseOrderList/courseOrderList.js b/pages/course/courseOrderList/courseOrderList.js
index f74f63b..cf8bcd6 100644
--- a/pages/course/courseOrderList/courseOrderList.js
+++ b/pages/course/courseOrderList/courseOrderList.js
@@ -5,6 +5,7 @@ Page({
data: {
orderList: [], // 后端返回的订单列表
hasModalShown: false, // 弹框只显示一次
+ isMaskVisible: false
},
onLoad(options) {
@@ -35,7 +36,7 @@ Page({
let list = res.data.data.map(item => {
// 计算从 createTime 到 now 剩余秒数
const createMs = new Date(item.createTime.replace(/-/g,'/')).getTime();
- let diff = Math.floor((createMs + 30*60*1000 - now) / 1000);
+ let diff = Math.floor((createMs + 15*60*1000 - now) / 1000);
// 只有“待支付”才需要倒计时、过期置“交易取消”
if (item.orderStatus === '待支付') {
@@ -80,6 +81,10 @@ Page({
// 每秒更新所有待支付订单的倒计时
startTimer() {
+ // ← 新增:如果已有定时器,先清掉它
+ if (this._timer) {
+ clearInterval(this._timer);
+ }
this._timer = setInterval(() => {
const updated = this.data.orderList.map(item => {
if (item.orderStatus === '待支付' && item.countDown > 0) {
@@ -108,6 +113,62 @@ Page({
}, 1000);
},
+ showIsPayModal(e) {
+ const orderId = e.currentTarget.dataset.orderId;
+ wx.showModal({
+ title: '下单成功',
+ content: '您确定要支付吗?',
+ cancelText: '取消',
+ confirmText: '确定',
+ success: (res) => {
+ if (res.confirm) {
+ this.payOrder(orderId);
+ } else if (res.cancel) {
+ this.setData({ isMaskVisible: false });
+ }
+ },
+ fail: () => {
+ wx.hideLoading();
+ wx.showToast({
+ title: '网络错误,下单失败',
+ icon: 'none'
+ });
+ }
+ });
+ },
+ payOrder(orderId) {
+ // 同样先显示遮罩
+ this.setData({ isMaskVisible: true });
+ wx.showLoading({ title: '支付中...'});
+ wx.request({
+ url: baseUrl + '/courseOrder/payment',
+ method: 'POST',
+ header: { Authorization: wx.getStorageSync('token') },
+ data: { id: orderId},
+ success: res => {
+ wx.hideLoading();
+ if (res.data.code === 1) {
+ // 支付成功,跳转详情页
+ wx.redirectTo({
+ url: `/pages/course/orderDetail/orderDetail?id=${orderId}`,
+ success: res => {
+ // 先把遮罩关掉
+ this.setData({ isMaskVisible: false });
+ }
+ });
+ } else {
+ this.setData({ isMaskVisible: false });
+ wx.showToast({ title: res.data.message || '支付失败', icon: 'none' });
+ }
+ },
+ fail: () => {
+ wx.hideLoading();
+ this.setData({ isMaskVisible: false });
+ wx.showToast({ title: '网络错误,支付失败', icon: 'none' });
+ }
+ });
+ },
+
// 跳转订单详情
gotoOrderDetail(e) {
const orderId = e.currentTarget.dataset.id;
@@ -135,11 +196,6 @@ Page({
}
}
});
- },
+ }
- // 支付订单
- payOrder() {
- // wx.navigateTo({ url: `/pages/pay/pay?orderId=${this.data.orderId}` });
- wx.showToast({ title: '支付功能稍后开放', icon: 'none' });
- },
});
diff --git a/pages/course/courseOrderList/courseOrderList.wxml b/pages/course/courseOrderList/courseOrderList.wxml
index 400b2f1..d68927b 100644
--- a/pages/course/courseOrderList/courseOrderList.wxml
+++ b/pages/course/courseOrderList/courseOrderList.wxml
@@ -30,11 +30,13 @@
取消订单
-
+
支付
+
\ No newline at end of file
diff --git a/pages/course/courseOrderList/courseOrderList.wxss b/pages/course/courseOrderList/courseOrderList.wxss
index 2ca186a..650ad25 100644
--- a/pages/course/courseOrderList/courseOrderList.wxss
+++ b/pages/course/courseOrderList/courseOrderList.wxss
@@ -9,6 +9,13 @@
.ml-11 {
margin-left: 20.63rpx;
}
+.page-mask {
+ position: fixed;
+ top: 0; left: 0;
+ width: 100%; height: 100%;
+ background-color: rgba(0, 0, 0, 0.3);
+ z-index: 9999;
+}
.page {
padding: 26.25rpx 0 50.63rpx;
background-color: #f8f8f8;
diff --git a/pages/course/createCourseOrder/createCourseOrder.js b/pages/course/createCourseOrder/createCourseOrder.js
index e6677ec..4bdf5ab 100644
--- a/pages/course/createCourseOrder/createCourseOrder.js
+++ b/pages/course/createCourseOrder/createCourseOrder.js
@@ -9,11 +9,15 @@ Page({
courseId: 0, // 课程id
courseObj: '', // 课程对象
globalImgUrl, // 全局图片
+ isMaskVisible: false
},
// 创建订单方法
createOrder() {
const { courseId } = this.data;
+ // 1. 显示遮罩,阻止二次点击
+ this.setData({ isMaskVisible: true });
+ wx.showLoading({ title: '正在创建订单...' });
let orderId ;
wx.request({
url: baseUrl + '/courseOrder/add',
@@ -25,16 +29,88 @@ Page({
Authorization :wx.getStorageSync('token'),
},
success : res => {
- console.log(res);
- this.setData({
- orderId: res.data.data
- })
- wx.navigateTo({
- url: `/pages/course/orderDetail/orderDetail?id=${this.data.orderId}`,
- })
+ orderId = res.data.data
+ this.setData({ orderId })
+ wx.hideLoading();
+ if (res.data.code === 1) {
+ this.showIsPayModal(orderId)
+ } else {
+ // 下单失败,关闭遮罩
+ this.setData({ isMaskVisible: false });
+ wx.showModal({
+ title: '下单失败',
+ content: res.data.message || '下单失败',
+ showCancel: false,
+ confirmText: '知道了'
+ });
+ }
+ },
+ fail: () => {
+ wx.hideLoading();
+ this.setData({ isMaskVisible: false });
+ wx.showToast({ title: '网络错误,下单失败', icon: 'none' });
}
})
-
+ },
+ showIsPayModal(orderId) {
+ wx.showModal({
+ title: '下单成功',
+ content: '您确定要支付吗?',
+ cancelText: '取消',
+ confirmText: '确定',
+ success: (res) => {
+ if (res.confirm) {
+ this.payOrder(orderId);
+ } else if (res.cancel) {
+ wx.navigateTo({
+ url: `/pages/course/orderDetail/orderDetail?id=${orderId}`,
+ success: res => {
+ // 先把遮罩关掉
+ this.setData({ isMaskVisible: false });
+ }
+ });
+ }
+ },
+ fail: () => {
+ wx.hideLoading();
+ wx.showToast({
+ title: '网络错误,下单失败',
+ icon: 'none'
+ });
+ }
+ });
+ },
+ payOrder(orderId) {
+ // 同样先显示遮罩
+ this.setData({ isMaskVisible: true });
+ wx.showLoading({ title: '支付中...'});
+ wx.request({
+ url: baseUrl + '/courseOrder/payment',
+ method: 'POST',
+ header: { Authorization: wx.getStorageSync('token') },
+ data: { id: orderId },
+ success: res => {
+ wx.hideLoading();
+ if (res.data.code === 1) {
+ // 支付成功,跳转详情页
+ wx.navigateTo({
+ url: `/pages/course/orderDetail/orderDetail?id=${orderId}`,
+ success: res => {
+ // 先把遮罩关掉
+ this.setData({ isMaskVisible: false });
+ }
+ });
+ } else {
+ this.setData({ isMaskVisible: false });
+ wx.showToast({ title: res.data.message || '支付失败', icon: 'none' });
+ }
+ },
+ fail: () => {
+ wx.hideLoading();
+ this.setData({ isMaskVisible: false });
+ wx.showToast({ title: '网络错误,支付失败', icon: 'none' });
+ }
+ });
},
// 获取课程详情
diff --git a/pages/course/createCourseOrder/createCourseOrder.wxml b/pages/course/createCourseOrder/createCourseOrder.wxml
index 21f1b98..838872d 100644
--- a/pages/course/createCourseOrder/createCourseOrder.wxml
+++ b/pages/course/createCourseOrder/createCourseOrder.wxml
@@ -38,9 +38,11 @@
diff --git a/pages/course/createCourseOrder/createCourseOrder.wxss b/pages/course/createCourseOrder/createCourseOrder.wxss
index a890855..860af91 100644
--- a/pages/course/createCourseOrder/createCourseOrder.wxss
+++ b/pages/course/createCourseOrder/createCourseOrder.wxss
@@ -7,6 +7,14 @@
.ml-1 {
margin-left: 1.88rpx;
}
+/* app.wxss 或 当前页面 .wxss */
+.page-mask {
+ position: fixed;
+ top: 0; left: 0;
+ width: 100%; height: 100%;
+ background-color: rgba(0, 0, 0, 0.3);
+ z-index: 9999;
+}
.page {
background-color: #f7f7f7;
width: 100%;
diff --git a/pages/course/orderDetail/orderDetail.js b/pages/course/orderDetail/orderDetail.js
index 31b46ce..909423a 100644
--- a/pages/course/orderDetail/orderDetail.js
+++ b/pages/course/orderDetail/orderDetail.js
@@ -8,6 +8,7 @@ Page({
_secondsRemaining: 0, // 内部倒计时秒数
_hasShownTimeout: false, // 是否已弹过“超时未支付”弹窗
globalImgUrl,
+ isMaskVisible: false
},
onLoad(options) {
@@ -15,7 +16,61 @@ Page({
this.setData({ orderId: options.id });
this.getOrderDetail();
},
-
+ showIsPayModal() {
+ const {orderId} = this.data
+ wx.showModal({
+ title: '下单成功',
+ content: '您确定要支付吗?',
+ cancelText: '取消',
+ confirmText: '确定',
+ success: (res) => {
+ if (res.confirm) {
+ this.payOrder(orderId);
+ } else if (res.cancel) {
+ this.setData({ isMaskVisible: false });
+ }
+ },
+ fail: () => {
+ wx.hideLoading();
+ wx.showToast({
+ title: '网络错误,下单失败',
+ icon: 'none'
+ });
+ }
+ });
+ },
+ payOrder(orderId) {
+ // 同样先显示遮罩
+ this.setData({ isMaskVisible: true });
+ wx.showLoading({ title: '支付中...'});
+ wx.request({
+ url: baseUrl + '/courseOrder/payment',
+ method: 'POST',
+ header: { Authorization: wx.getStorageSync('token') },
+ data: { id: orderId},
+ success: res => {
+ wx.hideLoading();
+ if (res.data.code === 1) {
+ // 支付成功,跳转详情页
+ wx.redirectTo({
+ url: `/pages/course/orderDetail/orderDetail?id=${orderId}`,
+ success: res => {
+ // 先把遮罩关掉
+ this.setData({ isMaskVisible: false });
+ }
+ });
+ } else {
+ this.setData({ isMaskVisible: false });
+ wx.showToast({ title: res.data.message || '支付失败', icon: 'none' });
+ }
+ },
+ fail: () => {
+ wx.hideLoading();
+ this.setData({ isMaskVisible: false });
+ wx.showToast({ title: '网络错误,支付失败', icon: 'none' });
+ }
+ });
+ },
onUnload() {
clearInterval(this._timer);
},
@@ -48,7 +103,7 @@ Page({
// 将 "2025-07-13 12:38:17" → 时间戳
const createMs = new Date(createTime.replace(/-/g, '/')).getTime();
const now = Date.now();
- let diff = Math.floor((createMs + 30 * 60 * 1000 - now) / 1000);
+ let diff = Math.floor((createMs + 15 * 60 * 1000 - now) / 1000);
if (diff <= 0) {
// 已超时
diff --git a/pages/course/orderDetail/orderDetail.wxml b/pages/course/orderDetail/orderDetail.wxml
index 681de0f..aa927da 100644
--- a/pages/course/orderDetail/orderDetail.wxml
+++ b/pages/course/orderDetail/orderDetail.wxml
@@ -73,7 +73,7 @@
取消
-
+
立即支付
@@ -84,4 +84,5 @@
退款
+
diff --git a/pages/course/orderDetail/orderDetail.wxss b/pages/course/orderDetail/orderDetail.wxss
index 0dd34d5..0d8a956 100644
--- a/pages/course/orderDetail/orderDetail.wxss
+++ b/pages/course/orderDetail/orderDetail.wxss
@@ -22,7 +22,14 @@
.mt-389 {
margin-top: 729.38rpx;
}
-
+/* app.wxss 或 当前页面 .wxss */
+.page-mask {
+ position: fixed;
+ top: 0; left: 0;
+ width: 100%; height: 100%;
+ background-color: rgba(0, 0, 0, 0.3);
+ z-index: 9999;
+}
/* 整体布局 */
.page {
padding-top: 26.25rpx;
diff --git a/pages/personCenter/accountSetting/accountSetting.js b/pages/personCenter/accountSetting/accountSetting.js
index f090c59..9bfe118 100644
--- a/pages/personCenter/accountSetting/accountSetting.js
+++ b/pages/personCenter/accountSetting/accountSetting.js
@@ -1,5 +1,5 @@
// pages/personCenter/accountSetting/accountSetting.js
-const { baseUrl } = require("../../../request");
+const { baseUrl, globalImgUrl } = require("../../../request");
Page({
@@ -9,7 +9,8 @@ Page({
data: {
nickName: "",
userAvatar: "",
- phoneNumber: ""
+ phoneNumber: "",
+ globalImgUrl
},
gotoResetPwd() {
@@ -66,7 +67,6 @@ Page({
if (res.data.code === 1) {
this.setData({
nickName: res.data.data.nickName,
- // TODO 头像未连接
userAvatar: res.data.data.userAvatar,
phoneNumber: res.data.data.phoneNumber,
userAccount: res.data.data.userAccount
diff --git a/pages/personCenter/accountSetting/accountSetting.wxml b/pages/personCenter/accountSetting/accountSetting.wxml
index 8d97a01..c6ece5a 100644
--- a/pages/personCenter/accountSetting/accountSetting.wxml
+++ b/pages/personCenter/accountSetting/accountSetting.wxml
@@ -3,7 +3,7 @@
{{ nickName }}
diff --git a/pages/personCenter/accountSetting/accountSetting.wxss b/pages/personCenter/accountSetting/accountSetting.wxss
index bf599ed..ef096de 100644
--- a/pages/personCenter/accountSetting/accountSetting.wxss
+++ b/pages/personCenter/accountSetting/accountSetting.wxss
@@ -20,6 +20,7 @@
.image {
width: 121.88rpx;
height: 121.88rpx;
+ border-radius: 30rpx;
}
.group_2 {
margin-top: 21.84rpx;
diff --git a/pages/personCenter/mine/mine.wxml b/pages/personCenter/mine/mine.wxml
index 20189e6..eacb75e 100644
--- a/pages/personCenter/mine/mine.wxml
+++ b/pages/personCenter/mine/mine.wxml
@@ -274,8 +274,8 @@
-
-
+
+