115 lines
2.6 KiB
TypeScript

import request from '@/utils/request'
import type { Result, PageResult } from '@/api/types'
// 团队PK接口类型
export interface TeamPK {
id: number
name: string
description: string
teamADeptId: number
teamAName: string
teamBDeptId: number
teamBName: string
startTime: string
endTime: string
dimensions: Record<string, { weight: number }>
teamAScore: number
teamBScore: number
teamATaskCount: number
teamBTaskCount: number
teamAFiveStarCount: number
teamBFiveStarCount: number
teamAOnTimeRate: number
teamBOnTimeRate: number
rewards: { winnerReward: number; loserReward: number; mvpReward?: number }
status: 'draft' | 'scheduled' | 'active' | 'ended' | 'cancelled'
winner?: 'A' | 'B' | 'draw'
mvpUserId?: number
creatorId: number
createTime: string
updateTime: string
}
export interface TeamPKCreateRequest {
name: string
description?: string
teamADeptId: number
teamAName: string
teamBDeptId: number
teamBName: string
startTime: string
endTime: string
dimensions: string
rewards: string
}
// ==================== 团队PK API ====================
/**
* 创建团队PK
*/
export function createTeamPK(data: TeamPKCreateRequest): Promise<TeamPK> {
return request.post<Result<TeamPK>>('/team-pk', data)
.then(res => res.data)
}
/**
* 发布团队PK
*/
export function publishTeamPK(id: number): Promise<TeamPK> {
return request.post<Result<TeamPK>>(`/team-pk/${id}/publish`)
.then(res => res.data)
}
/**
* 结束团队PK
*/
export function endTeamPK(id: number): Promise<void> {
return request.post<Result<void>>(`/team-pk/${id}/end`)
.then(res => res.data)
}
/**
* 取消团队PK
*/
export function cancelTeamPK(id: number): Promise<void> {
return request.post<Result<void>>(`/team-pk/${id}/cancel`)
.then(res => res.data)
}
/**
* 删除团队PK
*/
export function deleteTeamPK(id: number): Promise<void> {
return request.delete<Result<void>>(`/team-pk/${id}`)
.then(res => res.data)
}
/**
* 获取团队PK列表
*/
export function getTeamPKList(params: {
page?: number
pageSize?: number
status?: string
}): Promise<PageResult<TeamPK>> {
return request.get<Result<PageResult<TeamPK>>>('/team-pk', { params })
.then(res => res.data)
}
/**
* 获取团队PK详情
*/
export function getTeamPKById(id: number): Promise<TeamPK> {
return request.get<Result<TeamPK>>(`/team-pk/${id}`)
.then(res => res.data)
}
/**
* 刷新PK数据
*/
export function refreshTeamPK(id: number): Promise<TeamPK> {
return request.post<Result<TeamPK>>(`/team-pk/${id}/refresh`)
.then(res => res.data)
}