zjk
2026-07-29 429208957f30ab9eedc5533a81aaa284048d09f5
src/robotaxi/pages/begin-route/components/release-route.tsx
@@ -41,7 +41,7 @@
        if (!Number.isFinite(discountAmount) || discountAmount <= 0) {
            return '0元';
        }
        return `${parseFloat(discountAmount.toFixed(2))}元`;
        return `-${parseFloat(discountAmount.toFixed(2))}元`;
    };
    useEffect(() => {
@@ -178,49 +178,50 @@
    return (
        <View className="release-route-container">
            <View
                className='release-route-wrapper'
                style={{ height: typeof boxHeight === 'number' ? `${boxHeight}px` : 'auto' }}
                catchMove={isRouteSelectExpanded}
                onTouchStart={(e) => {
                    // 如果没有展开,禁止滑动
                    if (!isRouteSelectExpanded) return;
                    e.stopPropagation();
                    handleTouchStart(e);
                }}
                onTouchMove={(e) => {
                    if (!isRouteSelectExpanded) return;
                    e.stopPropagation();
                    handleTouchMove(e);
                }}
                onTouchEnd={(e) => {
                    if (!isRouteSelectExpanded) return;
                    e.stopPropagation();
                    handleTouchEnd();
                }}
              className='release-route-wrapper'
              style={{ height: typeof boxHeight === 'number' ? `${boxHeight}px` : 'auto' }}
              catchMove={isRouteSelectExpanded}
              onTouchStart={(e) => {
                  // 如果没有展开,禁止滑动
                  if (!isRouteSelectExpanded) return;
                  e.stopPropagation();
                  handleTouchStart(e);
              }}
              onTouchMove={(e) => {
                  if (!isRouteSelectExpanded) return;
                  e.stopPropagation();
                  handleTouchMove(e);
              }}
              onTouchEnd={(e) => {
                  if (!isRouteSelectExpanded) return;
                  e.stopPropagation();
                  handleTouchEnd();
              }}
            >
                <View className='release-route-content'>
                    {isRouteSelectExpanded && (
                        <RouteSelectionPanel
                            routeOptions={routeOptions}
                            selectedRouteIndex={selectedRouteIndex}
                            handleSelectRoute={handleSelectRoute}
                          routeOptions={routeOptions}
                          selectedRouteIndex={selectedRouteIndex}
                          handleSelectRoute={handleSelectRoute}
                        />
                    )}
                    <View className="select-site" style={{ paddingBottom: typeof bottomPaddingHeight === 'number' ? `${bottomPaddingHeight}px` : undefined }}>
                        <Image className="site-top-bg" src='https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/site-top-bg-20260507.png' />
                        <View className="site-boarding-point">
                        <Image className="site-top-bg" src='https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/top-card-bg-20260722.png' />
                        <View className="select-site-content">
                          <View className="site-boarding-point">
                            {/* 起点 */}
                            <View>
                                <View onClick={() => toSeleteSitePage('start')} className="now-site">
                                    <View className="now-site-dot"></View>
                                    <View className="now-site-address">
                                        <View className="now-site-address-content">
                                            从<Text className="now-site-address-text">{startSite.name}</Text>上车
                                        </View>
                                        <Image className="now-site-icon" src="https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/right-icon.png" />
                                    </View>
                                </View>
                                {walkingTime > 0 && <View className="now-site-walk">步行{formatWalkingTime(walkingTime)}</View>}
                              <View onClick={() => toSeleteSitePage('start')} className="now-site">
                                  <View className="now-site-dot"></View>
                                  <View className="now-site-address">
                                      <View className="now-site-address-content">
                                          从<Text className="now-site-address-text">{startSite.name}</Text>上车
                                      </View>
                                      <Image className="now-site-icon" src="https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/now-site-arrow-20260708.png" />
                                  </View>
                              </View>
                              {walkingTime > 0 && <View className="now-site-walk">步行{formatWalkingTime(walkingTime)}</View>}
                            </View>
                            {/* 终点 */}
                            <View onClick={() => toSeleteSitePage('end')} className="to-site">
@@ -229,54 +230,65 @@
                                    <View className="to-site-text">{endSite.name}</View>
                                </View>
                            </View>
                        </View>
                        <View className="route-content">
                            <View className="route-content-top">
                                <View className="route-content-txt">预估等待{fareEstimate.waitingTime || '-'}分钟</View>
                                <View className="route-content-txt" style={{ margin: '0 4px' }}>|</View>
                                <View className="route-content-txt">限乘{fareEstimate.maxPeopleNumber || '-'}人</View>
                            </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/tip-default-icon.png" />
                                    <View>乘车须知</View>
                                </View>
                            <View className="route-content">
                              <View className="route-content-top">
                                  <View className="route-content-txt">预估等待{fareEstimate.waitingTime || '-'}分钟</View>
                                  <View className="route-content-txt" style={{ margin: '0 4px' }}>|</View>
                                  <View className="route-content-txt">限乘{fareEstimate.maxPeopleNumber || '-'}人</View>
                              </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" />
                                      <View>乘车须知</View>
                                  </View>
                              </View>
                            </View>
                        </View>
                    </View>
                  </View>
                </View>
                <View className="confirm-btn-box">
                    {
                        hasDiscountAmount &&
                        <View className="discount-amount" onClick={onOpenCouponSelect}>
                        <View
                          className="discount-amount"
                          style={{ visibility: isRouteSelectExpanded ? 'hidden' : 'visible' }}
                          onClick={onOpenCouponSelect}
                        >
                            <View className="flex-center">
                                <View className="discount-amount-text">最佳优惠</View>
                                <View className="discount-amount-desc" >已为您选择最佳优惠</View>
                            </View>
                            <View className="flex-center">
                                <View className="discount-amount-num">{formatDiscountAmountText()}</View>
                                <Image className="change-coupon-icon" src='https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/change-coupon.png' />
                                <Image className="change-coupon-icon" src='https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/golden-arrow-20260702.png' />
                            </View>
                        </View>
                    }
                    <View className="confirm-btn-box-content">
                        <View className="money-box">
                            {isOperateFree ? (
                                <View className="route-operate-free">员工内部测试</View>
                                <View className="route-operate-free">{selectedRoute?.freeText || "员工内部测试"}</View>
                            ) : (
                                <View className="route-content-top-money" onClick={() => toPriceDescription()} >
                                    <Image className="tip-icon" src="https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/tip-default-icon.png" />
                                    <View className="price-box">
                                        <View className="price-box-text">预估</View>
                                        <Text className="money-num">{fareEstimate.finalFareStr || '-'}</Text>
                                        <View className="price-box-text">元</View>
                                    <View className="forecast-text">
                                      <Image className="tip-icon" src="https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/tip-default-icon.png" />
                                      <Text>预估</Text>
                                    </View>
                                    <Text className="money-num">{fareEstimate.finalFareStr || '-'}</Text>
                                    <View className="unit-text">
                                      元
                                    </View>
                                </View>
                            )}
                        </View>
                        <View className="confirm-btn-wrapper">
                            <View onClick={() => !isCallDisabled && callImmediately()} className="confirm-btn">立即呼叫</View>
                            {isCallDisabled && <View className="confirm-btn-mask" />}
                          <Image className="confirm-btn-bg" src="https://s.xiaopeng.com/xp-fe/robot-taxi/imgs/v2/confirm-btn-bg-20260726.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" />
                              立即呼叫
                            </View>
                          {isCallDisabled && <View className="confirm-btn-mask" />}
                        </View>
                    </View>
                </View>