fix(ui): 适配前台浅色背景细节

- 学校 logo 替换为黑字版本,修改 useSiteConfig 默认值和 fallback
- 首页通知卡片补齐浅色样式:status-tag(三态)、unread-indicator、
  invite-actions、accept-btn、reject-btn
- 投稿区域状态徽章由绝对定位改为搜索标题行内布局,背景改为浅色
- 消息设置页面整体改为浅色主题,主色系改为 indigo 以匹配 ModernLight
This commit is contained in:
2026-09-18 22:15:09 +08:00
parent 90e32ad086
commit 43f05a6e34
5 changed files with 234 additions and 125 deletions
+77 -55
View File
@@ -56,42 +56,46 @@
<div class="form-container">
<form class="song-request-form" @submit.prevent="handleSearch">
<div v-if="user && submissionStatus" class="submission-status-corner">
<div
:class="[
'submission-status-badge',
{
open: !submissionStatus.submissionClosed,
closed: submissionStatus.submissionClosed
}
]"
>
<div class="badge-title">
{{ submissionStatus.submissionClosed ? '投稿未开放' : '投稿开放中' }}
</div>
<div
v-if="submissionStatus.timeLimitationEnabled"
class="badge-subtitle"
>
<template v-if="submissionStatus.currentTimePeriod">
{{ submissionStatus.currentTimePeriod.name }}
</template>
<template v-else-if="submissionStatus.nextTimePeriod">
下次开始:{{
submissionStatus.nextTimePeriod.startTime
? formatBeijingDateTime(submissionStatus.nextTimePeriod.startTime)
: submissionStatus.nextTimePeriod.name
}}
</template>
</div>
</div>
</div>
<!-- 顶部行:搜索和联合投稿 -->
<div class="form-header-row">
<!-- 歌曲搜索区域 -->
<div class="search-section">
<div class="search-label">歌曲搜索</div>
<div class="search-header-row">
<div class="search-label">歌曲搜索</div>
<div
v-if="user && submissionStatus"
class="submission-status-inline"
>
<div
:class="[
'submission-status-badge',
{
open: !submissionStatus.submissionClosed,
closed: submissionStatus.submissionClosed
}
]"
>
<div class="badge-title">
{{ submissionStatus.submissionClosed ? '投稿未开放' : '投稿开放中' }}
</div>
<div
v-if="submissionStatus.timeLimitationEnabled"
class="badge-subtitle"
>
<template v-if="submissionStatus.currentTimePeriod">
{{ submissionStatus.currentTimePeriod.name }}
</template>
<template v-else-if="submissionStatus.nextTimePeriod">
下次:{{
submissionStatus.nextTimePeriod.startTime
? formatBeijingDateTime(submissionStatus.nextTimePeriod.startTime)
: submissionStatus.nextTimePeriod.name
}}
</template>
</div>
</div>
</div>
</div>
<div class="search-input-group">
<input
id="title"
@@ -3012,38 +3016,36 @@ defineExpose({
position: relative;
}
.submission-status-corner {
position: absolute;
top: 0;
right: 0;
z-index: 30;
.submission-status-inline {
display: flex;
align-items: center;
justify-content: flex-end;
}
.submission-status-badge {
display: flex;
flex-direction: column;
gap: 2px;
padding: 8px 10px;
padding: 8px 12px;
border-radius: 12px;
border: 1px solid var(--border-tertiary);
background: rgba(6, 15, 22, 0.9);
backdrop-filter: blur(8px);
border: 1px solid var(--border-primary);
background: var(--bg-primary, #ffffff);
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
min-width: 140px;
text-align: center;
}
@media (max-width: 640px) {
.submission-status-corner {
position: static;
align-self: flex-end;
margin-top: -6px;
margin-bottom: -2px;
.submission-status-inline {
justify-content: flex-start;
width: 100%;
}
.submission-status-badge {
min-width: 0;
padding: 6px 9px;
padding: 6px 10px;
border-radius: 10px;
flex: 1;
}
.badge-title {
@@ -3056,11 +3058,13 @@ defineExpose({
}
.submission-status-badge.open {
border-color: rgba(16, 185, 129, 0.35);
background: rgba(22, 163, 74, 0.06);
border-color: rgba(22, 163, 74, 0.2);
}
.submission-status-badge.closed {
border-color: rgba(239, 68, 68, 0.35);
background: rgba(239, 68, 68, 0.06);
border-color: rgba(239, 68, 68, 0.2);
}
.badge-title {
@@ -3070,7 +3074,7 @@ defineExpose({
}
.submission-status-badge.open .badge-title {
color: rgba(16, 185, 129, 0.95);
color: rgba(22, 163, 74, 0.95);
}
.submission-status-badge.closed .badge-title {
@@ -3083,6 +3087,23 @@ defineExpose({
color: var(--text-secondary);
}
.search-header-row {
display: flex;
align-items: center;
justify-content: space-between;
width: 100%;
gap: 0.75rem;
margin-bottom: 0.5rem;
}
@media (max-width: 640px) {
.search-header-row {
flex-direction: column;
align-items: flex-start;
gap: 0.5rem;
}
}
.login-required-hint {
margin-left: 0.5rem;
display: flex;
@@ -3171,19 +3192,20 @@ defineExpose({
.search-section {
display: flex;
align-items: center;
gap: 0.75rem;
flex-direction: column;
align-items: stretch;
gap: 0.5rem;
flex: 1.5;
min-width: 400px; /* 增加最小宽度,确保搜索框、标签和按钮有足够空间 */
min-width: 400px;
}
.search-label {
font-family: 'MiSans', sans-serif;
font-weight: 600;
font-size: 15px;
color: var(--text-primary, #ffffff);
color: var(--text-primary, #09090b);
white-space: nowrap;
flex-shrink: 0; /* 防止标签被压缩 */
flex-shrink: 0;
}
.search-input-group {