hku-class/miniprogram/pages/home/index.wxml
2026-05-12 23:10:05 +08:00

105 lines
4.0 KiB
Plaintext

<view class="page">
<view class="hero">
<view class="eyebrow">HKU ICB CLASSHUB</view>
<view class="hero-title">{{className}}</view>
<view class="hero-subtitle">把公告、排期、投票和班级互动放在一个安静清晰的移动入口。</view>
<view class="hero-metrics">
<view class="metric">
<view class="metric-number">{{unreadCount}}</view>
<view class="metric-label">未读通知</view>
</view>
<view class="metric">
<view class="metric-number">{{schedules.length}}</view>
<view class="metric-label">近期安排</view>
</view>
<view class="metric">
<view class="metric-number">{{votes.length}}</view>
<view class="metric-label">班级投票</view>
</view>
</view>
</view>
<view wx:if="{{quickModules.length}}" class="section">
<view class="section-head">
<view class="section-title">常用入口</view>
<view class="section-action">按班级开放</view>
</view>
<view class="grid">
<view wx:for="{{quickModules}}" wx:key="key" class="module-tile" bindtap="openModule" data-key="{{item.key}}">
<view class="module-icon">{{item.icon}}</view>
<view class="module-title">{{item.title}}</view>
<view class="module-desc">{{item.desc}}</view>
</view>
</view>
</view>
<view wx:if="{{announcements.length}}" class="section">
<view class="section-head">
<view class="section-title">最新公告</view>
<view class="section-action" bindtap="openModule" data-key="announcements">全部</view>
</view>
<view wx:for="{{announcements}}" wx:key="id" class="card" bindtap="openModule" data-key="announcements">
<view class="list-row">
<view class="row-mark">告</view>
<view class="row-body">
<view class="card-title">{{item.title}}</view>
<view class="muted">{{item.author_name}}</view>
</view>
</view>
</view>
</view>
<view wx:if="{{schedules.length}}" class="section">
<view class="section-head">
<view class="section-title">近期排期</view>
<view class="section-action" bindtap="openModule" data-key="schedule">日程</view>
</view>
<view wx:for="{{schedules}}" wx:key="id" class="card" bindtap="openSchedule" data-id="{{item.id}}">
<view class="list-row">
<view class="row-mark">日</view>
<view class="row-body">
<view class="card-title">{{item.title}}</view>
<view class="muted">{{item.location || "地点待定"}}</view>
</view>
<view class="pill">{{item.type}}</view>
</view>
</view>
</view>
<view wx:if="{{votes.length}}" class="section">
<view class="section-head">
<view class="section-title">班级投票</view>
<view class="section-action" bindtap="openModule" data-key="votes">参与</view>
</view>
<view wx:for="{{votes}}" wx:key="id" class="card" bindtap="openModule" data-key="votes">
<view class="list-row">
<view class="row-mark">选</view>
<view class="row-body">
<view class="card-title">{{item.title}}</view>
<view class="muted">{{item.has_voted ? "已参与" : "待参与"}}</view>
</view>
</view>
</view>
</view>
<view wx:if="{{timelines.length}}" class="section">
<view class="section-head">
<view class="section-title">班级动态</view>
<view class="section-action" bindtap="openModule" data-key="timeline">浏览</view>
</view>
<view wx:for="{{timelines}}" wx:key="id" class="card" bindtap="openTimeline" data-id="{{item.id}}">
<view class="list-row">
<view class="row-mark">动</view>
<view class="row-body">
<view class="card-title">{{item.title}}</view>
<view class="muted">{{item.author_name}}</view>
</view>
</view>
</view>
</view>
<view wx:if="{{!loading && !announcements.length && !schedules.length && !votes.length && !timelines.length}}" class="empty">
<view class="muted">暂无可展示内容</view>
</view>
</view>