{{ boot.class.name || '小学智慧课堂' }}

{{ auth.user ? '班级智慧管理平台' : '班级智慧管理平台 · 演示数据' }}

{{ boot.today }} · {{ weekdayName }}
{{ boot.class.slogan || '班级口号' }}
{{ shortNotice }}
班级黑板 · 点击查看 / 编辑
▭ 讲 台
当前:{{ podium.current.subject }} · {{ podium.current.teacher }} 点击查看今日课表

教室实景

{{ layoutRows }} 行 × {{ layoutCols }} 列 · {{ occupiedCount }} / {{ layoutCapacity }} 座
优秀 正常 迟到/请假 违纪/缺勤 空置
走道
未入座学生 {{ unseatedStudents.length }} 拖到空桌,或先点学生再点空桌;走道不能放人 全部学生已入座
快捷键:数字键选人 · 空格=优秀 · D=迟到 · X=讲话 · Esc=取消选中 提示:左键点击学生查看档案,右键快速标记,拖拽可换座 最后更新 {{ lastUpdated }}

{{ page.title }}

{{ page.desc || '班级管理台账 · 数据来自数据库' }}

+{{ rewardSum.pos_sum }}总加分数
{{ rewardSum.neg_sum }}总扣分数
{{ rewardSum.net > 0 ? '+' + rewardSum.net : rewardSum.net }}净分值
{{ rewardSum.students }}涉及人数
{{ rewardSum.total }}记录条数
{{ labelOf(f) }}{{ sortDir === 'asc' ? '↑' : '↓' }} 操作
{{ r[f] }} {{ r.points > 0 ? '+' + r.points : r.points }} {{ r[f] }} {{ displayValue(f, r[f]) }} 课堂记录
{{ activeRes === 'rewards' ? '暂无奖惩记录' : '暂无记录' }}
共 {{ rows.length }} 条 · 第 {{ pageIndex }} / {{ totalPages }} 页
在册 {{ groupsPage.totals.students }} 人 已分组 {{ groupsPage.totals.grouped }} 人 未分组 {{ groupsPage.totals.ungrouped }} 人 {{ groupsPage.totals.groups }} 个小组
{{ g.name }} {{ g.member_count }} 人
第{{ gi + 1 }}位
{{ g.leader_id ? ('现任:' + (g.leader_name || '')) : '(未指定,清空需二次确认)' }}
{{ m.name }}组长 暂无组员
走道列(可多选,选中的列不放课桌)

有效座位 {{ layoutCapacity }} 个 = {{ layoutForm.rows }} 行 ×({{ layoutForm.cols }} 列 − {{ layoutAisles.length }} 个走道列)· 全班 {{ boot.students.length }} 人 超出 {{ boot.students.length - layoutCapacity }} 人,请减少走道列或增加列数

说明:应用布局会按行优先重建座位网格;在座学生按原顺序保留,未入座学生自动补入剩余空位,走道列不生成课桌。配置写入数据库,刷新后保持。

任课老师

{{ t.name }}{{ t.subject }}{{ t.phone }}
未入座 {{ unseatedStudents.length }} 人 · 空位 {{ emptySeats.length }} 个
按组分配 · 子模式 组内按学号排序,座位不会落到走道上
{{ g.name }} 行 列 {{ groupBlocks[i].rows }}×{{ groupBlocks[i].cols }} 课桌块(跨走道自动跳过)
第 N 组占第 N 行;组数超过行数时接续占下一行 第 N 组占第 N 个有效列(跳过走道列) 块按行优先依次排列;块宽跨走道时按实际课桌数计算容量
潮汐滚动 · 子模式 空位一起移动,人数不变;每次写一条批次记录
|N| ≤ 10、|M| ≤ 15,按有效行/有效列取模环移
每个有效列内部整体下移一行,该列末行→首行 每个有效行内部整体右移一个有效列,最右→最左 上下 N 行 + 左右 M 列同时取模环移
走道列(多选)
有效座位 {{ layoutCapacity }} 个({{ layoutForm.rows }} 行 ×({{ layoutForm.cols }} 列 − {{ layoutAisles.length }} 走道))· 全班 {{ boot.students.length }} 人 超出 {{ boot.students.length - layoutCapacity }} 人
未入座学生({{ unseatedStudents.length }}):
走道

