diff --git a/backend/app/api/controller/v1/order/CenterOrderController.php b/backend/app/api/controller/v1/order/CenterOrderController.php
index 396b0b2f0..c3f615524 100644
--- a/backend/app/api/controller/v1/order/CenterOrderController.php
+++ b/backend/app/api/controller/v1/order/CenterOrderController.php
@@ -300,7 +300,8 @@ class CenterOrderController
'pay_price' => $priceData['payPrice'],// 应付金额
'pay_postage' => $priceData['payPostage'],// 配送费
'priceGroup' => [
- 'totalPrice' => $priceData['totalPrice'],// 订单总金额
+ 'totalPrice' => $priceData['totalPrice'],// 订单总金额(等级/会员优惠后)
+ 'sumPrice' => $priceData['sumPrice'] ?? $priceData['totalPrice'],// 商品原价总额(等级/会员优惠前)
'payPostage' => $priceData['payPostage'],// 配送费
'postageDiscount' => 0,// 配送费优惠
'levelPrice' => $priceData['levelPrice'] ?? 0,// 等级优惠
@@ -410,6 +411,8 @@ class CenterOrderController
$giftPrice = $priceGroup['giftPrice'] ?? 0;
$priceData = [
'totalPrice' => $priceGroup['totalPrice'] ?? 0,
+ // 原价总额:商品规格原价 × 数量之和,供确认页“商品总价”展示
+ 'sumPrice' => $priceGroup['sumPrice'] ?? 0,
'payPrice' => bcadd(
(string)bcadd((string)($priceGroup['totalPrice'] ?? 0), (string)($priceGroup['storePostage'] ?? 0), 2),
(string)$giftPrice,
@@ -576,7 +579,8 @@ class CenterOrderController
'pay_price' => $priceData['payPrice'],// 应付金额
'pay_postage' => $priceGroup['storePostage'] ?? 0,// 配送费
'priceGroup' => [
- 'totalPrice' => $priceGroup['totalPrice'] ?? 0,// 订单总金额
+ 'totalPrice' => $priceGroup['totalPrice'] ?? 0,// 订单总金额(等级/会员优惠后)
+ 'sumPrice' => $priceGroup['sumPrice'] ?? 0,// 商品原价总额(等级/会员优惠前)
'payPostage' => $priceGroup['storePostage'] ?? 0,// 配送费
'postageDiscount' => $priceGroup['storePostageDiscount'] ?? 0,// 配送费优惠
'levelPrice' => $priceGroup['levelPrice'] ?? 0,// 等级优惠
@@ -2175,8 +2179,14 @@ class CenterOrderController
}
$totalPrice = bcmul((string)$cartInfo[0]['truePrice'], (string)$cartInfo[0]['cart_num'], 2);
+ // 活动订单没有等级/会员折扣,原价总额取活动价;普通订单取规格原价
+ $sumPrice = $isActivityOrder
+ ? $totalPrice
+ : bcmul((string)($skuInfo['price'] ?? $productInfo['price'] ?? 0), (string)$num, 2);
$priceData = [
'totalPrice' => $totalPrice,
+ // 规格原价总额(等级/会员优惠前),与 cartInfo[0].sum_price 对齐
+ 'sumPrice' => $sumPrice,
'payPrice' => bcadd($totalPrice, (string)$payPostage, 2),
'payPostage' => $payPostage,
'isStoreFreePostage' => false,
diff --git a/frontend/uni-app/src/dynamic-pages/components/order/common/OrderPriceDetail.vue b/frontend/uni-app/src/dynamic-pages/components/order/common/OrderPriceDetail.vue
index e364fdf75..4662231b2 100644
--- a/frontend/uni-app/src/dynamic-pages/components/order/common/OrderPriceDetail.vue
+++ b/frontend/uni-app/src/dynamic-pages/components/order/common/OrderPriceDetail.vue
@@ -22,7 +22,7 @@
{{ $t(`快递费用`) }}
- ¥{{ payPostage }}
+ ¥{{ formattedOriginalPostage }}
{{ $t(`免运费`) }}
{{ $t(`免运费`) }}
@@ -100,6 +100,16 @@ const formattedDoorPostage = computed(() => {
const v = parseFloat(props.doorPostage || 0);
return isNaN(v) ? '0.00' : v.toFixed(2);
});
+
+/** 快递费用原价 = 优惠后运费 + 会员运费优惠,优惠单独展示在下方 */
+const originalPostage = computed(() => {
+ const pay = parseFloat(props.payPostage || 0);
+ const discount = parseFloat(props.postageDiscount || 0);
+ return (isNaN(pay) ? 0 : pay) + (isNaN(discount) ? 0 : discount);
+});
+
+/** 快递费用原价格式化:保留两位小数 */
+const formattedOriginalPostage = computed(() => originalPostage.value.toFixed(2));