Files
2026-10-14 17:25:35 +08:00

4.9 KiB
Raw Permalink Blame History

课程表页面 · 交付说明

交付物

文件 说明
course-schedule.html 课程表页面,单文件、零依赖,双击即可在浏览器打开

目标站点的情况(重要)

按提供的地址与账号尝试登录后,未能进入真实页面:

  • 访问 http://mepc.schsoft.cn/Syllabus/modular/HSchSyllabus#/Home/HSchSyllabu 会被 CAS 重定向到 https://sso.bestsch.com/old/index.html
  • 用 dngjxxadmin / Daning@2007 提交登录,SSO 返回 「错误的用户名或密码」(并提示剩余 2 次尝试机会)
  • 为免触发账号锁定,未继续重试

因此本页是按课表业务域(HSchSyllabus 中学课表)的通用信息架构与交互范式构建的,并已对齐本仓库现有视觉语言。接入真实接口时只需替换页面底部的 DATA / OVERRIDES 常量,其余渲染逻辑无需改动。

若需要 1:1 还原线上界面,请在浏览器中手动登录后提供页面截图(或更新后的可用凭据),我再按实际版式调整。

设计系统

色彩

沿用仓库 _varible.scss 既有令牌,保证与本模块其它页面同源:

  • 品牌主色 #5979ea($color-primary),语义色 #45b972 / #e9b954 / #e8684a
  • 中性文字 #404042 / #555 / #999,分割线 #e9e9e9,页面底 #f3f3f3
  • 学科色板 9 色相 × 3 层级(50 底 / 200 边 / 800 字),每个色相固定绑定学科,跨周次配色一致
  • 正文对比度按 WCAG AA 4.5:1 选取字色,未依赖透明度压低对比

排版与节奏

  • 字号阶梯 10 / 11 / 12 / 13 / 14 / 15 / 18 / 19px,仅 400 与 500 两档字重
  • 间距 8pt 栅格(4 / 8 / 12 / 16 / 20 / 24 / 32 / 40px)
  • 圆角 6 / 8 / 12 / 16px;阴影三级海拔(--sh-1/2/3)
  • 数字(节次、日期、时间)统一 tabular-nums,纵向对齐

组件

工具栏 / 周次条 / 表头 / 节次轴 / 课程块 / 时间指示线 / 图例 / 日视图行 / 日期选择条 / 详情侧栏 / 空状态 / Toast,均有 default、hover、selected、focus-visible 态。

信息架构

顶部工具栏(学期 · 班级 · 周/日视图切换 · 回到本周 · 打印)→ 周次条(20 周,当前周绿色标记并自动居中)→ 主区(周视图 7×8 网格 / 日视图 8 节次列表)→ 图例 → 详情侧栏。

课程块承载:学科、教室、教师;连堂课时合并为一个块并标注「连堂 N 节」;调课/停课在右上角打角标。

无障碍

  • 全部交互元素为原生 button,可 Tab 聚焦,:focus-visible 统一 2px 焦点环
  • 周次条 aria-current、日期条 aria-selected、侧栏 role="dialog" + aria-modal
  • 课程块 aria-label 输出完整信息(学科/星期/节次/教师/教室),避免仅靠颜色传达状态
  • Esc 关闭侧栏,← → 切换周次
  • 尊重 prefers-reduced-motion

已修复的缺陷(实现过程中实测发现)

  1. 7 列网格塌成 1 列:minmax(104px, 1fr) 在宽度由内容决定的父级中会让轨道取到最小像素值,7×min 撑爆容器后折叠。改为 repeat(7, 1fr) 比例轨道,改由 .week-wrap 的 min-width 提供可用性下限。
  2. 周末两列被裁切:.week-wrap 的 min-width 未计入边框像素,补 + var(--day-count) - 1。
  3. 日视图默认全空:基准日是周六(无课),且日视图没有日期选择器。新增日期选择条,并让默认日落到「今天(若有课)/ 本周第一个有课日」。
  4. 周次条显示半截周:20 周按钮改为弹性收缩 + min-width 下限,并在启动时把当前周滚入视野中部。

验证方式与结果

以 file:/// 在真实 Chromium 中打开,逐项实测(非静态检查):

检查项 结果
页面加载 / 控制台报错 通过,无未捕获错误
周视图:7 列表头、8 节次轴、39 个课程块 通过
课程块与背景网格对齐(left/top 像素级) 通过
周末列完整可见(周日 right=1222 < 视口边缘) 通过
点击课程打开详情侧栏(标题/8 行字段/色板) 通过
Esc 关闭侧栏 通过
周 / 日视图切换、日期选择条 通过
班级切换(高一1班→高二1班,课程数随之变化) 通过
第 5 周「调课」、第 11 周「停课」角标 通过
← → 周次键盘导航 通过
打印样式表存在 通过

后续接入建议

  1. 用接口数据替换 DATA(结构:[星期索引, 起始节次, 连堂节数, 学科, 教师, 教室, 备注])与 OVERRIDES(调课/停课)。
  2. TERM_START / TOTAL_WEEKS / SLOTS 改为读取教务基础数据;NOW 去掉硬编码改用系统时间。
  3. 若需并入 Vue 项目,把 <style> 拆到 src/assets/styles/components/_course.scss,模板迁为 views/syllabus/HSchSyllabus.vue,SUBJECTS 色板与渲染函数可直接复用。