hejianhao
2026-03-25 843d9be071e2e7e1fd49be12782679dd21c0030b
fix(robotaxi): 修复订单状态处理中的状态同步和条件判断问题

修复 orderStatusHandler 中 changeStatusOld 使用错误的状态变量问题,改为使用 tripStatusRef.current。
在状态更新时同步更新 tripStatusRef 以保证后续逻辑能获取最新状态。
优化状态为 4 和 5 时的重置逻辑,增加状态变化检查避免重复执行。
扩展 Android 原生呼出判断支持状态 10。
1个文件已修改
12 ■■■■■ 已修改文件
src/robotaxi/pages/begin-route/index.tsx 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/index.tsx
@@ -819,7 +819,7 @@
    };
    // 优化订单状态回调中的车辆信息拉取逻辑
    orderStatusHandlerRef.current = (payload) => {
      const changeStatusOld = tripStatus
      const changeStatusOld = tripStatusRef.current;
      const mappedTripStatus = payload?.tripStatus;
      if (typeof mappedTripStatus === 'number') {
        const currentLocalStatus = Number(Taro.getStorageSync('tripStatus'));
@@ -828,6 +828,7 @@
          return;
        }
        setTripStatus(mappedTripStatus);
        tripStatusRef.current = mappedTripStatus; // 同步更新ref,防止后续路由推送拿不到最新状态
        Taro.setStorageSync('tripStatus', mappedTripStatus);
      }
      // 车辆信息拉取:当收到有效的订单号时,在首次达到呼叫及后续阶段拉取车辆信息
@@ -853,7 +854,7 @@
      if (mappedTripStatus === 6) {
        setShowAnnouncementsPopup(false);
      }
      if (mappedTripStatus === 5) {
      if (mappedTripStatus === 5 && changeStatusOld !== 5) {
        setRoutePoints([]);
        setPolyline([]);
        polylineKeyRef.current = '';
@@ -864,8 +865,9 @@
        lastVehicleUpdateAtRef.current = 0;
        currentFullRouteRef.current = [];
        lastErasedIndexRef.current = 0;
        orderRouteInitializedRef.current = false;
      }
      if (mappedTripStatus === 4) {
      if (mappedTripStatus === 4 && changeStatusOld !== 4) {
        setRoutePoints([]);
        setPolyline([]);
        polylineKeyRef.current = '';
@@ -876,7 +878,9 @@
        lastVehicleUpdateAtRef.current = 0;
        currentFullRouteRef.current = [];
        lastErasedIndexRef.current = 0;
        orderRouteInitializedRef.current = false;
      }
      if (payload?.showCancelPopup) {
        if (changeStatusOld == 4 || changeStatusOld == 5) {
          setOrderId('');
@@ -1130,7 +1134,7 @@
  useEffect(() => {
    const pickupSite = startSite?.latitude && startSite?.longitude ? startSite : Taro.getStorageSync('startSite');
    const dropoffSite = endSite?.latitude && endSite?.longitude ? endSite : Taro.getStorageSync('endSite');
    const useAndroidNativeTrip1Callout = isAndroid && [1, 8, 9].includes(tripStatus);
    const useAndroidNativeTrip1Callout = isAndroid && [1, 8, 9, 10].includes(tripStatus);
    const pickupMarker = pickupSite?.latitude && pickupSite?.longitude ? {
      id: 1,
      latitude: pickupSite.latitude,