This commit is contained in:
2025-03-06 20:14:04 +08:00
parent 77b5acef0c
commit 53586df263
9 changed files with 846 additions and 468 deletions

1267
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@@ -11,12 +11,12 @@
"dependencies": {
"@codemirror/lang-cpp": "^6.0.2",
"@codemirror/lang-python": "^6.1.7",
"@vueuse/core": "^12.7.0",
"@wangeditor-next/editor": "^5.6.31",
"@vueuse/core": "^12.8.2",
"@wangeditor-next/editor": "^5.6.33",
"@wangeditor-next/editor-for-vue": "^5.1.14",
"axios": "^1.7.9",
"axios": "^1.8.1",
"canvas-confetti": "^1.9.3",
"chart.js": "^4.4.7",
"chart.js": "^4.4.8",
"codemirror": "^6.0.1",
"copy-text-to-clipboard": "^3.2.0",
"date-fns": "^4.1.0",
@@ -31,17 +31,17 @@
},
"devDependencies": {
"@iconify/vue": "^4.3.0",
"@shikijs/markdown-it": "^3.0.0",
"@shikijs/markdown-it": "^3.1.0",
"@types/canvas-confetti": "^1.9.0",
"@types/node": "^22.13.4",
"@types/node": "^22.13.9",
"@vitejs/plugin-vue": "^5.2.1",
"prettier": "^3.5.1",
"prettier": "^3.5.3",
"prettier-plugin-organize-imports": "^4.1.0",
"typescript": "~5.7.3",
"unplugin-auto-import": "^19.1.0",
"unplugin-vue-components": "^28.4.0",
"typescript": "^5.8.2",
"unplugin-auto-import": "^19.1.1",
"unplugin-vue-components": "^28.4.1",
"unplugin-vue-markdown": "^28.3.1",
"vite": "^6.1.1",
"vite": "^6.2.0",
"vue-tsc": "^2.2.2"
}
}

View File

@@ -104,6 +104,7 @@ watch(
<n-button @click="router.push('/admin/contest/create')">新比赛</n-button>
<div>
<n-input
style="width: 200px"
clearable
@change="listRanks"
v-model:value="query.username"

View File

@@ -81,7 +81,7 @@ function handleAll() {
<n-switch v-model:value="needKs" />
<span>前面带上 ks</span>
</n-flex>
<n-input v-model:value="prefix" placeholder="班级号" />
<n-input style="width: 200px;" v-model:value="prefix" placeholder="班级号" />
<n-input
type="textarea"
class="inputArea"

View File

@@ -23,6 +23,7 @@ declare global {
const createInjectionState: typeof import('@vueuse/core')['createInjectionState']
const createPinia: typeof import('pinia')['createPinia']
const createReactiveFn: typeof import('@vueuse/core')['createReactiveFn']
const createRef: typeof import('@vueuse/core')['createRef']
const createReusableTemplate: typeof import('@vueuse/core')['createReusableTemplate']
const createSharedComposable: typeof import('@vueuse/core')['createSharedComposable']
const createTemplatePromise: typeof import('@vueuse/core')['createTemplatePromise']
@@ -150,6 +151,7 @@ declare global {
const useCloned: typeof import('@vueuse/core')['useCloned']
const useColorMode: typeof import('@vueuse/core')['useColorMode']
const useConfirmDialog: typeof import('@vueuse/core')['useConfirmDialog']
const useCountdown: typeof import('@vueuse/core')['useCountdown']
const useCounter: typeof import('@vueuse/core')['useCounter']
const useCssModule: typeof import('vue')['useCssModule']
const useCssVar: typeof import('@vueuse/core')['useCssVar']

1
src/components.d.ts vendored
View File

@@ -2,6 +2,7 @@
// @ts-nocheck
// Generated by unplugin-vue-components
// Read more: https://github.com/vuejs/core/pull/3399
// biome-ignore lint: disable
export {}
/* prettier-ignore */

View File

@@ -158,6 +158,7 @@ function rowProps(row: Contest) {
</n-form-item>
<n-form-item>
<n-input
class="input"
clearable
v-model:value="query.keyword"
placeholder="比赛标题"
@@ -191,4 +192,8 @@ function rowProps(row: Contest) {
.select {
width: 120px;
}
.input {
width: 200px;
}
</style>

View File

@@ -225,7 +225,7 @@ function rowProps(row: ProblemFiltered) {
<n-form :show-feedback="false" inline label-placement="left">
<n-form-item label="题目难度">
<n-select
class="select"
style="width: 120px;"
v-model:value="query.difficulty"
:options="difficultyOptions"
/>
@@ -233,6 +233,7 @@ function rowProps(row: ProblemFiltered) {
<n-form-item>
<n-input
clearable
class="input"
v-model:value="query.keyword"
placeholder="题号或者标题"
/>
@@ -291,4 +292,8 @@ function rowProps(row: ProblemFiltered) {
.select {
width: 120px;
}
.input {
width: 200px;
}
</style>

View File

@@ -271,13 +271,14 @@ const columns = computed(() => {
<n-form :show-feedback="false" inline label-placement="left">
<n-form-item>
<n-input
class="input"
clearable
v-model:value="query.username"
placeholder="用户"
/>
</n-form-item>
<n-form-item>
<n-input clearable v-model:value="query.problem" placeholder="题号" />
<n-input class="input" clearable v-model:value="query.problem" placeholder="题号" />
</n-form-item>
</n-form>
<n-form :show-feedback="false" inline label-placement="left">
@@ -326,6 +327,10 @@ const columns = computed(() => {
width: 120px;
}
.input {
width: 200px;
}
.code {
font-size: 20px;
overflow: auto;