ai-coding
2026-08-12 01de01e77f8d0baeea5f3243527db466fbb05da5
增加目的地展示,更换起点三角标、终点标,所有里程和时间换成中文

Co-Authored-By: 符启基 <fuqj@xiaopeng.com>
8个文件已修改
104 ■■■■■ 已修改文件
src/robotaxi/pages/begin-route/components/calling-car-modules/trip-status-header.tsx 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/calling-car-modules/vehicle-info-card.tsx 40 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/calling-car.tsx 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/css-folder/calling-car.less 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/hooks/use-map-markers.ts 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/hooks/use-view-delegates.tsx 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/share-trip/hooks/use-map-markers.ts 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/share-trip/hooks/use-view-delegates.tsx 10 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/begin-route/components/calling-car-modules/trip-status-header.tsx
@@ -141,9 +141,9 @@
  const endSiteName = cachedEndSite?.name || cachedEndSite?.address || '-';
  // 状态栏右侧的距离/时间文案
  const distanceText = routeDistance ? `${routeDistance.value}${routeDistance.unit === 'm' ? 'M' : 'KM'}` : '';
  const approachingTimeText = `${normalizedDurationDisplay.value}MIN`;
  const inServiceTimeText = `${normalizedDurationDisplay.value}MIN`;
  const distanceText = routeDistance ? `${routeDistance.value}${routeDistance.unit === 'm' ? '米' : '公里'}` : '';
  const approachingTimeText = `${normalizedDurationDisplay.value}分钟`;
  const inServiceTimeText = `${normalizedDurationDisplay.value}分钟`;
  return (
    <>
src/robotaxi/pages/begin-route/components/calling-car-modules/vehicle-info-card.tsx
@@ -1,6 +1,9 @@
import { View } from "@tarojs/components";
import Taro from "@tarojs/taro";
import { View, Image } from "@tarojs/components";
import { TripStatus } from "../../../../constants/trip-status";
type Props = {
    tripStatus?: TripStatus;
    vehicleInfo?: {
        vehiclePictures?: string;
        vehicleCode?: string;
@@ -9,20 +12,33 @@
    };
};
export default function VehicleInfoCard({ vehicleInfo }: Props) {
export default function VehicleInfoCard({ tripStatus, vehicleInfo }: Props) {
    // 行程中(前往目的地):车牌信息下方展示目的地图标 + 站点名称
    const showDestination = tripStatus === TripStatus.InService;
    const cachedEndSite = showDestination ? (Taro.getStorageSync('endSite') || {}) : {};
    const endSiteName = cachedEndSite?.name || cachedEndSite?.address || '-';
    // 展示车辆基础信息:左侧车牌·车身颜色,右侧车型
    return (
        <View className="car-card-detail">
            <View className="car-card-detail-plate">
                <View className="car-card-detail-num">{vehicleInfo?.plateNumber}</View>
                {vehicleInfo?.vehicleColor && (
                    <>
                        <View className="car-card-detail-dot"></View>
                        <View className="car-card-detail-color-text">{vehicleInfo?.vehicleColor}</View>
                    </>
                )}
        <View className="car-card-detail-wrap">
            <View className="car-card-detail">
                <View className="car-card-detail-plate">
                    <View className="car-card-detail-num">{vehicleInfo?.plateNumber}</View>
                    {vehicleInfo?.vehicleColor && (
                        <>
                            <View className="car-card-detail-dot"></View>
                            <View className="car-card-detail-color-text">{vehicleInfo?.vehicleColor}</View>
                        </>
                    )}
                </View>
                <View className="car-card-detail-model">小鹏GX</View>
            </View>
            <View className="car-card-detail-model">小鹏GX</View>
            {showDestination && (
                <View className='car-card-detail-destination'>
                    <Image className='car-card-detail-destination-icon' src='https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/destination-icon-20260812.png' />
                    <View className='car-card-detail-destination-name'>{endSiteName}</View>
                </View>
            )}
        </View>
    );
}
src/robotaxi/pages/begin-route/components/calling-car.tsx
@@ -244,7 +244,7 @@
            }
            {
              [TripStatus.VehicleApproaching, TripStatus.VehicleArrivedPickup, TripStatus.InService, TripStatus.PaymentSuccess].includes(tripStatus) &&
              <VehicleInfoCard vehicleInfo={vehicleInfo} />
              <VehicleInfoCard tripStatus={tripStatus} vehicleInfo={vehicleInfo} />
            }
            <TripStatusHeader
              orderId={orderId}
src/robotaxi/pages/begin-route/components/css-folder/calling-car.less
@@ -154,11 +154,30 @@
  .fare-box-card {
    padding-bottom: 0;
  }
  .car-card-detail-wrap {
    margin-bottom: 32px;
  }
  .car-card-detail {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 32px;
  }
  .car-card-detail-destination {
    display: flex;
    align-items: center;
    margin-top: 12px;
    .car-card-detail-destination-icon {
      width: 28px;
      height: 28px;
      flex-shrink: 0;
    }
    .car-card-detail-destination-name {
      margin-left: 8px;
      font-size: 24px;
      color: @black-text-main;
      max-width: 620px;
      word-break: break-all;
    }
  }
  .car-card-detail-plate {
    display: flex;
src/robotaxi/pages/begin-route/hooks/use-map-markers.ts
@@ -11,7 +11,7 @@
  "https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/change-site-up.png"; // 行程中修改目的地时的上车点图标
// 接驾态(前往上车点)上车点三角图标
const PICKUP_APPROACHING_ICON_URL =
  "https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/up-triangle-20260722.png";
  "https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/up-triangle-20260812.png";
// 送驾态(前往目的地)下车点三角图标
const DROPOFF_INSERVICE_ICON_URL =
  "https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/down-triangle-20260722.png";
@@ -218,8 +218,11 @@
      !shouldUseChangePickupIcon;
    // 修改目的地预览:起点(上车点)统一用三角图标 up-triangle + 名称显示在图标下方
    const isPickupModifyPreview = deps.isModifyDestinationReviewVisible;
    // 发布路线态:上车点同样展示三角图标
    const isPickupPublishRoute =
      deps.tripStatus === TripStatus.PublishRoute && !shouldUseChangePickupIcon;
    // 接驾态路线切换卡片展示中:地图状态被切换为 PublishRoute 展示态,但上车点名称仍需按三角图标态展示
    const isPickupTriangle = isPickupApproaching || isPickupArrived || isPickupSettled || isPickupModifyPreview || deps.showTrip1StyleEndpoint;
    const isPickupTriangle = isPickupApproaching || isPickupArrived || isPickupSettled || isPickupModifyPreview || isPickupPublishRoute || deps.showTrip1StyleEndpoint;
    // 名称在图标下方:接驾态 11px,到达/待支付/完成态 22px
    const pickupNameLabelConfig = isPickupApproaching
      ? SITE_NAME_LABEL_BASE
@@ -312,12 +315,14 @@
      : dropoffSite.name || "目的地";
    // 送驾态(前往目的地):下车点改用三角图标,名称移到图标下方,浮窗展示 end-site 图片;
    // 待支付/完成态:下车点同样三角图标 + end-site 浮窗,名称移到图标左侧。
    // 发布路线态:下车点同样展示三角图标。
    const isDropoffInService = deps.tripStatus === TripStatus.InService;
    const isDropoffSettled = [
      TripStatus.TripFinished,
      TripStatus.PaymentSuccess
    ].includes(deps.tripStatus);
    const isDropoffTriangle = isDropoffInService || isDropoffSettled;
    const isDropoffPublishRoute = deps.tripStatus === TripStatus.PublishRoute;
    const isDropoffTriangle = isDropoffInService || isDropoffSettled || isDropoffPublishRoute;
    const useDropoffRichCallout = isDropoffTriangle; // cover-view 富浮窗
    const getCustomCalloutAnchorY = () => {
      if (!deps.isAndroid && isDropoffSettled) {
src/robotaxi/pages/begin-route/hooks/use-view-delegates.tsx
@@ -261,9 +261,7 @@
              {routeDistance?.value ?? 0}
            </View>
            <View style={{ flexShrink: 0 }}>
              {isPickup
                ? routeDistance?.unit === "m" ? "M" : "KM"
                : routeDistance?.unit === "m" ? "米" : "公里"}
              {routeDistance?.unit === "m" ? "米" : "公里"}
            </View>
            {!isPickup && (
              <>
@@ -711,7 +709,7 @@
                    src="https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/golden-car-icon-20260708.png"
                  />
                  <CoverView className="site-status-time">
                    限停{deps.startSite?.time}MIN
                    限停{deps.startSite?.time}分钟
                  </CoverView>
                </CoverView>
                <CoverImage
@@ -758,7 +756,7 @@
              !item.hideNameCallout && (
                <CoverImage
                  className="site-status-end-img"
                  src="https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/end-site-20260722.png"
                  src="https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/end-site-20260812.png"
                />
              )}
            {item.name === "车辆位置" &&
@@ -788,7 +786,7 @@
                        {deps.routeDistance?.value ?? 0}
                      </CoverView>
                      <CoverView className="car-before-order-tip-unit">
                        {deps.routeDistance?.unit === "m" ? "M" : "KM"}
                        {deps.routeDistance?.unit === "m" ? "米" : "公里"}
                      </CoverView>
                      <CoverView className="car-before-order-tip-value">
                        {vehicleMetricDurationDisplay.value}
@@ -803,7 +801,7 @@
                        {deps.routeDistance?.value ?? 0}
                      </CoverView>
                      <CoverView>
                        {deps.routeDistance?.unit === "m" ? "M" : "KM"}
                        {deps.routeDistance?.unit === "m" ? "米" : "公里"}
                      </CoverView>
                    </CoverView>
                  )
src/robotaxi/pages/share-trip/hooks/use-map-markers.ts
@@ -4,7 +4,7 @@
// 接驾态(前往上车点)/到达终点态 上车点三角图标(与 begin-route 对齐)
const PICKUP_APPROACHING_ICON_URL =
    'https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/up-triangle-20260722.png';
    'https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/up-triangle-20260812.png';
// 送驾态(前往目的地)/到达终点态 下车点三角图标(与 begin-route 对齐)
const DROPOFF_INSERVICE_ICON_URL =
    'https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/down-triangle-20260722.png';
src/robotaxi/pages/share-trip/hooks/use-view-delegates.tsx
@@ -48,9 +48,7 @@
      <View className='car-time' style={{ alignItems: 'baseline', paddingBottom: 0 }}>
        <View className='car-time-num'>{routeDistance?.value ?? 0}</View>
        <View style={{ flexShrink: 0 }}>
          {isPickup
            ? (routeDistance?.unit === 'm' ? 'M' : 'KM')
            : (routeDistance?.unit === 'm' ? '米' : '公里')}
          {routeDistance?.unit === 'm' ? '米' : '公里'}
        </View>
        {!isPickup && (
          <>
@@ -151,7 +149,7 @@
          >
            <CoverView className='car-time'>
              <CoverView className='car-time-num'>{deps.routeDistance?.value ?? 0}</CoverView>
              <CoverView>{deps.routeDistance?.unit === 'm' ? 'M' : 'KM'}</CoverView>
              <CoverView>{deps.routeDistance?.unit === 'm' ? '米' : '公里'}</CoverView>
            </CoverView>
          </CoverView>
        )}
@@ -162,7 +160,7 @@
                className='site-status-car-icon'
                src='https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/golden-car-icon-20260708.png'
              />
              <CoverView className='site-status-time'>限停{deps.startSite?.time}MIN</CoverView>
              <CoverView className='site-status-time'>限停{deps.startSite?.time}分钟</CoverView>
            </CoverView>
            <CoverImage
              className='callout-diamond-icon'
@@ -179,7 +177,7 @@
        {(item.id === 2 && [TripStatus.InService, TripStatus.ArrivedDestination, TripStatus.TripFinished, TripStatus.CancelOnlyPickup].includes(deps.tripStatus) && !item.hideNameCallout) && (
          <CoverImage
            className='site-status-end-img'
            src='https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/end-site-20260722.png'
            src='https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/end-site-20260812.png'
          />
        )}
          </>