style(前台): 列表页去掉表头 emoji、已结束的比赛改成灰色;比赛列表置顶进行中的比赛,排名页先看榜单

- 前台 53 处表头改成纯文字,删掉只剩这一个用途的 utils/renders.ts
- 「已结束」从红色改灰色(比赛列表 / 详情 / 后台 / 首页一起)
- 比赛列表第一页、无筛选时顶部列出进行中和即将开始的比赛
- 内容少的页面页脚贴底,不再悬在半屏
- 排名页两张柱状图挪到最后,第一屏是 Top100、本周进步榜和我的排名

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
xuyueandClaude Opus 5.5 committed 2026-09-27 20:13:29 +08:00
1 parent 31aa5f6e74
commit 6bf8c6e1d9
12 files changed
+183 -107

No files matched your search

+4 -5
View File
@@ -4,7 +4,6 @@ import { getAnnouncement, getAnnouncementList } from "oj/api"
import Pagination from "shared/components/Pagination.vue"
import { useBreakpoints } from "shared/composables/breakpoints"
import { parseTime } from "utils/functions"
import { renderTableTitle } from "utils/renders"
import type { AnnouncementListItem } from "utils/types"
import TitleWithTag from "./components/TitleWithTag.vue"
@@ -22,25 +21,25 @@ const query = reactive({
const columns: DataTableColumn<AnnouncementListItem>[] = [
{
key: "title",
title: renderTableTitle("公告标题", "streamline-emojis:fire"),
title: "公告标题",
render: (row) => h(TitleWithTag, { title: row.title, top: row.top }),
minWidth: 300,
},
{
key: "tag",
title: renderTableTitle("标签", "fluent-emoji-flat:keycap-hashtag"),
title: "标签",
width: 100,
render: (row) => h(NTag, () => row.tag || "公告"),
},
{
key: "createTime",
title: renderTableTitle("发布时间", "fluent-emoji-flat:eight-oclock"),
title: "发布时间",
render: (row) => parseTime(row.createTime),
width: 180,
},
{
key: "username",
title: renderTableTitle("发布人", "streamline-emojis:ghost"),
title: "发布人",
render: (row) => row.createdBy.username,
width: 120,
},