feat(competition): 支持决赛环节并添加加时赛管理功能

- 扩展竞赛环节类型,支持决赛环节(RoundType=3)
- 新增加时赛创建功能,支持多分组队伍选择
- 添加题目库禁用/启用功能,支持批量操作
- 优化用户端竞赛流程,区分常规赛和加时赛
- 重构操作按钮组件,提高代码复用性
This commit is contained in:
2026-03-09 17:34:40 +08:00
parent 8469e16638
commit 11fb5481d3
22 changed files with 468 additions and 142 deletions

View File

@ -52,7 +52,7 @@ declare namespace Api {
type QuestionScoreType = 0 | 1 /** 固定分数 | 答题个数 */
/** competition round type */
type CompetitionRoundType = 0 | 1 /** 题包环节 | 加时环节 */
type CompetitionRoundType = 0 | 1 | 3 /** 题包环节 | 加时环节 | 决赛环节 */
/**
* competition publish status
@ -351,6 +351,7 @@ declare namespace Api {
id: number
/** 分组名称(兼容字段) */
name: string
RoundType: number
}
interface CreateQuestionRequest {
@ -380,6 +381,19 @@ declare namespace Api {
roundType: number
}
interface AddExtraTimeParams extends Array<ExtraTimeItem> {}
interface ExtraTimeItem {
GroupName: string
ActivityID: number
TeamInfos: TeamInfo[]
}
interface TeamInfo {
TeamID: number
TeamName: string
}
/** common record */
type CommonRecord<T = any> = {
/** record id */

View File

@ -20,6 +20,14 @@ declare namespace Api {
data: T[]
}
/** disable question library params */
interface DisableQuestionLibraryParams {
/** question library id */
Id: number
/** is disabled 0: no 1: yes */
IsDisabled: boolean
}
/** get question library list all params */
interface GetQuestionLibraryListAllParams {
/** question id */
@ -60,6 +68,8 @@ declare namespace Api {
type: QuestionScoreType
/** is priority 0: no 1: yes */
IsGood: number
/** is disabled 0: no 1: yes */
IsDisabled: number
}
/** common search params of table */

View File

@ -12,6 +12,7 @@ export {}
/* prettier-ignore */
declare module 'vue' {
export interface GlobalComponents {
ActionButton: typeof import('./../components/custom/user/ActionButton.vue')['default']
AppProvider: typeof import('./../components/common/app-provider.vue')['default']
BetterScroll: typeof import('./../components/custom/better-scroll.vue')['default']
ButtonIcon: typeof import('./../components/custom/button-icon.vue')['default']
@ -186,6 +187,7 @@ declare module 'vue' {
// For TSX support
declare global {
const ActionButton: typeof import('./../components/custom/user/ActionButton.vue')['default']
const AppProvider: typeof import('./../components/common/app-provider.vue')['default']
const BetterScroll: typeof import('./../components/custom/better-scroll.vue')['default']
const ButtonIcon: typeof import('./../components/custom/button-icon.vue')['default']