mobile app chat contest_detail exam_detail exam_list themes
This commit is contained in:
@@ -379,6 +379,7 @@ async function loadExams() {
|
||||
const statusText = e.status === 'available' ? '进行中' : '已关闭';
|
||||
const subCount = e.submission_count !== null ? `<span class="text-xs text-slate-400 ml-2">${e.submission_count}人提交</span>` : '';
|
||||
const removeBtn = isOwner ? `<button onclick="removeExam(${e.id}, '${escapeHtml(e.title)}')" class="ml-2 px-2 py-1 text-xs text-red-600 border border-red-300 rounded hover:bg-red-50">移除</button>` : '';
|
||||
const toggleBtn = isOwner ? (e.status === 'available' ? `<button onclick="toggleExamStatus(${e.id}, 'closed')" class="ml-2 px-2 py-1 text-xs text-orange-600 border border-orange-300 rounded hover:bg-orange-50">关闭考试</button>` : `<button onclick="toggleExamStatus(${e.id}, 'available')" class="ml-2 px-2 py-1 text-xs text-green-600 border border-green-300 rounded hover:bg-green-50">开放考试</button>`) : '';
|
||||
html += `<div class="flex items-center justify-between p-3 border border-slate-200 rounded-lg hover:bg-slate-50">
|
||||
<div class="flex-1 min-w-0">
|
||||
<div class="flex items-center gap-2">
|
||||
@@ -391,7 +392,7 @@ async function loadExams() {
|
||||
<div class="flex items-center gap-2 ml-3 shrink-0">
|
||||
<a href="/exams/${e.id}" class="px-3 py-1 text-xs font-medium text-cyan-400 border border-primary rounded hover:bg-blue-50">进入考试</a>
|
||||
${isMember ? `<a href="/exams/${e.id}/submissions" class="px-3 py-1 text-xs font-medium text-amber-500 border border-amber-400 rounded hover:bg-amber-50">批改</a>` : ''}
|
||||
${removeBtn}
|
||||
${toggleBtn}${removeBtn}
|
||||
</div>
|
||||
</div>`;
|
||||
});
|
||||
@@ -415,6 +416,20 @@ async function removeExam(examId, title) {
|
||||
} catch(e) { alert('网络错误'); }
|
||||
}
|
||||
|
||||
// 切换考试状态(关闭/开放)
|
||||
function toggleExamStatus(examId, status) {
|
||||
const label = status === 'closed' ? '关闭' : '开放';
|
||||
if (!confirm(`确定${label}该考试?`)) return;
|
||||
fetch(`/api/exams/${examId}/status`, {
|
||||
method: 'POST',
|
||||
headers: {'Content-Type': 'application/json'},
|
||||
body: JSON.stringify({ status: status })
|
||||
}).then(r => r.json()).then(data => {
|
||||
if (data.success) { loadExams(); }
|
||||
else { alert(data.message); }
|
||||
}).catch(() => alert('操作失败'));
|
||||
}
|
||||
|
||||
// 导入考试弹窗
|
||||
function showImportModal() {
|
||||
document.getElementById('import-exam-modal').classList.remove('hidden');
|
||||
|
||||
Reference in New Issue
Block a user