This commit is contained in:
2025-10-06 00:23:12 +08:00
parent fccc3a361b
commit 76d5e0a78f
4 changed files with 121 additions and 115 deletions

View File

@@ -130,36 +130,42 @@ function rowProps(row: Contest) {
</script> </script>
<template> <template>
<n-flex vertical size="large"> <n-flex vertical size="large">
<n-space> <n-card embedded>
<n-form :show-feedback="false" label-placement="left" inline> <n-space>
<n-form-item label="比赛状态"> <n-form :show-feedback="false" label-placement="left" inline>
<n-select <n-form-item label="比赛状态">
style="width: 120px" <n-select
:options="options" style="width: 120px"
v-model:value="query.status" :options="options"
/> v-model:value="query.status"
</n-form-item> />
<n-form-item label="标签"> </n-form-item>
<n-select class="select" :options="tags" v-model:value="query.tag" /> <n-form-item label="标签">
</n-form-item> <n-select
</n-form> style="width: 120px"
<n-form :show-feedback="false" label-placement="left" inline> :options="tags"
<n-form-item> v-model:value="query.tag"
<n-input />
style="width: 200px" </n-form-item>
clearable </n-form>
v-model:value="query.keyword" <n-form :show-feedback="false" label-placement="left" inline>
placeholder="比赛标题" <n-form-item>
/> <n-input
</n-form-item> style="width: 200px"
<n-form-item> clearable
<n-flex> v-model:value="query.keyword"
<n-button @click="search(query.keyword)">搜索</n-button> placeholder="比赛标题"
<n-button @click="clear" quaternary>重置</n-button> />
</n-flex> </n-form-item>
</n-form-item> <n-form-item>
</n-form> <n-flex>
</n-space> <n-button @click="search(query.keyword)">搜索</n-button>
<n-button @click="clear" quaternary>重置</n-button>
</n-flex>
</n-form-item>
</n-form>
</n-space>
</n-card>
<n-data-table <n-data-table
:bordered="false" :bordered="false"
:columns="columns" :columns="columns"

View File

@@ -195,9 +195,9 @@ function rowProps(row: ProblemFiltered) {
<template> <template>
<n-flex vertical size="large"> <n-flex vertical size="large">
<n-flex justify="space-between"> <n-card embedded>
<n-flex> <n-flex justify="space-between">
<div> <n-space>
<n-form :show-feedback="false" inline label-placement="left"> <n-form :show-feedback="false" inline label-placement="left">
<n-form-item label="难度"> <n-form-item label="难度">
<n-select <n-select
@@ -210,8 +210,6 @@ function rowProps(row: ProblemFiltered) {
<AuthorSelect v-model:value="query.author" /> <AuthorSelect v-model:value="query.author" />
</n-form-item> </n-form-item>
</n-form> </n-form>
</div>
<div>
<n-form :show-feedback="false" inline label-placement="left"> <n-form :show-feedback="false" inline label-placement="left">
<n-form-item> <n-form-item>
<n-input <n-input
@@ -241,10 +239,10 @@ function rowProps(row: ProblemFiltered) {
</n-button> </n-button>
</n-form-item> </n-form-item>
</n-form> </n-form>
</div> </n-space>
<Hitokoto v-if="isDesktop" />
</n-flex> </n-flex>
<Hitokoto v-if="isDesktop" /> </n-card>
</n-flex>
<n-collapse-transition :show="showTag"> <n-collapse-transition :show="showTag">
<n-flex> <n-flex>
<n-tag <n-tag

View File

@@ -240,82 +240,84 @@ const columns = computed(() => {
</script> </script>
<template> <template>
<n-flex vertical size="large"> <n-flex vertical size="large">
<n-space> <n-card embedded>
<n-form :show-feedback="false" inline label-placement="left"> <n-space>
<n-form-item v-if="isDesktop && userStore.isAuthed" label="只看自己"> <n-form :show-feedback="false" inline label-placement="left">
<n-switch <n-form-item v-if="isDesktop && userStore.isAuthed" label="只看自己">
v-model:value="query.myself" <n-switch
checked-value="1" v-model:value="query.myself"
unchecked-value="0" checked-value="1"
/> unchecked-value="0"
</n-form-item> />
<n-form-item label="状态"> </n-form-item>
<n-select <n-form-item label="状态">
class="select" <n-select
v-model:value="query.result" class="select"
:options="resultOptions" v-model:value="query.result"
/> :options="resultOptions"
</n-form-item> />
<n-form-item label="语言" v-if="route.name !== 'contest submissions'"> </n-form-item>
<n-select <n-form-item label="语言" v-if="route.name !== 'contest submissions'">
class="select" <n-select
v-model:value="query.language" class="select"
:options="languageOptions" v-model:value="query.language"
/> :options="languageOptions"
</n-form-item> />
</n-form> </n-form-item>
<n-form :show-feedback="false" inline label-placement="left"> </n-form>
<n-form-item> <n-form :show-feedback="false" inline label-placement="left">
<n-input <n-form-item>
class="input" <n-input
clearable class="input"
v-model:value="query.username" clearable
placeholder="用户" v-model:value="query.username"
/> placeholder="用户"
</n-form-item> />
<n-form-item> </n-form-item>
<n-input <n-form-item>
class="input" <n-input
clearable class="input"
v-model:value="query.problem" clearable
placeholder="题号" v-model:value="query.problem"
/> placeholder="题号"
</n-form-item> />
</n-form> </n-form-item>
<n-form :show-feedback="false" inline label-placement="left"> </n-form>
<n-form-item v-if="isMobile && userStore.isAuthed" label="只看自己"> <n-form :show-feedback="false" inline label-placement="left">
<n-switch <n-form-item v-if="isMobile && userStore.isAuthed" label="只看自己">
v-model:value="query.myself" <n-switch
checked-value="1" v-model:value="query.myself"
unchecked-value="0" checked-value="1"
/> unchecked-value="0"
</n-form-item> />
<n-form-item> </n-form-item>
<n-button @click="search(query.username, query.problem)"> <n-form-item>
搜索 <n-button @click="search(query.username, query.problem)">
</n-button> 搜索
</n-form-item> </n-button>
<n-form-item> </n-form-item>
<n-button @click="clear" quaternary>重置</n-button> <n-form-item>
</n-form-item> <n-button @click="clear" quaternary>重置</n-button>
<n-form-item </n-form-item>
v-if="userStore.isSuperAdmin && route.name === 'submissions'" <n-form-item
> v-if="userStore.isSuperAdmin && route.name === 'submissions'"
<IconButton >
icon="streamline-emojis:bar-chart" <IconButton
tip="数据统计" icon="streamline-emojis:bar-chart"
@click="toggleStatisticPanel(true)" tip="数据统计"
/> @click="toggleStatisticPanel(true)"
</n-form-item> />
</n-form> </n-form-item>
<n-form :show-feedback="false" inline label-placement="left"> </n-form>
<n-form-item v-if="todayCount > 0"> <n-form :show-feedback="false" inline label-placement="left">
<component :is="isDesktop ? NH2 : NText" class="todayCount"> <n-form-item v-if="todayCount > 0">
<n-gradient-text>今日提交数{{ todayCount }}</n-gradient-text> <component :is="isDesktop ? NH2 : NText" class="todayCount">
</component> <n-gradient-text>今日提交数{{ todayCount }}</n-gradient-text>
</n-form-item> </component>
</n-form> </n-form-item>
</n-space> </n-form>
</n-space>
</n-card>
<n-data-table :bordered="false" :columns="columns" :data="submissions" /> <n-data-table :bordered="false" :columns="columns" :data="submissions" />
</n-flex> </n-flex>
<Pagination <Pagination

View File

@@ -32,7 +32,7 @@ onMounted(receive)
} }
.hitokoto .sentence { .hitokoto .sentence {
max-width: 500px; max-width: 400px;
text-overflow: ellipsis; text-overflow: ellipsis;
overflow: hidden; overflow: hidden;
word-break: break-all; word-break: break-all;