feat(admin): 支持模板页码和题目类型细分,优化评分界面

- 在模板详情页添加页码(PageNo)字段,支持模板按页管理
- 将汉字听写和成语题型细分为多个子类型,提升题目分类精度
- 重构结果详情页的评分界面,区分客观题(网格布局)和主观题(分屏布局)
- 添加AI评分推荐和人工校准功能,支持分数手动调整和快捷打分
- 实现活动复制功能,优化题目排序逻辑和界面间距
- 新增评委打分和状态更新接口,完善评分数据持久化机制
This commit is contained in:
2026-03-03 18:10:44 +08:00
parent 94af0bec6a
commit ed3c815cd7
14 changed files with 452 additions and 207 deletions

View File

@ -2,7 +2,7 @@
import { NButton, NGi, NGrid, NSpace } from 'naive-ui'
import { computed, onMounted, ref } from 'vue'
import { useRouterPush } from '@/hooks/common/router'
import { fetchDeleteActivity, fetchGetActivityList } from '@/service/api/competition'
import { fetchCopyActivity, fetchDeleteActivity, fetchGetActivityList } from '@/service/api/competition'
import { useAppStore } from '@/store/modules/app'
import CompetitionAddModal from '../competition-add/index.vue'
@ -21,9 +21,23 @@ function handleAdd() {
showAddModal.value = true
}
function handleCopy(item: Api.Competition.CompetitionItem) {
async function handleCopy(item: Api.Competition.CompetitionItem) {
// TODO: 实现复制逻辑
try {
const { error } = await fetchCopyActivity(item.Id)
if (error) {
window.$message?.error(error.message || '复制失败')
return
}
}
catch (e) {
console.error(e)
window.$message?.error('复制失败')
return
}
window.$message?.success(`已复制活动:${item.Name}`)
// 刷新列表
fetchActivityList()
}
function handleDelete(item: Api.Competition.CompetitionItem) {