From 48fc6612050f59acd11ced4a7514e34a2f9161f2 Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Tue, 4 Apr 2023 14:05:30 +0800 Subject: [PATCH] add website config. --- src/components.d.ts | 5 ++- src/oj/api.ts | 4 ++ src/oj/rank/components/Chart.vue | 2 +- src/oj/submission/list.vue | 2 + src/shared/Header.vue | 70 ++++++++++++++++---------------- src/shared/layout/default.vue | 8 ++++ src/shared/store/config.ts | 14 +++++++ 7 files changed, 67 insertions(+), 38 deletions(-) create mode 100644 src/shared/store/config.ts diff --git a/src/components.d.ts b/src/components.d.ts index 1080d97..b1335d9 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -23,10 +23,10 @@ declare module '@vue/runtime-core' { NCard: typeof import('naive-ui')['NCard'] NCheckbox: typeof import('naive-ui')['NCheckbox'] NCheckboxGroup: typeof import('naive-ui')['NCheckboxGroup'] - NCode: typeof import('naive-ui')['NCode'] + NCode: typeof import("naive-ui")["NCode"] NConfigProvider: typeof import('naive-ui')['NConfigProvider'] NDataTable: typeof import('naive-ui')['NDataTable'] - NDatePicker: typeof import('naive-ui')['NDatePicker'] + NDatePicker: typeof import("naive-ui")["NDatePicker"] NDescriptions: typeof import('naive-ui')['NDescriptions'] NDescriptionsItem: typeof import('naive-ui')['NDescriptionsItem'] NDropdown: typeof import('naive-ui')['NDropdown'] @@ -42,6 +42,7 @@ declare module '@vue/runtime-core' { NInput: typeof import('naive-ui')['NInput'] NLayout: typeof import('naive-ui')['NLayout'] NLayoutContent: typeof import('naive-ui')['NLayoutContent'] + NLayoutFooter: typeof import('naive-ui')['NLayoutFooter'] NLayoutHeader: typeof import('naive-ui')['NLayoutHeader'] NLayoutSider: typeof import('naive-ui')['NLayoutSider'] NMenu: typeof import('naive-ui')['NMenu'] diff --git a/src/oj/api.ts b/src/oj/api.ts index 6618e43..c05c18a 100644 --- a/src/oj/api.ts +++ b/src/oj/api.ts @@ -29,6 +29,10 @@ function filterResult(result: Problem) { return newResult } +export function getWebsiteConfig() { + return http.get("website") +} + export async function getProblemList( offset = 0, limit = 10, diff --git a/src/oj/rank/components/Chart.vue b/src/oj/rank/components/Chart.vue index b66dc37..9112e90 100644 --- a/src/oj/rank/components/Chart.vue +++ b/src/oj/rank/components/Chart.vue @@ -86,7 +86,7 @@ const options = { diff --git a/src/oj/submission/list.vue b/src/oj/submission/list.vue index a55d25b..4eeca22 100644 --- a/src/oj/submission/list.vue +++ b/src/oj/submission/list.vue @@ -13,6 +13,7 @@ import { Submission } from "utils/types" import { adminRejudge, getSubmissions } from "oj/api" import { isDesktop } from "~/shared/composables/breakpoints" import { useUserStore } from "~/shared/store/user" +import { useConfigStore } from "~/shared/store/config" interface Query { username: string @@ -25,6 +26,7 @@ interface Query { const route = useRoute() const router = useRouter() const userStore = useUserStore() +const configStore = useConfigStore() const message = useMessage() const submissions = ref([]) diff --git a/src/shared/Header.vue b/src/shared/Header.vue index 05a42f0..6986af9 100644 --- a/src/shared/Header.vue +++ b/src/shared/Header.vue @@ -1,6 +1,7 @@ - - - + + + {{ configStore.config?.website_name }} + + + 运行 + + 菜单 + {{ userStore.user!.username }} - + 登录 - 注册 + + 注册 + @@ -117,33 +139,11 @@ function run() { - - - 运行 - - - {{ userStore.user!.username }} - - - 登录 - 注册 - - - - - - - - - - - - - - - - - - + diff --git a/src/shared/layout/default.vue b/src/shared/layout/default.vue index 3119b6d..35a8807 100644 --- a/src/shared/layout/default.vue +++ b/src/shared/layout/default.vue @@ -2,6 +2,9 @@ import Login from "../Login.vue" import Signup from "../Signup.vue" import Header from "../Header.vue" +import { useConfigStore } from "../store/config" + +const configStore = useConfigStore() @@ -12,6 +15,7 @@ import Header from "../Header.vue" + {{ configStore.config?.website_footer }} @@ -21,4 +25,8 @@ import Header from "../Header.vue" .header { padding: 8px; } +.footer { + text-align: center; + margin: 20px 0; +} diff --git a/src/shared/store/config.ts b/src/shared/store/config.ts new file mode 100644 index 0000000..32feffb --- /dev/null +++ b/src/shared/store/config.ts @@ -0,0 +1,14 @@ +import { getWebsiteConfig } from "~/oj/api" +import { WebsiteConfig } from "~/utils/types" + +export const useConfigStore = defineStore("config", () => { + const config = ref() + async function getConfig() { + const res = await getWebsiteConfig() + config.value = res.data + } + return { + config, + getConfig, + } +})
{{ configStore.config?.website_footer }}