Hintergrund
Das Partiturfreigabe- und Abfrage-Applet ist ein Tool zur Partiturverwaltung. Benutzer können mit dem Applet jederzeit die Partituren verschiedener Fächer (anpassbar) nach Bedingungen abfragen (anpassbar). Darüber hinaus stellt das Notenabfrage-Applet auch Nachrichteninformationen bereit, sodass Benutzer über verschiedene Schulaktivitäten auf dem Laufenden bleiben können, um wichtige Ankündigungen nicht zu verpassen. Schulen oder Lehrer können sich im Hintergrund beim System anmelden, die Bewertungsinformationen der Kandidaten eingeben, mehrere Testpersonen anpassen, Abfragebedingungen anpassen und mehrere Kombinationen von Abfragebedingungen unterstützen.
Hauptfunktionsplanung
Das Projekt hat die folgenden Funktionen geplant: Benachrichtigungen und Ankündigungen, Bewertungslisten, Bewertungsabfrage mit mehreren Bedingungen, gemeinsame Nutzung von Bewertungen, Backend-Excel-Batcheingabe von Bewertungen, Backend-Batchexport von Bewertungen, benutzerdefinierte Backend-Bewertungssubjekte, benutzerdefinierte Backend-Abfragebedingungen und andere Funktionen.
Datenbank Design
`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',
}; `
Kernimplementierung
`/** Informationen durchsuchen*/ 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);
}
`
Design der Client-Benutzeroberfläche
Design der Management-Benutzeroberfläche