背景
问题公布与查问小程序作为问题治理的一个工具,用户能够通过小程序随时按条件(可自定义)查问各科问题(可自定义)。另外,问题查问小程序还提供新闻资讯,用户能够及时理解学校各种流动,免得错过重大告诉。校方或者老师能够在后盾登录零碎,录入考生的问题信息,并能够自定义多个考试科目,自定义查问条件,反对多个查问条件组合等。
次要性能布局
我的项目立项布局了如下性能:告诉布告,问题列表,多条件问题查问,问题分享,后盾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源码地址