| | |
| | | |
| | | type QueueStatus = { |
| | | currentPosition: number; |
| | | estimatedWaitTime: number; |
| | | estimatedWaitTime: number | null; |
| | | status: number; |
| | | totalCount: number; |
| | | } | null; |
| | |
| | | ? { value: 1, unit: '分钟' as const } |
| | | : durationDisplay; // 剩余时间小于 1 分钟时按 1 分钟展示,不展示秒 |
| | | const inServiceDurationDisplay = normalizedDurationDisplay; // 行程中沿用统一的归一化时长 |
| | | // 排队接口返回实时预计等待分钟数;无有效值时回退下单时的初始预估。 |
| | | const displayedWaitMinutes = queueStatus?.estimatedWaitTime ?? waitMinutes; |
| | | |
| | | useEffect(() => { |
| | | if (tripStatus !== TripStatus.CallingCar || !orderId) { |
| | |
| | | return; |
| | | } |
| | | const queueData = res?.data ?? res; |
| | | const rawEstimatedWaitTime = queueData?.estimatedWaitTime; |
| | | const estimatedWaitTime = rawEstimatedWaitTime === null || rawEstimatedWaitTime === undefined || rawEstimatedWaitTime === '' |
| | | ? null |
| | | : Number(rawEstimatedWaitTime); |
| | | if ( |
| | | Number(queueData?.currentPosition) > 0 && |
| | | Number(queueData?.totalCount) > 0 |
| | | ) { |
| | | setQueueStatus({ |
| | | currentPosition: Number(queueData.currentPosition), |
| | | estimatedWaitTime: Number(queueData.estimatedWaitTime) || 0, |
| | | estimatedWaitTime: typeof estimatedWaitTime === 'number' && Number.isFinite(estimatedWaitTime) && estimatedWaitTime >= 0 ? estimatedWaitTime : null, |
| | | status: Number(queueData.status) || 0, |
| | | totalCount: Number(queueData.totalCount) |
| | | }); |
| | |
| | | <View className='calling-car-content'> |
| | | <View className='calling-car-content-main'> |
| | | <View className='calling-car-content-title calling-car-content-title--strong'> |
| | | 预计{waitMinutes}分钟内有车应答 |
| | | 预计{displayedWaitMinutes ?? '-'}分钟内有车应答 |
| | | </View> |
| | | <View className='calling-car-content-desc'> |
| | | 正全力为您叫车中... |
| | |
| | | </View> |
| | | <View |
| | | className='calling-car-cancel-btn' |
| | | onClick={() => handleOpenCancelPopup?.({ durationDisplay, waitMinutes })} |
| | | onClick={() => handleOpenCancelPopup?.({ durationDisplay, waitMinutes: displayedWaitMinutes })} |
| | | > |
| | | 取消行程 |
| | | </View> |