教师小程序 / 作业列表
周策 老师
Prototype

教师小程序 · 作业列表

校验教师小程序作业列表筛选、统计和入口。

设计视口: 375 x 812 · 当前缩放: 100% · 左右分栏: 拖动中线调整
Page PRD

作业列表

当前文档: prds/作业管理模块/teacher-mp/tm_list.md

当前对照重点: 作业列表
Review Hint

左侧现在支持三种演示模式: 默认按设计稿完整缩放、按宽度铺满、以及 100% 原始尺寸滚动查看。 右侧默认读取当前页面对应的页面级 PRD,而不是整本总 PRD;改页面时,直接同步维护这个页面文档即可。

作业列表

页面元信息

  • 终端:教师小程序
  • Astro 路由:/teacher-mp/list
  • 原始 HTML:tm_list.html
  • 来源章节:4.3.1
  • 维护规则:后续以本页面 PRD 为准;若改动影响通用规则,再同步总览 / 全局规则文档。

视觉描述

  • 原型引用:产出文档/作业管理模块/原型图/tm_list.html
  • 页面为教师小程序底部导航的 作业中心 主列表页。顶部为双分段切换区,包含 纸质教辅作业个性化作业 两个大页签;未选中项为白底灰字,选中项为浅灰底深色字。当前原型默认高亮 个性化作业
  • 分段切换下方为三枚筛选胶囊 全部学科全部班级全部状态,每枚胶囊右侧带下拉箭头。筛选生效后,胶囊文案直接替换为当前已选值,不额外显示第二行标签或筛选摘要。
  • 主内容区为纵向作业卡片流。每张卡片由 学科方块标题区状态标签信息盒底部操作区 五部分组成。
  • 标题区展示 作业标题、可选来源标签 教研院、以及 共X页,共Y题。状态标签仅允许三种视觉样式:灰色 待提交、橙色 待批改、绿色 已完成
  • 信息盒固定展示三行内容:发布班级发布时间提交情况。其中 提交情况 使用高亮色突出 已提交人数/应提交人数
  • 卡片底部操作区包含 查看分析批改 两个横向等分文本按钮,中间使用竖线分隔。原型中整张卡片可点击,卡片内按钮点击时需阻断整卡点击。
  • 页面底部在 TabBar 上方悬浮一组快捷操作:左侧 提交记录 为描边按钮,右侧 提交作业 为品牌主按钮,按钮内带相机图标。
  • 最底部为四项 TabBar 首页作业中心学情分析我的,其中 作业中心 为当前激活态。
  • 页面需补齐四类占位态:首屏骨架屏、筛选无结果空态、权限空态、触底加载反馈态。

功能描述

  • 页面入口:
    • 教师从小程序全局底部导航点击 作业中心 进入。
    • tm_submit.html 在普通提交模式下完成上传后自动回流本页。
    • tm_submit.html 在普通提交模式点击返回并确认退出后回流本页;若当前为 upload_result 模式,则返回 tm_history.html,不直接回流本页。
    • tm_report.html 顶部返回、tm_grading_list.html 顶部返回、tm_history.html 左上关闭返回本页。
  • 页面权限与数据范围:
    • 仅具备当前班级代提交/批改权限的教师可见;列表仅返回教师有权限处理的作业,不展示其他学校、其他班级作业。
    • 页面卡片只展示作业级汇总信息,不展示学生姓名、得分、手机号、原卷图片等学生敏感明细。
  • 页面初始化与上下文恢复:
    • 首次进入优先读取 tm_list_context;若不存在历史上下文,则默认选中 个性化作业 页签,与现有原型默认态一致。
    • tm_list_context 至少保存 active_typesubject_idclass_idstatuspage_noscroll_topsource_pageupdated_at
    • 若进入 tm_list.html 前检测到本地仍存在 pendingUploadTask,则本页不得继续渲染作业列表,必须立即重定向至 tm_submit.html 的上传任务拦截态,由该页继续上传;教师不能先看到列表再决定是否恢复。
    • tm_report.htmltm_grading_list.htmltm_history.htmltm_submit.html 回流本页时,必须恢复离开前的页签、筛选条件、已加载页数和滚动位置,不得每次回到默认首屏。
    • 列表默认按 发布时间 倒序排列,最新发布的作业排在最前;同一筛选条件下不提供手动排序入口。

顶部作业类型切换区

