From c902c4ccd8d7c2b7c81746c53f03f60367fe6ab4 Mon Sep 17 00:00:00 2001 From: darkclip Date: Fri, 29 May 2026 02:37:56 +0800 Subject: [PATCH] update --- main.py | 63 +++++++++++++++++++++--------------------------- score_system.db | Bin 69632 -> 61440 bytes 2 files changed, 28 insertions(+), 35 deletions(-) diff --git a/main.py b/main.py index 3541188..d3b1fca 100644 --- a/main.py +++ b/main.py @@ -39,7 +39,7 @@ async def require_admin(request: Request): return payload -app = FastAPI(title='文艺汇演评分系统', description='乌鲁木齐群众文化艺术展评') +app = FastAPI() app.add_middleware( CORSMiddleware, @@ -102,6 +102,28 @@ def init_db(): ('admin_001', 'admin', 'admin123', datetime.now()), ) + cursor.execute("SELECT COUNT(*) FROM settings WHERE key = 'main_title'") + if cursor.fetchone()[0] == 0: + cursor.execute( + "INSERT INTO settings (key, value) VALUES ('main_title', '文化艺术展评'), ('sub_title', '文艺汇演')" + ) + + cursor.execute('SELECT COUNT(*) FROM batches') + if cursor.fetchone()[0] == 0: + batches_data = [] + cursor.executemany( + 'INSERT INTO batches (name, created_at) VALUES (?, ?)', + batches_data, + ) + + cursor.execute('SELECT COUNT(*) FROM judges') + if cursor.fetchone()[0] == 0: + judges_data = [] + cursor.executemany( + 'INSERT INTO judges (id, name, order_num, created_at) VALUES (?, ?, ?, ?)', + judges_data, + ) + cursor.execute("SELECT COUNT(*) FROM settings WHERE key = 'award_first'") if cursor.fetchone()[0] == 0: cursor.execute( @@ -114,37 +136,6 @@ def init_db(): "INSERT INTO settings (key, value) VALUES ('award_first_name', '一等奖'), ('award_second_name', '二等奖'), ('award_third_name', '三等奖')" ) - cursor.execute("SELECT COUNT(*) FROM settings WHERE key = 'main_title'") - if cursor.fetchone()[0] == 0: - cursor.execute( - "INSERT INTO settings (key, value) VALUES ('main_title', '乌鲁木齐群众文化艺术展评'), ('sub_title', '“建农杯”文艺汇演')" - ) - - cursor.execute('SELECT COUNT(*) FROM batches') - if cursor.fetchone()[0] == 0: - cursor.execute( - 'INSERT INTO batches (name, created_at) VALUES (?, ?)', - ('第一批次', datetime.now()), - ) - cursor.execute( - 'INSERT INTO batches (name, created_at) VALUES (?, ?)', - ('第二批次', datetime.now()), - ) - - cursor.execute('SELECT COUNT(*) FROM judges') - if cursor.fetchone()[0] == 0: - judges_data = [ - ('P.01', '王飞翔', 1, datetime.now()), - ('P.02', '冯建农', 2, datetime.now()), - ('P.03', '张宁', 3, datetime.now()), - ('P.04', '沈澜涛', 4, datetime.now()), - ('P.05', '龚楠', 5, datetime.now()), - ] - cursor.executemany( - 'INSERT INTO judges (id, name, order_num, created_at) VALUES (?, ?, ?, ?)', - judges_data, - ) - init_db() @@ -303,8 +294,8 @@ async def get_title_settings(): ) titles = {row['key']: row['value'] for row in cursor.fetchall()} return { - 'main_title': titles.get('main_title', '乌鲁木齐群众文化艺术展评'), - 'sub_title': titles.get('sub_title', '“建农杯”文艺汇演'), + 'main_title': titles.get('main_title', ''), + 'sub_title': titles.get('sub_title', ''), } @@ -1769,7 +1760,7 @@ HTML_TEMPLATE = """ async function renderAdminScoringTable() { if(!judgesData.length || !programsData.length){ - document.getElementById('adminScoringContainer').innerHTML = '
加载中...
'; + document.getElementById('adminScoringContainer').innerHTML = '
缺少评委或节目数据
'; return; } const snList = programsData.map(p => p.sn); @@ -2053,6 +2044,7 @@ HTML_TEMPLATE = """ const category = document.getElementById('programCategory').value; const batch_id = parseInt(document.getElementById('programBatchId').value); if(!sn||!name){ showToast('请填写节目编号和名称'); return; } + if(!batch_id){ showToast('请先添加批次'); return; } let res; if(editingProgramSn){ res = await fetch(`/api/programs/${editingProgramSn}`, { @@ -2097,6 +2089,7 @@ HTML_TEMPLATE = """ const file = document.getElementById('importFile').files[0]; if(!file){ showToast('请选择Excel文件'); return; } const batch_id = document.getElementById('importBatchId').value; + if(!batch_id){ showToast('请先添加批次'); return; } const formData = new FormData(); formData.append('file', file); const res = await fetch(`/api/programs/import?batch_id=${batch_id}`, { diff --git a/score_system.db b/score_system.db index 5b43bd99d54849453ce9d782c39111524ed346aa..0a2af86712460c53cd9ddc1cb4e072e89bcbe9e1 100644 GIT binary patch delta 512 zcmZozz|!!5d4e=669WSS|3n3QMy8DkOZb@>1U3sEc*Z|*fe0HfPzE=b3sn}4i>8+p z*-Z;R@$(s38Jk;~8tNIFo0}UMZQ8)5AY{tGf1m#-{}%p5{1f<#_=EXPHwy~L@+-)2 zFzd=EmM0da#Fu1b0?E9@+|(yKI-jrYe7ba+Ec@gM_vIMbCa=FQThGd@EQqAi&_IBN zS(P6mQk{jn1TNa|2+P~{2d(poB50RKk+{SIy{N87c_&C#wLnDvDMXgaWWGW?p7_M!3tF Lc$pPB5v~OQocE>I literal 69632 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