peng
2025-11-06 c4938f6f4e839890b032c75c7a57333a6a9157a9
wx/pages/index/index.wxml
@@ -1,5 +1,16 @@
<!--pages/index/index.wxml-->
<wxs src="./filters.wxs" module="filters" />
<view class="container">
  <!-- 页面头部分享区域 -->
  <view class="header-section">
    <view class="page-title">成渝德眉资创业大赛</view>
    <view class="share-section">
      <!-- <button class="share-btn" open-type="share">
        <text class="share-icon">📤</text>
        <text class="share-text">分享</text>
      </button> -->
    </view>
  </view>
  <!-- 搜索栏 - 暂时隐藏 -->
  <view class="search-bar" style="display: none;">
    <view class="search-input-wrapper">
@@ -50,8 +61,9 @@
        <view wx:else class="banner-placeholder">
          <text class="placeholder-text">{{item.title}}</text>
        </view>
        <view class="banner-overlay">
        <!-- 覆盖层隐藏 -->
        <view class="banner-overlay" style="display: none;">
          <view class="banner-title">{{item.title}}</view>
          <view class="banner-desc">{{item.content}}</view>
        </view>
@@ -59,107 +71,73 @@
    </swiper>
  </view>
  <!-- 筛选栏 -->
  <view class="filter-bar">
    <view class="filter-tabs">
      <view
        class="filter-tab {{filterStatus === 'all' ? 'active' : ''}}"
        bindtap="onFilterChange"
        data-status="all"
      >
        全部
  <!-- 新闻模块 -->
  <view class="section-title">新闻资讯</view>
  <view class="news-section">
    <view
      class="news-card"
      wx:for="{{latestNews}}"
      wx:key="id"
      bindtap="goToNewsDetail"
      data-id="{{item.id}}"
    >
      <view class="news-content">
        <view class="news-title">{{item.title}}</view>
        <view wx:if="{{item.summary}}" class="news-summary">{{item.summary}}</view>
        <view class="news-meta">
          <text wx:if="{{item.author}}" class="author">{{item.author}}</text>
          <text wx:if="{{item.author && item.createTime}}" class="separator">|</text>
          <text class="time">{{item.createTime}}</text>
        </view>
      </view>
      <view
        class="filter-tab {{filterStatus === 'SIGNUP' ? 'active' : ''}}"
        bindtap="onFilterChange"
        data-status="SIGNUP"
      >
        报名中
      <view wx:if="{{item.coverImage}}" class="news-thumb">
        <image class="thumb-image" src="{{item.coverImage}}" mode="aspectFill" />
      </view>
      <view
        class="filter-tab {{filterStatus === 'PLAYING' ? 'active' : ''}}"
        bindtap="onFilterChange"
        data-status="PLAYING"
      >
        进行中
      </view>
      <view
        class="filter-tab {{filterStatus === 'ENDED' ? 'active' : ''}}"
        bindtap="onFilterChange"
        data-status="ENDED"
      >
        已结束
      </view>
    </view>
    <view class="view-more" bindtap="goToNewsList">
      <text class="view-more-text">查看更多</text>
      <text class="arrow">›</text>
    </view>
  </view>
  <!-- 赛事列表 -->
  <!-- 模块标题 -->
  <view class="section-title">比赛信息</view>
  <!-- 筛选栏(隐藏,保留逻辑) -->
  <view class="filter-bar" wx:if="{{false}}">
    <view class="filter-tabs">
      <view class="filter-tab {{filterStatus === 'all' ? 'active' : ''}}" bindtap="onFilterChange" data-status="all">全部</view>
      <view class="filter-tab {{filterStatus === 'SIGNUP' ? 'active' : ''}}" bindtap="onFilterChange" data-status="SIGNUP">报名中</view>
      <view class="filter-tab {{filterStatus === 'PLAYING' ? 'active' : ''}}" bindtap="onFilterChange" data-status="PLAYING">进行中</view>
      <view class="filter-tab {{filterStatus === 'ENDED' ? 'active' : ''}}" bindtap="onFilterChange" data-status="ENDED">已结束</view>
    </view>
  </view>
  <!-- 赛事列表:新版水平卡片(左图右文,按钮靠右) -->
  <view class="activity-list">
    <view 
      class="activity-card card"
      wx:for="{{activities}}"
      class="activity-card-horizontal"
      wx:for="{{activities}}"
      wx:key="id"
      bindtap="onActivityTap"
      data-index="{{index}}"
    >
      <!-- 赛事封面 -->
      <view class="activity-cover">
        <image wx:if="{{item.coverImage && item.coverImage.fullUrl}}" class="cover-image" src="{{item.coverImage.fullUrl}}" mode="aspectFill" />
        <view wx:else class="cover-placeholder">
          <text class="cover-placeholder-text">{{item.nameText}}</text>
      <view class="activity-row">
        <view class="thumb-col">
          <image wx:if="{{item.coverImage && item.coverImage.fullUrl}}" class="thumb-image" src="{{item.coverImage.fullUrl}}" mode="aspectFill" />
          <view wx:else class="thumb-placeholder">{{item.nameText}}</view>
        </view>
        <view class="status-badge {{getStatusClass(item.state)}}">
          {{item.stateName}}
        </view>
      </view>
      <!-- 赛事信息 -->
      <view class="activity-info">
        <view class="activity-title">{{item.name}}</view>
        <view class="activity-desc">{{item.description}}</view>
        <!-- 时间信息 -->
        <view class="time-info">
          <view class="time-item">
            <text class="time-label">活动时间:</text>
            <text class="time-value">{{formatDate(item.matchTime)}}</text>
        <view class="info-col">
          <view class="activity-title-lg">{{item.name}}</view>
          <view class="deadline">报名截止:{{filters.formatDateYYYYMMDD(item.signupDeadline)}}</view>
          <!-- 隐藏报名人数显示 -->
          <view class="registered" wx:if="{{false}}">已报名:{{item.playerCount}}人</view>
          <view class="btn-row">
            <button class="ghost-btn" catchtap="onActivityDetailTap" data-idx="{{index}}"  data-id="{{item.id}}" data-xid="{{item.name}}"  >报名</button>
            <!-- <button class="share-activity-btn" catchtap="onShareActivity" data-idx="{{index}}" data-id="{{item.id}}" data-name="{{item.name}}">
              <text class="share-icon-small">📤</text>
            </button> -->
          </view>
          <view class="time-item" wx:if="{{item.signupDeadline}}">
            <text class="time-label">报名截止:</text>
            <text class="time-value">{{formatDate(item.signupDeadline)}}</text>
          </view>
        </view>
        <!-- 地点信息 -->
        <view class="location-info" wx:if="{{item.address}}">
          <text class="location-icon">📍</text>
          <text class="location-text">{{item.address}}</text>
        </view>
        <!-- 报名进度和操作按钮 -->
        <view class="bottom-info">
          <view class="registration-info" wx:if="{{item.playerMax > 0}}">
            <text class="progress-text">报名人数:{{item.playerCount}}/{{item.playerMax}}</text>
            <view class="progress-bar">
              <view
                class="progress-fill"
                style="width: {{getRegistrationProgress(item.playerCount, item.playerMax)}}%"
              ></view>
            </view>
          </view>
          <view class="activity-actions">
            <view class="action-btn btn btn-primary" wx:if="{{canRegister(item)}}">
              立即报名
            </view>
            <view class="action-btn btn btn-secondary" wx:else>
              查看详情
            </view>
          </view>
        </view>
        <!-- 标签 -->
        <view class="tags" wx:if="{{item.tags && item.tags.length > 0}}">
          <text class="tag" wx:for="{{item.tags}}" wx:key="*this">{{item}}</text>
        </view>
      </view>
    </view>