区域/控件展示规则交互与系统行为
纸质教辅作业始终展示;未选中时白底灰字点击后切换当前列表数据源为 paper;按钮切换为选中态;刷新列表并回到顶部。
个性化作业始终展示;首次进入默认选中点击后切换当前列表数据源为 personal;按钮切换为选中态;刷新列表并回到顶部。
分段按钮状态二选一互斥同一时刻仅允许 1 个页签处于选中态;切换时写入 tm_list_context.active_type
切换后的筛选继承仅在新数据源仍存在对应选项时保留学科/班级/状态在新数据源仍有效则沿用;若当前筛选值在新数据源无可选项,则自动回退为 全部学科/全部班级/全部状态

筛选区

区域/控件展示规则交互与系统行为
全部学科 筛选胶囊始终展示;默认文案 全部学科点击打开学科底部选择弹层;选中后胶囊文案更新为学科名称;取消或关闭不改当前结果集。
全部班级 筛选胶囊始终展示;默认文案 全部班级点击打开班级底部选择弹层;仅展示当前教师有权限的班级;选中后立即刷新列表。
全部状态 筛选胶囊始终展示;默认文案 全部状态点击打开状态底部选择弹层;选项固定为 全部状态 / 待提交 / 待批改 / 已完成
筛选结果刷新任一筛选项确认后触发刷新时清空当前已加载分页、滚动到顶部,并展示局部骨架屏;筛选值写入 tm_list_context
筛选口径全部为单选本页不支持多条件多选;每个筛选维度同时仅能存在 1 个生效值。

作业卡片列表区

  • 列表加载策略:
    • 首屏加载 10 张作业卡片,向下滚动触底后继续加载下一页 10 条。
    • 触发作业类型切换或任一筛选变化后,分页游标重置为第 1 页,已加载卡片清空并重新请求。
    • 加载过程中显示卡片骨架屏;触底加载失败时保留已加载数据,在列表底部展示 加载失败,点击重试
  • 卡片字段与交互说明:
区域/字段/按钮展示规则交互与系统行为
学科方块每张卡片固定展示展示学科简称,如 语文 / 数学 / 英语;仅作识别,不可点击。
作业标题每张卡片固定展示展示发布后的最终标题;标题过长最多显示 2 行,超出省略。
教研院 标签仅当 source = research_institute 时展示作为来源标识,不可点击;该标签不改变批改和分析入口规则。
页数/题数每张卡片固定展示展示格式固定为 共{page_count}页,共{question_count}题
状态标签每张卡片固定展示仅允许 待提交 / 待批改 / 已完成 三种状态;颜色样式分别为灰/橙/绿;状态口径遵循 R28。
发布班级每张卡片固定展示单班作业显示单一班级名称;多班作业显示聚合班级名,完整名单在详情接口返回。
发布时间每张卡片固定展示展示格式固定为 YYYY-MM-DD HH:mm:ss
提交情况每张卡片固定展示展示 已提交人数/应提交人数;当 submitted_student_count > 0 时用高亮色强调,否则用普通文本色。
整卡点击仅当 can_view_report = true 时可点击点击进入 tm_report.html,默认打开 作业分析 页签,并透传 homework_idhomework_typesource_page=tm_list;若 can_view_report = false,整卡不响应点击。
查看分析can_view_report = true 时展示可点击态;否则展示禁用态点击行为与整卡点击一致;点击时必须 stopPropagation,不能继续触发整卡点击。禁用态文案仍为 查看分析,点击 Toast:作业分析数据生成中,请稍后查看
批改submitted_student_count > 0 时展示可点击态;否则展示禁用态点击进入 tm_grading_list.html;若当前作业状态为 待批改,透传 tab=pending;若状态为 待提交submitted_student_count > 0 或状态为 已完成,透传 tab=graded,用于复查已批内容。禁用态点击 Toast:当前暂无可批改答卷
  • 卡片状态与按钮绑定规则:
    • 待提交
      • 判定条件:当前不存在待最终确认的已提交答卷,且仍存在未提交学生。
      • 业务子态 1:submitted_student_count = 0。卡片展示 提交情况 = 0/应交人数查看分析批改 均为禁用态;整卡不可点击。
      • 业务子态 2:submitted_student_count > 0 且当前已提交部分均完成最终成绩确认。查看分析 可用;批改 可用但默认进入 已批改 页签,用于复查已批学生。
    • 待批改
      • 判定条件:至少存在 1 份已提交但未完成最终成绩确认的答卷,不区分是否仍有未提交学生。
      • 查看分析report_status in (partial_generated, generated) 时可用,否则显示禁用态。
      • 批改 始终可用,默认进入 待批改 页签。
    • 已完成
      • 判定条件:全部应交学生已提交,且全部提交答卷均完成最终成绩确认。
      • 查看分析批改 均可用;批改 进入 已批改 页签,用于复查或修正成绩。

