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 @@
+
+
+
+
+ 编辑
+
+
+ 题目
+
+ 公告
+
+
+ 下载
+
+ 下载 AC 提交
+
+
+
+
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 @@
-
+
- contest list
+
+
+
+
+
+
+
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 @@
-
+
{{ isPrivate ? "需要密码" : "公开" }}
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 {