调换记录

最近 100 条
学生原座位新座位原因时间
{{ c.student_name }}{{ c.from_seat }}{{ c.to_seat }} {{ c.reason }}{{ c.created_at }}
暂无调换记录
行=节次(各天并集),列=周一~周日;点格子改课,「编辑节次」调整结构与时间。
节次 {{ d.day_name }}
{{ row.name }} {{ row.start_time }}–{{ row.end_time }} —
暂无节次,请先在「编辑节次」中添加。

{{ currentDayName }} 节次结构

顺序即节次序号;改完点「保存该天结构」立即落库
序号名称开始结束类型排序操作
{{ i + 1 }}
该天还没有节次,点「+ 添加节次」开始。
{{ periodMsg }}
左键长按(或右键)座位弹出环形菜单,滑到扇区松手即可标记;短单击查看学生。
走道

今日课堂标记

来源:events 表
时间学生类型积分学科
{{ e.created_at }}{{ e.student_name }}{{ e.event_type }} {{ e.score_delta > 0 ? '+' : '' }}{{ e.score_delta }} {{ e.subject }}
今日暂无标记
{{ hwStats.summary[p.name] || 0 }}{{ p.name }}
{{ hwStats.summary['手填'] || 0 }}手填
学号学生小组状态(点击评价)手填内容扣分等级操作
{{ r.student_no }} {{ r.name }} {{ r.group_name }} {{ r.custom_status_text ? '手填' : r.status }} {{ r.custom_status_text }} {{ r.custom_status_text || '-' }} {{ r.deduct_points || 0 }}
{{ rankings.period ? rankings.period.value : '' }} 统计区间:{{ rankings.period.start }} ~ {{ rankings.period.end }} · {{ rankings.period.label }}
{{ rankings.empty ? '—' : '+' + rankings.kpi.pos }}本区间加分
{{ rankings.empty ? '—' : rankings.kpi.neg }}本区间扣分
{{ rankings.empty ? '—' : fmtSign(rankings.kpi.net) }}净分值
{{ rankings.empty ? '—' : rankings.kpi.students }}上榜学生
{{ rankings.empty ? '—' : rankings.kpi.groups }}上榜小组

学生积分排行

本区间 · 净分降序
#姓名小组加分扣分净分出勤率违纪
{{ s.rank }}{{ s.name }}{{ s.group_name }} {{ s.pos > 0 ? '+' + s.pos : 0 }} {{ s.neg }} {{ fmtSign(s.net) }} {{ s.attendance_rate }}%{{ s.discipline }}
该区间暂无记录

小组积分排行

组员净分之和
{{ g.rank }} {{ g.name }} {{ g.members }} 人 · 加 {{ g.pos }} / 扣 {{ g.neg }} {{ fmtSign(g.net) }}
该区间暂无记录
{{ awards.period ? awards.period.value : '' }} 统计区间:{{ awards.period.start }} ~ {{ awards.period.end }} · {{ awards.period.label }}
{{ awards.empty ? '—' : '+' + awards.kpi.pos }}本区间加分
{{ awards.empty ? '—' : awards.kpi.neg }}本区间扣分
{{ awards.empty ? '—' : fmtSign(awards.kpi.net) }}净分值
{{ awards.empty ? '—' : awards.excellent_students.length + awards.excellent_groups.length + awards.improvement.length }}入选人次
该区间暂无记录

优秀学生

净分 TOP {{ awards.rules.excellent_top_n }},且净分 ≥ {{ awards.rules.excellent_min_net }}、违纪 ≤ {{ awards.rules.excellent_max_discipline }}
{{ s.rank }}{{ s.name }}{{ fmtSign(s.net) }} 分
无符合条件学生
候选 {{ awards.excellent_candidates.length }} 人 · 入选 {{ awards.excellent_students.length }} 人
#姓名净分违纪结果
{{ s.rank }}{{ s.name }}{{ fmtSign(s.net) }}{{ s.discipline }} {{ s.selected ? '入选' : '未入选' }}

优秀小组

