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

背景

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

主要功能规划

项目立项规划了如下功能:通知公告,成绩列表,多条件成绩查询,成绩分享,后台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设计

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

源码

git源码地址

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值