fix(ui): 适配前台浅色背景细节
- 学校 logo 替换为黑字版本,修改 useSiteConfig 默认值和 fallback - 首页通知卡片补齐浅色样式:status-tag(三态)、unread-indicator、 invite-actions、accept-btn、reject-btn - 投稿区域状态徽章由绝对定位改为搜索标题行内布局,背景改为浅色 - 消息设置页面整体改为浅色主题,主色系改为 indigo 以匹配 ModernLight
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user