diff --git a/src/admin/api.ts b/src/admin/api.ts index ea3853b..d537bd1 100644 --- a/src/admin/api.ts +++ b/src/admin/api.ts @@ -318,6 +318,7 @@ export function createProblemSet(data: { description: string difficulty: string status: string + end_time?: Date | null }) { return http.post("admin/problemset", data) } @@ -328,6 +329,7 @@ export function editProblemSet(data: { description?: string difficulty?: string status?: string + end_time?: Date | null visible?: boolean }) { return http.put("admin/problemset", data) diff --git a/src/admin/problemset/edit.vue b/src/admin/problemset/edit.vue index 7f76913..ce0f3de 100644 --- a/src/admin/problemset/edit.vue +++ b/src/admin/problemset/edit.vue @@ -15,6 +15,17 @@ const formData = ref>({ difficulty: "Easy", status: "draft", visible: false, + end_time: null, +}) + +const endTimeTimestamp = computed({ + get: () => + formData.value.end_time + ? new Date(formData.value.end_time).getTime() + : null, + set: (val: number | null) => { + formData.value.end_time = val ? new Date(val) : null + }, }) const difficultyOptions = [ @@ -44,6 +55,7 @@ async function loadProblemSetDetail() { difficulty: data.difficulty, status: data.status, visible: data.visible, + end_time: data.end_time ? new Date(data.end_time) : null, } } catch (err: any) { message.error("加载题单详情失败:" + (err.data || "未知错误")) @@ -120,6 +132,14 @@ onMounted(() => { placeholder="选择状态" /> + + + diff --git a/src/utils/types.ts b/src/utils/types.ts index 887fd5f..4f2532e 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -193,6 +193,7 @@ export interface ProblemSet { create_time: Date difficulty: "Easy" | "Medium" | "Hard" status: "active" | "archived" | "draft" + end_time: Date | null visible: boolean problems_count: number completed_count: number @@ -213,6 +214,7 @@ export interface ProblemSetList { create_time: Date difficulty: "Easy" | "Medium" | "Hard" status: "active" | "archived" | "draft" + end_time: Date | null problems_count: number visible: boolean user_progress: { @@ -277,6 +279,7 @@ export interface CreateProblemSetData { description: string difficulty: "Easy" | "Medium" | "Hard" status: "active" | "archived" | "draft" + end_time?: Date | null } export interface EditProblemSetData { @@ -285,6 +288,7 @@ export interface EditProblemSetData { description?: string difficulty?: "Easy" | "Medium" | "Hard" status?: "active" | "archived" | "draft" + end_time?: Date | null visible?: boolean }