135 lines
4.6 KiB
Plaintext
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>
|