Revert "Merge branch 'feature_v2.4.0_ui' into 'feature_v2.4.0'"
This reverts merge request !185
| | |
| | | .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; |
| | |
| | | left: 50%; |
| | | top: 100%; |
| | | transform: translate(-50%, -50%); |
| | | <<<<<<< HEAD |
| | | width: 28px; |
| | | ======= |
| | | width: 18px; |
| | | >>>>>>> feature_v2.4.0 |
| | | height: 28px; |
| | | z-index: -1; |
| | | } |
| | |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | |
| | | // 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'; |
| | | |
| | |
| | | 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'> |
| | |
| | | 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 = { |
| | |
| | | if (!unlockSucceeded) { |
| | | // Taro.hideLoading(); |
| | | stopLoading(doorType); |
| | | showToast({ title: res?.msg || '解锁失败,请重试或联系客服', icon: 'fail' }); |
| | | Taro.showToast({ title: res?.msg || '解锁失败,请重试或联系客服', icon: 'none' }); |
| | | return; |
| | | } |
| | | |
| | |
| | | // 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' }); |
| | | }); |
| | | }; |
| | | |
| | |
| | | </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> |
| | |
| | | { |
| | | tripStatus === TripStatus.TripFinished && |
| | | <View className="pay-box"> |
| | | {/* { |
| | | { |
| | | fareBreakdown?.operateFree != 1 ? |
| | | <View className="pay-box-money"><View>{formatMoney( |
| | | fareBreakdown?.payMoney <= 0 |
| | |
| | | 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'; |
| | |
| | | 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 = '网络异常,请重试'; |
| | | |
| | |
| | | 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 { |
| | |
| | | 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; |
| | | } |
| | |
| | | font-size: 88px; |
| | | line-height: 108px; |
| | | font-weight: 600; |
| | | <<<<<<< HEAD |
| | | font-family: @font-xpsans-bold; |
| | | ======= |
| | | >>>>>>> feature_v2.4.0 |
| | | letter-spacing: normal; |
| | | color: #FFFFFF; |
| | | } |
| | |
| | | // 提升特异性:与 .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; |
| | | } |
| | |
| | | } |
| | | .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; |
| | |
| | | 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; |
| | | } |
| | |
| | | line-height: normal; |
| | | letter-spacing: normal; |
| | | color: rgba(20, 30, 39, 0.5); |
| | | >>>>>>> feature_v2.4.0 |
| | | } |
| | | .car-card-arrive-item-img { |
| | | width: 64px; |
| | |
| | | margin-bottom: 16px; |
| | | padding: 24px 20px; |
| | | opacity: 1; |
| | | <<<<<<< HEAD |
| | | overflow-y: scroll; |
| | | ======= |
| | | >>>>>>> feature_v2.4.0 |
| | | } |
| | | } |
| | | .particulars-detail-item { |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | border-radius: 16px; |
| | | background: linear-gradient(110deg, #8475ff 0%, #7dd6ff 99%); |
| | | color: #fff; |
| | | >>>>>>> feature_v2.4.0 |
| | | } |
| | | } |
| | | .car-card-reach-btn-item-img { |
| | |
| | | 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; |
| | |
| | | border-radius: 20px; |
| | | background: rgba(255, 255, 255, 0.4); |
| | | } |
| | | >>>>>>> feature_v2.4.0 |
| | | } |
| | | .pay-box-btn { |
| | | width: 654px; |
| | |
| | | flex-shrink: 0; |
| | | opacity: 0.75; |
| | | } |
| | | <<<<<<< HEAD |
| | | ======= |
| | | .close-btn-item { |
| | | position: relative; |
| | | border-radius: 16px; |
| | |
| | | pointer-events: none; |
| | | } |
| | | } |
| | | >>>>>>> feature_v2.4.0 |
| | | .bluetooth-operate-card { |
| | | position: relative; |
| | | z-index: 1; |
| | |
| | | .distance { |
| | | font-size: 24px; |
| | | font-weight: 500; |
| | | <<<<<<< HEAD |
| | | font-family: @font-xpsans-bold; |
| | | ======= |
| | | >>>>>>> feature_v2.4.0 |
| | | color: #ffffff; |
| | | } |
| | | .time { |
| | |
| | | padding: 0; |
| | | font-size: 24px; |
| | | font-weight: 500; |
| | | <<<<<<< HEAD |
| | | font-family: @font-xpsans-bold; |
| | | ======= |
| | | >>>>>>> feature_v2.4.0 |
| | | color: #ffffff; |
| | | } |
| | | } |
| | |
| | | font-size: 48px; |
| | | font-weight: normal; |
| | | line-height: 64px; |
| | | <<<<<<< HEAD |
| | | font-family: @font-xpsans-bold; |
| | | ======= |
| | | >>>>>>> feature_v2.4.0 |
| | | color: @black-text-main; |
| | | } |
| | | |
| | |
| | | |
| | | .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; |
| | |
| | | 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; |
| | |
| | | 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 { |
| | |
| | | } |
| | | |
| | | &-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; |
| | | } |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | .evaluate-rating-switcher { |
| | | <<<<<<< HEAD |
| | | |
| | | ======= |
| | | margin-top: 18px; |
| | | >>>>>>> feature_v2.4.0 |
| | | padding: 0 49px; |
| | | display: flex; |
| | | flex-direction: column; |
| | |
| | | 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 { |
| | |
| | | font-size: 20px; |
| | | line-height: 20px; |
| | | letter-spacing: normal; |
| | | color: rgba(20, 30, 39, 0.4); |
| | | color: rgba(0, 0, 0, 0.25); |
| | | } |
| | | } |
| | | |
| | |
| | | |
| | | &-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; |
| | | } |
| | | |
| | |
| | | |
| | | &-delete { |
| | | position: absolute; |
| | | top: 4px; |
| | | right: 4px; |
| | | top: -10px; |
| | | right: -10px; |
| | | z-index: 2; |
| | | |
| | | .delete-icon { |
| | |
| | | |
| | | &-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 { |
| | |
| | | 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); |
| | | } |
| | | } |
| | | } |
| | |
| | | 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; |
| | |
| | | text-align: center; |
| | | border-radius: 1000px; |
| | | background: #141E27; |
| | | >>>>>>> feature_v2.4.0 |
| | | } |
| | | |
| | | .ok-btn { |
| | |
| | | /* 香氛名称,大小类似温度显示 */ |
| | | .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; |
| | |
| | | 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); |
| | |
| | | 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)); |
| | |
| | | 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 { |
| | |
| | | } |
| | | |
| | | &-title { |
| | | font-size: 36px; |
| | | font-size: 32px; |
| | | font-weight: 500; |
| | | line-height: 48px; |
| | | text-align: center; |
| | |
| | | position: relative; |
| | | margin-top: 34px; |
| | | height: calc(75vh - 400px); |
| | | padding-right: 1em; |
| | | z-index: 1; |
| | | .passenger-content-desc { |
| | | height: 100%; |
| | |
| | | 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 { |
| | |
| | | top: 0; |
| | | left: 0; |
| | | width: 100%; |
| | | <<<<<<< HEAD |
| | | height: 276px; |
| | | ======= |
| | | height: 282px; |
| | | >>>>>>> feature_v2.4.0 |
| | | } |
| | | .top-box { |
| | | .top-box-title { |
| | |
| | | font-weight: 500; |
| | | line-height: 44px; |
| | | letter-spacing: normal; |
| | | color: @black-text-main; |
| | | color: rgba(0, 0, 0, 0.9); |
| | | } |
| | | |
| | | .route-select-preference { |
| | |
| | | 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 { |
| | |
| | | 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 { |
| | |
| | | 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; |
| | |
| | | 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; |
| | |
| | | font-weight: 500; |
| | | line-height: 56px; |
| | | letter-spacing: normal; |
| | | color: @black-text-main; |
| | | color: rgba(0, 0, 0, 0.9); |
| | | margin-right: 22px; |
| | | } |
| | | } |
| | |
| | | .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; |
| | |
| | | .route-content-txt { |
| | | font-size: 24px; |
| | | letter-spacing: normal; |
| | | color: @black-text-04; |
| | | color: rgba(0, 0, 0, 0.4); |
| | | } |
| | | |
| | | .route-content-bottom { |
| | |
| | | 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; |
| | | } |
| | | } |
| | | } |
| | |
| | | |
| | | .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; |
| | |
| | | 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 { |
| | |
| | | .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%); |
| | | } |
| | | } |
| | | } |
| | |
| | | <<<<<<< HEAD |
| | | @import '../../../../style/ui-variables.less'; |
| | | |
| | | ======= |
| | | >>>>>>> feature_v2.4.0 |
| | | .ac-control { |
| | | flex-shrink: 0; |
| | | |
| | |
| | | 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; |
| | |
| | | .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); |
| | |
| | | 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(对齐设计标注) |
| | |
| | | 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 |
| | | } |
| | | } |
| | | |
| | |
| | | .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 |
| | | } |
| | | } |
| | | } |
| | |
| | | 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, |
| | |
| | | <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')} |
| | |
| | | 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, |
| | |
| | | 1: { |
| | | title: '“不满意,我要吐槽”', |
| | | summary: '不满意,我要吐槽', |
| | | placeholder: '请描述您的建议或问题' |
| | | placeholder: '请详描述您遇到的问题(可添加相关截图辅助说明)' |
| | | }, |
| | | 2: { |
| | | title: '“一般般,还需努力”', |
| | |
| | | }[currentOrderRating] || { |
| | | title: '“不满意,我要吐槽”', |
| | | summary: '不满意,我要吐槽', |
| | | placeholder: '请描述您的建议或问题' |
| | | placeholder: '请详描述您遇到的问题(可添加相关截图辅助说明)' |
| | | }; |
| | | const evaluateDimensionMap: Record<number, number> = { |
| | | 3: 1, |
| | |
| | | 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) => { |
| | |
| | | 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> |
| | |
| | | <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)}> |
| | |
| | | { |
| | | 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> |
| | | ) |
| | | } |
| | |
| | | </View> |
| | | </View> |
| | | )} |
| | | {/* {isOperateFree |
| | | {isOperateFree |
| | | ? null |
| | | : hasFareDiscount && ( |
| | | <View className="modify-destination-review-fare-discount"> |
| | |
| | | {fareEstimate.discountAmount}元 |
| | | </Text> |
| | | </View> |
| | | )} */} |
| | | )} |
| | | </View> |
| | | <View className="modify-destination-review-confirm-wrapper"> |
| | | <View |
| | |
| | | |
| | | 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"> |
| | |
| | | </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> |
| | |
| | | <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> |
| | |
| | | )} |
| | | </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" /> |
| | | 立即呼叫 |
| | |
| | | : pickupName, |
| | | color: "#FFFFFF", |
| | | fontSize: 12, |
| | | fontWeight: 500, |
| | | bgColor: "#000000", |
| | | borderRadius: 8, |
| | | padding: 8, |
| | |
| | | |
| | | // 气泡底部中间的钻石指示图标 |
| | | .callout-diamond-icon { |
| | | <<<<<<< HEAD |
| | | width: 28px; |
| | | ======= |
| | | width: 18px; |
| | | >>>>>>> feature_v2.4.0 |
| | | height: 28px; |
| | | margin-top: -14px; |
| | | flex-shrink: 0; |
| | |
| | | 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 { |
| | |
| | | } |
| | | |
| | | .site-countdown-time { |
| | | <<<<<<< HEAD |
| | | font-family: @font-xpsans-bold; |
| | | ======= |
| | | >>>>>>> feature_v2.4.0 |
| | | font-size: 24px; |
| | | font-weight: normal; |
| | | line-height: 32px; |
| | |
| | | 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; |
| | |
| | | ) |
| | | } |
| | | |
| | | export default withRobotaxiWhitelist(withToast(BeginRoute)); |
| | | export default withRobotaxiWhitelist(BeginRoute); |
| | |
| | | import { checkOtp } from '../../../utils/tools'; |
| | | |
| | | import { withRobotaxiWhitelist } from '../../../utils/whitelist'; |
| | | // 通过 withToast HOC 在页面挂载一次 Toast 单例容器(推荐的接入方式) |
| | | import { withToast } from '../../components/toast/with-toast'; |
| | | |
| | | // @ts-ignore |
| | | @createPage() |
| | |
| | | } |
| | | } |
| | | |
| | | export default withRobotaxiWhitelist(withToast(ToolboxBase as any) as any); |
| | | export default withRobotaxiWhitelist(ToolboxBase as any); |
| | |
| | | left: 50%; |
| | | top: 100%; |
| | | transform: translate(-50%, -50%); |
| | | <<<<<<< HEAD |
| | | width: 28px; |
| | | ======= |
| | | width: 18px; |
| | | >>>>>>> feature_v2.4.0 |
| | | height: 28px; |
| | | z-index: -1; |
| | | } |
| | |
| | | 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; |
| | |
| | | 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 { |
| | |
| | | |
| | | // 浮窗底部的钻石指示图标,对齐 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; |
| | |
| | | } |
| | | |
| | | .end-icon { |
| | | <<<<<<< HEAD |
| | | background: @gold-light ; |
| | | } |
| | | ======= |
| | | background: @black-text-main; |
| | | } |
| | | >>>>>>> feature_v2.4.0 |
| | | |
| | | .search-input { |
| | | flex: 1; |
| | |
| | | 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 { |
| | |
| | | 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} |