feat(首页): 公告不再只放置顶那条,改成最新三条(置顶的排最前、带标),右边写发布日期
Deploy / deploy (push) Canceled after 0s

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
xuyueandClaude Opus 5.5 committed 2026-10-13 21:53:40 +08:00
1 parent 801d84c53b
commit f3956ad6a1
1 file changed
+11 -15
+11 -15
View File
@@ -149,10 +149,10 @@ async function loadSubmissions() {
submissions.value = res.results submissions.value = res.results
} }
/** 首页只放置顶的公告(用户定的),其余从顶栏「公告」进 */ /** 首页放前三条公告(后端置顶在前、再按发布时间),其余从顶栏「公告」进 */
async function loadAnnouncements() { async function loadAnnouncements() {
const res = await getAnnouncementList(0, 10) const res = await getAnnouncementList(0, 3)
announcements.value = res.results.filter((item) => item.top) announcements.value = res.results
} }
async function loadKnowledge() { async function loadKnowledge() {
@@ -524,20 +524,24 @@ async function openAnnouncement(item: AnnouncementListItem) {
</router-link> </router-link>
</n-card> </n-card>
<!-- 公告只放置顶的;别的从顶栏「公告」进 --> <n-card v-if="announcements.length" title="公告" :bordered="false" class="card">
<template #header-extra>
<router-link to="/announcement" class="more">全部</router-link>
</template>
<div <div
v-for="item in announcements" v-for="item in announcements"
:key="item.id" :key="item.id"
class="card pinned" class="row clickable"
role="button" role="button"
tabindex="0" tabindex="0"
@click="openAnnouncement(item)" @click="openAnnouncement(item)"
@keyup.enter="openAnnouncement(item)" @keyup.enter="openAnnouncement(item)"
> >
<n-tag type="warning" size="small" :bordered="false">置顶</n-tag> <n-tag v-if="item.top" type="warning" size="small" :bordered="false">置顶</n-tag>
<span class="row-title">{{ item.title }}</span> <span class="row-title">{{ item.title }}</span>
<router-link to="/announcement" class="more" @click.stop>公告 →</router-link> <n-text depth="3" class="row-meta">{{ dateText(item.createTime) }}</n-text>
</div> </div>
</n-card>
</div> </div>
</div> </div>
@@ -581,14 +585,6 @@ async function openAnnouncement(item: AnnouncementListItem) {
padding-top: 12px; padding-top: 12px;
} }
.pinned {
display: flex;
align-items: center;
gap: 10px;
padding: 14px 18px;
cursor: pointer;
}
.grid { .grid {
display: grid; display: grid;
grid-template-columns: minmax(0, 3fr) minmax(0, 2fr); grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);