初学小程序,每天起床第一件事不是去看文档,而是打开班群接龙打卡信息,填写excel表(苦逼的大三狗每天群通知99+),所以萌生了写一款让学生报备信息的小程序。本来只是简单写了一个上报表单的程序,但是写完了之后又觉得好像缺了点什么,所以功能越写越多,项目不断重构,里面很多东西都是现学现用,陆陆续续写了10天左右,算是一滴都不剩了。。不对,是差不多写得没想法了,项目包含了一整套前后端的交互,由于很多数据前期和后期设计理念不一样,所以会有很多不完善的地方,希望大家轻喷。废话不多说,现在主要讲一下该项目的设计思路和一些功能的实现思路。
项目文件
项目文件 提取码y04t
本项目特点
- 绑定个人信息,填报时无需再填写
- 区分教师,学生,辅导员,院长四大用户(可设置管理员)
- 导出体温异常人员,用不同颜色标注
依赖
- 本项目使用云开发,无需部署服务器和域名
- 导出表格依赖exceljs库
部署说明
- 注册微信小程序(自行百度)
- 使用微信开发者工具导入项目,修改Appid
- 小程序后天创建订阅消息模板“打卡提醒”和“记录健康提醒”(分别用于提醒学生打卡和提醒辅导员打卡已完成)
//checkin.js
const tmpId = '这里填订阅消息里面的模板id' // 提醒学生消息模板
const tmpIdt = '这里填订阅消息里面的模板id' // 提醒辅导员消息模板
- 数据库创建,格式如下:
settings集合中数据id固定
a. identi集合(用于身份验证)
权限:所有用户可读
//学生
{
"userInfo":{
"no":"xxxxxxx",
"name":"xxx",
"class_":"信16xx-3",
"phone":"xxxxx",
"department":"信息科学技术学院",
"type":"学生"
}
}
//院长、辅导员
{
"userInfo": {
"department": "信息科学与技术学院",
"manage_classes": [
"xxxx",
"xxxx",
"xxxx"
],
"name": "测试",
"no": "20199999",
"phone": "151xxxxx238",
"type": "副院长"
}
}
//教师
{
"userInfo":{
"no":"xxxxxxx",
"name":"xxx",
"phone":"xxxxx",
"department":"信息科学技术学院",
"type":"教师"
}
}
b.settings集合(配置上报截止时间,注意:本条数据id固定,请勿修改)
权限:所有用户可读
{
"_id": "deadline",
"hours": "11",
"minutes": "00"
}
c.classes集合(副院长身份用户会用到,注意:本条数据id固定,请勿修改)
权限:所有用户可读
推荐在https://www.json.cn/查看json结构
{"_id":"class_set","department":["信息科学与技术学院"],"major":{"信息科学与技术学院":["物联网工程","软件工程","电子商务"]},"class_":{"物联网工程":["2016级物联网","2017级物联网","2018级物联网"],"软件工程":["2016级软工","2017级软工","2018级软工","2019级软工"],"电子商务":["2016级电商","2017级电商","2018级电商","2019级电商"]}}
d.users集合(只需创建,无需手动添加数据)
权限:所有用户可读,仅创建者可读写
e.百度地图API配置(自行百度):
在微信开发者工具中的form.js,getLocation函数中替换ak:
//form/form.js
// getLocation()
//…………
data: {
ak: '填写自己的百度地图实例的ak',
location: `${res.latitude},${res.longitude}`,
output: 'json'
},
//…………
开发人员
松哥一米九
bug反馈&学习交流
qq:1369268983
欢迎二次开发