cam / app /templates /dashboard.html
cacode's picture
Upload 60 files
02a8414 verified
{% extends 'base.html' %}
{% block content %}
<section class="hero-card">
<div>
<p class="eyebrow">Welcome Back</p>
<h2>{{ user.full_name }},和你的小组一起继续前进吧</h2>
<p class="lead">
当前小组:<strong>{{ user.group.name if user.group else '暂未分组' }}</strong>
</p>
</div>
<div class="hero-badges">
<span class="pill">学号 {{ user.student_id }}</span>
<span class="pill">{{ activity_cards|length }} 个活动</span>
<span class="pill">共享进度模式</span>
</div>
</section>
<section class="card-grid activity-grid">
{% for card in activity_cards %}
<article class="glass-card activity-card">
<div class="card-topline">
<span class="eyebrow">Activity {{ loop.index }}</span>
{% if card.is_overdue %}
<span class="status-badge status-rejected">已截止</span>
{% elif card.is_active %}
<span class="status-badge status-approved">进行中</span>
{% else %}
<span class="status-badge">未开始</span>
{% endif %}
</div>
<h3>{{ card.activity.title }}</h3>
<p class="muted">{{ card.activity.description or '管理员暂未填写活动说明。' }}</p>
<div class="meta-grid">
<div>
<span>开始时间</span>
<strong>{{ card.activity.start_at|datetime_local }}</strong>
</div>
<div>
<span>截止时间</span>
<strong>{{ card.activity.deadline_at|datetime_local }}</strong>
</div>
<div>
<span>已完成点位</span>
<strong>{{ card.approved_count }}/{{ card.total_tasks }}</strong>
</div>
<div>
<span>待审核点位</span>
<strong>{{ card.pending_count }}</strong>
</div>
</div>
<div class="progress-line">
<div style="width: {{ 0 if card.total_tasks == 0 else (card.approved_count / card.total_tasks * 100)|round(0) }}%"></div>
</div>
<div class="card-footer">
<span class="mini-note">驳回 {{ card.rejected_count }} 项 · 小组共享</span>
<a class="btn btn-primary" href="/activities/{{ card.activity.id }}">查看任务</a>
</div>
</article>
{% else %}
<article class="empty-state">
<h3>还没有活动</h3>
<p>管理员发布活动后,这里会展示你所在小组的共享任务进度。</p>
</article>
{% endfor %}
</section>
{% endblock %}