diff --git a/apps/admin/package.json b/apps/admin/package.json index cabe77b..2c7b3a8 100644 --- a/apps/admin/package.json +++ b/apps/admin/package.json @@ -52,6 +52,7 @@ "pinyin-pro": "^3.28.0", "quill-toolbar-tip": "^0.1.0", "tailwind-merge": "3.4.0", + "typeit": "^8.8.7", "v-scale-screen": "^2.3.0", "vue": "3.5.26", "vue-draggable-plus": "0.6.0", diff --git a/apps/admin/src/components/custom/typeit/index.vue b/apps/admin/src/components/custom/typeit/index.vue new file mode 100644 index 0000000..261ac00 --- /dev/null +++ b/apps/admin/src/components/custom/typeit/index.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/apps/admin/src/service/api/game.ts b/apps/admin/src/service/api/game.ts index a4cd105..776e100 100644 --- a/apps/admin/src/service/api/game.ts +++ b/apps/admin/src/service/api/game.ts @@ -95,3 +95,11 @@ export function fetchGetCurrentQuestionByRoomID(RoomID: number) { }, }) } + +/** 根据QuestionDetaiID查询题目详情 */ +export function fetchGetQuestionDetailByID(QuestionDetailID: number) { + return request>({ + url: `/Base/ActivityMain/GetQuestionListDetailByID/?QuestionID=${QuestionDetailID}`, + method: 'get', + }) +} diff --git a/apps/admin/src/service/api/rank.ts b/apps/admin/src/service/api/rank.ts index 6307511..b3c5401 100644 --- a/apps/admin/src/service/api/rank.ts +++ b/apps/admin/src/service/api/rank.ts @@ -1,10 +1,25 @@ import { request } from '../request' /** get user list */ -export function fetchRankList(data?: Api.Rank.UserSearchParams) { +export function fetchRankList(MainID: number, RoundType = 0) { return request({ - url: '/admin/v1/class/pagelist', - method: 'post', - data: data || {}, + url: `/Base/ActivityMain/GetTeamsTotal/list?MainID=${MainID}&RoundType=${RoundType}`, + method: 'get', + }) +} + +/** 获取队伍排名详情 */ +export function fetchRankDetail(MainID: number, RoundType = 0) { + return request({ + url: `/Base/ActivityMain/GetTeamsTotal?MainID=${MainID}&RoundType=${RoundType}`, + method: 'get', + }) +} + +/** 根据队伍 id获取具体的题目分数 */ +export function fetchTeamQuestionScore(TeamID: number) { + return request({ + url: `/Base/ActivityMain/GetTeamQuestionUseByTeamID?TeamID=${TeamID}`, + method: 'get', }) } diff --git a/apps/admin/src/service/api/result.ts b/apps/admin/src/service/api/result.ts index 659cbb5..52ffe83 100644 --- a/apps/admin/src/service/api/result.ts +++ b/apps/admin/src/service/api/result.ts @@ -10,19 +10,10 @@ export function updateCurrentQuestionUse(TeamGroupID: number) { } /** 评委对其进行打分 */ -export function updateScore(Id: number, ResultPotins: number) { +export function updateScore(data: { Id: number, ResultPotins: number, QuestionDetailID: number, QuestionId: number }[]) { return request({ - url: `/Base/ActivityMain/UpdateTeamQuestionUseOne?Id=${Id}&ResultPotins=${ResultPotins}`, + url: `/Base/ActivityMain/UpdateTeamQuestionResultList`, 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 }, + data, }) } diff --git a/apps/admin/src/typings/api/Competition.d.ts b/apps/admin/src/typings/api/Competition.d.ts index 559f66d..a05de65 100644 --- a/apps/admin/src/typings/api/Competition.d.ts +++ b/apps/admin/src/typings/api/Competition.d.ts @@ -105,6 +105,7 @@ declare namespace Api { IsGood: number Image: string ImageUrl: string + Answer: string } /** get current question params */ @@ -203,6 +204,7 @@ declare namespace Api { Point: number /** 题目详情 id */ QuestionDetailID: number + QuestionDetaiID: number /** 题目 id */ QuestionID: number /** 题目规则 */ @@ -219,6 +221,8 @@ declare namespace Api { TeamList: any[] /** 宽度 */ Width: number + ActivityID: number + Answer: string } /** update room request */ @@ -299,6 +303,10 @@ declare namespace Api { Points: number ResultPotins: number Status: number + // 兼容字段(用于兜底) + AnswerValuePicture?: string + Guid?: string + QuestionDetaiID: number | null } interface QuestionListRecord { diff --git a/apps/admin/src/typings/components.d.ts b/apps/admin/src/typings/components.d.ts index f18ee90..e1b160d 100644 --- a/apps/admin/src/typings/components.d.ts +++ b/apps/admin/src/typings/components.d.ts @@ -28,6 +28,7 @@ declare module 'vue' { 'IconIc:baselineArrowRightAlt': typeof import('~icons/ic/baseline-arrow-right-alt')['default'] 'IconIc:baselineDeleteForever': typeof import('~icons/ic/baseline-delete-forever')['default'] 'IconIc:roundPublish': typeof import('~icons/ic/round-publish')['default'] + 'IconIc:twotoneRule': typeof import('~icons/ic/twotone-rule')['default'] IconIcBaselineAdd: typeof import('~icons/ic/baseline-add')['default'] IconIcBaselineAddPlus: typeof import('~icons/ic/baseline-add-plus')['default'] IconIcBaselineArrowBack: typeof import('~icons/ic/baseline-arrow-back')['default'] @@ -48,6 +49,7 @@ declare module 'vue' { IconIcBaselineSettingsBackupRestore: typeof import('~icons/ic/baseline-settings-backup-restore')['default'] IconIcBaselineUpload: typeof import('~icons/ic/baseline-upload')['default'] IconIcBaselineUploadFile: typeof import('~icons/ic/baseline-upload-file')['default'] + IconIcCarbonUserAvatarFilledAlt: typeof import('~icons/ic/carbon-user-avatar-filled-alt')['default'] IconIcOutlineAccessTime: typeof import('~icons/ic/outline-access-time')['default'] IconIcOutlineAddToPhotos: typeof import('~icons/ic/outline-add-to-photos')['default'] IconIcOutlineArchive: typeof import('~icons/ic/outline-archive')['default'] @@ -174,6 +176,7 @@ declare module 'vue' { TableHeaderOperation: typeof import('./../components/advanced/table-header-operation.vue')['default'] ThemeSchemaSwitch: typeof import('./../components/common/theme-schema-switch.vue')['default'] TianZiGe: typeof import('./../components/custom/user/TianZiGe.vue')['default'] + Typeit: typeof import('./../components/custom/typeit/index.vue')['default'] UpFileDialog: typeof import('./../components/common/rest-basic-editor/components/up-file-dialog.vue')['default'] WangEditor: typeof import('./../components/common/wang-editor.vue')['default'] WaveBg: typeof import('./../components/custom/wave-bg.vue')['default'] @@ -198,6 +201,7 @@ declare global { const 'IconIc:baselineArrowRightAlt': typeof import('~icons/ic/baseline-arrow-right-alt')['default'] const 'IconIc:baselineDeleteForever': typeof import('~icons/ic/baseline-delete-forever')['default'] const 'IconIc:roundPublish': typeof import('~icons/ic/round-publish')['default'] + const 'IconIc:twotoneRule': typeof import('~icons/ic/twotone-rule')['default'] const IconIcBaselineAdd: typeof import('~icons/ic/baseline-add')['default'] const IconIcBaselineAddPlus: typeof import('~icons/ic/baseline-add-plus')['default'] const IconIcBaselineArrowBack: typeof import('~icons/ic/baseline-arrow-back')['default'] @@ -218,6 +222,7 @@ declare global { const IconIcBaselineSettingsBackupRestore: typeof import('~icons/ic/baseline-settings-backup-restore')['default'] const IconIcBaselineUpload: typeof import('~icons/ic/baseline-upload')['default'] const IconIcBaselineUploadFile: typeof import('~icons/ic/baseline-upload-file')['default'] + const IconIcCarbonUserAvatarFilledAlt: typeof import('~icons/ic/carbon-user-avatar-filled-alt')['default'] const IconIcOutlineAccessTime: typeof import('~icons/ic/outline-access-time')['default'] const IconIcOutlineAddToPhotos: typeof import('~icons/ic/outline-add-to-photos')['default'] const IconIcOutlineArchive: typeof import('~icons/ic/outline-archive')['default'] @@ -344,6 +349,7 @@ declare global { const TableHeaderOperation: typeof import('./../components/advanced/table-header-operation.vue')['default'] const ThemeSchemaSwitch: typeof import('./../components/common/theme-schema-switch.vue')['default'] const TianZiGe: typeof import('./../components/custom/user/TianZiGe.vue')['default'] + const Typeit: typeof import('./../components/custom/typeit/index.vue')['default'] const UpFileDialog: typeof import('./../components/common/rest-basic-editor/components/up-file-dialog.vue')['default'] const WangEditor: typeof import('./../components/common/wang-editor.vue')['default'] const WaveBg: typeof import('./../components/custom/wave-bg.vue')['default'] diff --git a/apps/admin/src/views/dictionary/modules/DictionaryTypeModal.vue b/apps/admin/src/views/dictionary/modules/DictionaryTypeModal.vue index df3d578..d00ff51 100644 --- a/apps/admin/src/views/dictionary/modules/DictionaryTypeModal.vue +++ b/apps/admin/src/views/dictionary/modules/DictionaryTypeModal.vue @@ -61,7 +61,7 @@ watch(() => props.visible, (val) => { const columns: DataTableColumns = [ { title: 'ID', key: 'ID', width: 80 }, { title: '键 (Key)', key: 'UI_Key' }, - { title: '值 (Value)', key: 'UI_Value' }, + { title: '值 (Value)', key: 'UI_Value', width: 100 }, { title: '备注', key: 'BakValue' }, { title: '操作', diff --git a/apps/admin/src/views/rank/rank-detail/index.vue b/apps/admin/src/views/rank/rank-detail/index.vue index 9b20d15..c89832d 100644 --- a/apps/admin/src/views/rank/rank-detail/index.vue +++ b/apps/admin/src/views/rank/rank-detail/index.vue @@ -1,14 +1,22 @@ @@ -118,11 +201,7 @@ function updateScore(team: TeamData, key: string, value: number | null) {
- + @@ -133,12 +212,8 @@ function updateScore(team: TeamData, key: string, value: number | null) {
diff --git a/apps/admin/src/views/rank/rank-detail/modules/team-item.vue b/apps/admin/src/views/rank/rank-detail/modules/team-item.vue index a396c01..2467451 100644 --- a/apps/admin/src/views/rank/rank-detail/modules/team-item.vue +++ b/apps/admin/src/views/rank/rank-detail/modules/team-item.vue @@ -11,7 +11,7 @@ interface TeamData { totalScore: number updateTime: string isExpanded: boolean - scores: Record + scores: Record } const props = defineProps<{ @@ -59,14 +59,14 @@ const rankStyle = computed(() => {
-
+ -
+
@@ -96,16 +96,16 @@ const rankStyle = computed(() => {
- +
- Q{{ i }} SCORE - / 10 + {{ item.questionId }}-Q{{ index + 1 }} SCORE +
diff --git a/apps/admin/src/views/rank/rank-detail/modules/team-list-header.vue b/apps/admin/src/views/rank/rank-detail/modules/team-list-header.vue index c319ef2..7ad834b 100644 --- a/apps/admin/src/views/rank/rank-detail/modules/team-list-header.vue +++ b/apps/admin/src/views/rank/rank-detail/modules/team-list-header.vue @@ -1,5 +1,4 @@