liaof
2026-07-28 f2f4a1fc49fdcc1b5b2842581b29c56066d15356
Revert "Merge branch 'feature_v2.4.0_ui' into 'feature_v2.4.0'"

This reverts merge request !185
4个文件已删除
28个文件已修改
957 ■■■■■ 已修改文件
src/pages/robotaxi/home/index.less 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/components/demo/index.less 18 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/components/demo/index.tsx 51 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/components/toast/README.md 86 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/components/toast/index.less 73 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/components/toast/index.tsx 161 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/components/toast/with-toast.tsx 36 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/calling-car-modules/door-trunk-control.tsx 15 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/calling-car-modules/fare-detail-card.tsx 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/calling-car-modules/fragrance-control/index.tsx 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/css-folder/calling-car.less 92 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/css-folder/cancel-popup.less 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/css-folder/evaluate-popup.less 95 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/css-folder/fragrance-control.less 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/css-folder/passenger-notice.less 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/css-folder/release-be-being.less 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/css-folder/release-route.less 39 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/css-folder/service-route-change.less 25 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/css-folder/temperature-control.less 33 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/debug-order-simulator-panel.tsx 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/evaluate-popup.tsx 81 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/modify-destination-review.tsx 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/release-be-being.tsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/release-route.tsx 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/hooks/use-map-markers.ts 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/index.less 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/index.tsx 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/demo/index.tsx 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/select-map-site/index.less 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/share-trip/index.less 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/site-search/index.less 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/site-search/index.tsx 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/robotaxi/home/index.less
@@ -52,13 +52,10 @@
  .weather-info {
    display: flex;
    align-items: center;
<<<<<<< HEAD
    font-size: 24px;
=======
    font-size: 28px;
>>>>>>> feature_v2.4.0
    font-weight: 500;
    color: @black-text-04;
    line-height: 48px;
    color: rgba(0, 0, 0, 0.9);
    // .weather-separator {
    //   margin: 0 4px;
@@ -348,11 +345,7 @@
        left: 50%;
        top: 100%;
        transform: translate(-50%, -50%);
<<<<<<< HEAD
        width: 28px;
=======
        width: 18px;
>>>>>>> feature_v2.4.0
        height: 28px;
        z-index: -1;
      }
src/robotaxi/components/demo/index.less
@@ -12,22 +12,4 @@
    font-size: 28px;
    color: #bdcbdf;
  }
  /* TODO(仅用于测试): 上线前删除以下 Toast Demo 按钮样式 */
  .toast-demo {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 20rpx;
    padding: 24rpx;
    &__btn {
      padding: 16rpx 32rpx;
      border-radius: 12rpx;
      background: #141e27;
      color: #ffffff;
      font-size: 28rpx;
      line-height: 40rpx;
    }
  }
}
src/robotaxi/components/demo/index.tsx
@@ -8,8 +8,6 @@
// TODO(仅用于测试): 上线前删除以下修改目的地卡片测试相关引入及 DEMO_MODIFY_* 数据
import ModifyDestinationReview from '../../pages/begin-route/components/modify-destination-review';
import { TripStatus } from '../../constants/trip-status';
// TODO(仅用于测试): 上线前删除以下通用 Toast 组件的 Demo 引入
import { showToast, hideToast } from '../toast';
const DEMO_ORDER_ID = '2063814874050772993';
@@ -63,55 +61,6 @@
  render () {
    return (
      <View className='loading'>
        {/* TODO(仅用于测试): 上线前删除以下通用 Toast 组件 Demo 区块 */}
        <Text>通用 Toast Demo</Text>
        <View className='toast-demo'>
          <View
            className='toast-demo__btn'
            onClick={() => showToast({ title: '协议获取失败,请重试', icon: 'none' })}
          >
            无图标
          </View>
          <View
            className='toast-demo__btn'
            onClick={() => showToast({ title: '切换新路线成功', icon: 'success' })}
          >
            成功
          </View>
          <View
            className='toast-demo__btn'
            onClick={() => showToast({ title: '提交失败,请检查网络后重试', icon: 'fail' })}
          >
            失败
          </View>
          <View
            className='toast-demo__btn'
            onClick={() => showToast({ title: '提交失败,请检查网络后重试', icon: 'warning' })}
          >
            告警
          </View>
          <View
            className='toast-demo__btn'
            onClick={() => showToast({ title: '加载中', icon: 'loading' })}
          >
            加载中
          </View>
          <View
            className='toast-demo__btn'
            onClick={() =>
              showToast({
                title: '提交失败,请检查网络后重试提交失败,请检查网络后重试',
                icon: 'none'
              })
            }
          >
            两行文本
          </View>
          <View className='toast-demo__btn' onClick={() => hideToast()}>
            关闭 Toast
          </View>
        </View>
        <Text>空调卡片 Demo</Text>
        {/* TODO(仅用于测试): 上线前删除 TemperatureControl 测试渲染,.calling-car 包裹仅用于补全样式层级 */}
        <View className='calling-car'>
src/robotaxi/components/toast/README.md
File was deleted
src/robotaxi/components/toast/index.less
File was deleted
src/robotaxi/components/toast/index.tsx
File was deleted
src/robotaxi/components/toast/with-toast.tsx
File was deleted
src/robotaxi/pages/begin-route/components/calling-car-modules/door-trunk-control.tsx
@@ -4,13 +4,12 @@
import { unlockVehicle, queryVehicleTrunkOpenStatus } from '../../../../api/begin-route';
import { getOrderId } from '../../../../utils/order';
import { TripStatus } from '../../../../constants/trip-status';
import { showToast } from '../../../../components/toast';
import useMinimumSpinLoading from './use-minimum-spin-loading';
const LOCK_CLOSE_ICON_URL = 'https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/lock-close-20260726.png';
const LOCK_OPEN_ICON_URL = 'https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/lock-open-20260726.png';
const TRUNK_CLOSE_ICON_URL = 'https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/trunk-close-20260727.png';
const TRUNK_OPEN_ICON_URL = 'https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/trunk-open-20260727.png';
const LOCK_CLOSE_ICON_URL = 'https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/lock-close.png';
const LOCK_OPEN_ICON_URL = 'https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/lock-open.png';
const TRUNK_CLOSE_ICON_URL = 'https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/trunk-close.png';
const TRUNK_OPEN_ICON_URL = 'https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/trunk-open.png';
const SWITCH_LOADING_ICON_URL = 'https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/T-switch-loading-20260706.png';
type Props = {
@@ -155,7 +154,7 @@
            if (!unlockSucceeded) {
                // Taro.hideLoading();
                stopLoading(doorType);
                showToast({ title: res?.msg || '解锁失败,请重试或联系客服', icon: 'fail' });
                Taro.showToast({ title: res?.msg || '解锁失败,请重试或联系客服', icon: 'none' });
                return;
            }
@@ -235,13 +234,13 @@
                // Taro.hideLoading();
                syncDoorUnlockButtonUI();
                stopLoading(doorType);
                showToast({ title: '车门已解锁', icon: 'success' });
                Taro.showToast({ title: '开门指令已发送', icon: 'none' });
                onSuccess?.();
            }
        }).catch(() => {
            // Taro.hideLoading();
            stopLoading(doorType);
            showToast({ title: '解锁失败,请重试或联系客服', icon: 'fail' });
            Taro.showToast({ title: '解锁失败,请重试或联系客服', icon: 'none' });
        });
    };
