배경
점수 공개 및 조회 애플릿은 점수 관리를 위한 도구입니다. 사용자는 애플릿을 사용하여 조건에 따라 언제든지 다양한 과목의 점수를 조회할 수 있습니다(사용자 정의 가능). 또한 점수 쿼리 애플릿은 뉴스 정보도 제공하므로 사용자는 중요한 공지 사항을 놓치지 않고 다양한 학교 활동을 확인할 수 있습니다. 학교나 교사는 백그라운드에서 시스템에 로그인하여 응시자의 점수 정보를 입력하고, 여러 시험 과목을 사용자 정의하고, 쿼리 조건을 사용자 정의하고, 여러 쿼리 조건 조합을 지원할 수 있습니다.
주요 기능 기획
프로젝트에서는 알림 및 공지, 점수 목록, 다중 조건 점수 쿼리, 점수 공유, 백엔드 Excel 일괄 점수 입력, 백엔드 일괄 점수 내보내기, 백엔드 사용자 지정 점수 항목, 백엔드 사용자 지정 쿼리 조건 및 기타 기능을 계획했습니다.
데이터베이스 설계
`SheetModel.DB_STRUCTURE = { _pid: '문자열|true', SHEET_ID: '문자열|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 디자인
소스 코드
Linus는 커널 개발자가 탭을 공백으로 대체하는 것을 막기 위해 스스로 노력했습니다. 그의 아버지는 코드를 작성할 수 있는 몇 안되는 리더 중 한 명이고, 둘째 아들은 오픈 소스 기술 부서의 책임자이며, 막내 아들은 오픈 소스 코어입니다. 기고자 Robin Li: 자연 언어 는 새로운 범용 프로그래밍 언어가 될 것입니다. 오픈 소스 모델은 Huawei에 비해 점점 더 뒤쳐질 것입니다 . 일반적으로 사용되는 5,000개의 모바일 애플리케이션을 Hongmeng으로 완전히 마이그레이션하는 데 1년이 걸릴 것입니다. 타사 취약점. 기능, 안정성 및 개발자의 경험이 크게 개선된 Quill 2.0 이 출시되었습니다. Ma Huateng과 Zhou Hongyi는 "원한을 제거하기 위해" 공식적으로 출시되었습니다. Laoxiangji의 소스는 코드가 아닙니다. Google이 대규모 구조 조정을 발표한 이유는 매우 훈훈합니다.
{{o.이름}}
{{이름}}