2026-04-01 18:00:40 +08:00

135 lines
4.6 KiB
Plaintext

<view class="page-home">
<scroll-view
class="home-scroll"
scroll-y="{{true}}"
enhanced
show-scrollbar="{{false}}"
lower-threshold="100"
bindscrolltolower="onScrollToLower"
refresher-enabled="{{true}}"
refresher-threshold="{{80}}"
refresher-default-style="black"
refresher-triggered="{{refresherTriggered}}"
bindrefresherrefresh="onRefresherRefresh"
>
<swiper
class="banner"
indicator-dots="{{banners.length > 1}}"
autoplay="{{banners.length > 1}}"
interval="4000"
circular="{{banners.length > 1}}"
indicator-color="rgba(255,255,255,0.55)"
indicator-active-color="#ffffff"
>
<block wx:for="{{banners}}" wx:key="_bannerKey">
<swiper-item>
<view
class="banner-item"
bindtap="onBannerTap"
data-linktype="{{item.linkType}}"
data-eventid="{{item.eventId}}"
data-linkurl="{{item.linkUrl}}"
>
<image class="banner-image" src="{{item.imageUrl}}" mode="aspectFill" />
</view>
</swiper-item>
</block>
</swiper>
<view class="sticky-header">
<view class="search-wrap">
<input
class="search-input"
placeholder="搜索关键字"
placeholder-class="search-ph"
value="{{keyword}}"
confirm-type="search"
bindconfirm="onSearch"
bindinput="onKeywordInput"
/>
<view class="search-btn" bindtap="onSearch">搜索</view>
</view>
<view class="section-tabs">
<view
class="section-tab {{sectionTab === 'list' ? 'is-active' : ''}}"
data-tab="list"
bindtap="onSectionTab"
>
<text class="section-tab-text">赛事报名</text>
<view class="section-tab-line" wx:if="{{sectionTab === 'list'}}" />
</view>
<view
class="section-tab {{sectionTab === 'registered' ? 'is-active' : ''}}"
data-tab="registered"
bindtap="onSectionTab"
>
<text class="section-tab-text">已报赛事</text>
<view class="section-tab-line" wx:if="{{sectionTab === 'registered'}}" />
</view>
</view>
<view class="status-filters" wx:if="{{sectionTab === 'list'}}">
<view
class="status-pill {{status === 1 ? 'is-on' : ''}}"
data-status="1"
bindtap="onStatusTap"
>报名中</view>
<view
class="status-pill {{status === 2 ? 'is-on' : ''}}"
data-status="2"
bindtap="onStatusTap"
>比赛中</view>
<view
class="status-pill {{status === 3 ? 'is-on' : ''}}"
data-status="3"
bindtap="onStatusTap"
>已结束</view>
</view>
</view>
<view class="list-section">
<block wx:if="{{sectionTab === 'registered' && !loggedIn}}">
<view class="login-hint">
<text class="login-hint-text">登录后可查看已报名赛事</text>
<button class="login-hint-btn" type="primary" bindtap="goLogin">去登录</button>
</view>
</block>
<block wx:elif="{{rows.length === 0 && !loading}}">
<view class="empty">暂无数据</view>
</block>
<block wx:for="{{rows}}" wx:key="rowKey">
<view
class="event-card"
bindtap="onEventTap"
data-id="{{item.id}}"
>
<view class="event-card-media">
<image class="event-card-cover" src="{{item.coverImage}}" mode="aspectFill" />
<view class="addr-pill" wx:if="{{item.address}}">{{item.address}}</view>
<view class="status-pill-top">{{item.eventStatusText}}</view>
</view>
<view class="event-card-body">
<view class="title-row">
<text class="event-title">{{item.eventName || '-'}}</text>
<view class="format-tag" wx:if="{{item.eventFormatText}}">{{item.eventFormatText}}</view>
</view>
<block wx:if="{{sectionTab === 'list'}}">
<view class="meta-line">报名时间:{{item.registrationStartText}}~{{item.registrationEndText}}</view>
<view class="meta-line">比赛时间:{{item.matchStartText}}~{{item.matchEndText}}</view>
</block>
<block wx:else>
<view class="meta-line">报名时间:{{item.registrationTimeText}}</view>
<view class="meta-line" wx:if="{{item.projectCount != null}}">已报项目:{{item.projectCount}} 项</view>
</block>
</view>
</view>
</block>
<view class="loading" wx:if="{{loading}}">{{loadingText}}</view>
</view>
</scroll-view>
</view>