fix.
This commit is contained in:
@@ -129,7 +129,7 @@ export async function getContestProblems(contestID: string) {
|
|||||||
|
|
||||||
export function getContestRank(
|
export function getContestRank(
|
||||||
contestID: string,
|
contestID: string,
|
||||||
query: { limit: number; offset: number }
|
query: { limit: number; offset: number; force_refresh: "1" | "0" }
|
||||||
) {
|
) {
|
||||||
return http.get("contest_rank", {
|
return http.get("contest_rank", {
|
||||||
params: {
|
params: {
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ const passwordFormVisible = computed(
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<n-space vertical v-if="contestStore.contest">
|
<n-space vertical size="large" v-if="contestStore.contest">
|
||||||
<n-space align="center" justify="space-between">
|
<n-space align="center" justify="space-between">
|
||||||
<n-space align="center">
|
<n-space align="center">
|
||||||
<h2 class="contestTitle">{{ contestStore.contest.title }}</h2>
|
<h2 class="contestTitle">{{ contestStore.contest.title }}</h2>
|
||||||
|
|||||||
@@ -119,29 +119,36 @@ function rowProps(row: Contest) {
|
|||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<n-space>
|
<n-space vertical size="large">
|
||||||
<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="比赛状态">
|
||||||
class="select"
|
<n-select
|
||||||
:options="options"
|
class="select"
|
||||||
v-model:value="query.status"
|
:options="options"
|
||||||
/>
|
v-model:value="query.status"
|
||||||
</n-form-item>
|
/>
|
||||||
<n-form-item label="搜索">
|
</n-form-item>
|
||||||
<n-input clearable @change="search" />
|
<n-form-item label="搜索">
|
||||||
</n-form-item>
|
<n-input clearable @change="search" />
|
||||||
</n-form>
|
</n-form-item>
|
||||||
<n-form label-placement="left" inline>
|
</n-form>
|
||||||
<n-form-item>
|
<n-form :show-feedback="false" label-placement="left" inline>
|
||||||
<n-space>
|
<n-form-item>
|
||||||
<n-button @click="search(query.keyword)">搜索</n-button>
|
<n-space>
|
||||||
<n-button @click="clear">重置</n-button>
|
<n-button @click="search(query.keyword)">搜索</n-button>
|
||||||
</n-space>
|
<n-button @click="clear">重置</n-button>
|
||||||
</n-form-item>
|
</n-space>
|
||||||
</n-form>
|
</n-form-item>
|
||||||
|
</n-form>
|
||||||
|
</n-space>
|
||||||
|
<n-data-table
|
||||||
|
striped
|
||||||
|
:columns="columns"
|
||||||
|
:data="data"
|
||||||
|
:row-props="rowProps"
|
||||||
|
/>
|
||||||
</n-space>
|
</n-space>
|
||||||
<n-data-table striped :columns="columns" :data="data" :row-props="rowProps" />
|
|
||||||
<Pagination
|
<Pagination
|
||||||
v-model:limit="query.limit"
|
v-model:limit="query.limit"
|
||||||
v-model:page="query.page"
|
v-model:page="query.page"
|
||||||
|
|||||||
@@ -70,6 +70,7 @@ async function listRanks() {
|
|||||||
const res = await getContestRank(props.contestID, {
|
const res = await getContestRank(props.contestID, {
|
||||||
limit: query.limit,
|
limit: query.limit,
|
||||||
offset: query.limit * (query.page - 1),
|
offset: query.limit * (query.page - 1),
|
||||||
|
force_refresh: "0",
|
||||||
})
|
})
|
||||||
total.value = res.data.total
|
total.value = res.data.total
|
||||||
data.value = res.data.results
|
data.value = res.data.results
|
||||||
@@ -81,7 +82,7 @@ async function listRanks() {
|
|||||||
async function addColumns() {
|
async function addColumns() {
|
||||||
try {
|
try {
|
||||||
problems.value = await getContestProblems(props.contestID)
|
problems.value = await getContestProblems(props.contestID)
|
||||||
problems.value.map((problem, index) => {
|
problems.value.map((problem) => {
|
||||||
columns.value.push({
|
columns.value.push({
|
||||||
align: "center",
|
align: "center",
|
||||||
title: () =>
|
title: () =>
|
||||||
@@ -99,7 +100,7 @@ async function addColumns() {
|
|||||||
},
|
},
|
||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
() => `${index + 1}`
|
() => problem.title
|
||||||
),
|
),
|
||||||
render: (row) => {
|
render: (row) => {
|
||||||
if (row.submission_info[problem.id]) {
|
if (row.submission_info[problem.id]) {
|
||||||
@@ -138,6 +139,7 @@ async function addColumns() {
|
|||||||
},
|
},
|
||||||
key: problem.id,
|
key: problem.id,
|
||||||
width: 150,
|
width: 150,
|
||||||
|
ellipsis: true,
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
|
|||||||
@@ -168,49 +168,50 @@ function rowProps(row: ProblemFiltered) {
|
|||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<n-space>
|
<n-space vertical size="large">
|
||||||
<n-form :show-feedback="false" inline label-placement="left">
|
<n-space>
|
||||||
<n-form-item label="难度">
|
<n-form :show-feedback="false" inline label-placement="left">
|
||||||
<n-select
|
<n-form-item label="难度">
|
||||||
class="select"
|
<n-select
|
||||||
v-model:value="query.difficulty"
|
class="select"
|
||||||
:options="difficultyOptions"
|
v-model:value="query.difficulty"
|
||||||
/>
|
:options="difficultyOptions"
|
||||||
</n-form-item>
|
/>
|
||||||
<n-form-item label="搜索">
|
</n-form-item>
|
||||||
<n-input clearable @change="search" />
|
<n-form-item label="搜索">
|
||||||
</n-form-item>
|
<n-input clearable @change="search" />
|
||||||
</n-form>
|
</n-form-item>
|
||||||
<n-form inline label-placement="left">
|
</n-form>
|
||||||
<n-form-item>
|
<n-form :show-feedback="false" inline label-placement="left">
|
||||||
<n-space>
|
<n-form-item>
|
||||||
<n-button @click="search(query.keyword)">搜索</n-button>
|
<n-space>
|
||||||
<n-button @click="clear">重置</n-button>
|
<n-button @click="search(query.keyword)">搜索</n-button>
|
||||||
<n-button @click="getRandom">随机一题</n-button>
|
<n-button @click="clear">重置</n-button>
|
||||||
</n-space>
|
<n-button @click="getRandom">随机一题</n-button>
|
||||||
</n-form-item>
|
</n-space>
|
||||||
</n-form>
|
</n-form-item>
|
||||||
|
</n-form>
|
||||||
|
</n-space>
|
||||||
|
<n-space>
|
||||||
|
<div class="tagTitle">标签</div>
|
||||||
|
<n-button
|
||||||
|
@click="chooseTag(tag)"
|
||||||
|
v-for="tag in tags"
|
||||||
|
:key="tag.id"
|
||||||
|
size="small"
|
||||||
|
secondary
|
||||||
|
:type="tag.checked ? 'success' : 'default'"
|
||||||
|
>
|
||||||
|
{{ tag.name }}
|
||||||
|
</n-button>
|
||||||
|
</n-space>
|
||||||
|
<n-data-table
|
||||||
|
striped
|
||||||
|
:data="problems"
|
||||||
|
:columns="columns"
|
||||||
|
:row-props="rowProps"
|
||||||
|
/>
|
||||||
</n-space>
|
</n-space>
|
||||||
<n-space>
|
|
||||||
<div class="tagTitle">标签</div>
|
|
||||||
<n-button
|
|
||||||
@click="chooseTag(tag)"
|
|
||||||
v-for="tag in tags"
|
|
||||||
:key="tag.id"
|
|
||||||
size="small"
|
|
||||||
secondary
|
|
||||||
:type="tag.checked ? 'success' : 'default'"
|
|
||||||
>
|
|
||||||
{{ tag.name }}
|
|
||||||
</n-button>
|
|
||||||
</n-space>
|
|
||||||
<n-data-table
|
|
||||||
class="table"
|
|
||||||
striped
|
|
||||||
:data="problems"
|
|
||||||
:columns="columns"
|
|
||||||
:row-props="rowProps"
|
|
||||||
/>
|
|
||||||
<Pagination
|
<Pagination
|
||||||
:total="total"
|
:total="total"
|
||||||
v-model:limit="query.limit"
|
v-model:limit="query.limit"
|
||||||
@@ -226,8 +227,4 @@ function rowProps(row: ProblemFiltered) {
|
|||||||
.select {
|
.select {
|
||||||
width: 120px;
|
width: 120px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.table {
|
|
||||||
margin-top: 24px;
|
|
||||||
}
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -230,32 +230,34 @@ const columns = computed(() => {
|
|||||||
})
|
})
|
||||||
</script>
|
</script>
|
||||||
<template>
|
<template>
|
||||||
<n-space>
|
<n-space vertical size="large">
|
||||||
<n-form :show-feedback="false" inline label-placement="left">
|
<n-space>
|
||||||
<n-form-item label="提交状态">
|
<n-form :show-feedback="false" inline label-placement="left">
|
||||||
<n-select
|
<n-form-item label="提交状态">
|
||||||
class="select"
|
<n-select
|
||||||
v-model:value="query.result"
|
class="select"
|
||||||
:options="options"
|
v-model:value="query.result"
|
||||||
/>
|
:options="options"
|
||||||
</n-form-item>
|
/>
|
||||||
<n-form-item label="只看自己">
|
</n-form-item>
|
||||||
<n-switch v-model:value="query.myself" />
|
<n-form-item label="只看自己">
|
||||||
</n-form-item>
|
<n-switch v-model:value="query.myself" />
|
||||||
</n-form>
|
</n-form-item>
|
||||||
<n-form inline label-placement="left">
|
</n-form>
|
||||||
<n-form-item label="搜索用户">
|
<n-form :show-feedback="false" inline label-placement="left">
|
||||||
<n-input clearable @change="search" />
|
<n-form-item label="搜索用户">
|
||||||
</n-form-item>
|
<n-input clearable @change="search" />
|
||||||
<n-form-item>
|
</n-form-item>
|
||||||
<n-space>
|
<n-form-item>
|
||||||
<n-button @click="search(query.username)">搜索</n-button>
|
<n-space>
|
||||||
<n-button @click="clear">重置</n-button>
|
<n-button @click="search(query.username)">搜索</n-button>
|
||||||
</n-space>
|
<n-button @click="clear">重置</n-button>
|
||||||
</n-form-item>
|
</n-space>
|
||||||
</n-form>
|
</n-form-item>
|
||||||
|
</n-form>
|
||||||
|
</n-space>
|
||||||
|
<n-data-table striped :columns="columns" :data="submissions" />
|
||||||
</n-space>
|
</n-space>
|
||||||
<n-data-table striped :columns="columns" :data="submissions" />
|
|
||||||
<Pagination
|
<Pagination
|
||||||
:total="total"
|
:total="total"
|
||||||
v-model:limit="query.limit"
|
v-model:limit="query.limit"
|
||||||
|
|||||||
Reference in New Issue
Block a user