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 }} + + @@ -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; }