hejianhao
2026-04-03 8c0c32df23dc6c970c7d8016c9386a22016babba
fix(robotaxi): 修正后备箱状态轮询逻辑,使用目标状态判断

将后备箱状态轮询的成功条件从“状态为0或1”改为“状态等于目标状态”。
原逻辑在任意有效状态(0/1)时都会停止轮询,这可能导致实际状态未达到预期时就结束轮询。
现在明确区分开启和关闭操作,分别等待目标状态'1'和'0',确保操作实际生效。
1个文件已修改
24 ■■■■■ 已修改文件
src/robotaxi/pages/begin-route/components/calling-car.tsx 24 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/calling-car.tsx
@@ -489,8 +489,12 @@
                let pollCount = 0;
                const maxPolls = 3;
                const pollInterval = 2000; // 2秒
                // 如果当前 trunkStatus 为 true (开),则期望执行“关闭”操作,目标状态为 '0'
                // 如果当前 trunkStatus 为 false (关),则期望执行“开启”操作,目标状态为 '1'
                const expectedTrunkState = trunkStatus ? '0' : '1';
                const handlePollFail = () => {
                const handlePollFail = (reason: string, actualValue?: any) => {
                    pollCount++;
                    if (pollCount < maxPolls) {
                        trunkPollTimerRef.current = setTimeout(doPoll, pollInterval);
@@ -507,17 +511,17 @@
                    queryVehicleTrunkOpenStatus({ orderId: targetOrderId }).then((pollRes: any) => {
                        const data = pollRes;
                        const rawValue = data?.stateMap?.trunkAjarCloseSt?.value;
                        // 如果 data 或 value 为空,继续轮询
                        if (!data || rawValue === undefined || rawValue === null || rawValue === '') {
                            handlePollFail();
                            handlePollFail('empty_data_or_value', rawValue);
                            return;
                        }
                        const value = String(rawValue);
                        if (value === '0' || value === '1') {
                            // 0: 关闭, 1: 开启
                        // 轮询成功条件改为“状态 == 目标状态”
                        if (value === expectedTrunkState) {
                            const isOpen = value === '1';
                            setTrunkStatus(isOpen);
                            Taro.hideLoading();
@@ -527,11 +531,11 @@
                            });
                            onSuccess?.();
                        } else {
                            // 继续轮询
                            handlePollFail();
                            // 状态不匹配,继续轮询
                            handlePollFail('state_mismatch', value);
                        }
                    }).catch(() => {
                        handlePollFail();
                    }).catch((err) => {
                        handlePollFail('api_error', err);
                    });
                };