qubiaobiao 680faacd1d feat(admin): 成绩管理 Tab 分区 + 作品管理移除中职/高职 + 分页最小档补 5
R80 三项 UI 改造(单文件 src/views/Admin.vue,+78/-37):

1. 作品管理:移除「中职组 / 高职组」两个选项 —— 这两组已取消 Word 作品上传,
   留着会让人误以为可以下载到作品。顺带清掉因此变成恒真的死判据
   v-if="submissionGroup === 'benke' || submissionGroup === 'jiaoshi'"(批量下载作品按钮)。
   后端 getWorks 仍支持 4 组,保留兼容不删。

2. 分页:9 处 page-sizes 统一补最小 5 档([5,10,20,50];账号管理 [5,10,20,50,100])。
   试卷管理 3 处原本已是 5 档,无需改。动因:成绩管理表体量大、翻页粒度需要更细。

3. 成绩管理:由「一段纵向长页」改为「顶栏 + 三页签」——
   - 顶栏只留组别级动作:组别选择 / 发布·撤回成绩 / 导出Excel / 批量下载作品
   - 表级筛选(姓名 / 提交状态 / 日期范围)下沉到「成绩总览」页签,
     否则切到别的页签时筛选框仍在,会造成「筛的是哪张表」的歧义
   - el-tabs:成绩总览(始终)/ 考生答题记录(仅中职、高职)/ 考生大题作答查证(同上)
   - 大题作答详情 el-dialog 放在 el-tabs 之外:留在页签内会随 v-if 卸载而销毁弹窗状态

   🔴 唯一高危边界:activeScoreTab 停在后两个页签时切到本科/教师,两个页签 v-if 消失
   ⇒ el-tabs 无 active 内容 ⇒ 页签栏在、内容区全空(白屏)。治法:在
   watch(scoreExportGroup) 内复位为 'overview' —— 用 watch 而非 onScoreGroupChange,
   因为 watch 默认 pre-flush 会在组件重渲染之前执行,不会先闪一帧空白。

验证:verify_frontend_tdz PASS(activeScoreTab 声明顺序,本页历史真炸过的坑)·
@vue/compiler-sfc parse/compileTemplate 0 错 · ui-runtime-check 真 chromium 17 步 17/17 PASS。
变异自证 2 轮:恢复中职/高职选项 ⇒ expectNoText 2 项变红;拆掉切组复位 ⇒ 切本科组后
expectText("提交状态") 命中 0 处变红。
2026-10-08 15:19:50 +08:00
2026-08-17 12:25:42 +08:00
2026-08-17 12:25:42 +08:00
Description
No description provided
1.6 MiB
Languages
Vue 77.3%
JavaScript 20.9%
CSS 1.5%
HTML 0.3%