From 2add0e923fe4f4953c345481a85dc8002e3505ee Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Wed, 26 Jun 2024 05:36:43 +0000 Subject: [PATCH] add messages --- .vscode/extensions.json | 3 -- src/components.d.ts | 2 + src/oj/api.ts | 14 +++++- src/oj/submission/detail.vue | 54 +++++++++++++++++--- src/oj/user/message.vue | 74 ++++++++++++++++++++++++++++ src/routes.ts | 5 ++ src/shared/components/Header.vue | 7 +++ src/shared/components/TextEditor.vue | 18 ++++++- src/utils/types.ts | 14 ++++++ 9 files changed, 178 insertions(+), 13 deletions(-) delete mode 100644 .vscode/extensions.json create mode 100644 src/oj/user/message.vue diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index c0a6e5a..0000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] -} diff --git a/src/components.d.ts b/src/components.d.ts index 12c31a9..534a97b 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -37,6 +37,8 @@ declare module 'vue' { NLayoutContent: typeof import('naive-ui')['NLayoutContent'] NLayoutHeader: typeof import('naive-ui')['NLayoutHeader'] NLayoutSider: typeof import('naive-ui')['NLayoutSider'] + NList: typeof import('naive-ui')['NList'] + NListItem: typeof import('naive-ui')['NListItem'] NMenu: typeof import('naive-ui')['NMenu'] NMessageProvider: typeof import('naive-ui')['NMessageProvider'] NModal: typeof import('naive-ui')['NModal'] diff --git a/src/oj/api.ts b/src/oj/api.ts index 5efc8e3..cb49c00 100644 --- a/src/oj/api.ts +++ b/src/oj/api.ts @@ -170,10 +170,22 @@ export function updateProfile(data: { real_name: string; mood: string }) { return http.put("profile", data) } -export function getAnnouncementList(offset = 10, limit = 10) { +export function getAnnouncementList(offset = 0, limit = 10) { return http.get("announcement", { params: { limit, offset } }) } export function getAnnouncement(id: number) { return http.get("announcement", { params: { id } }) } + +export function createMessage(data: { + recipient: number + message: string + submission: string +}) { + return http.post("message", data) +} + +export function getMessageList(offset = 0, limit = 10) { + return http.get("message", { params: { limit, offset } }) +} diff --git a/src/oj/submission/detail.vue b/src/oj/submission/detail.vue index 6e4abd6..4d24cbc 100644 --- a/src/oj/submission/detail.vue +++ b/src/oj/submission/detail.vue @@ -1,5 +1,5 @@ diff --git a/src/routes.ts b/src/routes.ts index 2c2c8ef..f2973e8 100644 --- a/src/routes.ts +++ b/src/routes.ts @@ -84,6 +84,11 @@ export const ojs: RouteRecordRaw = { component: () => import("oj/user/setting.vue"), meta: { requiresAuth: true }, }, + { + path: "message", + component: () => import("oj/user/message.vue"), + meta: { requiresAuth: true }, + } ], } diff --git a/src/shared/components/Header.vue b/src/shared/components/Header.vue index 62bc50f..9fe7ba5 100644 --- a/src/shared/components/Header.vue +++ b/src/shared/components/Header.vue @@ -72,6 +72,13 @@ const options: Array = [ onClick: () => router.push("/user"), }, }, + { + label: "我的消息", + key: "message", + props: { + onClick: () => router.push("/message"), + }, + }, { label: "我的提交", key: "status", diff --git a/src/shared/components/TextEditor.vue b/src/shared/components/TextEditor.vue index ce6fc47..0c0d443 100644 --- a/src/shared/components/TextEditor.vue +++ b/src/shared/components/TextEditor.vue @@ -6,6 +6,7 @@ import { uploadImage } from "../../admin/api" interface Props { title: string + simple?: boolean minHeight?: number } @@ -14,6 +15,7 @@ type InsertFnType = (url: string, alt: string, href: string) => void const props = withDefaults(defineProps(), { minHeight: 0, + simple: false, }) const message = useMessage() @@ -52,6 +54,20 @@ const toolbarConfig: Partial = { ], } +const toolbarConfigSimple: Partial = { + toolbarKeys: [ + "bold", + "color", + "bgColor", + "emotion", + "uploadImage", + "insertLink", + "clearStyle", + "undo", + "redo", + ], +} + const editorConfig: Partial = { scroll: false, MENU_CONF: { @@ -93,7 +109,7 @@ async function customUpload(file: File, insertFn: InsertFnType) {