底部悬浮快捷操作区

区域/控件展示规则交互与系统行为
提交记录始终展示页面级快捷入口,不绑定当前卡片;点击后按当前顶部作业类型进入对应的提交记录页。当前页签为个性化作业时进入 tm_history.html?source_page=tm_list&tab=personal;当前页签为纸质教辅作业时进入纸质教辅专属提交记录页;返回时恢复本页上下文。
提交作业始终展示页面级快捷入口,不绑定当前卡片;点击进入 tm_submit.html 统一提交页。若当前实现透传 tab 参数,则按当前顶部作业类型传 paper / personal;若未透传,则提交页执行其默认初始化规则。
提交作业 文案与状态始终展示为品牌主按钮本页不根据筛选结果或列表是否为空隐藏该按钮;即使当前无列表数据,也允许教师进入统一提交页重新选择作业对象。
  • 提交作业 跳转补充规则:
    • tm_submit.html 收到入口后,必须先执行 pendingUploadTask 恢复判断;若存在未完成上传任务,则直接进入上传任务拦截态,不以 tab 入参覆盖当前恢复结果。
    • 教师重新进入小程序时,只要当前账号下仍有未完成上传任务,无论其原本打算访问 tm_list.htmltm_history.htmltm_report.htmltm_grading_list.html,都必须先被拦截到 tm_submit.html 上传任务页,直至当前任务结束。
    • 仅在不存在未完成上传任务时,才按入口传入的 tab=paper|personal 打开对应页签;若入口未透传 tab,则再走 tm_submit.html 的默认页签初始化规则。

底部全局导航区

区域/控件展示规则交互与系统行为
首页常驻展示遵循教师小程序全局导航规则,本节不展开首页内容;离开前保留 tm_list_context
作业中心当前页固定激活态高亮显示,不响应重复点击刷新。
学情分析常驻展示遵循教师小程序全局导航规则;离开前保留 tm_list_context
我的常驻展示遵循教师小程序全局导航规则;离开前保留 tm_list_context

批量操作范围

  • 本页不支持作业卡片多选,不提供批量批改、批量提交、批量删除、批量催交入口。
  • 三个筛选胶囊仅影响“当前列表结果集的展示范围”,不修改任何作业、提交、批改数据。
  • 提交记录提交作业 属于页面级快捷入口,对整个教师账号当前权限范围生效,不绑定当前卡片,也不只作用于当前筛选结果。

弹层规格

弹层 1:学科选择底部弹层

要素内容
触发条件点击筛选胶囊 全部学科/当前学科
标题选择学科
正文单列展示 全部学科 + 教师当前有权限的学科列表;当前选中项以勾选态或高亮态标记。
主按钮无独立底部主按钮;点击某一学科项后立即生效,关闭弹层并刷新列表。
次按钮取消 → 关闭弹层,不改变当前筛选。
[x] 关闭取消

弹层 2:班级选择底部弹层

要素内容
触发条件点击筛选胶囊 全部班级/当前班级
标题选择班级
正文单列展示 全部班级 + 当前教师可见班级;班级名称按完整教务名称展示。
主按钮无独立底部主按钮;点击班级项后立即生效,关闭弹层并刷新列表。
次按钮取消 → 关闭弹层,不改变当前筛选。
[x] 关闭取消

弹层 3:状态选择底部弹层

要素内容
触发条件点击筛选胶囊 全部状态/当前状态
标题选择状态
正文单列展示 全部状态 / 待提交 / 待批改 / 已完成;选中项高亮。
主按钮无独立底部主按钮;点击状态项后立即生效,关闭弹层并刷新列表。
次按钮取消 → 关闭弹层,不改变当前筛选。
[x] 关闭取消
  • 业务规则:R18、R28、R29、R30、R31、R32、R33、R34。

异常描述

