diff --git a/apps/web/src/admin/api.ts b/apps/web/src/admin/api.ts index 52052ba..e1945ef 100644 --- a/apps/web/src/admin/api.ts +++ b/apps/web/src/admin/api.ts @@ -38,10 +38,10 @@ import type { Tutorial, User, WebsiteConfig, - ProblemSet, - ProblemSetBadge, - ProblemSetList, - ProblemSetProblem, + AdminProblemSetBadge, + AdminProblemSetList, + AdminProblemSet, + AdminProblemSetProblem, TutorialListItem, } from "utils/types" @@ -498,20 +498,20 @@ export function getProblemSetList( difficulty = "", status = "", ) { - return api.get("admin/problem-sets", { + return api.get("admin/problem-sets", { params: { offset, limit, keyword, difficulty, status }, }) } export function getProblemSetDetail(id: number) { - return api.get(`admin/problem-sets/${id}`) + return api.get(`admin/problem-sets/${id}`) } interface ProblemSetBody { title?: string description?: string - difficulty?: ProblemSet["difficulty"] - status?: ProblemSet["status"] + difficulty?: AdminProblemSet["difficulty"] + status?: AdminProblemSet["status"] // 表单里是 Date,出站要 ISO 串 endTime?: Date | null visible?: boolean @@ -529,11 +529,11 @@ function toProblemSetBody(data: ProblemSetBody) { } export function createProblemSet(data: ProblemSetBody) { - return api.post("admin/problem-sets", toProblemSetBody(data)) + return api.post("admin/problem-sets", toProblemSetBody(data)) } export function editProblemSet(data: ProblemSetBody & { id: number }) { - return api.put( + return api.put( `admin/problem-sets/${data.id}`, toProblemSetBody(data), ) @@ -544,16 +544,16 @@ export function deleteProblemSet(id: number) { } export function toggleProblemSetVisible(id: number) { - return api.put(`admin/problem-sets/${id}/visibility`) + return api.put(`admin/problem-sets/${id}/visibility`) } export function updateProblemSetStatus(id: number, status: string) { - return api.put(`admin/problem-sets/${id}/status`, { status }) + return api.put(`admin/problem-sets/${id}/status`, { status }) } // 题单题目管理 API export function getProblemSetProblems(problemSetId: number) { - return api.get( + return api.get( `admin/problem-sets/${problemSetId}/problems`, ) } @@ -604,7 +604,7 @@ export function removeProblemFromSet( // 题单奖章管理 API export function getProblemSetBadges(problemSetId: number) { - return api.get( + return api.get( `admin/problem-sets/${problemSetId}/badges`, ) } @@ -613,7 +613,7 @@ interface BadgeBody { name?: string description?: string icon?: string - conditionType?: ProblemSetBadge["conditionType"] + conditionType?: AdminProblemSetBadge["conditionType"] conditionValue?: number } @@ -628,7 +628,7 @@ function toBadgeBody(data: BadgeBody) { } export function createProblemSetBadge(problemSetId: number, data: BadgeBody) { - return api.post( + return api.post( `admin/problem-sets/${problemSetId}/badges`, toBadgeBody(data), ) @@ -639,7 +639,7 @@ export function editProblemSetBadge( badgeId: number, data: BadgeBody, ) { - return api.put( + return api.put( `admin/problem-sets/${problemSetId}/badges/${badgeId}`, toBadgeBody(data), ) diff --git a/apps/web/src/admin/problemset/components/AddBadgeModal.vue b/apps/web/src/admin/problemset/components/AddBadgeModal.vue index 5213901..49392e2 100644 --- a/apps/web/src/admin/problemset/components/AddBadgeModal.vue +++ b/apps/web/src/admin/problemset/components/AddBadgeModal.vue @@ -11,8 +11,8 @@ interface Emits { name: string description: string icon: string - condition_type: "all_problems" | "problem_count" | "score" - condition_value?: number + conditionType: "all_problems" | "problem_count" | "score" + conditionValue?: number }, ): void } @@ -45,19 +45,16 @@ const conditionTypeOptions = [ ] function handleConfirm() { - const data: any = { + emit("confirm", { name: newBadgeName.value, description: newBadgeDescription.value, icon: newBadgeIcon.value, - condition_type: newBadgeConditionType.value, - } - - // 只有非"完成所有题目"时才添加条件值 - if (newBadgeConditionType.value !== "all_problems") { - data.conditionValue = newBadgeConditionValue.value - } - - emit("confirm", data) + conditionType: newBadgeConditionType.value, + // 只有非"完成所有题目"时才带条件值 + ...(newBadgeConditionType.value === "all_problems" + ? {} + : { conditionValue: newBadgeConditionValue.value }), + }) } function handleCancel() { diff --git a/apps/web/src/admin/problemset/components/AddProblemModal.vue b/apps/web/src/admin/problemset/components/AddProblemModal.vue index 90cfece..1a6ef62 100644 --- a/apps/web/src/admin/problemset/components/AddProblemModal.vue +++ b/apps/web/src/admin/problemset/components/AddProblemModal.vue @@ -8,9 +8,9 @@ interface Emits { ( e: "confirm", data: { - problem_id: string + problemId: string order: number - is_required: boolean + isRequired: boolean score: number hint: string }, @@ -28,9 +28,9 @@ const newProblemHint = ref("") function handleConfirm() { emit("confirm", { - problem_id: newProblemId.value, + problemId: newProblemId.value, order: newProblemOrder.value, - is_required: newProblemRequired.value, + isRequired: newProblemRequired.value, score: newProblemScore.value, hint: newProblemHint.value, }) diff --git a/apps/web/src/admin/problemset/components/BadgeManagement.vue b/apps/web/src/admin/problemset/components/BadgeManagement.vue index b6a81c4..c424cda 100644 --- a/apps/web/src/admin/problemset/components/BadgeManagement.vue +++ b/apps/web/src/admin/problemset/components/BadgeManagement.vue @@ -1,15 +1,15 @@