diff --git a/backend/src/main/java/com/maternalmall/domain/OrderItem.java b/backend/src/main/java/com/maternalmall/domain/OrderItem.java index 000bd5c..1e7a2d9 100644 --- a/backend/src/main/java/com/maternalmall/domain/OrderItem.java +++ b/backend/src/main/java/com/maternalmall/domain/OrderItem.java @@ -27,4 +27,7 @@ public class OrderItem { @Column(nullable = false, precision = 10, scale = 2) private BigDecimal unitPrice; + + @Column(length = 255) + private String productImage; } diff --git a/backend/src/main/java/com/maternalmall/service/MallService.java b/backend/src/main/java/com/maternalmall/service/MallService.java index 1a7a97f..fa2253c 100644 --- a/backend/src/main/java/com/maternalmall/service/MallService.java +++ b/backend/src/main/java/com/maternalmall/service/MallService.java @@ -189,6 +189,7 @@ public class MallService { item.setProductName(product.getName()); item.setQuantity(cartItem.getQuantity()); item.setUnitPrice(product.getPrice()); + item.setProductImage(product.getImageUrl()); orderItemRepository.save(item); } cartItemRepository.deleteByCustomerId(customerId); @@ -233,6 +234,7 @@ public class MallService { item.setProductName(product.getName()); item.setQuantity(quantity); item.setUnitPrice(product.getPrice()); + item.setProductImage(product.getImageUrl()); orderItemRepository.save(item); return order; diff --git a/frontend/src/views/OrdersView.vue b/frontend/src/views/OrdersView.vue index c47e7a4..b41467b 100644 --- a/frontend/src/views/OrdersView.vue +++ b/frontend/src/views/OrdersView.vue @@ -45,9 +45,21 @@
-
+
+
+ 商品图片 +
+
{{ item.productName }}
+
+ x{{ item.quantity }} + ¥{{ item.unitPrice }} +
+
+
+
+
商品信息 - 查看详情 + 暂无商品信息
@@ -151,7 +163,18 @@ const goProducts = () => router.push('/products') const goCart = () => router.push('/cart') const loadOrders = async () => { - orders.value = await api.customerOrders() + const orderList = await api.customerOrders() + // 为每个订单加载商品详情 + for (const order of orderList) { + try { + const items = await api.orderItems(order.id) + order.items = items + } catch (e) { + console.error('加载订单商品失败:', order.id, e) + order.items = [] + } + } + orders.value = orderList } const formatDate = (date) => { @@ -368,6 +391,62 @@ onMounted(async () => { margin-bottom: 16px; } +.order-items-list { + display: flex; + flex-direction: column; + gap: 12px; +} + +.order-item { + display: flex; + align-items: center; + gap: 12px; + padding: 12px; + background: #f9f9f9; + border-radius: 8px; +} + +.item-image { + width: 60px; + height: 60px; + object-fit: cover; + border-radius: 6px; + background: #fff; +} + +.item-details { + flex: 1; + display: flex; + flex-direction: column; + gap: 4px; +} + +.item-name { + font-weight: 500; + color: #333; + font-size: 14px; + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.item-meta { + display: flex; + justify-content: space-between; + align-items: center; +} + +.item-quantity { + color: #666; + font-size: 13px; +} + +.item-price { + color: #ff4d4f; + font-weight: 600; + font-size: 14px; +} + .order-item-preview { display: flex; justify-content: space-between;