小组净分(组员之和)TOP {{ awards.rules.group_top_n }},且净分 ≥ {{ awards.rules.group_min_net }}
{{ g.rank }}{{ g.name }}{{ fmtSign(g.net) }} 分
无符合条件小组
候选 {{ awards.group_candidates.length }} 组 · 入选 {{ awards.excellent_groups.length }} 组
#小组净分人数结果
{{ g.rank }}{{ g.name }}{{ fmtSign(g.net) }}{{ g.members }} {{ g.selected ? '入选' : '未入选' }}

进步之星

较上一区间提升 ≥ {{ awards.rules.improve_min_delta }} 的前 {{ awards.rules.improve_top_n }} 名(上一区间 {{ awards.prev_period.start }} ~ {{ awards.prev_period.end }})
{{ s.rank }}{{ s.name }}+{{ s.delta }}
暂无进步数据
候选 {{ awards.improvement_candidates.length }} 人 · 入选 {{ awards.improvement.length }} 人
#姓名本区间上一区间提升结果
{{ s.rank }}{{ s.name }}{{ fmtSign(s.net) }}{{ fmtSign(s.prev_net) }} {{ fmtSign(s.delta) }} {{ s.selected ? '入选' : '未入选' }}

评优结果按所选区间实时重算,非硬编码;可在“奖惩记录”“违纪处理”中调整原始数据。

统计区间
{{ stats.period ? stats.period.value : '—' }} {{ stats.period.label }} {{ statsError }}
数据类型
当前条件:{{ statsSummary }} 筛选 → 渲染完成 {{ statsElapsed }} ms
{{ stats.period_empty ? '—' : stats.kpi.ranked_students }}区间参与学生
{{ stats.period_empty || stats.kpi.attendance_rate === null ? '—' : stats.kpi.attendance_rate + '%' }} 出勤率({{ stats.range.start }} 至 {{ stats.range.end }})
{{ stats.period_empty ? '—' : fmtSign(stats.kpi.pos) }}区间加分
{{ stats.period_empty ? '—' : fmtSign(stats.kpi.neg) }}区间扣分
{{ stats.period_empty ? '—' : fmtSign(stats.kpi.net) }}区间净分

区间积分 TOP5

{{ stats.range.start }} ~ {{ stats.range.end }}
{{ i + 1 }} {{ s.name }}{{ s.group_name }} {{ fmtSign(s.points) }}
暂无数据

待改进 TOP5

区间积分最低 5 人
{{ i + 1 }} {{ s.name }}{{ s.group_name }} {{ fmtSign(s.points) }}
暂无数据
{{ stats.period_empty ? '该区间暂无数据' : '该筛选条件下暂无数据' }} {{ statsEmptyHint }}

出勤趋势({{ stats.data.granularity === 'week' ? '按周' : '按天' }})

口径:出勤率 =(出勤 + 迟到 + 早退)/ 当日考勤记录数;区间内日期超过 30 天自动按自然周汇总。

出勤状态占比

口径:区间内全部考勤记录按状态统计,缺勤 / 请假 / 迟到单独成色。

缺勤次数 TOP10 学生

口径:区间内 status=缺勤 的记录条数,按学生汇总取前 10(并列按学号排序)。

{{ stats.data.total }}违纪事件总数
{{ stats.data.per_capita }}人均次数({{ stats.data.students }} 人)
{{ stats.data.days }}涉及天数

违纪事件次数趋势({{ stats.data.granularity === 'week' ? '按周' : '按天' }})

口径:按日期统计 discipline 表违纪记录条数;超过 30 个日期自动按自然周汇总。

违纪类型分布

口径:区间内纪律台账(discipline)按 type 统计,取全部类型。

违纪次数 TOP10 学生

口径:区间内违纪记录条数最多(高频)的 10 名学生。

{{ stats.data.total }}课堂事件总数
{{ stats.data.per_capita }}人均次数({{ stats.data.students }} 人)
{{ stats.data.days }}涉及天数

课堂事件次数趋势({{ stats.data.granularity === 'week' ? '按周' : '按天' }})

口径:按日期统计 events 表课堂表现记录条数(含表扬与提醒);超过 30 个日期按自然周汇总。

课堂表现类型分布

口径:区间内 events 表按 event_type 统计,包含专注/走神/讲话/举手等全部类型。

高频学生 TOP10

口径:区间内课堂事件条数最多的 10 名学生(表扬与提醒合并计数)。