src/robotaxi/pages/begin-route/components/calling-car-modules/fare-detail-card.tsx
@@ -193,7 +193,7 @@
                    </View>
                    <View className="car-card-end-cost-content">
                        <View className="car-card-end-cost-money" onClick={toMoneyDetail}>
                            全程{formatTripDistance(fareBreakdown?.kilometer)}<View className="car-card-end-cost-money-line">|</View>{formatTripDurationFromSeconds(fareBreakdown?.time)}
                            全程{formatTripDistance(fareBreakdown?.kilometer)}|{formatTripDurationFromSeconds(fareBreakdown?.time)}
                        </View>
                        <Image src="https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/ccc-icon-right.png" />
                    </View>
@@ -217,7 +217,7 @@
            {
                tripStatus === TripStatus.TripFinished &&
                <View className="pay-box">
                    {/* {
                    {
                        fareBreakdown?.operateFree != 1 ?
                            <View className="pay-box-money"><View>{formatMoney(
                                fareBreakdown?.payMoney <= 0
src/robotaxi/pages/begin-route/components/calling-car-modules/fragrance-control/index.tsx
@@ -3,7 +3,6 @@
import { useEffect, useRef, useState } from 'react';
import { queryCabinFragrance, setCabinFragrance } from '../../../../../api/fragrance';
import type { FragranceScent } from '../../../../../api/types/fragrance';
import { showToast } from '../../../../../components/toast';
import { getOrderId } from '../../../../../utils/order';
import { TripStatus } from '../../../../../constants/trip-status';
import useBottomPopupAnimation from '../../hooks/use-bottom-popup-animation';
@@ -27,7 +26,7 @@
    const cnNum = scentCount <= 10 ? CN_NUMBERS[scentCount] : String(scentCount);
    return `可选${cnNum}款香型`;
}
const FRAGRANCE_OPEN_SUCCESS_TEXT = '已开启香氛'; // 开启香氛成功提示文案
const APPLY_SUCCESS_TEXT = '设置已应用至车辆';
const CLOSE_SUCCESS_TEXT = '已关闭香氛';
const APPLY_FAIL_TEXT = '网络异常,请重试';
@@ -172,9 +171,7 @@
            setActiveChannelId(nextActiveChannelId);
            const activeName = findScentByChannel(scents, nextActiveChannelId)?.name || '';
            setCardTitle(nextSwitchOn && activeName ? activeName : CLOSED_TITLE);
            // 开启/关闭香氛均使用通用 Toast 组件提示(success),并关闭香氛设置弹窗
            showToast({ title: nextSwitchOn ? FRAGRANCE_OPEN_SUCCESS_TEXT : CLOSE_SUCCESS_TEXT, icon: 'success' });
            closePanel();
            Taro.showToast({ title: nextSwitchOn ? APPLY_SUCCESS_TEXT : CLOSE_SUCCESS_TEXT, icon: 'none' });
        } catch (error) {
            Taro.showToast({ title: APPLY_FAIL_TEXT, icon: 'none' });
        } finally {
src/robotaxi/pages/begin-route/components/css-folder/calling-car.less
@@ -18,11 +18,7 @@
  overflow: hidden;
  .calling-car-content-box {
    position: relative;
<<<<<<< HEAD
    padding: 48px 48px 82px 48px;
=======
    padding: 48px 48px 52px 48px;
>>>>>>> feature_v2.4.0
    background: @gary-theme;
    border-radius: 60px 60px 0 0;
  }
@@ -69,10 +65,6 @@
    font-size: 88px;
    line-height: 108px;
    font-weight: 600;
<<<<<<< HEAD
    font-family: @font-xpsans-bold;
=======
>>>>>>> feature_v2.4.0
    letter-spacing: normal;
    color: #FFFFFF;
  }
@@ -80,11 +72,7 @@
  // 提升特异性:与 .calling-car .fare-box-card { padding-bottom: 0 } 同特异性且在其之前,
  // 用 &.calling-car 组合两个类名避免下方规则覆盖 padding-bottom
  &.calling-car .fare-box-card {
<<<<<<< HEAD
    padding: 24px 48px 208px 48px;
=======
    padding: 48px 48px 208px 48px;
>>>>>>> feature_v2.4.0
    background: @gary-theme;
    border-radius: 60px 60px 0 0;
  }
@@ -174,11 +162,7 @@
  }
  .car-card-detail-num {
    font-size: 44px;
<<<<<<< HEAD
    font-weight: 600;
=======
    font-weight: 500;
>>>>>>> feature_v2.4.0
    line-height: 56px;
    letter-spacing: normal;
    color: @black-text-main;
@@ -340,44 +324,11 @@
    background: rgba(204, 208, 215, 0.25);
    &:first-child {
      position: relative;
<<<<<<< HEAD
      border-radius: 32px;
=======
      border-radius: 16px;
>>>>>>> feature_v2.4.0
      box-sizing: border-box;
    }
    &:last-child {
      position: relative;
<<<<<<< HEAD
      border-radius: 32px;
      box-sizing: border-box;
    }
    &.close-btn-item {
      position: relative;
      border-radius: 32px;
      background: url(https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/door-trunk-item-bg-20260726.png);
      background-repeat: no-repeat;
      background-size: 100% 100%;
      .car-card-arrive-item-text {
        color: #ffffff;
      }
      .car-card-arrive-item-status {
        color: rgba(255, 255, 255, 0.4);
      }
    }
  }
  .car-card-arrive-item-status {
    font-size: 24px;
    line-height: normal;
    letter-spacing: normal;
    color: @black-text-04;
  }
  .car-card-arrive-item-text {
    font-size: 28px;
    font-weight: 500;
    color: @black-text-main;
=======
      border-radius: 16px;
      box-sizing: border-box;
    }
@@ -387,7 +338,6 @@
    line-height: normal;
    letter-spacing: normal;
    color: rgba(20, 30, 39, 0.5);
>>>>>>> feature_v2.4.0
  }
  .car-card-arrive-item-img {
    width: 64px;
@@ -485,10 +435,6 @@
        margin-bottom: 16px;
        padding: 24px 20px;
        opacity: 1;
<<<<<<< HEAD
        overflow-y: scroll;
=======
>>>>>>> feature_v2.4.0
      }
    }
    .particulars-detail-item {
@@ -531,14 +477,6 @@
    color: @black-text-04;
    font-size: 28px;
  }
<<<<<<< HEAD
  .car-card-end-cost-money-line {
    display: inline-block;
    margin: 0 20px;
    color: @black-text-04;
  }
=======
>>>>>>> feature_v2.4.0
  .car-card-end-cost-content {
    display: flex;
    align-items: center;
@@ -704,15 +642,6 @@
    padding: 22px 0;
    &:first-child {
      position: relative;
<<<<<<< HEAD
      border-radius: 32px;
      background: rgba(204, 208, 215, 0.25);
      box-sizing: border-box;
    }
    &:last-child {
      border-radius: 32px;
      background: rgba(204, 208, 215, 0.25);
=======
      border-radius: 16px;
      background: #ffffff;
      box-sizing: border-box;
@@ -722,7 +651,6 @@
      border-radius: 16px;
      background: linear-gradient(110deg, #8475ff 0%, #7dd6ff 99%);
      color: #fff;
>>>>>>> feature_v2.4.0
    }
  }
  .car-card-reach-btn-item-img {
@@ -807,10 +735,6 @@
    font-size: 24px;
    line-height: 40px;
    letter-spacing: normal;
<<<<<<< HEAD
    color: @black-text-main;
  }
=======
    color: rgba(0, 0, 0, 0.9);
    display: flex;
    align-items: center;
@@ -852,7 +776,6 @@
    border-radius: 20px;
    background: rgba(255, 255, 255, 0.4);
  }
>>>>>>> feature_v2.4.0
}
.pay-box-btn {
  width: 654px;
@@ -870,8 +793,6 @@
  flex-shrink: 0;
  opacity: 0.75;
}
<<<<<<< HEAD
=======
.close-btn-item {
  position: relative;
  border-radius: 16px;
@@ -892,7 +813,6 @@
    pointer-events: none;
  }
}
>>>>>>> feature_v2.4.0
.bluetooth-operate-card {
  position: relative;
  z-index: 1;
@@ -1041,10 +961,6 @@
      .distance {
        font-size: 24px;
        font-weight: 500;
<<<<<<< HEAD
        font-family: @font-xpsans-bold;
=======
>>>>>>> feature_v2.4.0
        color: #ffffff;
      }
      .time {
@@ -1052,10 +968,6 @@
        padding: 0;
        font-size: 24px;
        font-weight: 500;
<<<<<<< HEAD
        font-family: @font-xpsans-bold;
=======
>>>>>>> feature_v2.4.0
        color: #ffffff;
      }
    }
@@ -1160,10 +1072,6 @@
    font-size: 48px;
    font-weight: normal;
    line-height: 64px;
<<<<<<< HEAD
    font-family: @font-xpsans-bold;
=======
>>>>>>> feature_v2.4.0
    color: @black-text-main;
  }
src/robotaxi/pages/begin-route/components/css-folder/cancel-popup.less
@@ -124,11 +124,7 @@
            .cancel-btn-cancel {
                flex: 1;
<<<<<<< HEAD
                border: 4px solid #141E27;
=======
                border: 2px solid #141E27;
>>>>>>> feature_v2.4.0
                border-radius: 1000px;
                font-size: 32px;
                line-height: 104px;
@@ -143,11 +139,7 @@
                flex: 1;
                text-align: center;
                border-radius: 1000px;
<<<<<<< HEAD
                border: 4px solid #141E27;
=======
                border: 2px solid #141E27;
>>>>>>> feature_v2.4.0
                font-size: 32px;
                line-height: 104px;
                text-align: center;
src/robotaxi/pages/begin-route/components/css-folder/evaluate-popup.less
@@ -22,26 +22,7 @@
        right: 0;
        background: #F1F5FA;
        border-radius: 60px 60px 0 0;
<<<<<<< HEAD
        padding: 64px 0 88px 0;
        .evaluate-rating-switcher,
        .content-box {
            transition: opacity 180ms ease, transform 180ms ease;
            will-change: opacity, transform;
        }
        &.is-rating-switching {
            .evaluate-rating-switcher,
            .content-box {
                opacity: 0;
                transform: translateY(12px) scale(0.985);
                pointer-events: none;
            }
        }
=======
        padding: 42px 0 88px 0;
>>>>>>> feature_v2.4.0
        .evaluate-rating-switcher,
        .content-box {
@@ -59,12 +40,13 @@
        }
        &-close {
            position: absolute;
            top: 34px;
            right: 34px;
            display: flex;
            justify-content: flex-end;
            padding-right: 34px;
            image {
                width: 40px;
                height: 40px;
                width: 36px;
                height: 36px;
            }
        }
@@ -86,11 +68,7 @@
        }
        .evaluate-rating-switcher {
<<<<<<< HEAD
=======
            margin-top: 18px;
>>>>>>> feature_v2.4.0
            padding: 0 49px;
            display: flex;
            flex-direction: column;
@@ -216,14 +194,14 @@
                    padding: 24px;
                    padding-bottom: 16px;
                    font-size: 28px;
                    color: rgba(20, 30, 39, 0.4);
                    color: rgba(0, 0, 0, 0.9);
                    height: 196px;
                }
                .placeholder-class {
                    font-size: 28px;
                    line-height: 44px;
                    color: rgba(20, 30, 39, 0.4);
                    color: rgba(0, 0, 0, 0.25);
                }
                .evaluate-problem-desc-count {
@@ -233,7 +211,7 @@
                    font-size: 20px;
                    line-height: 20px;
                    letter-spacing: normal;
                    color: rgba(20, 30, 39, 0.4);
                    color: rgba(0, 0, 0, 0.25);
                }
            }
@@ -245,17 +223,17 @@
                &-item {
                    position: relative;
                    width: 196px;
                    height: 196px;
                    border-radius: 32px;
                    overflow: hidden;
                    width: 208px;
                    height: 208px;
                    border-radius: 16px;
                    // overflow: hidden;
                    background: rgba(0, 0, 0, 0.03);
                }
                &-img {
                    flex-shrink: 0;
                    width: 196px;
                    height: 196px;
                    width: 208px;
                    height: 208px;
                    object-fit: cover;
                }
@@ -299,8 +277,8 @@
                &-delete {
                    position: absolute;
                    top: 4px;
                    right: 4px;
                    top: -10px;
                    right: -10px;
                    z-index: 2;
                    .delete-icon {
@@ -321,18 +299,14 @@
                &-upload {
                    flex-shrink: 0;
                    width: 196px;
                    height: 196px;
                    width: 208px;
                    height: 208px;
                    display: flex;
                    flex-direction: column;
                    align-items: center;
                    justify-content: center;
                    gap: 8px;
<<<<<<< HEAD
                    border-radius: 32px;
=======
                    border-radius: 16px;
>>>>>>> feature_v2.4.0
                    background: #E8ECF1;
                    &-img {
@@ -340,13 +314,11 @@
                        height: 48px;
                    }
                    &-text {
                        font-family: PingFang SC;
                        font-size: 20px;
                        font-weight: normal;
                        line-height: 32px;
                    &-count {
                        font-size: 24px;
                        line-height: 40px;
                        letter-spacing: normal;
                        color: rgba(20, 30, 39, 0.5);
                        color: rgba(0, 0, 0, 0.25);
                    }
                }
            }
@@ -358,26 +330,6 @@
            display: flex;
            justify-content: center;
            align-items: center;
<<<<<<< HEAD
            &-btn {
                width: 100%;
                height: 104px;
                display: flex;
                justify-content: center;
                align-items: center;
                padding: 32px 80px;
                gap: 16px;
                box-sizing: border-box;
                z-index: 2;
                font-size: 30px;
                letter-spacing: normal;
                color: #FFFFFF;
                text-align: center;
                border-radius: 1000px;
                background: #D6D9DC;
            }
=======
            padding: 32px 80px;
            gap: 16px;
            box-sizing: border-box;
@@ -388,7 +340,6 @@
            text-align: center;
            border-radius: 1000px;
            background: #141E27;
>>>>>>> feature_v2.4.0
        }
        .ok-btn {
src/robotaxi/pages/begin-route/components/css-folder/fragrance-control.less
@@ -64,11 +64,7 @@
  /* 香氛名称,大小类似温度显示 */
  .tf-card-fragrance-name {
    font-size: 40px;
<<<<<<< HEAD
    font-weight: 500;
=======
    font-weight: normal;
>>>>>>> feature_v2.4.0
    line-height: 64px;
    color: @black-text-main;
    overflow: hidden;
@@ -106,10 +102,7 @@
      background-image: url('https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/fragrance-close-20260703.png');
      // 关闭态卡片文字统一弱化
<<<<<<< HEAD
=======
      .tf-card-header-title,
>>>>>>> feature_v2.4.0
      .tf-card-fragrance-name,
      .tf-card-footer-text {
        color: rgba(20, 30, 39, 0.3);
@@ -148,11 +141,7 @@
      position: relative;
      z-index: 103;
      background: #FFFFFF;
<<<<<<< HEAD
      border-radius: 60px 60px 0 0;
=======
      border-radius: 40px 40px 0 0;
>>>>>>> feature_v2.4.0
      width: 100%;
      // 设计稿左右边距 24px
      padding: 0 0 calc(48px + env(safe-area-inset-bottom));
src/robotaxi/pages/begin-route/components/css-folder/passenger-notice.less
@@ -24,11 +24,7 @@
        right: 0;
        background: @gary-theme;
        border-radius: 60px 60px 0px 0px;
<<<<<<< HEAD
        padding: 48px 48px 80px 48px;
=======
        padding: 48px 18px 68px 48px;
>>>>>>> feature_v2.4.0
        height: 75vh;
        overflow: hidden;
        .passenger-content-bg {
@@ -47,7 +43,7 @@
        }
        &-title {
            font-size: 36px;
            font-size: 32px;
            font-weight: 500;
            line-height: 48px;
            text-align: center;
@@ -59,6 +55,7 @@
            position: relative;
            margin-top: 34px;
            height: calc(75vh - 400px);
            padding-right: 1em;
            z-index: 1;
            .passenger-content-desc {
                height: 100%;
src/robotaxi/pages/begin-route/components/css-folder/release-be-being.less
@@ -10,11 +10,7 @@
    position: relative;
    z-index: 1;
    border-radius: 60px 60px 0px 0px;
<<<<<<< HEAD
    padding: 48px 48px 112px 48px;
=======
    padding: 32px 48px 72px 48px;
>>>>>>> feature_v2.4.0
    background: @gary-theme;
  }
  .release-be-being-top-bg {
@@ -22,11 +18,7 @@
    top: 0;
    left: 0;
    width: 100%;
<<<<<<< HEAD
    height: 276px;
=======
    height: 282px;
>>>>>>> feature_v2.4.0
  }
  .top-box {
    .top-box-title {
src/robotaxi/pages/begin-route/components/css-folder/release-route.less
@@ -37,7 +37,7 @@
                font-weight: 500;
                line-height: 44px;
                letter-spacing: normal;
                color: @black-text-main;
                color: rgba(0, 0, 0, 0.9);
            }
            .route-select-preference {
@@ -78,11 +78,7 @@
                    font-size: 20px;
                    line-height: 20px;
                    letter-spacing: normal;
<<<<<<< HEAD
                    color: @black-text-main;
=======
                    color: rgba(0, 0, 0, 0.9);
>>>>>>> feature_v2.4.0
                }
                .route-select-content-item-time {
@@ -91,7 +87,7 @@
                    font-weight: 500;
                    line-height: 40px;
                    letter-spacing: normal;
                    color: @black-text-main;
                    color: rgba(0, 0, 0, 0.9);
                }
                .route-select-content-item-distance {
@@ -102,11 +98,7 @@
                    font-size: 20px;
                    line-height: 20px;
                    letter-spacing: normal;
<<<<<<< HEAD
                    color: @black-text-main;
=======
                    color: rgba(0, 0, 0, 0.9);
>>>>>>> feature_v2.4.0
                    .traffic-signal-item {
                        display: flex;
@@ -156,10 +148,6 @@
        padding-top: 94px;
        background: @gary-theme;
        border-radius: 60px 60px 0 0;
<<<<<<< HEAD
        box-sizing: border-box;
=======
>>>>>>> feature_v2.4.0
      .select-site-content {
          position: relative;
          z-index: 1;
@@ -268,7 +256,7 @@
                      font-weight: 500;
                      line-height: 56px;
                        letter-spacing: normal;
                        color: @black-text-main;
                        color: rgba(0, 0, 0, 0.9);
                        margin-right: 22px;
                    }
                }
@@ -278,12 +266,7 @@
        .route-content {
            position: relative;
            margin-top: 16px;
<<<<<<< HEAD
            padding-bottom: 36px;
            box-sizing: border-box;
=======
            margin-bottom: 24px;
>>>>>>> feature_v2.4.0
            z-index: 10;
            display: flex;
            align-items: center;
@@ -303,7 +286,7 @@
            .route-content-txt {
                font-size: 24px;
                letter-spacing: normal;
                color: @black-text-04;
                color: rgba(0, 0, 0, 0.4);
            }
            .route-content-bottom {
@@ -313,12 +296,10 @@
                    align-items: center;
                    font-size: 24px;
                    letter-spacing: normal;
                    color: @black-text-04;
                    color: rgba(0, 0, 0, 0.6);
                    .tip-icon {
                      width: 24px;
                      height: 24px;
                      margin-right: 6px;
                        margin-right: 6px;
                    }
                }
            }
@@ -348,11 +329,7 @@
            .discount-amount-text {
                flex-shrink: 0;
<<<<<<< HEAD
                border-radius: 8px;
=======
                border-radius: 200px;
>>>>>>> feature_v2.4.0
                background: rgba(255, 255, 255, 0);
                box-sizing: border-box;
                border: 1.4px solid @gold-text;
@@ -391,11 +368,7 @@
            display: flex;
            justify-content: space-between;
            align-items: center;
<<<<<<< HEAD
            padding: 8px 38px 62px 32px;
=======
            padding: 24px 38px 62px 32px;
>>>>>>> feature_v2.4.0
            background: @gary-theme;
            .money-box {
src/robotaxi/pages/begin-route/components/css-folder/service-route-change.less
@@ -125,31 +125,28 @@
    .service-route-select-footer {
        display: flex;
        justify-content: space-between;
        gap: 22px;
        gap: 24px;
        margin-top: 48px;
        font-size: 32px;
        font-weight: 500;
        font-size: 28px;
        font-weight: normal;
        text-align: center;
        .service-route-select-footer-item-cancel {
            flex: 1;
            color: #141E27;
            border-radius: 1000px;
            color: rgba(0, 0, 0, 0.9);
            border-radius: 16px;
            box-sizing: border-box;
            border: 4px solid #141E27;
            line-height: 104px;
            height: 104px;
            border: 2px solid rgba(0, 0, 0, 0.9);
            line-height: 92px;
        }
        .service-route-select-footer-item-confirm {
            flex: 1;
            color: #FFFFFF;
            border-radius: 1000px;
            line-height: 104px;
            border: 4px solid #141E27;
            box-sizing: border-box;
            height: 104px;
            background: #141E27;
            border-radius: 16px;
            line-height: 92px;
            border-radius: 20px;
            background: linear-gradient(102deg, #8475FF 0%, #7DD6FF 102%);
        }
    }
}
src/robotaxi/pages/begin-route/components/css-folder/temperature-control.less
@@ -1,8 +1,3 @@
<<<<<<< HEAD
@import '../../../../style/ui-variables.less';
=======
>>>>>>> feature_v2.4.0
.ac-control {
  flex-shrink: 0;
@@ -39,11 +34,7 @@
      z-index: 103;
      width: 100%;
      height: 1232px;
<<<<<<< HEAD
      border-radius: 60px 60px 0 0;
=======
      border-radius: 40px 40px 0 0;
>>>>>>> feature_v2.4.0
      overflow: hidden;
      background: #FFFFFF;
      box-sizing: border-box;
@@ -86,11 +77,7 @@
      .popup-ac-title {
        display: block;
        text-align: center;
<<<<<<< HEAD
        font-size: 32px;
=======
        font-size: 28px;
>>>>>>> feature_v2.4.0
        font-weight: 500;
        line-height: 40px;
        color: rgba(0, 0, 0, 0.9);
@@ -128,10 +115,6 @@
      justify-content: center;
      .popup-temp-item-value {
<<<<<<< HEAD
        font-family: @font-xpsans-bold;
=======
>>>>>>> feature_v2.4.0
        font-size: 40px;
        line-height: 44px;
        // 未选中温度:#141E27 透明度 0.2(对齐设计标注)
@@ -147,28 +130,16 @@
          font-size: 64px;
          line-height: 72px;
          font-weight: 600;
<<<<<<< HEAD
          color: @black-text-main;
=======
          color: #141E27;
>>>>>>> feature_v2.4.0
          opacity: 1;
        }
        .popup-temp-item-unit {
          margin-left: 4px;
<<<<<<< HEAD
          font-family: @font-xpsans-bold;
          font-size: 28px;
          line-height: 40px;
          font-weight: 500;
          color: @black-text-main;
=======
          font-size: 28px;
          line-height: 40px;
          font-weight: 500;
          color: #141E27;
>>>>>>> feature_v2.4.0
        }
      }
@@ -200,11 +171,7 @@
      .popup-ac-switch-text {
        font-size: 28px;
        line-height: 40px;
<<<<<<< HEAD
        color: @black-text-main;
=======
        color: rgba(0, 0, 0, 0.9);
>>>>>>> feature_v2.4.0
      }
    }
  }
src/robotaxi/pages/begin-route/components/debug-order-simulator-panel.tsx
@@ -203,23 +203,6 @@
    props.setTripStatus(TripStatus.PaymentSuccess);
  };
  /**
   * 直达「行程结束未支付」(TripFinished=8):本地跳过「结束行程」真实接口,直接把行程状态置为待支付,
   * 用于测试行程结束未支付页(费用明细 FareDetailCard、优惠券切换、支付按钮)。
   * 注意:费用明细仍会尝试真实查询,模拟订单号(SIM-xxx)后端不存在会静默失败并展示为 0 元。
   */
  const handleJumpToTripFinished = () => {
    simulatorRef.current?.stop();
    replayRef.current?.stop();
    setRunning(false);
    setReplaying(false);
    const orderId = resolveOrderId();
    ensureSimulationOrderId(orderId);
    props.setOrderId(orderId);
    props.bindSocketListeners();
    props.setTripStatus(TripStatus.TripFinished);
  };
  /** 各速度档位 → 回放时间缩放因子(越大越快)。 */
  const REPLAY_SPEED_FACTOR: Record<keyof typeof SPEED_PRESETS, number> = {
    slow: 8,
@@ -456,12 +439,6 @@
        <Text style={{ display: 'block', fontWeight: 'bold' }}>页面态快捷跳转</Text>
      </View>
      <View style={{ display: 'flex', marginBottom: '4px' }}>
        <View
          onClick={handleJumpToTripFinished}
          style={buttonStyle('#0e9f6e')}
        >
          行程结束未支付
        </View>
        <View
          onClick={handleJumpToEvaluatePage}
          style={buttonStyle('#7c5cff')}
src/robotaxi/pages/begin-route/components/evaluate-popup.tsx
@@ -45,8 +45,6 @@
    const isSubmittingRef = useRef(false); // 同步提交锁,防止快速重复点击导致的并发提交
    const ratingSwitchTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null); // 评分切换过渡计时器
    const ratingOptionsRequestIdRef = useRef(0); // 拉取问题类型请求序号,避免异步串台
    const ratingTouchStartRef = useRef<{ x: number; y: number } | null>(null); // 弹窗区域滑动起点
    const ratingTouchMoveRef = useRef<{ x: number; y: number } | null>(null); // 弹窗区域滑动过程点
    const {
        images: pictures,
        uploading,
@@ -66,7 +64,7 @@
        1: {
            title: '“不满意,我要吐槽”',
            summary: '不满意,我要吐槽',
            placeholder: '请描述您的建议或问题'
            placeholder: '请详描述您遇到的问题(可添加相关截图辅助说明)'
        },
        2: {
            title: '“一般般,还需努力”',
@@ -81,7 +79,7 @@
    }[currentOrderRating] || {
        title: '“不满意,我要吐槽”',
        summary: '不满意,我要吐槽',
        placeholder: '请描述您的建议或问题'
        placeholder: '请详描述您遇到的问题(可添加相关截图辅助说明)'
    };
    const evaluateDimensionMap: Record<number, number> = {
        3: 1,
@@ -115,65 +113,6 @@
            setSelectedRating(rating);
            ratingSwitchTimerRef.current = null;
        }, 120);
    };
    const getTouchPoint = (touch: any) => ({
        x: Number(touch?.pageX ?? touch?.clientX ?? touch?.x ?? 0),
        y: Number(touch?.pageY ?? touch?.clientY ?? touch?.y ?? 0)
    });
    /**
     * 评分区域:记录滑动起点。
     */
    const handleRatingTouchStart = (e: any) => {
        const touch = e?.touches?.[0];
        if (!touch) {
            return;
        }
        const point = getTouchPoint(touch);
        ratingTouchStartRef.current = point;
        ratingTouchMoveRef.current = point;
    };
    /**
     * 弹窗区域:实时记录滑动坐标,兼容部分端 changedTouches 缺失。
     */
    const handleRatingTouchMove = (e: any) => {
        const touch = e?.touches?.[0];
        if (!touch) {
            return;
        }
        ratingTouchMoveRef.current = getTouchPoint(touch);
    };
    /**
     * 评分区域:左右滑动切换满意度。
     */
    const handleRatingTouchEnd = (e: any) => {
        const start = ratingTouchStartRef.current;
        ratingTouchStartRef.current = null;
        if (!start || isRatingSwitching) {
            return;
        }
        const touch = e?.changedTouches?.[0];
        const point = touch ? getTouchPoint(touch) : ratingTouchMoveRef.current;
        if (!point) {
            return;
        }
        const endX = point.x;
        const endY = point.y;
        const deltaX = endX - start.x;
        const deltaY = endY - start.y;
        const minSwipeDistance = 24;
        // 只响应明显的水平滑动,避免与纵向滚动或点击冲突。
        if (Math.abs(deltaX) < minSwipeDistance || Math.abs(deltaX) <= Math.abs(deltaY)) {
            return;
        }
        const direction = deltaX < 0 ? 1 : -1; // 左滑=下一档,右滑=上一档
        const nextRating = Math.min(3, Math.max(1, selectedRating + direction));
        handleSelectRating(nextRating);
    };
    const toggleFeedbackType = (typeId: unknown) => {
@@ -317,15 +256,9 @@
    return (
        <View className='evaluate-popup' catchMove onClick={(e) => e.stopPropagation()}>
            <View className='evaluate-mask' onClick={onClose}></View>
            <View
                className={`evaluate-content ${isRatingSwitching ? 'is-rating-switching' : ''}`}
                animation={animationData}
                onTouchStart={handleRatingTouchStart}
                onTouchMove={handleRatingTouchMove}
                onTouchEnd={handleRatingTouchEnd}
            >
            <View className={`evaluate-content ${isRatingSwitching ? 'is-rating-switching' : ''}`} animation={animationData}>
                <View className='evaluate-content-close'>
                    <Image onClick={onClose} src="https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/close-fill-20260726.svg" />
                    <Image onClick={onClose} src="https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/close-icon.png" />
                </View>
                <View className='evaluate-rating-switcher'>
                    <View className='evaluate-rating-switcher-title'>您对本次行程满意吗?</View>
@@ -348,7 +281,7 @@
                <View className='content-box'>
                    {!hideFeedbackType && (
                        <View className='evaluate-problem-type'>
                            <View className='evaluate-problem-type-title'>反馈的问题类型:</View>
                            <View className='evaluate-problem-type-content'>
                                {typeOptions.map((item) => (
                                    <View key={item?.id} className={`evaluate-problem-type-content-item ${selectedTypeIds.includes(normalizeFeedbackTypeId(item?.id)) && 'active-tag'}`} onClick={() => toggleFeedbackType(item?.id)}>
@@ -402,8 +335,8 @@
                        {
                            pictures.length < 3 && (
                                <View className='evaluate-problem-pic-box-upload' onClick={chooseAndUpload}>
                                    <Image className='evaluate-problem-pic-box-upload-img' src="https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/add-icon-20260726.svg" />
                                    <View className='evaluate-problem-pic-box-upload-text'>上传图片/视频</View>
                                    <Image className='evaluate-problem-pic-box-upload-img' src="https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/upload-icon.png" />
                                    <View className='evaluate-problem-pic-box-upload-count'>{pictures.length}/3</View>
                                </View>
                            )
                        }
src/robotaxi/pages/begin-route/components/modify-destination-review.tsx
@@ -414,7 +414,7 @@
                    </View>
                  </View>
                )}
                {/* {isOperateFree
                {isOperateFree
                  ? null
                  : hasFareDiscount && (
                      <View className="modify-destination-review-fare-discount">
@@ -423,7 +423,7 @@
                          {fareEstimate.discountAmount}元
                        </Text>
                      </View>
                    )} */}
                    )}
              </View>
              <View className="modify-destination-review-confirm-wrapper">
                <View
src/robotaxi/pages/begin-route/components/release-be-being.tsx
@@ -74,7 +74,7 @@
    return (
        <View className='release-be-being'>
          <Image className="release-be-being-top-bg" src='https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/top-card-bg-20260722.png' />
          <Image className="release-be-being-top-bg" src='https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/card-bg-20260714.png' />
          <View className="release-be-being-content">
            <View className="top-box">
                <View className="top-box-title">
src/robotaxi/pages/begin-route/components/release-route.tsx
@@ -238,7 +238,7 @@
                              </View>
                              <View className="route-content-bottom">
                                  <View onClick={handleOpenPassengerNotice} className="route-content-bottom-left">
                                      <Image className="tip-icon" src="https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/tip-default-icon-20260726.png" />
                                      <Image className="tip-icon" src="https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/tip-default-icon.png" />
                                      <View>乘车须知</View>
                                  </View>
                              </View>
@@ -250,11 +250,7 @@
                <View className="confirm-btn-box">
                    {
                        hasDiscountAmount &&
                        <View
                          className="discount-amount"
                          style={{ visibility: isRouteSelectExpanded ? 'hidden' : 'visible' }}
                          onClick={onOpenCouponSelect}
                        >
                        <View className="discount-amount" onClick={onOpenCouponSelect}>
                            <View className="flex-center">
                                <View className="discount-amount-text">最佳优惠</View>
                                <View className="discount-amount-desc" >已为您选择最佳优惠</View>
@@ -283,7 +279,7 @@
                            )}
                        </View>
                        <View className="confirm-btn-wrapper">
                          <Image className="confirm-btn-bg" src="https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/confirm-btn-bg-20260726.png" />
                          <Image className="confirm-btn-bg" src="https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/confirm-btn-bg-20260629.png" />
                          <View onClick={() => !isCallDisabled && callImmediately()} className="confirm-btn">
                            <Image className="confirm-btn-icon" src="https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/confirm-btn-icon-20260629.png" />
                              立即呼叫
src/robotaxi/pages/begin-route/hooks/use-map-markers.ts
@@ -246,7 +246,6 @@
                  : pickupName,
              color: "#FFFFFF",
              fontSize: 12,
              fontWeight: 500,
              bgColor: "#000000",
              borderRadius: 8,
              padding: 8,
src/robotaxi/pages/begin-route/index.less
@@ -160,11 +160,7 @@
// 气泡底部中间的钻石指示图标
.callout-diamond-icon {
<<<<<<< HEAD
    width: 28px;
=======
    width: 18px;
>>>>>>> feature_v2.4.0
    height: 28px;
    margin-top: -14px;
    flex-shrink: 0;
@@ -225,15 +221,9 @@
    flex-direction: row;
    align-items: center;
    justify-content: center;
<<<<<<< HEAD
    background: @black-text-main;
    border-radius: 100px;
    padding: 16px 20px;
=======
    background: #141E27;
    border-radius: 100px;
    padding: 16px 16px 16px 20px;
>>>>>>> feature_v2.4.0
}
.site-countdown-icon {
@@ -244,10 +234,6 @@
}
.site-countdown-time {
<<<<<<< HEAD
    font-family: @font-xpsans-bold;
=======
>>>>>>> feature_v2.4.0
    font-size: 24px;
    font-weight: normal;
    line-height: 32px;
src/robotaxi/pages/begin-route/index.tsx
@@ -87,7 +87,6 @@
  resetConfirmRideSelectionContext
} from '../../constants/confirm-ride-report';
import { withRobotaxiWhitelist } from '../../../utils/whitelist';
import { withToast } from '../../components/toast/with-toast';
import type { PickupExceptionInfo } from './pickup-exception';
const ROUTE_SUMMARY_MARKER_ID = 999001;
@@ -2626,4 +2625,4 @@
  )
}
export default withRobotaxiWhitelist(withToast(BeginRoute));
export default withRobotaxiWhitelist(BeginRoute);
src/robotaxi/pages/demo/index.tsx
@@ -7,8 +7,6 @@
import { checkOtp } from '../../../utils/tools';
import { withRobotaxiWhitelist } from '../../../utils/whitelist';
// 通过 withToast HOC 在页面挂载一次 Toast 单例容器(推荐的接入方式)
import { withToast } from '../../components/toast/with-toast';
// @ts-ignore
@createPage()
@@ -45,4 +43,4 @@
  }
}
export default withRobotaxiWhitelist(withToast(ToolboxBase as any) as any);
export default withRobotaxiWhitelist(ToolboxBase as any);
src/robotaxi/pages/select-map-site/index.less
@@ -201,11 +201,7 @@
                left: 50%;
                top: 100%;
                transform: translate(-50%, -50%);
<<<<<<< HEAD
                width: 28px;
=======
                width: 18px;
>>>>>>> feature_v2.4.0
                height: 28px;
                z-index: -1;
            }
@@ -401,11 +397,7 @@
            margin-top: 32px;
            font-size: 32px;
            font-weight: 500;
<<<<<<< HEAD
            color: @gold-text;
=======
            color: #141E27;
>>>>>>> feature_v2.4.0
            display: flex;
            align-items: center;
            height: 120px;
@@ -443,18 +435,10 @@
            align-items: center;
            border-radius: 1000px;
            box-sizing: border-box;
<<<<<<< HEAD
            border: 4px solid #141E27;
            font-size: 32px;
            letter-spacing: normal;
            color: #141E27;
            font-weight: 760;
=======
            border: 2px solid #141E27;
            font-size: 28px;
            letter-spacing: normal;
            color: #141E27;
>>>>>>> feature_v2.4.0
        }
        .no-confirm {
src/robotaxi/pages/share-trip/index.less
@@ -516,11 +516,7 @@
// 浮窗底部的钻石指示图标,对齐 begin-route .callout-diamond-icon
.callout-diamond-icon {
<<<<<<< HEAD
  width: 28px;
=======
  width: 18px;
>>>>>>> feature_v2.4.0
  height: 28px;
  margin-top: -14px;
  flex-shrink: 0;
src/robotaxi/pages/site-search/index.less
@@ -45,13 +45,8 @@
    }
    .end-icon {
<<<<<<< HEAD
      background: @gold-light ;
    }
=======
      background: @black-text-main;
    }
>>>>>>> feature_v2.4.0
    .search-input {
      flex: 1;
@@ -176,15 +171,9 @@
      justify-content: center;
      .collect-icon {
<<<<<<< HEAD
        width: 40px;
        height: 40px;
        margin-bottom: 4px;
=======
        width: 32px;
        height: 32px;
        margin-bottom: 8px;
>>>>>>> feature_v2.4.0
      }
      .history-distance {
src/robotaxi/pages/site-search/index.tsx
@@ -511,8 +511,8 @@
        itemKey={item.id || index}
        item={item}
        iconSrc='https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/address-20260630.png'
        starSrc='https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/active-star-20260726.png'
        noStarSrc='https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/no-star-20260726.png'
        starSrc='https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/active-star-20260630.png'
        noStarSrc='https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/no-star-20260630.png'
        showDistance={showDistance}
        onSelect={(selectedItem: any) => onSelect(selectedItem, index)}
        renderHighlightedText={renderHighlightedText}