From 4af5a28c03d5d6460d05512d52f338b9f86f559b Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Mon, 20 Mar 2023 20:54:12 +0800 Subject: [PATCH] contest list. --- src/admin/api.ts | 8 +- src/admin/contest/components/Actions.vue | 41 +++++++++ src/admin/contest/list.vue | 87 ++++++++++++++++++- src/admin/problem/list.vue | 3 +- src/admin/user/list.vue | 2 +- src/components.d.ts | 8 +- src/oj/contest/components/ContestInfo.vue | 2 +- src/oj/contest/list.vue | 4 +- .../components => shared}/ContestTitle.vue | 0 .../components => shared}/ContestType.vue | 3 +- src/utils/types.ts | 2 + 11 files changed, 146 insertions(+), 14 deletions(-) create mode 100644 src/admin/contest/components/Actions.vue rename src/{oj/contest/components => shared}/ContestTitle.vue (100%) rename src/{oj/contest/components => shared}/ContestType.vue (81%) diff --git a/src/admin/api.ts b/src/admin/api.ts index ebaf74a..a667840 100644 --- a/src/admin/api.ts +++ b/src/admin/api.ts @@ -40,6 +40,12 @@ export function deleteUsers(userIDs: number[]) { return http.delete("admin/user", { params: { id: userIDs.join(",") } }) } -export function editUser(user: User & { password: string }) { +export function editUser(user: User) { return http.put("admin/user", user) } + +export function getContestList(offset = 0, limit = 10, keyword: string) { + return http.get("admin/contest", { + params: { paging: true, offset, limit, keyword }, + }) +} diff --git a/src/admin/contest/components/Actions.vue b/src/admin/contest/components/Actions.vue new file mode 100644 index 0000000..3020fd4 --- /dev/null +++ b/src/admin/contest/components/Actions.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/admin/contest/list.vue b/src/admin/contest/list.vue index f592bf1..340075d 100644 --- a/src/admin/contest/list.vue +++ b/src/admin/contest/list.vue @@ -1,7 +1,90 @@ - + diff --git a/src/admin/problem/list.vue b/src/admin/problem/list.vue index 97d02bf..0bb185a 100644 --- a/src/admin/problem/list.vue +++ b/src/admin/problem/list.vue @@ -37,7 +37,8 @@ const columns: DataTableColumn[] = [ }), }, { - key: "edit", + title: "选项", + key: "actions", width: 200, render: (row) => h(Actions, { problemID: row.id, onDeleted: listProblems }), }, diff --git a/src/admin/user/list.vue b/src/admin/user/list.vue index 349f89f..109fd8e 100644 --- a/src/admin/user/list.vue +++ b/src/admin/user/list.vue @@ -54,7 +54,7 @@ const columns: DataTableColumn[] = [ { title: "真名", key: "real_name", width: 100 }, { title: "邮箱", key: "email", width: 200 }, { - key: "edit", + key: "actions", title: "选项", width: 200, render: (row) => diff --git a/src/components.d.ts b/src/components.d.ts index 3a0c7f9..a29bba4 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -18,12 +18,10 @@ declare module '@vue/runtime-core' { IEpMoreFilled: typeof import('~icons/ep/more-filled')['default'] IEpSunny: typeof import('~icons/ep/sunny')['default'] NAlert: typeof import('naive-ui')['NAlert'] - NAvatar: typeof import("naive-ui")["NAvatar"] - NBreadcrumb: typeof import('naive-ui')['NBreadcrumb'] - NBreadcrumbItem: typeof import('naive-ui')['NBreadcrumbItem'] + NAvatar: typeof import('naive-ui')['NAvatar'] NButton: typeof import('naive-ui')['NButton'] NCard: typeof import('naive-ui')['NCard'] - NCode: typeof import("naive-ui")["NCode"] + NCode: typeof import('naive-ui')['NCode'] NConfigProvider: typeof import('naive-ui')['NConfigProvider'] NDataTable: typeof import('naive-ui')['NDataTable'] NDescriptions: typeof import('naive-ui')['NDescriptions'] @@ -55,7 +53,7 @@ declare module '@vue/runtime-core' { NTabs: typeof import('naive-ui')['NTabs'] NTag: typeof import('naive-ui')['NTag'] NTooltip: typeof import('naive-ui')['NTooltip'] - NUpload: typeof import("naive-ui")["NUpload"] + NUpload: typeof import('naive-ui')['NUpload'] RouterLink: typeof import('vue-router')['RouterLink'] RouterView: typeof import('vue-router')['RouterView'] } diff --git a/src/oj/contest/components/ContestInfo.vue b/src/oj/contest/components/ContestInfo.vue index b50d297..3fe627a 100644 --- a/src/oj/contest/components/ContestInfo.vue +++ b/src/oj/contest/components/ContestInfo.vue @@ -1,7 +1,7 @@ diff --git a/src/oj/contest/list.vue b/src/oj/contest/list.vue index 9ad813b..bc27a87 100644 --- a/src/oj/contest/list.vue +++ b/src/oj/contest/list.vue @@ -1,11 +1,11 @@ diff --git a/src/utils/types.ts b/src/utils/types.ts index 01590d9..43a2441 100644 --- a/src/utils/types.ts +++ b/src/utils/types.ts @@ -45,6 +45,7 @@ export interface User { two_factor_auth: boolean open_api: boolean is_disabled: boolean + password?: string } export type LANGUAGE = @@ -236,6 +237,7 @@ export interface Contest { create_time: string now: string last_update_time: string + visible: boolean } interface SubmissionInfo {