这是一个基于Taro的微信小程序项目,为江西理工大学学生提供服务,欢迎各位开发者一起为小程序设计功能,贡献代码!
- 离线优先设计:课表数据本地缓存,支持离线查看
- 版本检测机制:基于
last_modified时间戳的增量更新,减少流量消耗 - 灵活编辑:支持单个课程格子的新增、编辑和删除
- 多周切换:手势滑动切换周次,快速跳转到任意周
- 班级绑定:一键绑定班级,自动同步课表数据
- 周末显示控制:可选择显示/隐藏周末课程
- 多学期支持:多学期切换、非当前学期提醒
- 分类浏览:支持多级分类导航,面包屑路径清晰
- 智能搜索:
- 搜索历史记录
- 热搜词推荐
- 实时搜索建议
- 资料热榜:
- 下载热榜(7天/30天)
- 评分热榜(7天/30天)
- 资料评分:用户可对资料进行评分,帮助他人选择优质资源
- 下载追踪:记录下载行为,生成热门资料统计
- 匿名评价:保护学生隐私,鼓励真实反馈
- 多维度评价:
- 推荐度统计
- 评价内容展示
- 校区信息标注
- 智能搜索:快速查找教师,查看历史评价
- 校区必填校验:评价需选择校区,确保信息准确
发现页聚合多个学业信息专区,帮助学生打破信息差:
- 转专业:转专业通知与公告
- 竞赛:学科竞赛信息汇总
- 考级考证:考级考证相关资讯
- 交换生:交换生项目信息
- 组织:校园组织介绍(含详情页)
- 错题本与跳题:支持错题回顾与跳题作答
- 自动提交:子题全部作答后自动提交父题
- 项目筛选:按项目数据校验与筛选
- 分类管理:支持多种通知分类
- 置顶功能:重要通知可置顶显示
- 转换日程:通知可转换为个人日程提醒
- 番茄钟:专注计时与排行榜(首页卡片)
- 绩点计算器:快速计算 GPA,支持备份
- 挂科率查询:搜索课程挂科率数据,辅助选课决策
- 倒数日:首页倒数日卡片
- 学习清单:待完成/已完成学习任务管理
- 今日课表:首页当日课程提醒,同时段多门课程折叠展示
- 校历查询:查看学期重要时间节点
- 英雄榜:展示贡献者
- 群聊推荐:推荐相关学习群聊
- 主题模式:跟随系统深色/浅色主题
- CSS 变量令牌:通过
--theme-*变量统一管理页面、表面、文字、边框、品牌色等语义色 - 原生主题联动:同步设置导航栏、标签栏、页面背景色,原生窗口底色与内容层主题永远一致
- 防闪烁:主题始终跟随系统,配合
page-meta首帧定色,从根本上避免切换页面时闪烁上一套主题色
- 自动UUID生成:使用微信小程序加密级随机数生成器生成 UUID v4
- 智能幂等性Key:
- 基于请求内容(method + url + data)生成唯一标识
- 防止快速重复点击导致的重复提交
- 1分钟保护期,2分钟自动清理
- 请求追踪:每个请求自动添加
X-Request-ID用于日志追踪 - 详细文档:完整的幂等性实现说明(见
docs/idempotency_implementation.md)
- 双Token机制:access token + refresh token,提升安全性
- 拦截器自动续期:token 过期自动刷新,无感续期
- 重复调用防护:
expireToken增加重复调用防护与异常捕获
- Pinia Store:
authStore:用户认证状态(双Token)scheduleStore:课表数据管理notificationStore:通知数据管理reviewsStore:评价数据管理studyTasksStore:学习任务管理countdownStore:倒数日管理themeStore:主题(跟随系统)管理
- 按功能模块拆分:
src/api/下按功能拆分为独立模块(auth、courseTable、material、notification、review、pomodoro、gpa、points、organization等),index.js统一聚合导出 - 拦截器机制:
- 请求拦截:自动添加 token、幂等性Key等
- 响应拦截:统一处理错误、token过期等
- RESTful规范:遵循RESTful API设计规范
- 统一错误处理:请求错误统一以 modal 提示,子页面不再过多处理
- 静默模式:支持
silent静默请求、URL 校验、循环引用保护
- 课表数据本地缓存,无网络也可查看
- 资料搜索历史本地存储
- 适配不同屏幕尺寸
- 流畅的动画过渡效果
- 下拉刷新
- 上拉加载更多
- 骨架屏加载状态
- Toast提示反馈
- 防抖防重复点击
- 分页加载,减少单次数据量
- 请求缓存机制
- 框架: Taro 4.x
- 前端: Vue 3 + Composition API
- 状态管理: Pinia
- 样式: Tailwind CSS v4 + 自定义主题令牌系统(跟随系统深色/浅色)
- 平台: 微信小程序
src/
├── pages/
│ ├── home/ # 首页(今日课表、番茄钟、学习清单、倒数日、通知卡片)
│ ├── schedule/ # 课表功能
│ │ └── schedule-bind/ # 班级绑定
│ ├── discover/ # 发现页(学业信息聚合入口)
│ ├── materials/ # 资料库
│ │ └── detail/ # 资料详情
│ ├── final-review/ # 期末复习
│ │ └── detail/ # 复习详情
│ ├── points/ # 积分系统
│ ├── profile/ # 个人中心
│ ├── notifications/ # 通知公告
│ │ └── detail/ # 通知详情
│ ├── teacher-reviews/ # 教师评价
│ ├── major-transfer/ # 转专业
│ ├── competition/ # 竞赛
│ ├── qualification/ # 考级考证
│ ├── exchange/ # 交换生
│ ├── organization/ # 组织
│ │ └── detail/ # 组织详情
│ ├── failrate/ # 挂科率查询
│ ├── gpa-calculator/ # 绩点计算器
│ ├── calendar/ # 校历查询
│ ├── map/ # 校区地图
│ ├── address/ # 校区地址
│ ├── groupchat/ # 群聊推荐
│ ├── achieveprint/ # 成绩证明
│ ├── graduation/ # 毕业相关
│ ├── gotojw/ # 教务跳转
│ ├── hero/ # 英雄榜
│ ├── login/ # 登录页面
│ ├── webview/ # 网页浏览
│ └── terms-of-service/ # 服务条款
├── api/ # API接口(按功能模块拆分)
├── stores/ # Pinia状态管理
├── utils/ # 工具函数
├── components/ # 通用组件
└── assets/ # 静态资源
└── icons/ # 图标文件
# 安装依赖
npm install
# 微信小程序开发
npm run dev:weapp# 构建微信小程序
npm run build:weapp- 复制
.env.example为.env.local,并设置TARO_APP_API_BASE_URL - 学期配置由后端下发,本地经
src/utils/semesterCache.js缓存,无需手动维护
- Fork 本仓库到你的 GitHub 账号下。
- 按照要求规范填写 commit message。
- 提交 Pull Request(PR)。
- 等待代码审核与合并。