{{ stats.data.records }}卫生检查记录
{{ stats.data.avg === null ? '—' : stats.data.avg }}平均得分(满分 {{ stats.data.scale }})
{{ stats.data.unqualified }}不合格次数(得分 < {{ stats.data.threshold }})
{{ stats.data.min === null ? '—' : stats.data.min }}最低分

卫生得分趋势({{ stats.data.granularity === 'week' ? '按周' : '按天' }})

口径:按日期对 hygiene 表各小组评分求平均(满分 10);超过 30 个日期自动按自然周汇总。

小组卫生得分对比

口径:区间内各小组卫生评分的平均值,降序排列;未指定小组的历史记录单独显示为「未指定小组」。

{{ stats.data.hw_count }}区间内作业数
{{ stats.data.total }}应交记录数
{{ stats.data.rate === null ? '—' : stats.data.rate + '%' }}完成率
{{ stats.data.deduct_total }}扣分合计

作业完成率趋势

口径:完成率 =(已完成 + 优秀 + 补交)/ 应交记录数,按作业发布时间(publish_date)归档,横轴为 月-日+学科。

作业状态分布

口径:区间内作业记录的状态快照占比(未记录不计入)。

扣分合计趋势

口径:按作业累计 deduct_points 负值合计(取绝对值),0 表示该次作业无扣分。

未交 / 未完成次数 TOP10

口径:区间内未完成、漏做、未交等非完成状态记录条数最多的 10 名学生。

{{ stats.data.total }}应交人数
{{ stats.data.rows }}已录入(含缺考)
{{ stats.data.absent }}缺考
{{ stats.data.avg === null ? '—' : stats.data.avg }}平均分(不含缺考)
{{ stats.data.max === null ? '—' : stats.data.max }}最高分
{{ stats.data.min === null ? '—' : stats.data.min }}最低分
{{ stats.data.pass_rate === null ? '—' : stats.data.pass_rate + '%' }}及格率(≥60)
{{ stats.data.excellent_rate === null ? '—' : stats.data.excellent_rate + '%' }}优秀率(≥85)

分数段分布({{ stats.data.selected ? stats.data.selected.label : '' }})

口径:仅统计有效分数(不含缺考),分段为 <60 / 60-69 / 70-79 / 80-84 / 85-89 / 90-100。

学生分数排序(缺考灰色置底)

口径:本场有效分数从高到低排列;缺考学生以灰色条显示在末尾,不计入平均/及格率/优秀率。

与上一场同科目均分对比{{ stats.data.prev ? '(' + stats.data.prev.exam_type + ' · ' + stats.data.prev.name + ' · ' + stats.data.prev.exam_date + ')' : '' }}

口径:同一科目上一场考试平均分(不含缺考)与本场对比;本场 {{ stats.data.avg }} 分,上一场 {{ stats.data.prev_avg }} 分,变化 {{ stats.data.delta > 0 ? '+' : '' }}{{ stats.data.delta }} 分。

口径:同一科目上一场考试平均分(不含缺考)与本场对比。

本场是同科目首场考试,无上一场可对比
导出成长档案 PDF
{{ reportProfile.student.name.slice(-2) }}

{{ reportProfile.student.name }}

{{ reportProfile.student.group_name || '未分组' }} · {{ reportProfile.student.student_no }} · {{ reportProfile.student.gender }} · 累计积分 {{ reportProfile.points }}

基础信息

{{ f.label }} {{ f.value || '未填写' }}

考勤(累计)

暂无记录

课堂表现(累计)

暂无记录

作业(累计)

暂无记录

成绩与排名变化(总成绩)

考试日期平均分班级排名
{{ s.name }}{{ s.date }}{{ s.avg }} {{ s.rank }} / {{ s.class_size }}
暂无记录
{{ sub.subject }} 历次成绩
考试日期分数班级排名班级均分
{{ p.exam }}{{ p.date }}{{ p.score }} {{ p.rank ? p.rank + ' / ' + p.class_size : '—' }} {{ p.class_avg === null ? '—' : p.class_avg }}

奖惩与积分(累计)

{{ fmtSign(reportProfile.rewards.total) }}奖励加分
{{ fmtSign(reportProfile.rewards.neg_total) }}课堂扣分
{{ fmtSign(reportProfile.rewards.net) }}净分
暂无记录
课堂扣分记录
时间类型分值
{{ r.date }}{{ r.event_type }}{{ fmtSign(r.score_delta) }}

