fix(mini-user): polish logistics detail page layout and timeline order (v3.4.13)

Use custom navigation bar, remove delivery status section, and show newest track nodes first.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-08-05 23:14:18 +08:00
parent 8ca893efab
commit 62652cd072
6 changed files with 34 additions and 28 deletions
@@ -1,4 +1,4 @@
import { useEffect, useState } from 'react';
import { useEffect, useMemo, useState } from 'react';
import { View, Text } from '@tarojs/components';
import Taro, { useRouter } from '@tarojs/taro';
import PageShell from '../../components/PageShell';
@@ -9,6 +9,7 @@ import {
fetchOrderTrack,
formatTrackNodeTime,
shouldLoadOrderTrack,
sortTrackNodesNewestFirst,
type OrderDelivery,
type OrderTrackNode,
} from '../../lib/order-logistics';
@@ -21,16 +22,6 @@ type OrderDetail = {
delivery?: OrderDelivery | null;
};
const STATUS_LABELS: Record<string, string> = {
PENDING_SHIP: '待发货',
OUT_WAREHOUSE: '出库中',
SHIPPING: '配送中',
SHIPPED: '配送中',
PENDING_RECEIVE: '待签收',
DELIVERED: '待签收',
COMPLETED: '已完成',
};
export default function OrderLogisticsPage() {
const router = useRouter();
const orderId = router.params.id ?? '';
@@ -39,6 +30,8 @@ export default function OrderLogisticsPage() {
const [trackNodes, setTrackNodes] = useState<OrderTrackNode[]>([]);
const [trackLoading, setTrackLoading] = useState(false);
const sortedTrackNodes = useMemo(() => sortTrackNodesNewestFirst(trackNodes), [trackNodes]);
useEffect(() => {
if (!orderId) return;
let cancelled = false;
@@ -89,19 +82,12 @@ export default function OrderLogisticsPage() {
return (
<PageShell variant="sub" className="order-logistics-page">
<SubPageHeader title="物流详情" />
<View className="sub-page-body">
<View className="sub-page-body order-logistics-body">
{!order ? (
<View className="u-empty"></View>
) : (
<>
<View className="order-card">
<Text className="order-card-title"></Text>
<Text className="order-list-status">
{STATUS_LABELS[order.status || ''] || order.status || '处理中'}
</Text>
</View>
<View className="order-card">
<View className="order-card order-logistics-info-card">
<Text className="order-card-title"></Text>
<View className="order-row">
<Text className="order-row-label"></Text>
@@ -133,11 +119,11 @@ export default function OrderLogisticsPage() {
<Text className="order-card-title"></Text>
<Text className="u-muted"></Text>
</View>
) : trackNodes.length > 0 ? (
) : sortedTrackNodes.length > 0 ? (
<View className="order-card">
<Text className="order-card-title"></Text>
<View className="order-logistics-timeline">
{trackNodes.map((node, index) => (
{sortedTrackNodes.map((node, index) => (
<View
key={`${node.trackInfo}-${node.createTime}-${index}`}
className={`order-logistics-timeline-item${index === 0 ? ' order-logistics-timeline-item--latest' : ''}`}