diff --git a/src/views/Admin.vue b/src/views/Admin.vue index 1fd5d95..bbafb42 100644 --- a/src/views/Admin.vue +++ b/src/views/Admin.vue @@ -652,11 +652,23 @@ + + + + + + 批量下载作品 + + 共 {{ submissionStatusCount.total }} 人 · 已提交 {{ submissionStatusCount.submitted }} · 未提交 {{ submissionStatusCount.unsubmitted }} + + @@ -2851,6 +2863,16 @@ const submissionGroup = ref('benke') const submissionsPage = ref(1) const submissionsPageSize = ref(10) const submissionSearch = ref('') +const submissionStatusFilter = ref('') + +// 作品管理「已提交」判据的单一真相源 —— 与表格内「未提交」文案(row.files.length === 0)同源。 +const isWorkSubmitted = row => (row.files || []).length > 0 + +const submissionStatusCount = computed(() => { + const total = submissions.value.length + const submitted = submissions.value.filter(isWorkSubmitted).length + return { total, submitted, unsubmitted: total - submitted } +}) const filteredSubmissions = computed(() => { let list = submissions.value @@ -2858,6 +2880,10 @@ const filteredSubmissions = computed(() => { const s = submissionSearch.value.trim().toLowerCase() list = list.filter(item => (item.name || '').toLowerCase().includes(s)) } + if (submissionStatusFilter.value !== '') { + const wantSubmitted = submissionStatusFilter.value === 'true' + list = list.filter(item => isWorkSubmitted(item) === wantSubmitted) + } return list }) @@ -3808,6 +3834,7 @@ onMounted(() => { .score-input { width: 110px; } .preview-frame { width: 100%; height: 70vh; border: 0; background: #fff; } .preview-file-name { color: #303133; font-weight: 600; margin-bottom: 8px; } +.work-summary { color: #606266; font-size: 13px; margin-left: 8px; } /* ==================== 统计卡片 ==================== */ .stats-row { margin-bottom: 20px; }