小组与座位

暂无记录

家校沟通

日期方式内容教师
{{ c.date }}{{ c.method }}{{ c.content }}{{ c.teacher || '—' }}
暂无记录
违纪处理
日期类型说明状态
{{ p.date }}{{ p.type }}{{ p.description }}{{ p.status }}
纪律记录
日期类型级别状态
{{ d.date }}{{ d.type }}{{ d.level }}{{ d.status }}

成长评语

暂无记录(该学期尚未撰写评语)
版本历史({{ reportComments.versions.length }} 条)

{{ v.content }}

各学期已保存评语({{ reportComments.currents.length }} 条)
{{ c.term_label }} · {{ c.period_label }} {{ c.content }} {{ c.created_at }} · {{ c.source_label }}
薄弱点
{{ w.date }} · {{ w.subject }}{{ w.description }}
特殊关注
{{ s.tag }}{{ s.note }}

所有台账均从 MySQL 实时查询导出,Excel 与 PDF 均为完整数据(PDF 自动分页)。

{{ r.title }} {{ r.count }} 条记录

可回溯查询:当前数据类型「{{ historyLabel }}」,共 {{ rows.length }} 条。支持按日期、学生、关键词筛选。

{{ labelOf(f) }}
{{ displayValue(f, r[f]) }}
暂无记录
正在统计…
{{ attSum.error }}
该区间暂无考勤记录 请切换日期 / 周 / 月后再试
{{ boot.today }} · {{ weekdayName }}

{{ boot.class.name }}

{{ overview ? overview.kpis.present : 0 }}实到
{{ overview ? overview.kpis.leave : 0 }}请假
{{ overview ? overview.kpis.absent : 0 }}缺勤

教室座位图

点击定位 · 长按奖惩 · 横向滚动
走道
{{ seat.name || '空置' }}

今日待办

{{ t.done ? '✓' : '!' }} {{ t.title }}{{ t.desc }}

今日课表

第{{ l.period }}节{{ l.subject }}{{ l.teacher }}

学生档案

点击查看

最近课堂标记

{{ e.t }}{{ e.name }}{{ e.event_type }}
{{ radial.initial }}{{ radial.name }}
{{ s.icon }}{{ s.label }}{{ s.deltaText }}
滑到扇区松手即生效 · 滑回中心取消 · Esc 关闭
{{ undo.text }} {{ undo.left }}s

{{ sheetTitle }}

{{ s.name }}
表扬表扬 {{ praiseMarks.length }} 项
违纪违纪 {{ violationMarks.length }} 项
说明:标记后写入 events 表;迟到/缺课同步更新今日考勤。

拍照或选择图片,会保存到课堂相册。

左右滑动查看整周;点格子可改课。

节次 {{ d.day_name }}
{{ row.name }} {{ row.start_time }}–{{ row.end_time }} —

{{ mobileSeat.label || (mobileSeat.row_idx + '排' + mobileSeat.col_idx + '座') }}

{{ mobileSeat.name }} · 学号 {{ mobileSeat.student_no }}

空位 · 可指定学生入座

暂无未入座学生,全部学生已入座

{{ profile.student.name.slice(-2) }}

{{ profile.student.name }}

{{ profile.student.group_name }} · {{ profile.student.student_no }}

{{ profile.points }}积分
{{ profile.student.guardian }}
{{ profile.student.guardian_phone }}
{{ profile.student.emergency_contact || '-' }}
{{ profile.student.emergency_contact_phone || '-' }}
{{ profile.attendance.total }} 天
{{ profile.homework.rate === null ? '—' : profile.homework.rate + '%' }}

{{ profile.comment }}

导出成长档案 PDF
↓ 下方还有内容
共 {{ boot.students.length }} 人 · 已录入 {{ Object.keys(mobileStatus).length }} 人
图片会保存到课堂相册
选择学生后点击标记即提交
{{ hoverSeat.seat.name || '空座' }} {{ hoverSeat.seat.group_name }} · {{ statusLabel(hoverSeat.seat) }} 今日标记:{{ markText(hoverSeat.seat) }} 座位 {{ hoverSeat.seat.row_idx }} 排 {{ hoverSeat.seat.col_idx }} 座
{{ toast }}
build 20261106m