# class-schedule **Repository Path**: rinuo/class-schedule ## Basic Information - **Project Name**: class-schedule - **Description**: 小米手环/手表 Vela 快应用「Ev课程表」:腕上课程表,抬腕看下节课,免手机App,支持手环9/9Pro/10/10Pro/Band9、Watch S3/S4。本仓库为GitHub镜像,最新Release以GitHub为准。 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-09-22 - **Last Updated**: 2026-09-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Ev课程表 > 一款专为智能手表设计的课程表管理应用,帮助学生在手腕上轻松查看和管理每日课程。 [![Version](https://img.shields.io/badge/version-1.4.0-blue)](https://github.com/guomengtao/class-schedule/releases) [![Platform](https://img.shields.io/badge/platform-Xiaomi%20Quick%20App-orange)](https://www.quickapp.cn/) [![Device](https://img.shields.io/badge/device-watch%20%7C%20band-green)]() --- ## 目录 - [应用概览](#应用概览) - [技术栈](#技术栈) - [页面功能介绍](#页面功能介绍) - [1. 主页(课程表首页)](#1-主页课程表首页) - [2. 添加课程页](#2-添加课程页) - [3. 课程详情/编辑页](#3-课程详情编辑页) - [4. 设置页](#4-设置页) - [5. 课程表管理页](#5-课程表管理页) - [6. 周视图总览页](#6-周视图总览页) - [7. 昵称编辑页](#7-昵称编辑页) - [8. 首页设置页](#8-首页设置页) - [9. 高级版激活页](#9-高级版激活页) - [10. 数据备份与恢复](#10-数据备份与恢复) - [11. 功能实验室](#11-功能实验室) - [12. 打赏页](#12-打赏页) - [核心亮点](#核心亮点) - [数据架构](#数据架构) - [开发指南](#开发指南) --- ## 应用概览 **Ev课程表** 是一款运行在 Xiaomi Quick App(快应用)平台上的智能手表与手环应用,专为小屏幕深度优化,支持 watch 和 band 双设备形态。用户可以: - **按天查看课程**,支持左右滑动切换日期,默认隐藏周末仅显示周一至周五 - **快速添加课程**(一键添加 + 完整表单 + 预设课程列表三种方式) - **实时上课状态感知**(正在上课/即将上课/休息中),首页状态栏动态显示 - **多课程表管理**,支持创建、切换、复制、重命名、删除 - **周视图总览**,矩阵表格一目了然整周课程分布 - **9 套主题配色**,深空蓝、翡翠绿、珊瑚红、暗夜黑等自由切换 - **6 档字体大小**(20px/28px/36px/48px/62px/76px),全局动态适配 - **个性化昵称**,新用户安装自动随机分配趣味昵称 - **首页自定义内容**,用户自定义鼓励语显示在首页顶部 - **钉首页功能**,将常用功能页面固定到首页快捷访问 - **数据备份与恢复**,支持导出/导入课程数据,跨设备迁移 - **高级版功能**,解锁更多主题配色和高级功能,支持激活码激活 --- ## 技术栈 | 类别 | 技术 | |------|------| | 平台 | Xiaomi Quick App(快应用) | | 语言 | JavaScript (ES5) | | UI 框架 | UX 标记语言(类 Vue 语法) | | 数据存储 | SQLite + @system.storage 双模式自动降级 | | 构建工具 | aiot-toolkit | | 版本管理 | 语义化版本 + 自动增量构建号 | | 目标设备 | 智能手表(watch)、手环(band) | --- ## 页面功能介绍 ### 1. 主页(课程表首页) **路径**: `pages/index-full` 主页是用户最常使用的页面,分为上下两个区域: **上半部分 — 课程卡片区域** - **日期导航栏**:顶部显示当前星期(如"星期一"),左右箭头按钮可切换日期,同时支持在卡片区域**左右滑动**切换日期。 - **状态栏**:动态显示当前的上课状态: - 📚 **正在上课**:显示当前课程名称 + 剩余分钟数 - ⏰ **即将上课**:显示下一节课名称 + 等待分钟数 - 📅 **未来课程**:当日无课时显示最近的下一节课 - 🎉 **暂无课程**:整周无课时显示休息提示 - **课程卡片列表**:每张卡片显示课程名称、时间和地点 - 左滑卡片可**显示删除按钮**,点击删除对应课程 - 点击卡片进入**课程详情/编辑页** - **空状态**:当天无课时显示"今天没有课" - **自定义内容栏**:用户自定义的鼓励语显示在页面顶部 - **钉首页栏**:快捷访问常用功能页的入口,完全可自定义 **下半部分 — 快捷操作区域** - **快速添加**:一键添加数学、英语、科学三门常用课程(预设时间、老师、地点) - **添加课程按钮**:进入完整的添加课程流程 - **设置按钮**:进入设置页面 - **课程表指示器**:显示当前使用的课程表编号,点击进入**课程表管理页** --- ### 2. 添加课程页 **路径**: `pages/add-course` 采用**4步向导式**流程,逐步引导用户完成课程添加: | 步骤 | 内容 | 说明 | |------|------|------| | Step 1 | 选择课程 | 以卡片滑动方式从预设课程(数学/英语/科学/历史)中选择,带圆点指示器 | | Step 2 | 设置时间 | 上下箭头调整开始和结束时间(小时步长1,分钟步长5),实时预览时间字符串 | | Step 3 | 填写地点 | 可选输入教室或地点,可留空 | | Step 4 | 确认信息 | 汇总展示课程名称、时间、地点,确认无误后保存 | - 每一步都有**步骤指示器**(圆点+连线),清晰展示当前进度 - 支持**前进/后退**导航,可随时返回修改 - 所有文字大小根据用户设置的字体缩放比例动态调整 --- ### 3. 课程详情/编辑页 **路径**: `pages/detail` - 展示课程完整信息:**课程名称、开始时间、结束时间、老师、地点、备注** - 所有字段均可编辑,时间使用上下箭头调整(小时/分钟独立控制) - **删除课程**按钮位于页面顶部,醒目易操作 - 自动从存储中读取课程 ID 和日期,加载对应课程数据 - 保存后自动返回上一页,数据实时更新 --- ### 4. 设置页 **路径**: `pages/settings` 提供丰富的个性化设置: **字体大小设置** - 6档预设字体:20px / 28px / 36px / 48px / 62px / 76px - 支持 +/- 按钮逐档调整 - 实时预览区展示当前字体大小的效果(示例:数学 08:00-08:45 301教室) **昵称设置** - 显示当前昵称,点击进入昵称编辑页 **主题配色设置** - 网格展示所有可用主题 - 1套免费基础主题 + 8套高级版主题 - 点击即可预览效果(高级主题需要解锁) **课程表设置** - 隐藏周六日开关 - 周视图总览模板风格选择(5种模板) **首页设置** - 快速添加栏目显示开关 - 时间格式配置(时/分/秒) - 自定义内容显示开关和文字输入 - 课程提醒显示开关 **默认首页设置** - 选择标准页或总课表作为默认首页 - 自动跳转延时设置(0秒/3秒/5秒/手动进入) **其他设置** - 数据备份与恢复 - 功能实验室(实验性功能) - 高级版升级 - 打赏支持(微信/支付宝/爱发电) - 恢复默认数据 --- ### 5. 课程表管理页 **路径**: `pages/schedule-manager` 支持管理**多张独立的课程表**(例如不同学期、不同班级): - **课程表列表**:展示所有课程表,当前使用的标记"使用中" - **切换课程表**:点击即可切换到另一张课程表 - **重命名**:点击课程表名称旁的"重命名"链接,底部弹出编辑栏 - **复制**:一键复制整张课程表(含所有课程数据),自动生成"(副本)"后缀 - **总览**:点击"总览"链接进入该课程表的周视图 - **删除**:删除非当前使用的课程表(至少保留一张) - **新增**:底部"新增课程表"按钮,自动生成"课程表N"名称 --- ### 6. 周视图总览页 **路径**: `pages/week-view` 以**矩阵表格**形式展示一周课程分布: - 顶部显示当前课程表名称 - 列头:周一至周日(Mon-Sun) - 行头:按时间排序的时间段 - 每个单元格显示课程名的**首字符**,空白时段显示 "." - 点击有课程的单元格可跳转到**课程详情页** - 底部显示课程总数统计 - 支持滚动查看所有时间段 - **5种视觉模板**:极简单字、极简英文、标准方块、紧凑网格、彩色粉彩 --- ### 7. 昵称编辑页 **路径**: `pages/nickname-edit` - 进入页面自动弹出系统对话框输入昵称 - 点击显示区域可重新打开编辑对话框 - 保存后昵称持久化存储,设置页实时显示 --- ### 8. 首页设置页 **路径**: `pages/homepage-settings` 控制首页各模块的显示: - **快速添加栏目**:显示/隐藏开关 - **课程提醒**:显示/隐藏状态栏 - **时间显示**:显示/隐藏时钟区域 - **自定义内容**:开关和文字输入 - **时间格式**:选择时钟显示格式(时/分/秒) - 所有设置与主页实时同步 --- ### 9. 高级版激活页 **路径**: `pages/activation` 提供高级版功能激活入口: - **激活码输入**:输入 16 位激活码解锁高级版 - **高级功能预览**:展示解锁后可用的功能列表 - 全部 9 套主题配色 - 数据备份与恢复 - 课程表管理 - 数据重置 - 功能实验室 - **激活状态持久化**:通过 `premium_activation` 存储键保存激活状态 - 非高级用户访问受限页面时自动弹出升级提示弹窗 --- ### 10. 数据备份与恢复 **路径**: `pages/backup-restore` 支持课程数据的导出与导入,方便跨设备迁移: - **创建备份**:将当前所有课程表数据打包为 JSON 备份文件 - **备份列表**:展示所有历史备份,带时间戳和课程数量摘要 - **恢复备份**:选择任意备份恢复课程数据 - **删除备份**:长按或滑动删除历史备份 - **预览备份**:点击备份可预览其中包含的课程表和数据概览 - 非高级用户进入页面自动弹出升级提示 --- ### 11. 功能实验室 **路径**: `pages/lab` 实验性功能和调试工具的集合页面: - **钉首页管理**:控制哪些页面固定到首页快捷访问栏 - **页面管理**:添加、删除、排序实验室项目 - 实验性功能可能随时调整或移除 --- ### 12. 打赏页 **路径**: `pages/donate` 精美的打赏页面,方便用户支持开发者: - **3个平台** Tab 切换:微信、支付宝、爱发电 - 各平台二维码动态渲染 - 设备形状自适应二维码大小(圆屏/方屏/胶囊屏) - 深色主题,与应用整体视觉风格一致 - 所有链接均为静态字符串,零网络请求,即开即用 --- ## 核心亮点 ### 🎯 实时上课状态感知 主页状态栏实时计算当前时间与课程时间的匹配关系: - 精确到分钟的计算,判断"正在上课"、"即将上课"、"今日课程已结束"等状态 - 当日无课时自动查找未来最近的一节课,显示日期和课程名 - 每分钟自动刷新状态(60秒定时器) ### 🗂️ 多课程表管理 - 支持创建多张独立课程表,数据完全隔离 - 每张课程表有独立的课程数据存储空间 - 复制功能一键克隆整张课程表,方便新学期微调使用 ### 🧩 模块化首页架构 - 8个独立功能模块(时钟、快速添加、日期导航、状态栏、自定义内容、钉首页、底部按钮、课程列表) - 各模块独立加载,单个模块故障不影响其他模块 - 每个首页区域可单独通过设置开关控制显示 ### 📌 钉首页功能 - 将任意功能页面固定到首页,一键直达 - 完全可自定义,随时添加/移除钉住的页面 - 钉住的页面以紧凑标签形式显示在首页,可横向滚动 ### 📱 手表屏幕深度适配 - 全局字体缩放系统,6档可调,所有页面文字大小统一响应 - 通过 `store.getFontScale()` 统一管理,所有页面自动适配 - 支持触摸滑动切换日期(左滑上一天,右滑下一天) - 左滑卡片显示删除按钮,充分利用手势操作 - 圆屏、胶囊屏、方屏三种屏幕形态自适应布局 ### 🎨 多主题配色系统 - 9套精心设计的主题配色:深空蓝、翡翠绿、珊瑚红、暗夜黑、暗紫魅影、晨光白、暖阳米、墨绿护眼、琥珀金 - 深空蓝为基础免费主题,其余 8 套为高级版主题 - 全局统一响应,切换主题后所有页面即时生效 - 适合 OLED 屏幕手表的深色主题,护眼且省电 ### 🗓️ 周视图总览 + 5种视觉模板 - 矩阵表格展示一周课程分布 - 5种模板可选:极简单字、极简英文、标准方块、紧凑网格、彩色粉彩 - 每种模板调整单元格圆角、内边距、字号、密度 - 点击课程单元格直接跳转课程详情 ### 🔄 双存储引擎 - 优先使用 SQLite 数据库存储,性能更优 - SQLite 不可用时自动降级为 Storage(键值存储) - 数据迁移机制:旧版单课程表数据自动迁移到新版多课程表结构 - 默认预置示例课程数据(周一至周五各4节课),开箱即用 ### 💾 数据备份与恢复 - 一键备份所有课程表数据为 JSON 文件 - 支持多版本备份管理,带时间戳和课程数量摘要 - 备份预览功能,恢复前可查看数据概览 - 跨设备数据迁移,换手表无缝衔接 ### 🏠 首页自定义内容 - 用户自定义文字显示在首页顶部 - 适合显示个人座右铭、提醒或鼓励语 - 通过首页设置控制显示/隐藏 ### 🔐 高级版功能体系 - 激活码激活机制,支持 16 位激活码 - 高级功能:全部主题配色、数据备份恢复、课程表管理、数据重置、功能实验室 - 非高级用户访问受限页面时自动弹出底部升级提示弹窗 - 激活状态持久化存储,卸载重装后可重新激活 --- ## 数据架构 ### 存储层级 ``` @system.storage(持久化键值存储) ├── allCourses_0 / allCourses_1 / ... ← 每张课程表的课程数据 ├── currentScheduleIndex ← 当前使用的课程表编号 ├── scheduleNames ← 所有课程表名称列表 ├── fontScale ← 字体缩放比例 ├── userNickname ← 用户昵称 ├── appTheme ← 主题配色 ├── hideWeekend ← 隐藏周六日 ├── homepage_settings ← 首页设置 ├── premium_activation ← 高级版激活状态 ├── backup_list ← 备份记录列表 ├── default_homepage ← 默认首页目标页和自动跳转秒数 ├── week_view_template_id ← 周视图模板选择 ├── pinned_pages ← 钉首页页面列表 └── course_preset_list ← 预设课程列表 ``` ### 数据模型 ```javascript // 课程对象 { id: "1", // 唯一标识 day: "星期一", // 所属星期 name: "数学", // 课程名称 time: "08:00 - 08:45", // 时间段 teacher: "王老师", // 授课老师 location: "301教室", // 上课地点 notes: "第五章" // 备注 } ``` ### 核心模块 | 模块 | 路径 | 职责 | |------|------|------| | database.js | `src/data/database.js` | 数据存取层,封装 SQLite/Storage 双模式 | | store.js | `src/data/store.js` | 应用级配置存储(字体、提醒、昵称等) | | schedule.js | `src/data/schedule.js` | 默认示例课程数据 | | pin-helper.js | `src/data/pin-helper.js` | 钉首页页面管理 | | lab-list.js | `src/data/lab-list.js` | 实验室页面目录管理 | --- ## 开发指南 ### 环境要求 - Node.js >= 8.10 - Xiaomi Quick App 开发环境 ### 安装与运行 ```bash # 安装依赖 npm install # 启动开发服务器 npm run start # 构建 npm run build # 发布 npm run release # 代码检查 npm run lint ``` ### 项目结构 ``` src/ ├── common/ # 公共资源(图标等) ├── data/ # 数据层 │ ├── database.js # 数据库核心(SQLite + Storage) │ ├── schedule.js # 默认示例数据 │ ├── store.js # 配置存储 │ ├── version.js # 版本信息 │ ├── lab-list.js # 实验室页面目录 │ ├── pin-helper.js # 钉首页辅助 │ └── auth-store.js # 高级版授权存储 ├── components/ # 公共组件 │ ├── unlock-dialog/ # 升级弹窗组件 │ ├── pro-card/ # 高级功能卡片 │ └── premium-overlay/ # 高级版遮罩层 ├── i18n/ # 国际化配置 ├── pages/ # 页面 │ ├── index-full/ # 主页(模块化:时钟、日期导航、状态栏、快速添加、自定义内容、钉首页、底部按钮、周指示器) │ ├── add-course/ # 添加课程(4步向导) │ ├── detail/ # 课程详情/编辑 │ ├── settings/ # 设置 │ ├── schedule-manager/# 课程表管理 │ ├── week-view/ # 周视图总览 │ ├── nickname-edit/ # 昵称编辑 │ ├── activation/ # 高级版激活 │ ├── backup-restore/ # 数据备份与恢复 │ ├── lab/ # 功能实验室 │ ├── reset-data/ # 数据重置 │ ├── homepage-settings/ # 首页设置 │ ├── donate/ # 打赏支持 │ ├── template-picker/ # 周视图模板选择 │ ├── pinned-pages/ # 钉首页管理 │ ├── custom-content-edit/ # 自定义内容编辑 │ ├── device-info/ # 设备信息 │ ├── statistics/ # 课程统计 │ ├── schedule-qrcode/ # 课表二维码 │ └── chinese-input/ # 中文输入演示 ├── app.ux # 应用入口 └── manifest.json # 应用清单 ```