背景
スコアリリースおよびクエリアプレットは、アプレットを使用して、条件に応じていつでもさまざまな科目(カスタマイズ可能)のスコアをクエリできます(カスタマイズ可能)。さらに、スコア クエリ アプレットはニュース情報も提供するため、ユーザーは重要な発表を見逃さないように、学校のさまざまな活動を常に把握できます。学校や教師はバックグラウンドでシステムにログインし、受験者のスコア情報を入力したり、複数の試験科目をカスタマイズしたり、クエリ条件をカスタマイズしたり、複数のクエリ条件の組み合わせをサポートしたりできます。
主要機能計画
このプロジェクトでは、通知とアナウンス、スコア リスト、複数条件のスコア クエリ、スコアの共有、バックエンド 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デザイン
ソースコード
ライナスは、カーネル開発者がタブをスペースに置き換えるのを防ぐことに自ら取り組みました。 彼の父親はコードを書くことができる数少ないリーダーの 1 人であり、次男はオープンソース テクノロジー部門のディレクターであり、末息子はオープンソース コアです。寄稿者Robin Li: 自然言語 は 新しいユニバーサル プログラミング言語になるでしょう。オープン ソース モデルは Huawei にますます後れをとっていきます 。一般的に使用されている 5,000 のモバイル アプリケーションを Honmeng に完全に移行するには 1 年かかります。 リッチテキスト エディタ Quill 2.0 が リリースされ、機能、信頼性、開発者は「恨みを取り除く 」 ために握手を交わしました。 Laoxiangji のソースはコードではありませんが、その背後にある理由は非常に心温まるものです。Googleは大規模な組織再編を発表しました。
{{名前}}
{{名前}}