diff --git a/src/components.d.ts b/src/components.d.ts index eb31f7a..bc42cb3 100644 --- a/src/components.d.ts +++ b/src/components.d.ts @@ -13,12 +13,10 @@ declare module '@vue/runtime-core' { IEpLock: typeof import('~icons/ep/lock')['default'] IEpMenu: typeof import('~icons/ep/menu')['default'] IEpMoon: typeof import('~icons/ep/moon')['default'] - IEpMore: typeof import('~icons/ep/more')['default'] IEpMoreFilled: typeof import('~icons/ep/more-filled')['default'] IEpSunny: typeof import('~icons/ep/sunny')['default'] NAlert: typeof import('naive-ui')['NAlert'] NButton: typeof import('naive-ui')['NButton'] - NButtonGroup: typeof import('naive-ui')['NButtonGroup'] NCard: typeof import('naive-ui')['NCard'] NCode: typeof import('naive-ui')['NCode'] NConfigProvider: typeof import('naive-ui')['NConfigProvider'] @@ -39,7 +37,6 @@ declare module '@vue/runtime-core' { NMenu: typeof import('naive-ui')['NMenu'] NMessageProvider: typeof import('naive-ui')['NMessageProvider'] NModal: typeof import('naive-ui')['NModal'] - NNotificationProvider: typeof import('naive-ui')['NNotificationProvider'] NPagination: typeof import('naive-ui')['NPagination'] NPopover: typeof import('naive-ui')['NPopover'] NScrollbar: typeof import('naive-ui')['NScrollbar'] diff --git a/src/oj/contest/detail.vue b/src/oj/contest/detail.vue index d874da6..b8ac593 100644 --- a/src/oj/contest/detail.vue +++ b/src/oj/contest/detail.vue @@ -88,7 +88,11 @@ function getCurrentType(name: string): "primary" | "default" { 比赛排名 - + 管理员助手 diff --git a/src/shared/Monaco.vue b/src/shared/Monaco.vue index 836c276..d3e1cac 100644 --- a/src/shared/Monaco.vue +++ b/src/shared/Monaco.vue @@ -42,7 +42,7 @@ onMounted(async () => { minimap: { enabled: false, }, - lineNumbersMinChars: 3, + lineNumbersMinChars: 2, automaticLayout: true, // 自适应布局 tabSize: 4, fontSize: isMobile.value ? 20 : 24, // 字体大小 diff --git a/src/utils/judge.ts b/src/utils/judge.ts index 6aebfda..b538ecc 100644 --- a/src/utils/judge.ts +++ b/src/utils/judge.ts @@ -4,17 +4,17 @@ import { Code } from "./types" const http = axios.create({ baseURL: "https://judge0api.hyyz.izhai.net" }) -function encode(str: string) { - return btoa(unescape(encodeURIComponent(str ?? ""))) +function encode(string?: string) { + return btoa(String.fromCharCode(...new TextEncoder().encode(string ?? ""))) } -function decode(bytes: string) { - let escaped = escape(atob(bytes ?? "")) - try { - return decodeURIComponent(escaped) - } catch (e) { - return unescape(escaped) - } +function decode(bytes?: string) { + const latin = atob(bytes ?? "") + return new TextDecoder("utf-8").decode( + Uint8Array.from({ length: latin.length }, (_, index) => + latin.charCodeAt(index) + ) + ) } export async function createTestSubmission(code: Code, input: string) {