From 53a79cd511377116783891a4c0474af85a1edffd Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Mon, 11 May 2026 04:27:12 -0600 Subject: [PATCH] update --- src/admin/api.ts | 4 +-- src/admin/problem/TopACTrend.vue | 49 +++++++++++++++++++++++++++++--- 2 files changed, 47 insertions(+), 6 deletions(-) diff --git a/src/admin/api.ts b/src/admin/api.ts index b0f6614..2bebce9 100644 --- a/src/admin/api.ts +++ b/src/admin/api.ts @@ -474,6 +474,6 @@ export function getStuckProblems() { return http.get("admin/problem/stuck") } -export function getTopACTrend() { - return http.get("admin/problem/top_ac_trend") +export function getTopACTrend(params: { since_year: number; until_year: number; min_per_year: number }) { + return http.get("admin/problem/top_ac_trend", { params }) } diff --git a/src/admin/problem/TopACTrend.vue b/src/admin/problem/TopACTrend.vue index 8ad42f7..36ba24d 100644 --- a/src/admin/problem/TopACTrend.vue +++ b/src/admin/problem/TopACTrend.vue @@ -35,7 +35,21 @@ interface ProblemTrend { yearly: YearlyEntry[] } -const loading = ref(true) +const currentYear = new Date().getFullYear() +const yearOptions = Array.from({ length: currentYear - 2022 + 1 }, (_, i) => ({ + label: String(2022 + i), + value: 2022 + i, +})) +const minPerYearOptions = [ + { label: "50", value: 50 }, + { label: "100", value: 100 }, + { label: "200", value: 200 }, +] + +const sinceYear = ref(2023) +const untilYear = ref(new Date().getFullYear()) +const minPerYear = ref(100) +const loading = ref(false) const data = ref([]) const acLabelPlugin = { @@ -109,18 +123,45 @@ function getChartOptions(problem: ProblemTrend) { } } -onMounted(async () => { +async function fetchData() { + loading.value = true try { - const res = await getTopACTrend() + const res = await getTopACTrend({ since_year: sinceYear.value, until_year: untilYear.value, min_per_year: minPerYear.value }) data.value = res.data } finally { loading.value = false } -}) +} + +onMounted(fetchData)