diff --git a/apps/admin/src/enum/business.ts b/apps/admin/src/enum/business.ts index 2d74431..147dee4 100644 --- a/apps/admin/src/enum/business.ts +++ b/apps/admin/src/enum/business.ts @@ -16,9 +16,11 @@ export enum QuestionType { } export enum QuestionCategoryEnum { - ChineseCharacterDictation = 'ChineseCharacterDictation', // 汉字听写-提示 (jiu) + ChineseCharacterDictation1 = 'ChineseCharacterDictation1', // 汉字听写-提示 (jiu表示小鸟的叫声) + ChineseCharacterDictation2 = 'ChineseCharacterDictation2', // 根据拼音写汉字-提示 (tang) CharacterRadicalAddition = 'CharacterRadicalAddition', // 汉字加一加 (车) WordDictation = 'WordDictation', // 词语听写 (zhi re) - IdiomWriting = 'IdiomWriting', // 成语-文字要求 (反义字) + IdiomWriting1 = 'IdiomWriting1', // 成语-文字要求 (反义字) + IdiomWriting2 = 'IdiomWriting2', // 成语-文字要求 (看图写成语) PoetryComprehension = 'PoetryComprehension', // 诗词理解-选择题 } diff --git a/apps/admin/src/service/api/competition.ts b/apps/admin/src/service/api/competition.ts index 75caa80..042aa9d 100644 --- a/apps/admin/src/service/api/competition.ts +++ b/apps/admin/src/service/api/competition.ts @@ -58,7 +58,7 @@ export function fetchCreateQuestion(data: Api.Competition.CreateQuestionRequest[ } /** 根据活动ID获取活动题目列表 */ -export function fetchGetQuestionList(id: string) { +export function fetchGetQuestionList(id: number) { return request>({ url: `/Base/ActivityMain/GetActivity_QuestionByActivityID?ID=${id}`, method: 'get', @@ -140,3 +140,11 @@ export function fetchUpdatePublishStatus(id: number, status: number) { method: 'post', }) } + +/** 复制活动 */ +export function fetchCopyActivity(ActivityID: number) { + return request>({ + url: `/Base/ActivityMain/CopyActivity?ActivityID=${ActivityID}`, + method: 'post', + }) +} diff --git a/apps/admin/src/service/api/result.ts b/apps/admin/src/service/api/result.ts index 9833e34..659cbb5 100644 --- a/apps/admin/src/service/api/result.ts +++ b/apps/admin/src/service/api/result.ts @@ -8,3 +8,21 @@ export function updateCurrentQuestionUse(TeamGroupID: number) { data: { TeamGroupID }, }) } + +/** 评委对其进行打分 */ +export function updateScore(Id: number, ResultPotins: number) { + return request({ + url: `/Base/ActivityMain/UpdateTeamQuestionUseOne?Id=${Id}&ResultPotins=${ResultPotins}`, + method: 'post', + data: { Id, ResultPotins }, + }) +} + +/** 评委更新状态 (Correct/Wrong) */ +export function updateScoreStatus(Id: number, Status: number) { + return request({ + url: `/Base/ActivityMain/UpdateTeamQuestionUseOneStatus?Id=${Id}&Status=${Status}`, + method: 'post', + data: { Id, Status }, + }) +} diff --git a/apps/admin/src/typings/api/Competition.d.ts b/apps/admin/src/typings/api/Competition.d.ts index 4fbcc57..559f66d 100644 --- a/apps/admin/src/typings/api/Competition.d.ts +++ b/apps/admin/src/typings/api/Competition.d.ts @@ -38,13 +38,15 @@ declare namespace Api { type QuestionTimeType = 5 | 10 | 15 | 20 | 30 | 45 | 60 | 90 /** 5s | 10s | 15s | 20s | 30s | 45s | 60s | 90s */ /** question template id */ - type QuestionCategoryName = - | 'ChineseCharacterDictation' // 汉字听写-提示 (jiu) - | 'CharacterRadicalAddition' // 汉字加一加 (车) - | 'WordDictation' // 词语听写 (zhi re) - | 'IdiomWriting' // 成语-文字要求 (反义字) - // | 'TEMPLATE_IDIOM_IMAGE' // 成语-看图 - | 'PoetryComprehension' // 诗词理解-选择题 + type QuestionCategoryName = + | 'ChineseCharacterDictation1' // 汉字听写-提示 (jiu表示小鸟的叫声) + | 'ChineseCharacterDictation2' // 根据拼音写汉字-提示 (tang) + | 'CharacterRadicalAddition' // 汉字加一加 (车) + | 'WordDictation' // 词语听写 (zhi re) + | 'IdiomWriting1' // 成语-文字要求 (反义字) + | 'IdiomWriting2' // 成语-文字要求 (看图写成语) + // | 'TEMPLATE_IDIOM_IMAGE' // 成语-看图 + | 'PoetryComprehension' // 诗词理解-选择题 /** question score type */ type QuestionScoreType = 0 | 1 /** 固定分数 | 答题个数 */ diff --git a/apps/admin/src/typings/api/template.d.ts b/apps/admin/src/typings/api/template.d.ts index ee85fa4..2866e94 100644 --- a/apps/admin/src/typings/api/template.d.ts +++ b/apps/admin/src/typings/api/template.d.ts @@ -46,6 +46,8 @@ declare namespace Api { BackGroundUrl: string /** template content */ TempContent: string + /** page number */ + PageNo: string /** competition id */ CompetitionId?: number } diff --git a/apps/admin/src/views/competition/competition-add/index.vue b/apps/admin/src/views/competition/competition-add/index.vue index 7056837..8e8a177 100644 --- a/apps/admin/src/views/competition/competition-add/index.vue +++ b/apps/admin/src/views/competition/competition-add/index.vue @@ -163,7 +163,7 @@ async function submitForm() { }) // 根据 questionID 降序排序 (例如: 54455 -> 55544) - questionParams.sort((a, b) => Number(b.questionID) - Number(a.questionID)) + // questionParams.sort((a, b) => Number(b.questionID) - Number(a.questionID)) // 重新计算 questionIndex questionParams.forEach((item, index) => { diff --git a/apps/admin/src/views/competition/competition-add/modules/QuestionConfig.vue b/apps/admin/src/views/competition/competition-add/modules/QuestionConfig.vue index 5cf482f..9b0f2f8 100644 --- a/apps/admin/src/views/competition/competition-add/modules/QuestionConfig.vue +++ b/apps/admin/src/views/competition/competition-add/modules/QuestionConfig.vue @@ -186,7 +186,7 @@ defineExpose({ validate, reset }) -
+
55544) - flatQuestions.sort((a, b) => Number(b.QuestionID) - Number(a.QuestionID)) + // flatQuestions.sort((a, b) => Number(b.QuestionID) - Number(a.QuestionID)) // 重新计算 questionIndex flatQuestions.forEach((item, index) => { diff --git a/apps/admin/src/views/competition/competition-list/index.vue b/apps/admin/src/views/competition/competition-list/index.vue index 8f5ced3..ecbc4cb 100644 --- a/apps/admin/src/views/competition/competition-list/index.vue +++ b/apps/admin/src/views/competition/competition-list/index.vue @@ -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) { diff --git a/apps/admin/src/views/results/results-detail/index.vue b/apps/admin/src/views/results/results-detail/index.vue index 0ee5c3a..7fc6f37 100644 --- a/apps/admin/src/views/results/results-detail/index.vue +++ b/apps/admin/src/views/results/results-detail/index.vue @@ -1,14 +1,19 @@ +