liaof
2026-08-12 e15f18769bd083439a05c98a32d807bc5c68a119
Merge branch 'fix-0811-toast-back-home' into 'feature_2.6.0'

fix(begin-route): 修复重复弹出行程提示及路由参数重复触发问题

See merge request robotaxi1/xp-robotaxi-miniprogram!270
2个文件已修改
27 ■■■■■ 已修改文件
src/robotaxi/pages/begin-route/hooks/use-page-restore.ts 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/index.tsx 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/hooks/use-page-restore.ts
@@ -1,4 +1,5 @@
import Taro from '@tarojs/taro';
import Taro from '@tarojs/taro';
import { useRef } from 'react';
import { showToast } from '../../../components/toast';
import wsManager from '../../../../utils/websocket';
import { mapOrderStatusToTripStatus, clearOrderTripStorage } from '../../../../utils/Robotaxi-public-method';
@@ -83,6 +84,8 @@
 * 页面恢复与初始化编排:负责缓存恢复、订单同步、定位初始化与 socket 准备。
 */
export default function usePageRestore(deps: Deps) {
  const hasShownActiveTripToastRef = useRef(false); // 同一页面实例内只提示一次,避免回前台重复闪 toast
  /**
   * 清理已选优惠券缓存。
   */
@@ -481,7 +484,13 @@
    const isModifyDestinationSessionActive = !!Taro.getStorageSync(MODIFY_DESTINATION_SESSION_KEY)?.active; // 修改目的地返回链路不提示“已有进行中订单”
    const isModifyDestinationReturn = String(fromModifyDestination || '') === '1';
    const shouldShowPendingSameSiteToast = isModifyDestinationReturn && !!Taro.getStorageSync(MODIFY_DESTINATION_PENDING_SAME_SITE_TOAST_KEY);
    if (skipPageFlag && hasActiveTripOrderInStorage() && !isModifyDestinationReturn && !isModifyDestinationSessionActive) {
    const shouldShowActiveTripToast = Boolean(skipPageFlag)
      && !hasShownActiveTripToastRef.current
      && hasActiveTripOrderInStorage()
      && !isModifyDestinationReturn
      && !isModifyDestinationSessionActive;
    if (shouldShowActiveTripToast) {
      hasShownActiveTripToastRef.current = true;
      showToast({
        title: getActiveTripOrderToastTitle(Taro.getStorageSync('tripStatus')),
        icon: 'none',
src/robotaxi/pages/begin-route/index.tsx
@@ -1243,6 +1243,13 @@
    updatePickupRouteChangeEligibleOrder
  }); // 页面恢复与初始化编排
  const router = Taro.useRouter();
  const didShowRouteParamsRef = useRef<{
    skipPageFlag?: string;
    fromModifyDestination?: string;
  }>({
    skipPageFlag: router.params?.skipPageFlag,
    fromModifyDestination: router.params?.fromModifyDestination
  }); // begin-route 路由参数只消费一次,避免回前台时重复触发“已有订单”提示
  const tripRuntime = useTripRuntime({
    waitingTimerStartKey: WAITING_TIMER_START_KEY,
    waitingTimerElapsedKey: WAITING_TIMER_ELAPSED_KEY,
@@ -1902,7 +1909,12 @@
      updateMapViewportPadding();
      return;
    }
    handleDidShow(router.params?.skipPageFlag, router.params?.fromModifyDestination);
    const didShowRouteParams = didShowRouteParamsRef.current;
    handleDidShow(didShowRouteParams.skipPageFlag, didShowRouteParams.fromModifyDestination);
    didShowRouteParamsRef.current = {
      skipPageFlag: undefined,
      fromModifyDestination: undefined
    };
    updateMapViewportPadding();
    // 完成态下隐藏小程序再恢复时,受控中心点可能与原生地图实际中心脱钩,主动触发一次
    // order_detail includePoints 纠偏,避免路线被压在底部支付卡片附近。