为比赛添加标签

This commit is contained in:
2024-07-02 20:06:50 +08:00
parent 922fc61ead
commit 60c1a495f2
7 changed files with 43 additions and 5 deletions

View File

@@ -18,6 +18,7 @@ const query = reactive({
limit: parseInt(<string>route.query.limit) || 10,
keyword: <string>route.query.keyword ?? "",
status: <string>route.query.status ?? "",
tag: <string>route.query.tag ?? "",
})
const data = ref<Contest[]>([])
const total = ref(0)
@@ -29,6 +30,13 @@ const options: SelectOption[] = [
{ label: "已结束", value: "-1" },
]
const tags: SelectOption[] = [
{ label: "全部", value: "" },
{ label: "练习", value: "练习" },
{ label: "期中", value: "期中" },
{ label: "期末", value: "期末" },
]
const columns: DataTableColumn<Contest>[] = [
{
title: renderTableTitle("状态", "streamline-emojis:collision"),
@@ -47,6 +55,12 @@ const columns: DataTableColumn<Contest>[] = [
minWidth: 360,
render: (row) => h(ContestTitle, { contest: row }),
},
{
title: renderTableTitle("标签", "fluent-emoji-flat:keycap-hashtag"),
key: "tag",
width: 100,
render: (row) => h(NTag, () => row.tag),
},
{
title: renderTableTitle("开始时间", "fluent-emoji-flat:eleven-thirty"),
key: "start_time",
@@ -68,6 +82,7 @@ async function listContests() {
limit: query.limit,
keyword: query.keyword,
status: query.status,
tag: query.tag,
})
data.value = res.data.results
total.value = res.data.total
@@ -87,12 +102,13 @@ function search(value: string) {
function clear() {
query.keyword = ""
query.status = ""
query.tag = ""
}
onMounted(listContests)
watch(() => query.page, routerPush)
watch(
() => [query.limit, query.status],
() => [query.limit, query.status, query.tag],
() => {
query.page = 1
routerPush()
@@ -137,6 +153,9 @@ function rowProps(row: Contest) {
v-model:value="query.status"
/>
</n-form-item>
<n-form-item label="标签">
<n-select class="select" :options="tags" v-model:value="query.tag" />
</n-form-item>
<n-form-item>
<n-input
clearable