From 51328770c647a77e7580d5d76fe53688395375d5 Mon Sep 17 00:00:00 2001
From: yuetsh <517252939@qq.com>
Date: Tue, 14 Mar 2023 20:58:43 +0800
Subject: [PATCH] problem list.
---
src/admin/api.ts | 12 ++++
.../problem/components/DeleteProblem.vue | 24 ++++++++
.../problem/components/DownloadTestcases.vue | 15 +++++
src/admin/problem/list.vue | 61 +++++++++++++------
src/components.d.ts | 37 +++++------
src/routes.ts | 6 +-
src/shared/layout/admin.vue | 2 +-
7 files changed, 118 insertions(+), 39 deletions(-)
create mode 100644 src/admin/problem/components/DeleteProblem.vue
create mode 100644 src/admin/problem/components/DownloadTestcases.vue
diff --git a/src/admin/api.ts b/src/admin/api.ts
index 019f7bb..120e884 100644
--- a/src/admin/api.ts
+++ b/src/admin/api.ts
@@ -29,3 +29,15 @@ export async function getProblemList(
total: res.data.total,
}
}
+
+export function deleteProblem(id: number) {
+ return http.delete("admin/problem", { params: { id } })
+}
+
+export function editProblem(problem: Problem) {
+ return http.put("admin/problem", problem)
+}
+
+export function getProblem(id: number) {
+ return http.get("admin/problem", { params: { id } })
+}
diff --git a/src/admin/problem/components/DeleteProblem.vue b/src/admin/problem/components/DeleteProblem.vue
new file mode 100644
index 0000000..7c9f555
--- /dev/null
+++ b/src/admin/problem/components/DeleteProblem.vue
@@ -0,0 +1,24 @@
+
+
+ handleDeleteProblem(props.problemID)">
+
+ 删除
+
+ 确定删除这道题目吗?相关的提交也会被相应删除哦 😯
+
+
diff --git a/src/admin/problem/components/DownloadTestcases.vue b/src/admin/problem/components/DownloadTestcases.vue
new file mode 100644
index 0000000..ab5bfe8
--- /dev/null
+++ b/src/admin/problem/components/DownloadTestcases.vue
@@ -0,0 +1,15 @@
+
+
+
+
+ 下载
+
+ 下载测试用例
+
+
diff --git a/src/admin/problem/list.vue b/src/admin/problem/list.vue
index f7610c4..2404281 100644
--- a/src/admin/problem/list.vue
+++ b/src/admin/problem/list.vue
@@ -1,12 +1,16 @@
-
-
+
+
diff --git a/src/components.d.ts b/src/components.d.ts
index 8f9d5d4..b5b4607 100644
--- a/src/components.d.ts
+++ b/src/components.d.ts
@@ -9,29 +9,31 @@ export {}
declare module '@vue/runtime-core' {
export interface GlobalComponents {
- IEpBell: typeof import('~icons/ep/bell')['default']
- IEpCaretRight: typeof import('~icons/ep/caret-right')['default']
- IEpLoading: typeof import('~icons/ep/loading')['default']
- IEpLock: typeof import('~icons/ep/lock')['default']
+ IEpBell: typeof import("~icons/ep/bell")["default"]
+ IEpCaretRight: typeof import("~icons/ep/caret-right")["default"]
+ IEpLoading: typeof import("~icons/ep/loading")["default"]
+ IEpLock: typeof import("~icons/ep/lock")["default"]
IEpMenu: typeof import('~icons/ep/menu')['default']
IEpMoon: typeof import('~icons/ep/moon')['default']
- IEpMoreFilled: typeof import('~icons/ep/more-filled')['default']
+ 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']
NButton: typeof import('naive-ui')['NButton']
- NCard: typeof import('naive-ui')['NCard']
+ NCard: typeof import("naive-ui")["NCard"]
NCode: typeof import("naive-ui")["NCode"]
NConfigProvider: typeof import('naive-ui')['NConfigProvider']
NDataTable: typeof import('naive-ui')['NDataTable']
- NDescriptions: typeof import('naive-ui')['NDescriptions']
- NDescriptionsItem: typeof import('naive-ui')['NDescriptionsItem']
+ NDescriptions: typeof import("naive-ui")["NDescriptions"]
+ NDescriptionsItem: typeof import("naive-ui")["NDescriptionsItem"]
NDropdown: typeof import('naive-ui')['NDropdown']
- NEmpty: typeof import('naive-ui')['NEmpty']
+ NEmpty: typeof import("naive-ui")["NEmpty"]
NForm: typeof import('naive-ui')['NForm']
NFormItem: typeof import('naive-ui')['NFormItem']
- NGi: typeof import('naive-ui')['NGi']
- NGrid: typeof import('naive-ui')['NGrid']
+ NGi: typeof import("naive-ui")["NGi"]
+ NGrid: typeof import("naive-ui")["NGrid"]
NIcon: typeof import('naive-ui')['NIcon']
NInput: typeof import('naive-ui')['NInput']
NLayout: typeof import('naive-ui')['NLayout']
@@ -42,14 +44,15 @@ declare module '@vue/runtime-core' {
NMessageProvider: typeof import('naive-ui')['NMessageProvider']
NModal: typeof import('naive-ui')['NModal']
NPagination: typeof import('naive-ui')['NPagination']
- NPopover: typeof import('naive-ui')['NPopover']
- NScrollbar: typeof import('naive-ui')['NScrollbar']
+ NPopconfirm: typeof import('naive-ui')['NPopconfirm']
+ NPopover: typeof import("naive-ui")["NPopover"]
+ NScrollbar: typeof import("naive-ui")["NScrollbar"]
NSelect: typeof import('naive-ui')['NSelect']
NSpace: typeof import('naive-ui')['NSpace']
- NSwitch: typeof import('naive-ui')['NSwitch']
- NTabPane: typeof import('naive-ui')['NTabPane']
- NTabs: typeof import('naive-ui')['NTabs']
- NTag: typeof import('naive-ui')['NTag']
+ NSwitch: typeof import("naive-ui")["NSwitch"]
+ NTabPane: typeof import("naive-ui")["NTabPane"]
+ NTabs: typeof import("naive-ui")["NTabs"]
+ NTag: typeof import("naive-ui")["NTag"]
NTooltip: typeof import('naive-ui')['NTooltip']
NUpload: typeof import("naive-ui")["NUpload"]
RouterLink: typeof import('vue-router')['RouterLink']
diff --git a/src/routes.ts b/src/routes.ts
index f16224f..a52ae69 100644
--- a/src/routes.ts
+++ b/src/routes.ts
@@ -140,7 +140,7 @@ export const routes: RouteRecordRaw[] = [
component: () => import("admin/problem/detail.vue"),
},
{
- path: "problem/:problemID/edit",
+ path: "problem/edit/:problemID",
name: "problem edit",
component: () => import("admin/problem/detail.vue"),
props: true,
@@ -156,7 +156,7 @@ export const routes: RouteRecordRaw[] = [
component: () => import("admin/contest/detail.vue"),
},
{
- path: "contest/:contestID/edit",
+ path: "contest/edit/:contestID",
name: "contest edit",
component: () => import("admin/contest/detail.vue"),
props: true,
@@ -174,7 +174,7 @@ export const routes: RouteRecordRaw[] = [
props: true,
},
{
- path: "contest/:contestID/problem/:problemID/edit",
+ path: "contest/:contestID/problem/edit/:problemID",
name: "contest problem edit",
component: () => import("admin/problem/detail.vue"),
props: true,
diff --git a/src/shared/layout/admin.vue b/src/shared/layout/admin.vue
index ffdc41a..6fa4cfb 100644
--- a/src/shared/layout/admin.vue
+++ b/src/shared/layout/admin.vue
@@ -94,7 +94,7 @@ const active = computed(() => (route.name as string) || "home")
-
+