diff --git a/miniapp/miniprogram/pages/orders/index.js b/miniapp/miniprogram/pages/orders/index.js
index e7d482c..f975db7 100644
--- a/miniapp/miniprogram/pages/orders/index.js
+++ b/miniapp/miniprogram/pages/orders/index.js
@@ -2,6 +2,7 @@ const { listGoodsOrders } = require('../../api/orderApi')
const { listExpressOrders } = require('../../api/expressApi')
const { listGroupBuyOrders } = require('../../api/groupBuyApi')
const { statusText } = require('../../utils/request')
+const { toOrderCards } = require('../../utils/orderPresenter')
Page({
data: {
@@ -25,35 +26,7 @@ Page({
listGroupBuyOrders().catch(() => [])
])
.then(([goodsOrders, expressOrders, groupBuyOrders]) => {
- const orders = []
- ;(goodsOrders || []).forEach((item) => orders.push({
- id: item.id,
- type: 'goods',
- typeText: '商品订单',
- orderNo: item.orderNo,
- title: item.orderNo,
- amountCent: item.payableAmountCent,
- status: item.status
- }))
- ;(expressOrders || []).forEach((item) => orders.push({
- id: item.id,
- type: 'express',
- typeText: '快递代取',
- orderNo: item.orderNo,
- title: item.expressCompany + ' ' + item.pickupCode,
- amountCent: item.feeCent,
- status: item.status
- }))
- ;(groupBuyOrders || []).forEach((item) => orders.push({
- id: item.id,
- type: 'group',
- typeText: '团购订单',
- orderNo: item.orderNo,
- title: item.groupBuyTitle,
- amountCent: item.amountCent,
- status: item.status
- }))
- this.setData({ orders })
+ this.setData({ orders: toOrderCards({ goodsOrders, expressOrders, groupBuyOrders }) })
})
.catch((error) => wx.showToast({ title: error.message, icon: 'none' }))
.finally(() => this.setData({ loading: false }))
diff --git a/miniapp/miniprogram/pages/orders/index.wxml b/miniapp/miniprogram/pages/orders/index.wxml
index efad5e7..b3bba8c 100644
--- a/miniapp/miniprogram/pages/orders/index.wxml
+++ b/miniapp/miniprogram/pages/orders/index.wxml
@@ -6,11 +6,11 @@
{{item.title}}
{{item.typeText}} {{item.orderNo}}
- {{item.status}}
+ {{item.statusText}}
- 状态:{{item.status}}
- ¥{{item.amountCent / 100}}
+ 状态:{{item.statusText}}
+ {{item.amountText}}
暂无订单
diff --git a/miniapp/miniprogram/utils/orderPresenter.js b/miniapp/miniprogram/utils/orderPresenter.js
new file mode 100644
index 0000000..0fb3450
--- /dev/null
+++ b/miniapp/miniprogram/utils/orderPresenter.js
@@ -0,0 +1,43 @@
+const { statusText, yuan } = require('./request')
+
+function toOrderCards({ goodsOrders = [], expressOrders = [], groupBuyOrders = [] }) {
+ const orders = []
+ ;(goodsOrders || []).forEach((item) => orders.push({
+ id: item.id,
+ type: 'goods',
+ typeText: '商品订单',
+ orderNo: item.orderNo,
+ title: item.orderNo,
+ amountCent: item.payableAmountCent,
+ amountText: '¥' + yuan(item.payableAmountCent),
+ status: item.status,
+ statusText: statusText(item.status)
+ }))
+ ;(expressOrders || []).forEach((item) => orders.push({
+ id: item.id,
+ type: 'express',
+ typeText: '快递代取',
+ orderNo: item.orderNo,
+ title: item.expressCompany + ' ' + item.pickupCode,
+ amountCent: item.feeCent,
+ amountText: '¥' + yuan(item.feeCent),
+ status: item.status,
+ statusText: statusText(item.status)
+ }))
+ ;(groupBuyOrders || []).forEach((item) => orders.push({
+ id: item.id,
+ type: 'group',
+ typeText: '团购订单',
+ orderNo: item.orderNo,
+ title: item.groupBuyTitle,
+ amountCent: item.amountCent,
+ amountText: '¥' + yuan(item.amountCent),
+ status: item.status,
+ statusText: statusText(item.status)
+ }))
+ return orders
+}
+
+module.exports = {
+ toOrderCards
+}
diff --git a/miniapp/miniprogram/utils/orderPresenter.test.js b/miniapp/miniprogram/utils/orderPresenter.test.js
new file mode 100644
index 0000000..7c6cdbf
--- /dev/null
+++ b/miniapp/miniprogram/utils/orderPresenter.test.js
@@ -0,0 +1,17 @@
+const { toOrderCards } = require('./orderPresenter')
+
+describe('toOrderCards', () => {
+ test('normalizes mixed orders for list display', () => {
+ const cards = toOrderCards({
+ goodsOrders: [{ id: 1, orderNo: 'GO00000001', payableAmountCent: 1590, status: 'PENDING_DELIVERY' }],
+ expressOrders: [{ id: 2, orderNo: 'EO00000001', expressCompany: 'SF', pickupCode: 'A1', feeCent: 400, status: 'PENDING_PICKUP' }],
+ groupBuyOrders: [{ id: 3, orderNo: 'GB00000001', groupBuyTitle: 'Today eggs', amountCent: 5980, status: 'PENDING_CONFIRM' }]
+ })
+
+ expect(cards).toEqual([
+ expect.objectContaining({ id: 1, type: 'goods', title: 'GO00000001', amountText: '¥15.90', statusText: '待配送' }),
+ expect.objectContaining({ id: 2, type: 'express', title: 'SF A1', amountText: '¥4.00', statusText: '待自提' }),
+ expect.objectContaining({ id: 3, type: 'group', title: 'Today eggs', amountText: '¥59.80', statusText: '待确认' })
+ ])
+ })
+})