From 27665c2186fdda7d94698b9868719a65a3bb5fd5 Mon Sep 17 00:00:00 2001
From: qubiaobiao <3294694717@qq.com>
Date: Fri, 9 Oct 2026 10:40:55 +0800
Subject: [PATCH] =?UTF-8?q?feat(admin):=20=E4=BD=9C=E5=93=81=E7=AE=A1?=
=?UTF-8?q?=E7=90=86=E6=96=B0=E5=A2=9E=E3=80=8C=E6=8F=90=E4=BA=A4=E7=8A=B6?=
=?UTF-8?q?=E6=80=81=E3=80=8D=E7=AD=9B=E9=80=89=EF=BC=88=E5=B7=B2=E6=8F=90?=
=?UTF-8?q?=E4=BA=A4=20/=20=E6=9C=AA=E6=8F=90=E4=BA=A4=EF=BC=89?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 工具栏新增「提交状态」下拉(已提交/未提交,clearable),class 与文案均与「成绩总览」同款逐字对齐
- 判据抽为单一真相源 isWorkSubmitted = (row.files||[]).length > 0,同时供表格「未提交」文案 / 计数 / 筛选三处使用,杜绝列表与筛选打架
- filteredSubmissions 增加状态分支(先姓名后状态),分页与 total 自动联动
- 新增计数「共 N 人 · 已提交 X · 未提交 Y |当前筛选出 M 人」;批量下载按钮补 title 明示「下载全组、不受筛选影响」
- 线上验证:R87 已部署(入口 index-Dhsp29Gt.js,gzip_static 命中 CL=106660,旧入口 404)
---
src/views/Admin.vue | 27 +++++++++++++++++++++++++++
1 file changed, 27 insertions(+)
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; }