模块说明:选课列表是用户按学科浏览和筛选课程的主入口页。顶部按学科Tab分类,中部提供多维筛选(学期/班型/地点/时间),下方展示课程卡片列表,点击卡片进入班次列表页。
入口:底部Tab栏「选课」 | 页面组成:选课列表页 → 筛选面板 → 更多筛选页 → 选择指导老师页 → 班次列表页
| 维度 | 说明 |
|---|---|
| 来源 | 后台接口,按「城市 + 年级 + 学科」维度返回课程列表 |
| 配置维度 | 城市 + 年级 + 学科(一级Tab决定学科) |
| 数量 | 选课列表采用分页加载,每页 20 条,下拉触底加载更多,与全局规则§3.4对齐 |
| 排序 一期 | 课程列表无排序(按服务端返回顺序展示);老师头像列:脱敏配置下主讲老师星级高的靠前,仅取前三位展示 |
| 刷新时机 | 切换学科Tab / 切换学员 / 切换年级 / 切换城市 / 确认筛选条件 / 下拉刷新 |
| 缓存策略 | 不做本地缓存,每次刷新实时请求 |
| 状态组合 | 表现 |
|---|---|
| 已登录 + 有数据 | 正常展示头像+姓名、课程列表 |
| 已登录 + 无数据 | 显示空状态(见 1.4) |
| 未登录 + 有数据 | 头部显示"点击登录",年级默认高一/城市默认广州,正常展示课程列表 |
| 未登录 + 无数据 | 头部显示"点击登录",显示空状态 |
| 操作 | 响应 |
|---|---|
| 点击头像/学员姓名 | 已登录→弹出多孩切换弹窗;未登录→跳转登录页 |
| 点击「年级|城市」胶囊 | 弹出年级/城市选择弹窗(复用首页逻辑) |
| 切换学科Tab | 切换到对应学科,重新请求该学科的课程列表 |
| 点击筛选项(学期/班型/时间/地点) | 展开对应筛选面板(半屏下拉),背景置灰蒙层 |
| 点击「筛选」(更多) | 跳转到更多筛选页(全屏页面) |
| 点击课程卡片 | 跳转班次列表页(传入课程ID) |
| 下拉刷新 | 刷新当前学科+筛选条件下的课程列表 |
| 点击专属顾问 | 跳转企微添加顾问(不拦截登录) |
| 点击顾问 × 关闭 | 当前session内隐藏悬浮按钮 |
| 场景 | 处理 |
|---|---|
| 接口超时/报错 | 展示全局网络异常页(含重试按钮) |
| 无网络 | 遵循全局通则:显示全局无网络异常页(见 01-全局§6.1),恢复网络后自动刷新列表数据 |
| 图片加载失败 | 显示默认占位色块 |
| 课程名称超长 | 最多2行,超出截断+省略号 |
| 下拉刷新失败 | Toast“刷新失败,请重试”,保留当前数据 |
| 配置项 | 维度 | 说明 |
|---|---|---|
| 学科Tab列表 | 城市 + 年级 | Tab名称、顺序由后台配置,前端按配置顺序渲染 |
| 筛选项选项值 | 城市 + 年级 + 学科 | 学期/班型/地点/时间的可选值均由后台下发 |
| 专属顾问 | 城市 | 企微链接由后台配置(复用首页顾问规则) |
| 维度 | 说明 |
|---|---|
| 来源 | 后台接口,按城市+年级配置 |
| 字段 | Tab名称(string)、Tab标识ID(string) |
| 数量 | 后台配几个展示几个,无前端上限 |
| 排序 | 按后台配置顺序从左到右 |
| 操作 | 响应 |
|---|---|
| 点击Tab | 切换选中态,下划线滑动至选中Tab,重新请求该学科课程列表 |
| 左右滑动Tab栏 | Tab栏跟随手势滑动,课程列表不联动 |
学科Tab接口失败 → 展示全局异常页(无法正常使用选课功能)。
见 1.1 配置项。
筛选结果模式:当用户选择了地点/时间等筛选条件后,卡片底部额外展示匹配标签(区域、校区、时间、老师名),灰底胶囊样式。
| 字段 | 来源 | 说明 |
|---|---|---|
| 课程类型 | 后台 | 枚举:线下/在线/双师,对应不同颜色badge |
| 课程名称 | 后台 | string,超出2行截断+省略号 |
| 课程简介 | 后台 | string,可为空;超出2行截断 |
| 老师头像列表 | 后台 | URL数组,前端最多展示5个 |
| 起步价格 | 后台 | number(分),前端转元显示,保留整数 |
| 匹配标签 | 前端筛选后由后台返回 | 仅在有筛选条件时展示 |
| 场景 | 表现 |
|---|---|
| 无简介 | 不显示简介行,卡片高度自适应 |
| 无老师头像 | 不显示头像行 |
| 无筛选条件 | 不显示底部匹配标签 |
| 操作 | 响应 |
|---|---|
| 点击整张卡片 | 跳转班次列表页(传入课程ID + 当前筛选条件) |
| 场景 | 处理 |
|---|---|
| 老师头像加载失败 | 显示默认灰色头像占位 |
| 价格为0或为空 | 价格为 0 时照常显示"¥0"(不隐藏价格区域);后端保证价格字段不为空(2026-07-28 测试评审确认) |
— 卡片内容由课程数据驱动,无独立配置项。
用户可切换学科Tab、调整筛选条件或下拉刷新重新加载。
— 空状态图文为前端固定资源,无后台配置。
| 场景 | 表现 |
|---|---|
| 首次进入选课页 | 展示骨架图,数据返回后替换为实际内容 |
| 切换学科Tab | 课程列表区展示骨架图(Tab栏保持可操作) |
| 切换学员/年级/城市 | 全页骨架图 |
— 前端固定实现,无后台配置。
模块说明:选课列表顶部筛选栏点击后展开的半屏面板,支持学期、班型、地点、时间四个维度筛选。面板从筛选栏下方向下展开,背景蒙层,底部固定「重置」「确定」按钮。
入口:点击筛选栏对应筛选项 | 展示形式:半屏下拉面板(覆盖课程列表区域)
| 维度 | 说明 |
|---|---|
| 来源 | 后台接口,随课程列表一并返回可选学期 |
| 数量 | 后台配几个展示几个 |
| 排序 | 按后台配置顺序 |
| 操作 | 响应 |
|---|---|
| 点击学期标签 | 多选,选中态橙色填充,其余灰底(2026-07-28 测试评审确认:学期支持多选) |
| 点击「确定」 | 收起面板,按选中学期重新请求课程列表;筛选栏「学期」显示已选值 |
| 点击「重置」 | 取消选中,恢复默认(全部学期) |
| 点击蒙层 | 关闭面板,不应用筛选(保持上次确认结果) |
学期选项值由后台配置(枚举值与展示名称)。
| 维度 | 说明 |
|---|---|
| 来源 | 后台接口,按学科返回可选班型 |
| 示例值 | 乐学、励学、博学 |
| 数量 | 后台配几个展示几个 |
| 操作 | 响应 |
|---|---|
| 点击班型行 | 多选,选中显示橙色勾选 + 橙色字体 |
| 点击「确定」 | 收起面板,按已选班型重新请求;筛选栏「班型」显示已选数量badge(如 "班型²") |
| 点击「重置」 | 取消全部选中 |
| 点击蒙层 | 关闭面板,不应用 |
班型选项值由后台按学科配置。
| 维度 | 说明 |
|---|---|
| 来源 | 后台接口,按城市返回区域和校区层级数据 |
| 层级 | 二级:区域 → 校区 |
| 排序 | 区域按后台顺序;校区按后台顺序 |
| 操作 | 响应 |
|---|---|
| 点击左栏区域 | 高亮该区域,右栏切换显示该区域下校区 |
| 点击右栏校区 | 多选,选中橙色勾选 + 橙色字体;底部已选区新增标签 |
| 点击"去这里" | 跳转校区详情页(地图/地址信息) |
| 点击已选标签 × | 取消该校区选中 |
| 点击「确定」 | 收起面板,按已选校区筛选;筛选栏「地点」显示已选数量badge |
| 点击「重置」 | 取消全部选中 |
区域和校区由后台按城市配置管理。
| 维度 | 说明 |
|---|---|
| 来源 | 后台接口,按学科+城市返回可选时间段 |
| 层级 | 二级:时间分类(星期/段次)→ 具体时间段 |
| 排序 | 左栏按星期→段次固定顺序;右栏按时间升序 |
| 操作 | 响应 |
|---|---|
| 点击左栏分类 | 高亮该分类,右栏切换显示该分类下时间段 |
| 点击右栏时间段 | 多选,选中橙色勾选 + 橙色字体;底部已选区新增标签 |
| 点击已选标签 × | 取消该时间段选中 |
| 点击「确定」 | 收起面板,按已选时间筛选;筛选栏「时间」显示已选数量badge |
| 点击「重置」 | 取消全部选中 |
时间段选项由后台按学科+城市配置。
模块说明:从筛选栏「筛选」入口进入的全屏页面,提供课程类型和指导老师两个维度的高级筛选能力。
入口:选课列表筛选栏「筛选」按钮 | 展示形式:全屏新页面
| 字段 | 来源 | 说明 |
|---|---|---|
| 课程类型 | 前端固定枚举 | 面授 / 在线 / 双师 |
| 指导老师列表 | 后台接口 | 根据当前学科+城市返回可选指导老师 |
| 操作 | 响应 |
|---|---|
| 点击课程类型标签 | 单选,选中态橙色边框+文字 |
| 点击「更多」(指导区) | 跳转选择指导老师页 |
| 点击「确定」 | 返回选课列表,应用筛选条件重新请求;筛选栏「筛选」图标高亮 |
| 点击「重置」 | 清空课程类型和指导老师选择 |
| 点击返回箭头 | 返回选课列表,不应用(保持上次确认结果) |
| 配置项 | 说明 |
|---|---|
| 课程类型枚举 | 前端固定:面授/在线/双师 |
| 指导老师展示条件 | 当该学科有辅导老师数据时展示指导区,无则隐藏 |
模块说明:全屏独立页面,提供指导老师多选列表,按姓名拼音首字母分组,支持右侧字母索引快速定位,最多可选10位老师。
入口:更多筛选页「指导 → 更多」 | 展示形式:全屏新页面
| 维度 | 说明 |
|---|---|
| 来源 | 后台接口,按学科+城市返回指导老师列表 |
| 字段 | 老师ID、姓名(string)、头像(URL)、拼音首字母(用于分组) |
| 数量限制 | 前端最多可选 10 位老师 |
| 排序 | 按姓名拼音首字母 A→Z 分组排列 |
| 操作 | 响应 |
|---|---|
| 点击老师行 | 多选切换:未选→选中(橙色勾选);已选→取消 |
| 已选满10个再选 | Toast 提示"最多只能选择10个老师",不可继续选择 |
| 点击右侧字母 | 列表滚动到对应字母分组 |
| 点击「确定(N)」 | 返回更多筛选页,携带已选老师数据 |
| 点击返回箭头 | 返回更多筛选页,不保存本次选择 |
| 场景 | 处理 |
|---|---|
| 老师头像加载失败 | 显示默认灰色头像 |
| 老师列表为空 | 不应进入此页面(更多筛选页隐藏指导区) |
— 老师数据由后台课程服务提供,无独立配置。
模块说明:从选课列表点击课程卡片进入的二级页面,展示该课程下所有可报班次,支持按地点/时间/老师筛选,点击班次卡片进入课程详情页。
入口:选课列表页课程卡片点击 | 展示形式:全屏新页面(带返回箭头)
| 元素 | 说明 |
|---|---|
| 老师信息 | 头像 + 姓名 + 角色标签(如"指导") |
| 校区 | 图标 + 校区名称 |
| 时间信息 | 图标 + 日期范围 + 段次 + 上课时间 + 课次数 |
| 名额/状态 二期 | 左下角学位展示:剩余名额 > 5 → 显示"热报中";剩余名额 1~5 → 显示"剩N名额"(具体数字);剩余名额 = 0 → 显示"已满班"(2026-07-28 测试评审确认) |
| 价格 | 右下角:橙色 ¥ + 金额 |
| 维度 | 说明 |
|---|---|
| 来源 | 后台接口,按课程ID + 城市 + 年级 返回班次列表 |
| 字段 | 老师(姓名/头像/角色)、校区名、日期范围、段次、时间、课次数、剩余名额、价格 |
| 数量 | 后台返回全量,不分页 |
| 排序 一期 | 班级列表优先剩余学位少的靠前,其次按 TMS 最后修改时间倒序 |
| 刷新 | 切换筛选条件时重新请求 |
| 缓存 | 不做本地缓存 |
| 场景 | 表现 |
|---|---|
| 有班次 | 正常展示班次卡片列表 |
| 无班次(筛选后) | 空状态:"未找到相关服务" |
| 名额已满 | 卡片仍展示,名额文案显示"已满班"(2026-07-28 测试评审确认,替代原"剩0名额/隐藏"后台配置口径) |
| 操作 | 响应 |
|---|---|
| 点击班次卡片 | 跳转课程详情页(传入班次ID) |
| 点击筛选项 | 展开对应筛选面板(复用选课列表地点/时间面板逻辑) |
| 点击老师筛选 | 展开老师筛选面板,复用选课页老师筛选,支持多选 二期 |
| 点击返回 | 返回选课列表页 |
| 场景 | 处理 |
|---|---|
| 接口超时/报错 | 展示全局网络异常页 |
| Banner图加载失败 | 显示默认占位色块 |
| 老师头像加载失败 | 显示默认灰色头像 |
| 配置项 | 维度 | 说明 |
|---|---|---|
| 课程Banner图 | 课程维度 | 后台按课程配置默认Banner,无配置则不展示Banner区 |
| 筛选项 | 课程维度 | 地点/时间/老师筛选选项由该课程下的班次数据聚合生成 |
模块说明:底部固定课程推荐卡片,展示 TMS 后台顾问给学生同步的购物车课程,引导用户快速查看购物车。符合条件时在所有Tab页面底部展示(首页/选课/我的),非仅限选课页。
入口:进入任意Tab页时自动触发(需满足条件) | 展示形式:底部固定卡片
| 维度 | 说明 |
|---|---|
| 来源 | TMS 后台顾问给学生同步的购物车课程 |
| 字段 | 课程类型badge、课程名称、热报状态 |
| 数量 | 展示 1 张卡片(购物车内最新一条有效课程) |
| 触发条件 | 已登录 + 购物车内存在有效课程(由 TMS 后台顾问同步);展示范围:所有Tab页面(首页/选课/我的);未登录或购物车无有效课程时不展示 |
| 刷新策略 | 用户每次打开小程序时检查购物车状态,有效则展示卡片 |
| 操作 | 响应 |
|---|---|
| 点击「查看 ›」 | 跳转购物车页面 |
| 点击关闭 × | 收起卡片,当前session内不再展示 |
| 场景 | 处理 |
|---|---|
| 购物车接口失败 | 不展示卡片(静默降级) |
| 未登录 | 不展示卡片 |
| 购物车课程已失效 | 不展示卡片 |
课程数据来源为 TMS 后台顾问同步至学生购物车,前端无配置项。
| 修订项 | 修订内容 | 期数 | 依据来源 | 日期 |
|---|---|---|---|---|
| 课程列表排序 | 删除"后台配置权重"表述;改为课程列表无排序(按服务端返回顺序),老师头像列脱敏配置下主讲老师星级前三(§1.1) | 一期 | 改动汇总 4.2(何龙口径) | 2026-07-26 |
| 班级列表排序 | 班次列表排序由"后台配置顺序"改为:剩余学位少的靠前 + TMS 最后修改时间倒序(§5.1) | 一期 | 改动汇总 4.2(何龙口径) | 2026-07-26 |
| 学位展示规则 | 班次卡片名额展示:剩余名额>5 显示"热报中",≤5 显示"剩N名额"(§5.1) | 二期 | 用户确认(2026-07-26) | 2026-07-26 |
| 学期筛选 | 确认沿用二级联动规则;默认全部学期;重置=取消全部选中(§2.1) | 二期 | 改动汇总 待确认项确认 | 2026-07-26 |
| 指导老师筛选 | 确认:有辅导老师配置才显示「更多」入口;班次列表老师筛选复用选课页、支持多选(§3.1 / §5.1) | 二期 | 改动汇总 待确认项确认 | 2026-07-26 |
| 课程类型筛选 | 确认:课程类型为前端固定枚举(面授/在线/双师)(§3.1) | 二期 | 改动汇总 待确认项确认 | 2026-07-26 |
| 学位展示规则补充 | 名额展示补第三档:剩余名额=0 显示"已满班";名额已满卡片仍展示,替代原"剩0名额/隐藏"后台配置口径(§5.1 / §5.2) | 二期 | 2026-07-28 测试评审会 | 2026-07-28 |
| 学期筛选多选 | 学期标签由单选改为多选(§2.1) | 二期 | 2026-07-28 测试评审会 | 2026-07-28 |
| 价格为0展示 | 课程卡片价格为 0 时照常显示"¥0",不隐藏价格区域;后端保证价格不为空(§1.2 边界) | 一期 | 2026-07-28 测试评审会 | 2026-07-28 |