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 }}
+ |当前筛选出 {{ filteredSubmissions.length }} 人
+
@@ -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; }