hejianhao
2026-03-06 a440aa562634985d1ce699abc969d70efb41b7c8
feat: 添加协议页面并支持从首页跳转

- 在 app.config.ts 中注册新页面
- 创建协议页面,包含用户服务协议等五个条目
- 每个条目点击可跳转到乘客须知页面并传递类型参数
- 在首页点击产品名称可跳转到新协议页面
4个文件已修改
140 ■■■■■ 已修改文件
src/app.config.ts 1 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/pages/robotaxi/home/index.tsx 88 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/agreement-page/index.less 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/robotaxi/pages/agreement-page/index.tsx 29 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/app.config.ts
@@ -34,6 +34,7 @@
        'pages/passenger-notice/index',
        'pages/pricing-rules/index',
        'pages/ride-guide/index',
        'pages/agreement-page/index',
      ],
    }
  ];
src/pages/robotaxi/home/index.tsx
@@ -922,6 +922,12 @@
    return !(showPrivacyBox || showLocationBox || showMaintainBox || showOperatingBox);
  }
  const toAgreementPage = () => {
    Taro.navigateTo({
      url: '/robotaxi/pages/agreement-page/index',
    })
  }
  return (
    <View className="home-container">
      <Map
@@ -1059,50 +1065,50 @@
              </View>
            </View>
            {/* 订单状态卡片 */}
          {
            [2, 3, 4, 5, 6, 7, 8].includes(tripStatus) &&
            <View className="order-status">
              {
                [2, 3].includes(tripStatus) &&
                <View className="order-status-left">
                  <View className="order-status-left-item">
                    <Image className="order-status-left-item-icon" src={require('../../../robotaxi/assets/pointer.png')} />
                    <View></View>
                    <View></View>
            {
              [2, 3, 4, 5, 6, 7, 8].includes(tripStatus) &&
              <View className="order-status">
                {
                  [2, 3].includes(tripStatus) &&
                  <View className="order-status-left">
                    <View className="order-status-left-item">
                      <Image className="order-status-left-item-icon" src={require('../../../robotaxi/assets/pointer.png')} />
                      <View></View>
                      <View></View>
                    </View>
                    <View className="order-status-left-text">正在为您呼叫...</View>
                  </View>
                  <View className="order-status-left-text">正在为您呼叫...</View>
                </View>
              }
              {
                [4, 5, 6, 7, 8].includes(tripStatus) &&
                <View className="order-status-left">
                  <Image className="order-status-left-icon" src='https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/images/552a3a31-e4dd-4a28-8748-fd8b87dd3055.png' />
                  <View className="order-status-left-detail">
                    <View>{orderData.plateNumber}</View>
                    <View>{ORDER_STATUS[tripStatus]}</View>
                }
                {
                  [4, 5, 6, 7, 8].includes(tripStatus) &&
                  <View className="order-status-left">
                    <Image className="order-status-left-icon" src='https://huishou-1323682843.cos.ap-nanjing.myqcloud.com/images/552a3a31-e4dd-4a28-8748-fd8b87dd3055.png' />
                    <View className="order-status-left-detail">
                      <View>{orderData.plateNumber}</View>
                      <View>{ORDER_STATUS[tripStatus]}</View>
                    </View>
                  </View>
                </View>
              }
                }
              <View onClick={toOrderDetail} className="order-status-btn">查看</View>
              <Image className="order-status-bg" src={require('../../../robotaxi/assets/order-card-bg.png')} />
            </View>
          }
          {/* 运营活动 */}
          {bannerList.length > 0 && (
            <View className="activity">
              {
                bannerList.map((item, index) => (
                  <View key={item.id || index} className="activity-item" onClick={() => handleBannerClick(item)}>
                    <Image mode="aspectFill" className="activity-img" src={item.imageUrl || item.imgUrl || ''} />
                  </View>
                ))
              }
            </View>
          )}
          {/* 产品名 */}
          <View className="product-name">XPENG Robotaxi</View>
        </View>
                <View onClick={toOrderDetail} className="order-status-btn">查看</View>
                <Image className="order-status-bg" src={require('../../../robotaxi/assets/order-card-bg.png')} />
              </View>
            }
            {/* 运营活动 */}
            {bannerList.length > 0 && (
              <View className="activity">
                {
                  bannerList.map((item, index) => (
                    <View key={item.id || index} className="activity-item" onClick={() => handleBannerClick(item)}>
                      <Image mode="aspectFill" className="activity-img" src={item.imageUrl || item.imgUrl || ''} />
                    </View>
                  ))
                }
              </View>
            )}
            {/* 产品名 */}
            <View onClick={toAgreementPage} className="product-name">XPENG Robotaxi</View>
          </View>
        </View>
      </View>
      {/* 是否登录 */}
src/robotaxi/pages/agreement-page/index.less
@@ -1 +1,21 @@
.agreement-page {}
.agreement-page {
    padding-top: 36px;
    .agreement-item {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 32px 48px;
        &-title {
            font-size: 30px;
            line-height: 46px;
            color: rgba(0, 0, 0, 0.9);
        }
        &-icon {
            width: 32px;
            height: 32px;
        }
    }
}
src/robotaxi/pages/agreement-page/index.tsx
@@ -4,11 +4,34 @@
import './index.less';
export default function AgreementPage() {
  const skipToNotice = (type: number) => {
    Taro.navigateTo({
      url: '/robotaxi/pages/passenger-notice/index?type=' + type
    })
  }
  return (
    <View className='agreement-page'>
      <View>
        <View></View>
        <Image />
      <View onClick={() => skipToNotice(1)} className='agreement-item'>
        <View className='agreement-item-title'>用户服务协议</View>
        <Image className='agreement-item-icon' src={require('../../assets/skip-arrows.png')} />
      </View>
      <View onClick={() => skipToNotice(2)} className='agreement-item'>
        <View className='agreement-item-title'>平台隐私政策</View>
        <Image className='agreement-item-icon' src={require('../../assets/skip-arrows.png')} />
      </View>
      <View onClick={() => skipToNotice(3)} className='agreement-item'>
        <View className='agreement-item-title'>用户敏感信息说明</View>
        <Image className='agreement-item-icon' src={require('../../assets/skip-arrows.png')} />
      </View>
      <View onClick={() => skipToNotice(4)} className='agreement-item'>
        <View className='agreement-item-title'>向三方提供个人情况</View>
        <Image className='agreement-item-icon' src={require('../../assets/skip-arrows.png')} />
      </View>
      <View onClick={() => skipToNotice(5)} className='agreement-item'>
        <View className='agreement-item-title'>乘车须知</View>
        <Image className='agreement-item-icon' src={require('../../assets/skip-arrows.png')} />
      </View>
    </View>
  )