From 47f4a247601479818aa571bb8faef7e6246b6bdd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E9=B9=8F?= Date: Tue, 7 Jul 2026 17:58:06 +0800 Subject: [PATCH] feat: present miniapp order details with formatted amounts --- miniapp/miniprogram/pages/orders/detail.js | 3 ++- miniapp/miniprogram/pages/orders/detail.wxml | 12 +++++------ miniapp/miniprogram/utils/orderPresenter.js | 21 +++++++++++++++++-- .../miniprogram/utils/orderPresenter.test.js | 19 ++++++++++++++++- 4 files changed, 45 insertions(+), 10 deletions(-) diff --git a/miniapp/miniprogram/pages/orders/detail.js b/miniapp/miniprogram/pages/orders/detail.js index ebabaf9..1655a56 100644 --- a/miniapp/miniprogram/pages/orders/detail.js +++ b/miniapp/miniprogram/pages/orders/detail.js @@ -2,6 +2,7 @@ const { getGoodsOrderDetail, cancelGoodsOrder } = require('../../api/orderApi') const { getExpressOrderDetail, cancelExpressOrder, completeExpressOrder } = require('../../api/expressApi') const { getGroupBuyOrderDetail, cancelGroupBuyOrder } = require('../../api/groupBuyApi') const { statusText } = require('../../utils/request') +const { toOrderDetail } = require('../../utils/orderPresenter') Page({ data: { @@ -23,7 +24,7 @@ Page({ group: getGroupBuyOrderDetail } loaders[this.type](this.id) - .then((order) => this.setData({ order })) + .then((order) => this.setData({ order: toOrderDetail(this.type, order) })) .catch((error) => wx.showToast({ title: error.message, icon: 'none' })) }, diff --git a/miniapp/miniprogram/pages/orders/detail.wxml b/miniapp/miniprogram/pages/orders/detail.wxml index 84712d0..3b49cb3 100644 --- a/miniapp/miniprogram/pages/orders/detail.wxml +++ b/miniapp/miniprogram/pages/orders/detail.wxml @@ -1,25 +1,25 @@ {{order.orderNo}} - {{order.status}} + {{order.statusText}} 类型:{{type}} - 商品金额:¥{{order.totalAmountCent / 100}} - 配送费:¥{{order.deliveryFeeCent / 100}} - 应收:¥{{order.payableAmountCent / 100}} + 商品金额:{{order.totalAmountText}} + 配送费:{{order.deliveryFeeText}} + 应收:{{order.payableAmountText}} {{order.deliveryMethod}} {{order.expressCompany}} / {{order.pickupCode}} {{order.pickupAddress}} - 服务费:¥{{order.feeCent / 100}} + 服务费:{{order.feeText}} {{order.groupBuyTitle}} 数量:{{order.quantity}} - 金额:¥{{order.amountCent / 100}} + 金额:{{order.amountText}} diff --git a/miniapp/miniprogram/utils/orderPresenter.js b/miniapp/miniprogram/utils/orderPresenter.js index 0fb3450..9f031d2 100644 --- a/miniapp/miniprogram/utils/orderPresenter.js +++ b/miniapp/miniprogram/utils/orderPresenter.js @@ -38,6 +38,23 @@ function toOrderCards({ goodsOrders = [], expressOrders = [], groupBuyOrders = [ return orders } -module.exports = { - toOrderCards +function toOrderDetail(type, order) { + const detail = Object.assign({}, order, { + statusText: statusText(order && order.status) + }) + if (type === 'goods') { + detail.totalAmountText = '¥' + yuan(order.totalAmountCent) + detail.deliveryFeeText = '¥' + yuan(order.deliveryFeeCent) + detail.payableAmountText = '¥' + yuan(order.payableAmountCent) + } else if (type === 'express') { + detail.feeText = '¥' + yuan(order.feeCent) + } else if (type === 'group') { + detail.amountText = '¥' + yuan(order.amountCent) + } + return detail +} + +module.exports = { + toOrderCards, + toOrderDetail } diff --git a/miniapp/miniprogram/utils/orderPresenter.test.js b/miniapp/miniprogram/utils/orderPresenter.test.js index 7c6cdbf..12ed180 100644 --- a/miniapp/miniprogram/utils/orderPresenter.test.js +++ b/miniapp/miniprogram/utils/orderPresenter.test.js @@ -1,4 +1,4 @@ -const { toOrderCards } = require('./orderPresenter') +const { toOrderCards, toOrderDetail } = require('./orderPresenter') describe('toOrderCards', () => { test('normalizes mixed orders for list display', () => { @@ -14,4 +14,21 @@ describe('toOrderCards', () => { expect.objectContaining({ id: 3, type: 'group', title: 'Today eggs', amountText: '¥59.80', statusText: '待确认' }) ]) }) + + test('normalizes an order detail for display', () => { + expect(toOrderDetail('goods', { + id: 1, + orderNo: 'GO00000001', + totalAmountCent: 1290, + deliveryFeeCent: 300, + payableAmountCent: 1590, + status: 'PENDING_DELIVERY' + })).toEqual(expect.objectContaining({ + orderNo: 'GO00000001', + statusText: '待配送', + totalAmountText: '¥12.90', + deliveryFeeText: '¥3.00', + payableAmountText: '¥15.90' + })) + }) })