异常场景处理方式
页面初始化失败(列表接口 404、500、网络超时)展示整页错误态,提供 重试 按钮;已缓存的页签和筛选条件保留。
当前教师无可见班级或无可见作业展示权限空态 当前暂无可管理作业;保留 提交记录提交作业 快捷入口。
筛选结果为空列表区展示空状态 暂无符合条件的作业,并提供 清空筛选 快捷入口;顶部页签与筛选胶囊保持当前值。
筛选字典加载失败对应筛选弹层不展开,Toast 提示 筛选项加载失败,请稍后重试
查看分析 点击时报告未生成保持停留在当前页,Toast 提示 作业分析数据生成中,请稍后查看
批改 点击时无已提交答卷保持停留在当前页,Toast 提示 当前暂无可批改答卷
列表触底加载下一页失败已加载卡片保留,列表底部展示 加载失败,点击重试;不得整页回到首屏。
进入本页前检测到未完成上传任务本页不展示列表内容,立即强制跳转 tm_submit.html 上传任务拦截态,并 Toast 提示 检测到未完成上传,正在继续提交
从下游页面返回时上下文恢复失败回退到本页默认首屏,并 Toast 提示 已为你恢复到作业列表默认视图
教师越权访问某作业 ID该作业卡片不返回到列表结果中;若通过过期缓存强制跳转下游页,下游页需拦截并返回本页。
弱网导致提交人数统计延迟卡片仍显示上一次成功返回的汇总值,同时在卡片局部展示 数据更新中 提示,不以 0 值覆盖已有结果。

数据需求

  • 接口需求:
    • GET /mini/homework/list:查询教师小程序作业列表。入参至少包含 homework_typesubject_idclass_idstatuspage_nopage_size
    • GET /mini/homework/filter-options:返回当前教师在当前作业类型下可用的学科、班级、状态选项及默认值。
    • GET /mini/homework/context(可选):返回最近一次 tm_list_context,用于多端一致的默认页签恢复;若无服务端接口,则前端本地缓存承担相同职责。
  • 列表字段需求:
    • 基础字段:homework_idhomework_typesourcedisplay_titlesubject_namepage_countquestion_countpublished_atclass_summary_text
    • 统计字段:assigned_student_countsubmitted_student_countungraded_submission_countgraded_student_countstatusreport_status
    • 按钮控制字段:can_view_reportcan_gradedefault_grade_tab
    • 展示字段:source_tag_textstatus_tag_stylehighlight_submit_text
  • 页面状态缓存:
    • 本地缓存 tm_list_contextactive_typesubject_idclass_idstatuspage_noscroll_topsource_pageupdated_at
    • 全局上传恢复对象 pendingUploadTask:至少包含 task_idtask_statusactive_tabselected_homework_idselected_homework_titletotal_countsuccess_countfailed_countpending_countsnapshot_imagesupdated_at;进入本页前必须先读取该对象,决定是否触发强制拦截。
    • 下游页面透传字段:至少包含 source_page=tm_listhomework_idhomework_type;进入 tm_grading_list.html 时增加 tab=pending|graded
  • 埋点需求:
事件名触发时机关键参数
tm_homework_list_view页面首屏加载完成时source_pageactive_typesubject_idclass_idstatusresult_count
tm_homework_type_switch_click点击顶部作业类型分段按钮时from_typeto_type
tm_homework_filter_open点击任一筛选胶囊并成功打开弹层时filter_typeactive_type
tm_homework_filter_confirm在筛选弹层选择某项并生效时filter_typeselected_valueactive_typeresult_count
tm_homework_card_click点击可进入分析的整张作业卡片时homework_idhomework_typestatussubmitted_student_count
tm_homework_view_report_click点击 查看分析 按钮时homework_idhomework_typestatusreport_status
tm_homework_grade_click点击 批改 按钮时homework_idhomework_typestatusdefault_grade_tab
tm_homework_history_click点击底部 提交记录source_page=tm_listactive_type
tm_homework_submit_click点击底部 提交作业source_page=tm_listactive_typehas_pending_upload_task
tm_homework_list_load_more触底加载下一页成功时active_typepage_noloaded_count
当前这页已经是“原型 + 页面 PRD”评审工作台。跨页面规则请维护在总览 / 全局规则文档,页面细节请直接维护右侧页面 PRD。
Review Workspace - Prototype + Page PRD