# 学生报备系统 **Repository Path**: dwhcoder/xinguan2020-xuesheng ## Basic Information - **Project Name**: 学生报备系统 - **Description**: 新型冠状病毒疫情期间针对学生健康的报备系统 - **Primary Language**: JavaScript - **License**: MulanPSL-1.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 127 - **Created**: 2020-03-06 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 这是学生健康报备系统的需求文档,适用于广大中小学生的学生属地摸查、每日健康统计。 ## 快速体验 **体验地址(请使用手机访问):** [xsjk.m3w.cn](https://xsjk.m3w.cn) **项目截图:** ![输入图片说明](https://images.gitee.com/uploads/images/2020/0214/235844_1b089891_604311.png "xsjk-03.png") ## 项目规划 为快速上线,本项目分阶段进行: - [已完成]一期:满足单个中小学校上线发布,包含高中、初中、小学、幼儿园,这应该是一个类别的,相对简单,支持设置学校名称、班级管理、班级管理员 - 二期:满足单个大学上线发布,区分学院、系所,可能还要涉及分校,研究生、博士等分类 - 三期:满足区域性多校上线发布,比如:北京市中小学校健康统计 ## 需求汇总 一期满足单个中小学校上线发布,涉及功能包括: - 注册登录 - 班级管理 - 健康上报 - 数据查看 ## 首页 负责人: 首页显示“xx学校学生健康报备系统”,区分登录状态,未登录时,显示登录、注册按钮。 若已登录,区分角色,首页显示不同内容。 学生/家长,首页显示两个链接: - 修改学生信息 - 今日健康报备 老师,首页显示两个链接: - 修改个人信息 - 查看报备数据 ### 登录注册 负责人:邯郸-前端-秦少卫 用户类型: - 管理员,一期可通过数据库内置用户名、密码的方式,出厂内置 - 老师 - 学生 - 学生家长 登录/注册类型: - 用户名/密码:全平台都支持 - 微信登录:微信小程序支持,且微信小程序优先微信登录 账号和班级、学生是分开的,注册成功后流程: - 超级管理员无需注册,系统出厂内置; - 老师注册后,跳转绑定班级信息,后续可修改 - 学生/家长注册后,跳转绑定学生信息,包括:年级、班级、学号、姓名等 登录成功后,判断当前账号状态,如下: - 超级管理员:跳转年级、班级管理界面 - 老师:若未绑定班级信息,跳转绑定班级信息页面,否则跳转班级当日健康统计列表页面 - 学生/家长:若未绑定学生信息,跳转绑定学生信息页面,否则跳转当日健康报备页面 ### 管理员管理班级信息 负责人:江西-前端-Ran 超级管理员可管理学校的年级、班级,超级管理员账号、密码可通过内置数据库的方式临时处理: - 年级:新增、修改、删除,删除年级时,提醒会将该年级下关联的所有班级全部删除 - 班级:新增、修改、删除,删除班级时,提醒会将该班级下所有学生及已有的健康报备数据全部删除 班级需设置该班级总共有多少学生。 ### 学生/家长 上报健康状况 负责人:[安徽-unicloud-王秀龙](https://gitee.com/hzjsj) 统计每个学生每日的健康情况,统计项如下: - 统计日期,系统生成 - 班级,系统获取 - 学生姓名,系统获取 - 当前健康状况:多选,可选项:良好/咳嗽/乏力/发热,多选时逗号分隔;选良好后,不能再选其他项 - 有无接触`湖北/武汉`人员 - 有无疑似症状 - 当前所在省市 - 今日体温,可选 每天仅可报备一次,若多次报备,则覆盖上次信息。 ### 老师查看报备情况 负责人:南笙 统计列表,默认为当天日期,开头显式显示已上报xx人,缺xx人,列表按学号排列 老师可切换日期,查看之前的历史数据。 ## 数据库设计 参考 [db.md](db.md) 每日健康统计理论上需家长每日配合提交。 ### 空间与小程序appID设置 - 在`main.js`中设置空间的`spaceId`、`clientSecret`; - 在`manifest.json`中设置微信小程序的`appID`,否则微信端获取的code为:`the code is a mock one`; - 在`cloudfunctions-dev/src/utils/constants.js`中设置`AppId`、`AppSecret`、`passSecret`字段,否则不能获取`openid`; ### token获取详情 获取用户信息需要根据token获取,方法如下,成功后,`res.data`为详细信息,`res.data.userType`为用户类型, `userType`的值为数字,对应信息如下。 - 0:老师 - 1:学生 - 2:家长 - 3:管理员 ```JS validateToken() { uni.showLoading({ title: '加载中...' }); uniCloud.callFunction({ name: 'validateToken', data: { token: uni.getStorageSync('token') } }).then((res) => { uni.hideLoading() uni.showModal({ content: res.result.msg, showCancel: false }) }).catch((err) => { uni.hideLoading() uni.showModal({ content: '请求云函数发生错误,' + err.message, showCancel: false }) }) }, ``` ## 项目运行和部署说明 - 本项目需要[HBuilderX 2.5.8(Alpha版)](https://www.dcloud.io/hbuilderx.html)以上版本才能运行。 - 项目需要[注册](https://dev.dcloud.net.cn/)和开通uniCloud ,因阿里云审核要求,需要实名认证。 - 拉取项目源码后,对`cloudfunctions`目录点右键,选择你的服务空间。如果没有服务空间,需要创建,创建时会引导登录和注册uniCloud。 - 配好服务空间后,请根据项目下的[db.md](db.md)文件,在你的云数据库中创建相应的表。具体方式是对`cloudfunctions`目录点右键,打开uniCloud web控制台,在里面的云数据库界面点击"新建表",表名里把[db.md](db.md)涉及的表名都创建一遍。 - 对每个云函数(文件夹)点右键,"上传并部署"到你的服务空间中。 - 修改`manifest.json`中的`DCloud_AppID`为自己的。 - 最后,可以运行了。如果是win版,可以直接运行在内置浏览器。如果是mac版,内置浏览器也有跨域问题,需要运行到小程序模拟器或app中,或者给mac的外部浏览器[安装跨域插件](https://ask.dcloud.net.cn/article/35267)。 ## 关于源码的二次开发 本项目基于木兰宽松许可证,代码可自由使用和更改。 - 项目前端基于uni-app框架开发,它是一个通过vue.js编写所有平台应用的多端框架。你需要了解uni-app以便于更深度的定制。uni-app的文档详见:[https://uniapp.dcloud.io/README](https://uniapp.dcloud.io/README) - 项目后端基于uniCloud,它是一个基于js的云开发模式,与微信、支付宝小程序的云开发类似,但可以跨端使用。它基于serverless模型,优势众多。建议开发者通读一遍uniCloud的介绍和快速上手,以方便做二次开发。uniCloud的文档详见:[https://uniapp.dcloud.io/uniCloud/README](https://uniapp.dcloud.io/uniCloud/README)