写点什么

从 0 到 1:可自定义数据列的成绩查询小程序开发笔记

作者:CC同学
  • 2023-05-04
    广东
  • 本文字数:1526 字

    阅读完需:约 5 分钟

背景

成绩发布与查询小程序作为成绩管理的一个工具,用户可以通过小程序随时按条件(可自定义)查询各科成绩(可自定义)。另外,成绩查询小程序还提供新闻资讯,用户可以及时了解学校各种活动,以免错过重大通知。校方或者老师可以在后台登录系统,录入考生的成绩信息,并可以自定义多个考试科目,自定义查询条件,支持多个查询条件组合等。

主要功能规划

项目立项规划了如下功能:通知公告,成绩列表,多条件成绩查询,成绩分享,后台 Excel 批量录入成绩,后台批量导出成绩,后台自定义成绩科目,后台自定义查询条件等功能。



数据库设计

SheetModel.DB_STRUCTURE = {	_pid: 'string|true',	SHEET_ID: 'string|true',
SHEET_TITLE: 'string|true|comment=标题', SHEET_STATUS: 'int|true|default=1|comment=状态 0=未启用,1=使用中',
SHEET_CATE_ID: 'string|true|default=0|comment=分类', SHEET_CATE_NAME: 'string|false|comment=分类冗余',
SHEET_ORDER: 'int|true|default=9999', SHEET_VOUCH: 'int|true|default=0',
SHEET_FORMS: 'array|true|default=[]', SHEET_OBJ: 'object|true|default={}', SHEET_QR: 'string|false', SHEET_VIEW_CNT: 'int|true|default=0', SHEET_DATA_CNT: 'int|true|default=0',
SHEET_ADD_TIME: 'int|true', SHEET_EDIT_TIME: 'int|true', SHEET_ADD_IP: 'string|false', SHEET_EDIT_IP: 'string|false',};SheetDataModel.DB_STRUCTURE = { _pid: 'string|true', SHEET_DATA_ID: 'string|true', SHEET_DATA_SHEET_ID: 'string|true|comment=FK', SHEET_DATA_SHEET_TITLE: 'string|false',
SHEET_DATA_FORMS: 'array|true|default=[]',
SHEET_DATA_ADD_TIME: 'int|true', SHEET_DATA_EDIT_TIME: 'int|true', SHEET_DATA_ADD_IP: 'string|false', SHEET_DATA_EDIT_IP: 'string|false',};
复制代码

核心实现

/** 浏览信息 */	async viewSheet(id) {
let fields = '*';
let where = { _id: id, SHEET_STATUS: SheetModel.STATUS.COMM } let sheet = await SheetModel.getOne(where, fields); if (!sheet) return null;
SheetModel.inc(id, 'SHEET_VIEW_CNT', 1);


return sheet; }

/** 取得分页列表 */ async getSheetList({ cateId, //分类查询条件 search, // 搜索条件 sortType, // 搜索菜单 sortVal, // 搜索菜单 orderBy, // 排序 page, size, isTotal = true, oldTotal }) {
orderBy = orderBy || { 'SHEET_ORDER': 'asc', 'SHEET_ADD_TIME': 'desc' }; let fields = 'SHEET_QR,SHEET_ADD_TIME,SHEET_OBJ,SHEET_VIEW_CNT,SHEET_TITLE,SHEET_ORDER,SHEET_STATUS,SHEET_CATE_NAME';
let where = {}; where.and = { _pid: this.getProjectId() //复杂的查询在此处标注PID }; if (cateId && cateId !== '0') where.and.SHEET_CATE_ID = cateId;
where.and.SHEET_STATUS = SheetModel.STATUS.COMM; // 状态
if (util.isDefined(search) && search) { where.or = [{ SHEET_TITLE: ['like', search] },]; } else if (sortType && util.isDefined(sortVal)) { // 搜索菜单 switch (sortType) { case 'cateId': { if (sortVal) where.and.SHEET_CATE_ID = String(sortVal); break; } case 'sort': { orderBy = this.fmtOrderBySort(sortVal, 'SHEET_ADD_TIME'); break; }
} } return await SheetModel.getList(where, fields, orderBy, page, size, isTotal, oldTotal); }

复制代码


用户端 UI 设计






管理端 UI 设计










源码

https://gitee.com/shiyan-of-jiaotong-university/SmartScore

用户头像

CC同学

关注

CC同学的小程序开发笔记 2021-06-13 加入

大鹅厂的小小程序媛,vx: cclinux0730

评论

发布
暂无评论
从0到1:可自定义数据列的成绩查询小程序开发笔记_CC同学_InfoQ写作社区