ai-coding
2026-07-28 4141ef53916f051149a7afbcbec98febf5af9988
fix(trip-status): 修复离线告警与排队等待时间展示重叠问题

Co-Authored-By: 何宏文 <hehw@xiaopeng.com>
2个文件已修改
16 ■■■■■ 已修改文件
src/robotaxi/pages/begin-route/components/calling-car-modules/trip-status-header.tsx 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/hooks/use-order-cancel.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/calling-car-modules/trip-status-header.tsx
@@ -6,7 +6,7 @@
type QueueStatus = {
  currentPosition: number;
  estimatedWaitTime: number;
  estimatedWaitTime: number | null;
  status: number;
  totalCount: number;
} | null;
@@ -50,6 +50,8 @@
    ? { value: 1, unit: '分钟' as const }
    : durationDisplay; // 剩余时间小于 1 分钟时按 1 分钟展示,不展示秒
  const inServiceDurationDisplay = normalizedDurationDisplay; // 行程中沿用统一的归一化时长
  // 排队接口返回实时预计等待分钟数;无有效值时回退下单时的初始预估。
  const displayedWaitMinutes = queueStatus?.estimatedWaitTime ?? waitMinutes;
  useEffect(() => {
    if (tripStatus !== TripStatus.CallingCar || !orderId) {
@@ -68,13 +70,17 @@
          return;
        }
        const queueData = res?.data ?? res;
        const rawEstimatedWaitTime = queueData?.estimatedWaitTime;
        const estimatedWaitTime = rawEstimatedWaitTime === null || rawEstimatedWaitTime === undefined || rawEstimatedWaitTime === ''
          ? null
          : Number(rawEstimatedWaitTime);
        if (
          Number(queueData?.currentPosition) > 0 &&
          Number(queueData?.totalCount) > 0
        ) {
          setQueueStatus({
            currentPosition: Number(queueData.currentPosition),
            estimatedWaitTime: Number(queueData.estimatedWaitTime) || 0,
            estimatedWaitTime: typeof estimatedWaitTime === 'number' && Number.isFinite(estimatedWaitTime) && estimatedWaitTime >= 0 ? estimatedWaitTime : null,
            status: Number(queueData.status) || 0,
            totalCount: Number(queueData.totalCount)
          });
@@ -147,7 +153,7 @@
          <View className='calling-car-content'>
            <View className='calling-car-content-main'>
              <View className='calling-car-content-title calling-car-content-title--strong'>
                预计{waitMinutes}分钟内有车应答
                预计{displayedWaitMinutes ?? '-'}分钟内有车应答
              </View>
              <View className='calling-car-content-desc'>
                正全力为您叫车中...
@@ -161,7 +167,7 @@
            </View>
            <View
              className='calling-car-cancel-btn'
              onClick={() => handleOpenCancelPopup?.({ durationDisplay, waitMinutes })}
              onClick={() => handleOpenCancelPopup?.({ durationDisplay, waitMinutes: displayedWaitMinutes })}
            >
              取消行程
            </View>
src/robotaxi/pages/begin-route/hooks/use-order-cancel.ts
@@ -175,7 +175,7 @@
   */
  const handleOpenCancelPopupByTripStatus = (status: TripStatus, displayInfo?: any) => {
    const waitMinutes = Number(displayInfo?.waitMinutes);
    if (status === TripStatus.VehicleApproaching && Number.isFinite(waitMinutes)) {
    if ([TripStatus.CallingCar, TripStatus.VehicleApproaching].includes(status) && Number.isFinite(waitMinutes)) {
      deps.setCancelPopupWaitMinutes(waitMinutes);
    } else {
      deps.setCancelPopupWaitMinutes(null);