diff --git a/yelaymaths/app.json b/yelaymaths/app.json index 7e51ae3..faddc29 100644 --- a/yelaymaths/app.json +++ b/yelaymaths/app.json @@ -10,6 +10,7 @@ "pages/VideoDetailsPage/VideoDetailsPage", "pages/IndexNewCourseDetails/IndexNewCourseDetails", "pages/IndexFreeCourseDetails/IndexFreeCourseDetails", + "pages/orders/orders", "pages/ChangeUserInfo/ChangeUserInfo" ], "window": { diff --git a/yelaymaths/pages/orders/orders.js b/yelaymaths/pages/orders/orders.js new file mode 100644 index 0000000..32e8935 --- /dev/null +++ b/yelaymaths/pages/orders/orders.js @@ -0,0 +1,61 @@ +// pages/orders/orders.js +// +// 订单中心:列出当前用户的全部订单,微信审核要求交易类小程序必须提供这个页面。 +// 数据来自服务端 GET /v1/orders(只返回自己的单)。 +const api = require('../../utils/api'); +const format = require('../../utils/format'); +const store = require('../../utils/store'); + +const app = getApp(); + +Page({ + data: { + loading: true, + list: [], + /** 按钮文案走后台配置 */ + contactText: '', + }, + + onLoad() { + // 等启动流程把配置和身份准备好再拉,避免首屏空白 + app.ready().then(() => { + this.applyConfig(); + this.load(); + }); + }, + + /** 每次回到页面都重新拉一次,付款回来能立刻看到新订单。 */ + onShow() { + if (!this.data.loading) this.load(); + }, + + applyConfig() { + this.setData({ contactText: store.cfg('course.button.contact') }); + }, + + load() { + api + .getOrders() + .then((list) => { + this.setData({ + loading: false, + list: (list || []).map((item) => ({ + outTradeNo: item.outTradeNo, + title: item.courseTitle || '', + statusText: item.statusText || '', + status: item.status, + amountYuan: format.fenToYuan(item.amountFen), + createdAtText: format.toDateTimeString(item.createdAt), + })), + }); + }) + .catch((err) => { + this.setData({ loading: false }); + wx.showToast({ title: (err && err.message) || '订单加载失败', icon: 'none' }); + }); + }, + + onShareAppMessage() { + return { title: store.cfg('share.title'), path: '/pages/index/index' }; + }, +}); diff --git a/yelaymaths/pages/orders/orders.json b/yelaymaths/pages/orders/orders.json new file mode 100644 index 0000000..5c1f617 --- /dev/null +++ b/yelaymaths/pages/orders/orders.json @@ -0,0 +1,3 @@ +{ + "navigationBarTitleText": "我的订单" +} diff --git a/yelaymaths/pages/orders/orders.wxml b/yelaymaths/pages/orders/orders.wxml new file mode 100644 index 0000000..6f34a3b --- /dev/null +++ b/yelaymaths/pages/orders/orders.wxml @@ -0,0 +1,25 @@ + + + 加载中… + 暂无订单 + + + + + {{item.title}} + {{item.statusText}} + + + 订单号 {{item.outTradeNo}} + + + ¥{{item.amountYuan}} + {{item.createdAtText}} + + + + + + diff --git a/yelaymaths/pages/orders/orders.wxss b/yelaymaths/pages/orders/orders.wxss new file mode 100644 index 0000000..cf8f918 --- /dev/null +++ b/yelaymaths/pages/orders/orders.wxss @@ -0,0 +1,58 @@ +/* pages/orders/orders.wxss */ +.order-page { + padding: 20rpx; + box-sizing: border-box; + height: 100vh; +} + +.order-hint { + margin-top: 200rpx; + text-align: center; + font-size: 28rpx; + color: #999; +} + +.order-item { + width: 710rpx; + margin-bottom: 20rpx; + padding: 24rpx; + border-radius: 20rpx; + background-color: #fff; + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1); + box-sizing: border-box; +} + +.order-line { + display: flex; + justify-content: space-between; + align-items: center; +} + +.order-title { + font-size: 30rpx; + color: #333; +} + +.order-status { + font-size: 26rpx; + color: #00aa00; +} + +.order-sub { + margin-top: 12rpx; + font-size: 24rpx; + color: #888; +} + +.order-amount { + color: #e60012; +} + +.order-service { + width: 710rpx; + margin: 40rpx 0 60rpx; + border-radius: 45rpx; + font-size: 30rpx; + color: #fff; + background-color: #4caf50; +} diff --git a/yelaymaths/pages/wode/wode.js b/yelaymaths/pages/wode/wode.js index b45c32a..043e192 100644 --- a/yelaymaths/pages/wode/wode.js +++ b/yelaymaths/pages/wode/wode.js @@ -20,6 +20,8 @@ Page({ text4: '', text5: '', text6: '', + /** 「我的订单」入口文案,走后台配置 */ + ordersText: '', }, onLoad() { @@ -43,6 +45,7 @@ Page({ text4: store.cfg('profile.menu.contact'), text5: store.cfg('profile.menu.wechat'), text6: store.cfg('profile.qrcode_caption'), + ordersText: store.cfg('profile.menu.orders'), qrcodeUrl: qrcodeName ? config.STATIC_BASE_URL + '/Images/WXCode/' + qrcodeName + '.png' : '', }); }, @@ -76,6 +79,11 @@ Page({ wx.navigateTo({ url: '/pages/ChangeUserInfo/ChangeUserInfo' }); }, + /** 订单中心:微信审核要求交易类小程序必须有,入口放在这一页。 */ + toOrders() { + wx.navigateTo({ url: '/pages/orders/orders' }); + }, + showQrcode() { this.setData({ showCode: true }); }, diff --git a/yelaymaths/pages/wode/wode.wxml b/yelaymaths/pages/wode/wode.wxml index 2ae97d3..99994db 100644 --- a/yelaymaths/pages/wode/wode.wxml +++ b/yelaymaths/pages/wode/wode.wxml @@ -31,6 +31,11 @@ > + +