hejianhao
2026-06-11 34f055d824aa34fdcb02cdfef1883cecb9c4fe52
回退代码
2个文件已删除
13个文件已修改
303 ■■■■■ 已修改文件
src/robotaxi/pages/begin-route/components/calling-car-modules/door-trunk-control.tsx 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/calling-car-modules/trip-action-bar.tsx 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/calling-car-modules/trip-status-header.tsx 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/calling-car-modules/use-trip-countdown.ts 27 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/calling-car.tsx 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/hooks/order-door-open-storage.ts 48 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/hooks/use-bluetooth-car-control.ts 45 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/hooks/use-order-cancel.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/hooks/use-order-door-open-state.ts 99 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/hooks/use-order-payment.ts 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/hooks/use-view-delegates.tsx 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/hooks/web-socket-handlers/create-order-status-socket-handler.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/index.tsx 35 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/Robotaxi-public-method.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/utils/websocket.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/calling-car-modules/door-trunk-control.tsx
@@ -12,7 +12,6 @@
    tripStatus: TripStatus;
    orderId?: string;
    orderTrunkStatus?: boolean;
    hasDoorOpenedInCurrentOrder?: boolean;
    handleOpenOverRoutePopup?: () => void;
    onDoorUnlockSuccess?: () => void;
};
@@ -21,15 +20,14 @@
    tripStatus,
    orderId,
    orderTrunkStatus,
    hasDoorOpenedInCurrentOrder = false,
    handleOpenOverRoutePopup,
    onDoorUnlockSuccess
}: Props) {
    const [trunkStatus, setTrunkStatus] = useState(orderTrunkStatus); // 后备箱开关状态
    const [lockStatus, setLockStatus] = useState(false); // 车门开关状态
    const trunkPollTimerRef = useRef<any>(null); // 后备箱状态轮询定时器
    const overRoutePopupDebounceTimerRef = useRef<any>(null); // 结束行程弹窗防抖定时器
    const OVER_ROUTE_POPUP_DEBOUNCE_MS = 1000; // 结束行程弹窗点击防抖时长
    const lockStatus = hasDoorOpenedInCurrentOrder; // 当前订单是否已完成开门,直接作为车锁展示态
    // 外部后备箱状态变化时同步本地状态
    useEffect(() => {
@@ -195,6 +193,7 @@
            if (doorType === 'door') {
                // Taro.hideLoading();
                Taro.showToast({ title: '右侧车门已解锁', icon: 'none' });
                setLockStatus(true);
                onDoorUnlockSuccess?.();
                onSuccess?.();
            }
src/robotaxi/pages/begin-route/components/calling-car-modules/trip-action-bar.tsx
@@ -7,7 +7,6 @@
    handleModifyDestination?: () => void;
    handleShareTrip?: () => void;
    showModifyDestination?: boolean;
    showCancelTrip?: boolean;
};
export default function TripActionBar({
@@ -15,8 +14,7 @@
    handleCancelTrip,
    handleModifyDestination,
    handleShareTrip,
    showModifyDestination = true,
    showCancelTrip = tripStatus === TripStatus.VehicleApproaching
    showModifyDestination = true
}: Props) {
    // 按行程状态控制按钮集合,避免在 JSX 中堆叠过多条件判断
    const actionList = [
@@ -24,7 +22,7 @@
            key: "cancel",
            label: "取消行程",
            icon: 'https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/cancel-trip.png',
            visible: showCancelTrip,
            visible: tripStatus === TripStatus.VehicleApproaching,
            onClick: handleCancelTrip
        },
        {
src/robotaxi/pages/begin-route/components/calling-car-modules/trip-status-header.tsx
@@ -18,7 +18,6 @@
    durationDisplay: { value: string | number; unit: string };
    isArriveSoon: boolean;
    isPickupCountdownSoon: boolean;
    hasDoorOpenedInCurrentOrder: boolean;
    pickupCountdownSeconds: number | null;
    finishCountdownEnabled: boolean;
    finishCountdownSeconds: number | null;
@@ -34,7 +33,6 @@
    durationDisplay,
    isArriveSoon,
    isPickupCountdownSoon,
    hasDoorOpenedInCurrentOrder,
    pickupCountdownSeconds,
    finishCountdownEnabled,
    finishCountdownSeconds,
@@ -102,9 +100,7 @@
        [TripStatus.VehicleApproaching]: isArriveSoon
            ? <>车辆即将到达,请准备上车</>
            : <>车辆还有<View className="time">{durationDisplay.value}</View>{durationDisplay.unit}到达</>,
        [TripStatus.VehicleArrivedPickup]: hasDoorOpenedInCurrentOrder
            ? <>车辆已到达,请尽快上车</>
            : <>{isPickupCountdownSoon ? '车辆已到达,请尽快上车' : '车辆已到达上车点'}<View className="time" style={isPickupCountdownSoon ? { color: '#f58900' } : undefined}>{pickupCountdownSeconds !== null ? formatCountdown(pickupCountdownSeconds) : '--:--'}</View></>,
        [TripStatus.VehicleArrivedPickup]: <>{isPickupCountdownSoon ? '车辆已到达,请尽快上车' : '车辆已到达上车点'}<View className="time" style={isPickupCountdownSoon ? { color: '#f58900' } : undefined}>{pickupCountdownSeconds !== null ? formatCountdown(pickupCountdownSeconds) : '--:--'}</View></>,
        [TripStatus.InService]: <>预计<View className="time">{inServiceDurationDisplay.value}</View>{inServiceDurationDisplay.unit}抵达目的地</>,
        [TripStatus.ArrivedDestination]: (finishCountdownEnabled || finishCountdownSeconds !== null)
            ? <>已到达目的地<View className="time">{finishCountdownSeconds !== null ? formatCountdown(finishCountdownSeconds) : '--:--'}</View></>
@@ -117,9 +113,7 @@
    const descMap = {
        [TripStatus.CallingCar]: { text: '正全力为您叫车中,请耐心等待...', className: 'calling-car-content-desc' },
        [TripStatus.VehicleApproaching]: limitMinutes ? { text: `此处限停${limitMinutes}分钟,请尽快前往上车点`, className: 'calling-car-content-warning' } : null,
        [TripStatus.VehicleArrivedPickup]: hasDoorOpenedInCurrentOrder
            ? { text: '车门已解锁,已停止等待倒计时', className: 'calling-car-content-desc' }
            : { text: isPickupCountdownSoon ? `车辆到达后最多等待${limitMinutes}分钟,超时自动取消` : '此处限停,请在倒计时结束前到达上车点', className: 'calling-car-content-desc' },
        [TripStatus.VehicleArrivedPickup]: { text: isPickupCountdownSoon ? `车辆到达后最多等待${limitMinutes}分钟,超时自动取消` : '此处限停,请在倒计时结束前到达上车点', className: 'calling-car-content-desc' },
        [TripStatus.InService]: { text: '行程已开始,请全程系好安全带', className: 'calling-car-content-desc' },
        [TripStatus.ArrivedDestination]: { text: '倒计时结束时车辆将自动驶离,请带好物品安全下车', className: 'calling-car-content-desc' },
        [TripStatus.TripFinished]: { text: '订单待支付,请核对后完成支付', className: 'calling-car-content-desc' }
src/robotaxi/pages/begin-route/components/calling-car-modules/use-trip-countdown.ts
@@ -12,7 +12,6 @@
    orderId?: string;
    estimatedWaitMinutes?: number;
    finishCountdownEnabled: boolean;
    hasDoorOpenedInCurrentOrder: boolean;
    handleCancelTimeout?: () => void;
    handleFinishTimeout?: () => void;
    priceUpdateVersion?: number;
@@ -28,7 +27,6 @@
    orderId,
    estimatedWaitMinutes,
    finishCountdownEnabled,
    hasDoorOpenedInCurrentOrder,
    handleCancelTimeout,
    handleFinishTimeout,
    priceUpdateVersion
@@ -43,7 +41,6 @@
    const finishTimerRef = useRef<any>(null);
    const countdownFinishedRef = useRef(false);
    const pickupTripStatusRef = useRef(tripStatus);
    const pickupDoorOpenedRef = useRef(hasDoorOpenedInCurrentOrder);
    const pickupEndTimeRef = useRef<number | null>(null);
    const finishEndTimeRef = useRef<number | null>(null);
    const lastFareRequestKeyRef = useRef<string | null>(null); // 费用明细请求去重键(订单+优惠券)
@@ -141,26 +138,8 @@
    }, [tripStatus]);
    useEffect(() => {
        pickupDoorOpenedRef.current = hasDoorOpenedInCurrentOrder;
    }, [hasDoorOpenedInCurrentOrder]);
    const stopPickupCountdown = useCallback((clearPersistedEndTime = false) => {
        clearPickupTimer();
        countdownFinishedRef.current = false;
        pickupEndTimeRef.current = null;
        setPickupCountdownSeconds(null);
        if (clearPersistedEndTime) {
            Taro.removeStorageSync(PICKUP_END_TIME_KEY);
        }
    }, [clearPickupTimer]);
    useEffect(() => {
        if (tripStatus !== TripStatus.VehicleArrivedPickup) {
            clearPickupTimer();
            return;
        }
        if (hasDoorOpenedInCurrentOrder) {
            stopPickupCountdown(true);
            return;
        }
@@ -168,10 +147,6 @@
            // 防止状态已切换后,旧定时回调仍触发取消逻辑
            if (pickupTripStatusRef.current !== TripStatus.VehicleArrivedPickup) {
                clearPickupTimer();
                return;
            }
            if (pickupDoorOpenedRef.current) {
                stopPickupCountdown(true);
                return;
            }
            const remaining = getRemainingSeconds(pickupEndTimeRef.current);
@@ -225,7 +200,7 @@
        return () => {
            clearPickupTimer();
        };
    }, [tripStatus, orderId, hasDoorOpenedInCurrentOrder, handleCancelTimeout, clearPickupTimer, stopPickupCountdown]);
    }, [tripStatus, orderId, handleCancelTimeout, clearPickupTimer]);
    useEffect(() => {
        if (tripStatus !== TripStatus.ArrivedDestination) {
src/robotaxi/pages/begin-route/components/calling-car.tsx
@@ -40,12 +40,8 @@
    handlePay?: () => void;
    /** 打开详细评价弹窗 */
    handleOpenEvaluatePopup?: () => void;
    /** 当前订单是否已开过门 */
    hasDoorOpenedInCurrentOrder?: boolean;
    /** 取消行程 */
    handleCancelTrip?: () => void;
    /** 是否展示取消行程 */
    showCancelTrip?: boolean;
    /** 修改目的地 */
    handleModifyDestination?: () => void;
    /** 是否展示修改目的地 */
@@ -96,9 +92,7 @@
    onToggleDetailFade,
    handlePay,
    handleOpenEvaluatePopup,
    hasDoorOpenedInCurrentOrder = false,
    handleCancelTrip,
    showCancelTrip = tripStatus === TripStatus.VehicleApproaching,
    handleModifyDestination,
    showModifyDestination = true,
    handleShareTrip,
@@ -135,7 +129,6 @@
        orderId,
        estimatedWaitMinutes,
        finishCountdownEnabled,
        hasDoorOpenedInCurrentOrder,
        handleCancelTimeout,
        handleFinishTimeout,
        priceUpdateVersion
@@ -160,7 +153,6 @@
                durationDisplay={durationDisplay}
                isArriveSoon={isArriveSoon}
                isPickupCountdownSoon={isPickupCountdownSoon}
                hasDoorOpenedInCurrentOrder={hasDoorOpenedInCurrentOrder}
                pickupCountdownSeconds={pickupCountdownSeconds}
                finishCountdownEnabled={finishCountdownEnabled}
                finishCountdownSeconds={finishCountdownSeconds}
@@ -207,7 +199,6 @@
                        tripStatus={tripStatus}
                        orderId={orderId}
                        orderTrunkStatus={orderTrunkStatus}
                        hasDoorOpenedInCurrentOrder={hasDoorOpenedInCurrentOrder}
                        handleOpenOverRoutePopup={handleOpenOverRoutePopup}
                        onDoorUnlockSuccess={onDoorUnlockSuccess}
                    />
@@ -225,7 +216,6 @@
                    <TripActionBar
                        tripStatus={tripStatus}
                        handleCancelTrip={handleCancelTrip}
                        showCancelTrip={showCancelTrip}
                        handleModifyDestination={handleModifyDestination}
                        showModifyDestination={showModifyDestination}
                        handleShareTrip={handleShareTrip}
@@ -237,7 +227,6 @@
                tripStatus={tripStatus === TripStatus.ArrivedDestination ? TripStatus.ArrivedDestination : -1}
                orderId={orderId}
                orderTrunkStatus={orderTrunkStatus}
                hasDoorOpenedInCurrentOrder={hasDoorOpenedInCurrentOrder}
                handleOpenOverRoutePopup={handleOpenOverRoutePopup}
                onDoorUnlockSuccess={onDoorUnlockSuccess}
            />
src/robotaxi/pages/begin-route/hooks/order-door-open-storage.ts
File was deleted
src/robotaxi/pages/begin-route/hooks/use-bluetooth-car-control.ts
@@ -7,7 +7,6 @@
type Deps = {
  orderId: string;
  tripStatus: TripStatus;
  onBluetoothDoorUnlockSuccess?: () => void;
};
type BluetoothTokenPayload = {
@@ -50,7 +49,7 @@
/**
 * 蓝牙车控编排:负责凭证获取、蓝牙连接和 RtAuth 鉴权。
 */
export default function useBluetoothCarControl({ orderId, tripStatus, onBluetoothDoorUnlockSuccess }: Deps) {
export default function useBluetoothCarControl({ orderId, tripStatus }: Deps) {
  const managerRef = useRef<any>(null); // 蓝牙管理器实例引用
  const lastStartKeyRef = useRef(''); // 最近一次启动鉴权的参数签名
  const startAuthTaskRef = useRef<Promise<void> | null>(null); // 当前进行中的鉴权任务,防止并发重复请求
@@ -76,24 +75,6 @@
    });
  }; // 统一展示蓝牙解锁结果提示
  latestTripStatusRef.current = tripStatus;
  /**
   * 收口蓝牙真实解锁成功后的状态与提示。
   */
  const handleBluetoothDoorUnlockSuccess = () => {
    if (unlockFinishedRef.current) {
      return;
    }
    unlockFinishedRef.current = true;
    setAuthError('');
    onBluetoothDoorUnlockSuccess?.();
    const storageKey = `ROBOTAXI_UNLOCK_TOAST_SHOWN_${orderId}`;
    if (!Taro.getStorageSync(storageKey)) {
      showUnlockToast(UNLOCK_SUCCESS_MESSAGE);
      Taro.setStorageSync(storageKey, true);
    }
    closeConnectionRef.current();
  };
  /**
   * 判断当前蓝牙异步回调是否仍属于有效轮次。
@@ -192,11 +173,31 @@
        if (result?.type === 'pollingUnlock') {
          const isAlreadyUnlocked = Number(result?.data?.result) === 2; // RtNotification 挂载在 data,result=2 表示车辆已解锁
          if (isAlreadyUnlocked) {
            handleBluetoothDoorUnlockSuccess();
            if (unlockFinishedRef.current) {
              return;
            }
            unlockFinishedRef.current = true;
            setAuthError('');
            const storageKey = `ROBOTAXI_UNLOCK_TOAST_SHOWN_${orderId}`;
            if (!Taro.getStorageSync(storageKey)) {
              showUnlockToast(UNLOCK_SUCCESS_MESSAGE);
              Taro.setStorageSync(storageKey, true);
            }
            closeConnectionRef.current();
            return;
          }
          if (result?.success) {
            handleBluetoothDoorUnlockSuccess();
            if (unlockFinishedRef.current) {
              return;
            }
            unlockFinishedRef.current = true;
            setAuthError('');
            const storageKey = `ROBOTAXI_UNLOCK_TOAST_SHOWN_${orderId}`;
            if (!Taro.getStorageSync(storageKey)) {
              showUnlockToast(UNLOCK_SUCCESS_MESSAGE);
              Taro.setStorageSync(storageKey, true);
            }
            closeConnectionRef.current();
          } else {
            setAuthError(RETRY_UNLOCK_MESSAGE);
            showUnlockToast(RETRY_UNLOCK_MESSAGE);
src/robotaxi/pages/begin-route/hooks/use-order-cancel.ts
@@ -14,7 +14,6 @@
  createPickupArrivedCancelTripReportPayload
} from '../../../constants/confirm-ride-report';
import { OrderActionsDeps } from './use-order-actions.shared';
import { clearOrderDoorOpenedFlag } from './order-door-open-storage';
/** 等待计时开始时间缓存键。 */
const WAITING_TIMER_START_STORAGE_KEY = 'waitingTimerStartAt';
@@ -47,7 +46,6 @@
   * 清理活跃订单运行时缓存。
   */
  const clearActiveOrderRuntime = () => {
    clearOrderDoorOpenedFlag(deps.orderId);
    deps.setOrderId('');
    deps.setVehicleInfo({});
    clearOrderTripStorage();
src/robotaxi/pages/begin-route/hooks/use-order-door-open-state.ts
File was deleted
src/robotaxi/pages/begin-route/hooks/use-order-payment.ts
@@ -13,7 +13,6 @@
import { TRIP_COMPLETED_PAGE_VIEW_EVENT_ID, TRIP_IN_PROGRESS_PAY_START_BUTTON_EVENT_ID } from '../../../constants/report-events';
import { SocketOrderStatus, TripStatus } from '../../../constants/trip-status';
import { OrderActionsDeps } from './use-order-actions.shared';
import { clearOrderDoorOpenedFlag } from './order-door-open-storage';
/** 支付 Hook 返回值。 */
type UseOrderPaymentResult = {
@@ -40,7 +39,6 @@
   * 同步支付成功态。
   */
  const syncPaymentSuccessStatus = () => {
    clearOrderDoorOpenedFlag(deps.orderId);
    deps.setTripStatus(TripStatus.PaymentSuccess);
    Taro.setStorageSync('tripStatus', TripStatus.PaymentSuccess);
  };
@@ -49,7 +47,6 @@
   * 同步行程结束待支付态。
   */
  const syncTripFinishedStatus = () => {
    clearOrderDoorOpenedFlag(deps.orderId);
    deps.setTripStatus(TripStatus.TripFinished);
    Taro.setStorageSync('tripStatus', TripStatus.TripFinished);
  };
src/robotaxi/pages/begin-route/hooks/use-view-delegates.tsx
@@ -99,10 +99,6 @@
  handlePay: () => void;
  /** 打开评价 */
  handleOpenEvaluatePopup: () => void;
  /** 是否展示取消行程 */
  showCancelTrip: boolean;
  /** 当前订单是否已开过门 */
  hasDoorOpenedInCurrentOrder: boolean;
  /** 详情展开回调 */
  handleToggleDetailFade: (expanded: boolean, hasFare: boolean) => void;
  /** 修改目的地 */
@@ -438,7 +434,6 @@
          vehicleInfo={deps.vehicleInfo}
          handleOpenCancelPopup={(displayInfo) => deps.handleOpenCancelPopupByTripStatus(deps.tripStatus, displayInfo)}
          handleCancelTrip={() => deps.handleOpenCancelPopupByTripStatus(deps.tripStatus, true)}
          showCancelTrip={deps.showCancelTrip}
          handleModifyDestination={deps.handleModifyDestination}
          showModifyDestination={deps.showModifyDestination}
          handleShareTrip={deps.handleShareTrip}
@@ -452,7 +447,6 @@
          handlePay={deps.handlePay}
          onOpenCouponSelect={deps.handleOpenCouponSelect}
          handleOpenEvaluatePopup={deps.handleOpenEvaluatePopup}
          hasDoorOpenedInCurrentOrder={deps.hasDoorOpenedInCurrentOrder}
          estimatedWaitMinutes={deps.fareEstimate?.waitingTime}
          routeDurationSeconds={deps.routeDuration}
          onToggleDetailFade={deps.handleToggleDetailFade}
src/robotaxi/pages/begin-route/hooks/web-socket-handlers/create-order-status-socket-handler.ts
@@ -10,7 +10,6 @@
import { PENDING_CANCEL_CONTEXT_TTL_MS, type PendingCancelContext } from '../use-order-actions.shared';
import type { UseWebSocketEventsDeps } from '../use-web-socket-events';
import { isSameOrder, resolveCurrentOrderId, type WebSocketDepsRef } from './web-socket-order-guard';
import { clearOrderDoorOpenedFlag } from '../order-door-open-storage';
/**
 * 解析 payload 中用于同步订单的有效 orderId。
@@ -151,7 +150,6 @@
    deps.setCancelType(pendingCancelContext?.cancelType || 4);
    deps.pendingCancelContextRef.current = null;
  } else if (changeStatusOld === TripStatus.VehicleApproaching || changeStatusOld === TripStatus.VehicleArrivedPickup) {
    clearOrderDoorOpenedFlag(deps.orderId);
    deps.setOrderId('');
    deps.setVehicleInfo({});
    clearOrderTripStorage();
src/robotaxi/pages/begin-route/index.tsx
@@ -52,7 +52,6 @@
import useBluetoothAccess from './hooks/use-bluetooth-access';
// 蓝牙车控连接与鉴权编排
import useBluetoothCarControl from './hooks/use-bluetooth-car-control';
import useOrderDoorOpenState from './hooks/use-order-door-open-state';
import { toTripStatus, TripStatus } from '../../constants/trip-status';
import { MODIFY_DESTINATION_SOCKET_STATUS_KEY } from '../../constants/modify-destination';
import { getDistance, reportEvent } from '../../../utils/Robotaxi-public-method';
@@ -778,15 +777,6 @@
    getCurrentLatitude: () => latitude,
    getCurrentVehicleLocation: () => vehicleLocation
  }); // 页面恢复与初始化编排
  const {
    hasDoorOpenedInCurrentOrder,
    markCurrentOrderDoorOpened,
    clearCurrentOrderDoorOpened
  } = useOrderDoorOpenState({
    orderId,
    tripStatus,
    pageDidShowVersion
  }); // 当前订单开门状态编排
  const router = Taro.useRouter();
  const tripRuntime = useTripRuntime({
    waitingTimerStartKey: WAITING_TIMER_START_KEY,
@@ -958,17 +948,9 @@
   * 支付成功后的统一收口。
   */
  const handlePaymentSuccess = useCallback(() => {
    clearCurrentOrderDoorOpened(orderId);
    setTripStatus(TripStatus.PaymentSuccess);
    Taro.setStorageSync('tripStatus', TripStatus.PaymentSuccess);
  }, [orderId, clearCurrentOrderDoorOpened]);
  /**
   * 蓝牙真实解锁成功后,写入当前订单开门标记。
   */
  const handleBluetoothDoorUnlockSuccess = useCallback(() => {
    markCurrentOrderDoorOpened();
  }, [markCurrentOrderDoorOpened]);
  }, []);
  const { queryPaymentResult: queryOrderPaymentResult } = useOrderPaymentResultQuery({
    orderId,
@@ -1058,16 +1040,14 @@
    markManualDoorUnlock
  } = useBluetoothCarControl({
    orderId,
    tripStatus,
    onBluetoothDoorUnlockSuccess: handleBluetoothDoorUnlockSuccess
    tripStatus
  });
  /**
   * 手动点击开门成功后,既要记录本单已开门,也要停止后续蓝牙自动解锁流程。
   * 手动点击开门成功后,停止后续蓝牙自动解锁流程。
   */
  const handleManualDoorUnlockSuccess = useCallback(() => {
    markCurrentOrderDoorOpened();
    markManualDoorUnlock();
  }, [markCurrentOrderDoorOpened, markManualDoorUnlock]);
  }, [markManualDoorUnlock]);
  const {
    bluetoothStatusReady,
    bluetoothCardDescription,
@@ -1099,11 +1079,6 @@
    title: `我正在使用小鹏Robotaxi,车牌号[${vehicleInfo?.plateNumber || ''}]`,
    path: `/robotaxi/pages/share-trip/index?orderId=${shareOrderId}`
  });
  /** 接驾阶段取消行程按钮展示态。 */
  const showCancelTrip = useMemo(() => {
    return [TripStatus.VehicleApproaching, TripStatus.VehicleArrivedPickup].includes(tripStatus) && !hasDoorOpenedInCurrentOrder;
  }, [tripStatus, hasDoorOpenedInCurrentOrder]);
  useShareAppMessage(onShareAppMessage);
@@ -1475,8 +1450,6 @@
    handleOpenOverRoutePopup,
    handlePay,
    handleOpenEvaluatePopup,
    showCancelTrip,
    hasDoorOpenedInCurrentOrder,
    handleToggleDetailFade,
    handleModifyDestination,
    showModifyDestination,
src/utils/Robotaxi-public-method.ts
@@ -1082,7 +1082,7 @@
    case 6:
      return 6;
    case 7:
      return 6;
      return 7;
    case 8:
      return 8;
    case 9:
src/utils/websocket.ts
@@ -908,7 +908,7 @@
      case 6:
        return { tripStatus: 6 };
      case 7:
        return { tripStatus: 6 };
        return { tripStatus: 7 };
      case 8:
        return { tripStatus: 8 };
      case 9: