From cab4322bc3370b699d13ff5d3d58f5a009f9a3e7 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Mon, 14 Apr 2025 14:45:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=90=8E=E5=8F=B0=E6=B7=BB=E5=8A=A0=E9=9A=8F?= =?UTF-8?q?=E6=9C=BA=E6=8A=BD=E7=AD=BE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/admin/api.ts | 4 +++ src/admin/setting/home.vue | 53 +++++++++++++++++++++++++++++++++++--- src/oj/submission/list.vue | 2 +- 3 files changed, 54 insertions(+), 5 deletions(-) diff --git a/src/admin/api.ts b/src/admin/api.ts index 1fc043d..45f59b5 100644 --- a/src/admin/api.ts +++ b/src/admin/api.ts @@ -16,6 +16,10 @@ export function getBaseInfo() { return http.get("admin/dashboard_info") } +export function randomUser10(classroom: string) { + return http.get("admin/random_user", { params: { classroom } }) +} + export async function getProblemList( offset = 0, limit = 10, diff --git a/src/admin/setting/home.vue b/src/admin/setting/home.vue index 0ed193b..569632d 100644 --- a/src/admin/setting/home.vue +++ b/src/admin/setting/home.vue @@ -5,7 +5,7 @@ import Pagination from "~/shared/components/Pagination.vue" import { useUserStore } from "~/shared/store/user" import { getACRate } from "~/utils/functions" import { Rank } from "~/utils/types" -import { getBaseInfo } from "../api" +import { getBaseInfo, randomUser10 } from "../api" const userCount = ref(0) const submissionCount = ref(0) @@ -13,12 +13,14 @@ const contestCount = ref(0) const userStore = useUserStore() const router = useRouter() +const showModal = ref(false) +const luckyGuy = ref("") const data = ref([]) const total = ref(0) const query = reactive({ limit: 10, page: 1, - username: "", + classroom: "", }) const columns: DataTableColumn[] = [ @@ -44,6 +46,7 @@ const columns: DataTableColumn[] = [ () => row.user.username, ), }, + { title: "个性签名", key: "mood" }, { title: "已解决", key: "accepted_number", width: 100 }, { title: "提交数", key: "submission_number", width: 100 }, { @@ -63,11 +66,22 @@ onMounted(async () => { async function listRanks() { const offset = (query.page - 1) * query.limit - const res = await getRank(offset, query.limit, 0, query.username) + const res = await getRank(offset, query.limit, 0, query.classroom) data.value = res.data.results total.value = res.data.total } +async function getRandom() { + const res = await randomUser10(query.classroom) + const name = res.data[res.data.length - 1] + luckyGuy.value = name.split(query.classroom)[1] +} + +async function getRandomModal() { + showModal.value = true + getRandom() +} + watch(() => query.page, listRanks) watch( () => query.limit, @@ -76,6 +90,21 @@ watch( listRanks() }, ) +watchDebounced( + () => query.classroom, + () => { + query.page = 1 + listRanks() + }, + { + debounce: 500, + maxWait: 1000, + }, +) + +watch(showModal, (v) => { + if (!v) luckyGuy.value = "" +}) diff --git a/src/oj/submission/list.vue b/src/oj/submission/list.vue index f16ed0c..d1a98b3 100644 --- a/src/oj/submission/list.vue +++ b/src/oj/submission/list.vue @@ -311,7 +311,7 @@ const columns = computed(() => { 重置 - + 今日提交数:{{ todayCount }}