library-picturebook-activity/frontend/src/api/judges-management.ts

154 lines
3.3 KiB
TypeScript
Raw Normal View History

2026-01-08 09:17:46 +08:00
import request from "@/utils/request";
import type { PaginationParams, PaginationResponse } from "@/types/api";
export interface Judge {
id: number;
username: string;
nickname: string;
email?: string;
phone?: string;
gender?: 'male' | 'female';
avatar?: string;
status?: 'enabled' | 'disabled';
2026-01-12 16:06:34 +08:00
organization?: string;
2026-01-08 09:17:46 +08:00
validState?: number;
creator?: number;
modifier?: number;
createTime?: string;
modifyTime?: string;
roles?: Array<{
id: number;
role: {
id: number;
name: string;
code: string;
};
}>;
contestJudges?: Array<{
contest: {
id: number;
contestName: string;
status: string;
contestState?: string;
};
}>;
}
export interface QueryJudgeParams extends PaginationParams {
2026-01-12 16:06:34 +08:00
organization?: string;
2026-01-08 09:17:46 +08:00
nickname?: string;
username?: string;
status?: 'enabled' | 'disabled';
}
export interface CreateJudgeForm {
nickname: string;
gender: 'male' | 'female';
2026-01-12 16:06:34 +08:00
organization: string;
2026-01-08 09:17:46 +08:00
phone: string;
password: string;
username?: string;
email?: string;
avatar?: string;
status?: 'enabled' | 'disabled';
}
export interface UpdateJudgeForm {
nickname?: string;
gender?: 'male' | 'female';
2026-01-12 16:06:34 +08:00
organization?: string;
2026-01-08 09:17:46 +08:00
phone?: string;
password?: string;
username?: string;
email?: string;
avatar?: string;
status?: 'enabled' | 'disabled';
}
export interface JudgeListResponse {
list: Judge[];
total: number;
page: number;
pageSize: number;
}
// 获取评委列表
export async function getJudgesList(
params: QueryJudgeParams
): Promise<JudgeListResponse> {
const response = await request.get<any, JudgeListResponse>(
"/judges-management",
{
params,
}
);
return response;
}
// 获取单个评委详情
export async function getJudgeDetail(id: number): Promise<Judge> {
const response = await request.get<any, Judge>(`/judges-management/${id}`);
return response;
}
// 创建评委
export async function createJudge(data: CreateJudgeForm): Promise<Judge> {
const response = await request.post<any, Judge>("/judges-management", data);
return response;
}
// 更新评委
export async function updateJudge(
id: number,
data: UpdateJudgeForm
): Promise<Judge> {
const response = await request.patch<any, Judge>(
`/judges-management/${id}`,
data
);
return response;
}
// 删除评委
export async function deleteJudge(id: number): Promise<void> {
return await request.delete<any, void>(`/judges-management/${id}`);
}
// 冻结评委
export async function freezeJudge(id: number): Promise<Judge> {
const response = await request.patch<any, Judge>(
`/judges-management/${id}/freeze`
);
return response;
}
// 解冻评委
export async function unfreezeJudge(id: number): Promise<Judge> {
const response = await request.patch<any, Judge>(
`/judges-management/${id}/unfreeze`
);
return response;
}
// 批量删除评委
export async function batchDeleteJudges(ids: number[]): Promise<void> {
return await request.post<any, void>("/judges-management/batch-delete", {
ids,
});
}
// 兼容性导出:保留 judgesManagementApi 对象
export const judgesManagementApi = {
getList: getJudgesList,
getDetail: getJudgeDetail,
create: createJudge,
update: updateJudge,
delete: deleteJudge,
freeze: freezeJudge,
unfreeze: unfreezeJudge,
batchDelete: batchDeleteJudges,
};
2026-01-12 16:06:34 +08:00