fix(robotaxi): 修复行程状态同步和车门解锁异常处理
- 在解锁车辆API调用中增加showToast和skipException参数,确保错误正确提示
- 修复页面恢复时行程状态未同步到状态管理的问题
- 修正WebSocket事件中行程状态比较逻辑,使用当前状态引用而非本地存储
- 添加行程状态变化时同步更新引用和本地存储的useEffect
- 在车门控制组件中增加调试日志输出
| | |
| | | return request({ |
| | | url: _ROBOTAXI_HOST + '/vehicleConvoy/api/v1/mini-program/order/vehicle/unlock', |
| | | method: 'POST', |
| | | payload |
| | | payload, |
| | | showToast: true, |
| | | skipException: true |
| | | }, true); |
| | | } |
| | | |
| | |
| | | doorType, |
| | | ...locationPayload |
| | | }).then((res: any) => { |
| | | console.log(res,'***********'); |
| | | |
| | | if (!res) { |
| | | Taro.showToast({ title: '解锁失败,请重试或联系客服', icon: 'none' }); |
| | | return; |
| | |
| | | } |
| | | } |
| | | }).catch(() => { |
| | | console.log(res,'***********'); |
| | | |
| | | Taro.showToast({ title: '解锁失败,请重试或联系客服', icon: 'none' }); |
| | | }); |
| | | }; |
| | |
| | | const cachedOrderId = Taro.getStorageSync('orderId'); |
| | | const cachedTripStatusStorage = Taro.getStorageSync('tripStatus'); |
| | | const cachedTripStatus = Number(cachedTripStatusStorage) || deps.getCurrentTripStatus(); |
| | | deps.setTripStatus(cachedTripStatus); |
| | | syncCachedOrderVehicle(cachedOrderId); |
| | | syncSitesFromActiveOrder(cachedTripStatusStorage, s, e); |
| | | if (cachedOrderId && [4, 5, 6, 7, 8, 9].includes(cachedTripStatus)) { |
| | |
| | | if (typeof mappedTripStatus !== 'number') { |
| | | return null; |
| | | } |
| | | const currentLocalStatus = Number(Taro.getStorageSync('tripStatus')); |
| | | if (currentLocalStatus > mappedTripStatus && currentLocalStatus !== 10) { |
| | | const currentTripStatus = Number(deps.tripStatusRef.current); |
| | | if (currentTripStatus > mappedTripStatus && currentTripStatus !== 10) { |
| | | return null; |
| | | } |
| | | deps.setTripStatus(mappedTripStatus); |
| | |
| | | const tripStatusRef = useRef(tripStatus); // 行程状态引用 |
| | | const lastTripStatusRef = useRef(tripStatus); // 上一次行程状态,用于检测状态变化 |
| | | const tripStatusForMapSyncRef = useRef(tripStatus); // 用于地图同步的行程状态引用 |
| | | useEffect(() => { |
| | | tripStatusRef.current = tripStatus; |
| | | tripStatusForMapSyncRef.current = tripStatus; |
| | | Taro.setStorageSync('tripStatus', tripStatus); |
| | | }, [tripStatus]); |
| | | // 行程状态显示规则配置:showPickup-显示上车点,showDropoff-显示下车点,showCar-显示车辆,showRoute-显示路线,showWalking-显示步行路线,viewport-视口类型,translateCar-车辆是否平移 |
| | | const STATUS_RULES: Record<number, any> = { |
| | | 1: { showPickup: true, showDropoff: true, showCar: false, showRoute: true, showWalking: true, viewport: 'route_walking', translateCar: false }, |