{% extends "layout/basic.html" %} {% import "components/user.html" as user with context %} {% import "components/ui/v1.html" as ui_v1 %} {% block content %}
{% call ui_v1.page_header('小结成绩表:' + ssdoc.title, cdoc.title + ' · ' + csdoc.title) %} 导出 XLSX 返回小节 {{ taskActionLabel }} {% endcall %}

小结成绩统计

统计本小节有做题记录的已报名学生,以及已提交课程小结的学生。做题 {{ attemptedCount }} 人{% if summaryOnlyCount %},另含 {{ summaryOnlyCount }} 名仅提交小结的学生{% endif %}。

{% if filterGroupName != 'all' %}全部统计人数:{{ allIncludedCount }}{% endif %}
{{ ui_v1.stat(includedCount, '统计人数') }} {{ ui_v1.stat(submittedCount, '已交小结') }} {{ ui_v1.stat(scoredCount, '已有评分') }} {% set averageText = averageScore if averageScore != null else '—' %} {{ ui_v1.stat(averageText, '平均分(仅已评分)') }}
{% if not task %} {{ ui_v1.alert('尚未设置小结任务', '名单已按做题记录筛选,设置任务后会在这里统计小结分数。') }} {% endif %}

学生小结得分

{% if rows.length %}
{% for row in rows %} {% endfor %}
排名学生小结状态 小结分数更新时间操作
{{ row.rank if row.rank != null else '—' }}
{% if udict[row.uid] %}{{ user.render_inline(udict[row.uid], badge=false) }}{% else %}UID {{ row.uid }}{% endif %} {% if row.summaryOnly %}(仅提交小结){% endif %}
{% set statusTone = 'neutral' %} {% if row.hasSubmit %}{% set statusTone = 'warning' if row.score == null else 'success' %}{% endif %} {{ ui_v1.badge(row.summaryStatusLabel, statusTone) }} {% if row.submitStatus == 'late' %}补交{% endif %} {% if row.score != null %}{{ row.score }} {{ row.scoreSource }}{% else %}—{% endif %} {% if row.updatedAt %}{{ datetimeSpan(row.updatedAt)|safe }}{% else %}—{% endif %} {% if row.detailUrl %}查看小结{% else %}—{% endif %}
{% else %} {{ ui_v1.empty_state('暂无小结成绩', '当前筛选范围内没有做过本小节题目或提交过课程小结的学生。') }} {% endif %}
{% endblock %}