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) {