| src/robotaxi/pages/select-map-site/hooks/use-select-map-site.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/robotaxi/pages/site-search/index.tsx | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/utils/Robotaxi-public-method.ts | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/robotaxi/pages/select-map-site/hooks/use-select-map-site.ts
@@ -28,12 +28,13 @@ import { SELECT_SITE_RANGE_STATUS } from './use-select-map-site-state'; import useSelectMapSiteWalkingRoute from './use-select-map-site-walking-route'; import { MODIFY_DESTINATION_CANDIDATE_KEY, MODIFY_DESTINATION_PENDING_SAME_SITE_TOAST_KEY, MODIFY_DESTINATION_SKIP_AC_QUERY_ON_RETURN_KEY, MODIFY_DESTINATION_SESSION_KEY, MODIFY_DESTINATION_CANDIDATE_KEY, MODIFY_DESTINATION_SKIP_AC_QUERY_ON_RETURN_KEY, MODIFY_DESTINATION_PENDING_SAME_SITE_TOAST_KEY, isSameModifyDestinationSite } from '../../../constants/modify-destination'; import { hasActiveTripOrderInStorage } from '../../../utils/order'; import { CONFIRM_MAP_DROPOFF_BUTTON_EVENT_ID, CONFIRM_MAP_PICKUP_BUTTON_EVENT_ID @@ -721,9 +722,11 @@ } reportConfirmMapSiteEvent(); const modifySession = Taro.getStorageSync(MODIFY_DESTINATION_SESSION_KEY); // 修改目的地会话中将终点写入候选缓存,返回行程页进入预览态 // 增加 hasActiveTripOrderInStorage 联合判断,防止上一单异常终止导致 modifySession 缓存残留,污染新下单流程 const isModifyDestinationActive = modifySession?.active && hasActiveTripOrderInStorage(); // 【修改目的地拦截补充】接驾中选点相同或距离过近拦截 if (modifySession?.active) { if (isModifyDestinationActive) { const isPickupTripStatus = [4, 5].includes(modifySession.tripStatus); // 4: VehicleApproaching, 5: VehicleArrivedPickup if (isPickupTripStatus) { const isSameSite = isSameModifyDestinationSite(startSiteCache, state.selectedSite); @@ -741,10 +744,10 @@ } } if (modifySession?.active && isSameModifyDestinationSite(modifySession?.previousEndSite, state.selectedSite)) { if (isModifyDestinationActive && isSameModifyDestinationSite(modifySession?.previousEndSite, state.selectedSite)) { Taro.setStorageSync(MODIFY_DESTINATION_PENDING_SAME_SITE_TOAST_KEY, 1); } if (modifySession?.active) { if (isModifyDestinationActive) { Taro.setStorageSync(MODIFY_DESTINATION_CANDIDATE_KEY, state.selectedSite); Taro.setStorageSync(MODIFY_DESTINATION_SKIP_AC_QUERY_ON_RETURN_KEY, 1); // 修改目的地返回行程页时跳过一次空调/温度状态查询 } else { @@ -752,7 +755,7 @@ } writeConfirmRideSiteSourceType('end', MAP_CONFIRM_RIDE_SOURCE_TYPE); completeConfirmRideSelectionSession(startSiteCache, state.selectedSite); const returnToBeginRouteUrl = modifySession?.active const returnToBeginRouteUrl = isModifyDestinationActive ? '/robotaxi/pages/begin-route/index?skipPageFlag=1&fromModifyDestination=1' : (Taro.getStorageSync('orderId') ? '/robotaxi/pages/begin-route/index?skipPageFlag=1' : '/robotaxi/pages/begin-route/index'); Taro.reLaunch({ src/robotaxi/pages/site-search/index.tsx
@@ -134,7 +134,11 @@ ) => { // 检查是否有行程订单 const modifySession = Taro.getStorageSync(MODIFY_DESTINATION_SESSION_KEY); if (!modifySession?.active && hasActiveTripOrderInStorage()) { const hasActiveTrip = hasActiveTripOrderInStorage(); // 增加 hasActiveTrip 联合判断,防止上一单异常终止导致 modifySession 缓存残留,污染新下单流程 const isModifyDestinationActive = modifySession?.active && hasActiveTrip; if (!isModifyDestinationActive && hasActiveTrip) { Taro.reLaunch({ url: '/robotaxi/pages/begin-route/index?skipPageFlag=1', }); @@ -168,7 +172,7 @@ // 1. isSameSite:坐标、ID或名称一致视为同一站点。 // 2. isTooClose:物理直线距离小于后台配置的 minDistance(如有)。 // 命中任一条件,即阻断并提示“建议步行前往”。 if (modifySession?.active) { if (isModifyDestinationActive) { const isPickupTripStatus = [TripStatus.VehicleApproaching, TripStatus.VehicleArrivedPickup].includes(modifySession.tripStatus); if (isPickupTripStatus) { const isSameSite = isSameModifyDestinationSite(startSiteCache, item); @@ -186,10 +190,10 @@ } } // 检查是否与上一个选择的终点相同 if (modifySession?.active && isSameModifyDestinationSite(modifySession?.previousEndSite, item)) { if (isModifyDestinationActive && isSameModifyDestinationSite(modifySession?.previousEndSite, item)) { Taro.setStorageSync(MODIFY_DESTINATION_PENDING_SAME_SITE_TOAST_KEY, 1); } if (modifySession?.active) { if (isModifyDestinationActive) { Taro.setStorageSync(MODIFY_DESTINATION_CANDIDATE_KEY, item); Taro.setStorageSync(MODIFY_DESTINATION_SKIP_AC_QUERY_ON_RETURN_KEY, 1); // 修改目的地返回行程页时跳过一次空调/温度状态查询 } else { @@ -197,7 +201,7 @@ } writeConfirmRideSiteSourceType('end', sourceType); completeConfirmRideSelectionSession(startSiteCache, item); const returnToBeginRouteUrl = modifySession?.active const returnToBeginRouteUrl = isModifyDestinationActive ? '/robotaxi/pages/begin-route/index?skipPageFlag=1&fromModifyDestination=1' : (Taro.getStorageSync('orderId') ? '/robotaxi/pages/begin-route/index?skipPageFlag=1' : '/robotaxi/pages/begin-route/index'); Taro.reLaunch({ src/utils/Robotaxi-public-method.ts
@@ -12,6 +12,15 @@ GEOFENCE_TYPE_STATION } from '../robotaxi/constants/geofence'; import { APPID } from '../constants/app' import { MODIFY_DESTINATION_SESSION_KEY, MODIFY_DESTINATION_CANDIDATE_KEY, MODIFY_DESTINATION_OVERRIDE_KEY, MODIFY_DESTINATION_ROUTE_POINTS_KEY, MODIFY_DESTINATION_SKIP_AC_QUERY_ON_RETURN_KEY, MODIFY_DESTINATION_SOCKET_STATUS_KEY, MODIFY_DESTINATION_PENDING_SAME_SITE_TOAST_KEY } from '../robotaxi/constants/modify-destination'; /** * 安全的 JSON 解析函数 @@ -1024,6 +1033,14 @@ export const clearOrderTripStorage = () => { Taro.removeStorageSync('orderId'); Taro.removeStorageSync('tripStatus'); // 一并清空修改目的地的全部会话缓存,防止脏数据残留污染后续的新订单 Taro.removeStorageSync(MODIFY_DESTINATION_SESSION_KEY); Taro.removeStorageSync(MODIFY_DESTINATION_CANDIDATE_KEY); Taro.removeStorageSync(MODIFY_DESTINATION_OVERRIDE_KEY); Taro.removeStorageSync(MODIFY_DESTINATION_ROUTE_POINTS_KEY); Taro.removeStorageSync(MODIFY_DESTINATION_SKIP_AC_QUERY_ON_RETURN_KEY); Taro.removeStorageSync(MODIFY_DESTINATION_SOCKET_STATUS_KEY); Taro.removeStorageSync(MODIFY_DESTINATION_PENDING_SAME_SITE_TOAST_KEY); }; /**