ai-c/pages/happy-school/happy-school.wxml
2026-02-02 18:21:32 +08:00

173 lines
6.3 KiB
Plaintext

<!-- 快乐学堂页面 -->
<view class="page-container">
<!-- 固定导航栏容器 -->
<view class="nav-container">
<!-- 顶部状态栏占位 -->
<view class="status-bar" style="height: {{statusBarHeight}}px;"></view>
<!-- 自定义导航栏 -->
<view class="nav-bar" style="height: {{navBarHeight}}px;">
<view class="nav-back" bindtap="onBack">
<image src="/images/icon-back.png" class="back-icon" mode="aspectFit"></image>
</view>
<view class="nav-title">快乐学堂</view>
</view>
</view>
<!-- 内容区域 -->
<scroll-view scroll-y class="content-scroll" style="padding-top: {{totalNavHeight}}px;" enhanced show-scrollbar="{{false}}">
<!-- 推广卡片 -->
<view class="city-group-card">
<view class="group-info">
<view class="group-title">快乐学堂俱乐部</view>
<view class="group-tags">
<text class="tag-item">终身学习</text>
<text class="tag-item">文化传承</text>
</view>
</view>
<view class="join-btn" bindtap="onJoinGroup">
点击立即加入
</view>
</view>
<!-- 活动标签切换 - 横向滚动 (与首页一致) -->
<view class="tab-section">
<scroll-view scroll-x class="tab-scroll" show-scrollbar="{{false}}">
<view class="tab-list">
<view class="tab-item {{activeTab === 'featured' ? 'active' : ''}}"
data-tab="featured"
bindtap="onTabChange">
精选活动
</view>
<view class="tab-item {{activeTab === 'free' ? 'active' : ''}}"
data-tab="free"
bindtap="onTabChange">
免费活动
</view>
<view class="tab-item {{activeTab === 'vip' ? 'active' : ''}}"
data-tab="vip"
bindtap="onTabChange">
VIP活动
</view>
<view class="tab-item {{activeTab === 'svip' ? 'active' : ''}}"
data-tab="svip"
bindtap="onTabChange">
SVIP活动
</view>
</view>
</scroll-view>
</view>
<!-- 活动列表 (与首页一致的卡片风格) -->
<view class="activity-list">
<view class="activity-card"
wx:for="{{activityList}}"
wx:key="id"
data-id="{{item.id}}"
bindtap="onActivityTap">
<!-- 活动图片 -->
<view class="activity-image-wrap">
<image wx:if="{{item.image}}"
class="activity-image"
src="{{item.image}}"
mode="aspectFill"></image>
<view wx:else class="activity-image-gradient"></view>
<!-- 点赞数 -->
<view class="like-badge {{item.isLiked ? 'liked' : ''}}"
catchtap="onLike"
data-id="{{item.id}}"
data-index="{{index}}">
<app-icon name="{{item.isLiked ? 'heart-filled' : 'heart'}}" size="32" color="{{item.isLiked ? '#FF5252' : '#4A5565'}}" />
<text class="like-count">{{item.likes}}</text>
</view>
<!-- 价格标签 -->
<view class="price-tag {{item.priceType}}">{{item.price}}</view>
</view>
<!-- 活动信息 -->
<view class="activity-info">
<text class="activity-title">{{item.title}}</text>
<view class="activity-meta">
<view class="meta-item">
<image src="/images/icon-clock.png" class="meta-icon" mode="aspectFit"></image>
<text class="meta-text">{{item.date}}</text>
</view>
<view class="meta-row">
<view class="meta-item">
<image src="/images/icon-location.png" class="meta-icon" mode="aspectFit"></image>
<text class="meta-text">{{item.location}}</text>
</view>
<!-- 热度显示 -->
<view class="meta-item heat-item" wx:if="{{item.heat}}">
<app-icon name="flame-hot" size="32" color="#F97316" />
<text class="meta-text heat-text">{{item.heat}}</text>
</view>
</view>
</view>
<!-- 报名信息 -->
<view class="activity-footer">
<view class="participants">
<text class="participant-text">{{item.participants}}人已报名</text>
</view>
<view class="signup-btn {{item.isSignedUp ? 'signed' : ''}}"
catchtap="onSignUp"
data-id="{{item.id}}"
data-index="{{index}}">
{{item.isSignedUp ? '已报名' : '立即报名'}}
</view>
</view>
</view>
</view>
<!-- 空状态 -->
<view class="empty-state" wx:if="{{!loading && activityList.length === 0}}">
<image src="/images/icon-empty.png" class="empty-icon" mode="aspectFit"></image>
<text class="empty-text">暂无课程</text>
</view>
<!-- 底部提示 -->
<view class="list-footer" wx:if="{{activityList.length > 0}}">
<text class="footer-text">没有更多课程了 ~</text>
</view>
</view>
<!-- 底部占位 -->
<view style="height: 60rpx;"></view>
</scroll-view>
<!-- 二维码弹窗 -->
<view class="qrcode-modal {{showQrcodeModal ? 'show' : ''}}" catchtap="onCloseQrcodeModal">
<!-- 遮罩层 -->
<view class="modal-mask"></view>
<!-- 弹窗内容 -->
<view class="modal-content" catchtap="preventBubble">
<!-- 关闭按钮 -->
<view class="close-btn" bindtap="onCloseQrcodeModal">
<image src="/images/icon-close.png" class="close-icon" mode="aspectFit"></image>
</view>
<!-- 标题 -->
<view class="modal-title">加入快乐学堂群</view>
<!-- 副标题 -->
<view class="modal-subtitle">活到老,学到老,快乐每一天</view>
<!-- 二维码容器 -->
<view class="qrcode-container">
<image src="{{qrcodeImageUrl}}" class="qrcode-image" mode="aspectFit" show-menu-by-longpress></image>
</view>
<!-- 提示语 -->
<view class="modal-tips">长按二维码识别或保存</view>
<!-- 保存按钮 -->
<view class="save-btn" bindtap="onSaveQrcode">
保存二维码
</view>
</view>
</view>
</view>