feat: 重构页面布局为独立磨砂卡片样式并修改数据库文件名
优化说明: 1. 调整多个页面布局,将内容区拆分为独立的磨砂卡片,统一样式规范 2. 修改全局磨砂玻璃面板的透明度,避免阴影叠加导致的灰色遮罩 3. 新增扁平磨砂卡片样式,移除不必要的阴影 4. 将数据库文件名从 reader.db 改为 frpilot.db 5. 更新相关文档说明,同步 UI 修改内容
This commit is contained in:
+7
-1
@@ -56,6 +56,12 @@ body {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
/* 主内容区卡片:去掉投影,避免上下卡片之间的阴影透过半透明背景叠加成灰色遮罩 */
|
||||
.glass-panel.glass-panel-flat,
|
||||
.dark .glass-panel.glass-panel-flat {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
/* 窗口圆角固定 8px,与 Windows 11 系统默认圆角保持一致 */
|
||||
#app {
|
||||
border-radius: 8px;
|
||||
@@ -66,7 +72,7 @@ body {
|
||||
.glass-panel {
|
||||
border-radius: 16px;
|
||||
border: 1px solid rgba(255, 255, 255, 0.55);
|
||||
background: rgba(255, 255, 255, 0.55);
|
||||
background: rgba(255, 255, 255, 0.35);
|
||||
backdrop-filter: blur(18px) saturate(160%);
|
||||
-webkit-backdrop-filter: blur(18px) saturate(160%);
|
||||
box-shadow: 0 8px 32px rgba(15, 23, 42, 0.12);
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<div class="flex min-h-0 flex-1 gap-3 px-3 pb-3">
|
||||
<Aside />
|
||||
|
||||
<main class="glass-panel min-w-0 flex-1 overflow-y-auto">
|
||||
<main class="min-w-0 flex-1 overflow-hidden">
|
||||
<router-view />
|
||||
</main>
|
||||
</div>
|
||||
|
||||
+10
-3
@@ -1,7 +1,14 @@
|
||||
<template>
|
||||
<div class="flex h-full flex-col p-6">
|
||||
<h2 class="mb-4 text-lg font-semibold">{{ t("menu.dashboard") }}</h2>
|
||||
<a-result status="info" :sub-title="t('common.developing')" />
|
||||
<div class="flex h-full flex-col gap-3">
|
||||
<!-- 顶部操作栏(独立磨砂卡片) -->
|
||||
<div class="glass-panel glass-panel-flat flex shrink-0 items-center justify-between gap-3 px-5 py-3">
|
||||
<h2 class="text-lg font-semibold">{{ t("menu.dashboard") }}</h2>
|
||||
</div>
|
||||
|
||||
<!-- 内容区(独立磨砂卡片) -->
|
||||
<div class="glass-panel glass-panel-flat min-h-0 flex-1 overflow-y-auto p-5">
|
||||
<a-result status="info" :sub-title="t('common.developing')" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
+10
-3
@@ -1,7 +1,14 @@
|
||||
<template>
|
||||
<div class="flex h-full flex-col p-6">
|
||||
<h2 class="mb-4 text-lg font-semibold">{{ t("menu.download") }}</h2>
|
||||
<a-result status="info" :sub-title="t('common.developing')" />
|
||||
<div class="flex h-full flex-col gap-3">
|
||||
<!-- 顶部操作栏(独立磨砂卡片) -->
|
||||
<div class="glass-panel glass-panel-flat flex shrink-0 items-center justify-between gap-3 px-5 py-3">
|
||||
<h2 class="text-lg font-semibold">{{ t("menu.download") }}</h2>
|
||||
</div>
|
||||
|
||||
<!-- 内容区(独立磨砂卡片) -->
|
||||
<div class="glass-panel glass-panel-flat min-h-0 flex-1 overflow-y-auto p-5">
|
||||
<a-result status="info" :sub-title="t('common.developing')" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
+14
-12
@@ -1,7 +1,7 @@
|
||||
<template>
|
||||
<div class="flex h-full flex-col gap-4 p-6">
|
||||
<!-- 顶部:标题 + 操作按钮 -->
|
||||
<div class="flex items-center justify-between gap-3">
|
||||
<div class="flex h-full flex-col gap-3">
|
||||
<!-- 顶部操作栏(独立磨砂卡片) -->
|
||||
<div class="glass-panel glass-panel-flat flex shrink-0 items-center justify-between gap-3 px-5 py-3">
|
||||
<h2 class="text-lg font-semibold">{{ t("menu.servers") }}</h2>
|
||||
<a-space>
|
||||
<a-button :loading="loading" :icon="h(ReloadOutlined)" @click="refresh()">
|
||||
@@ -13,16 +13,18 @@
|
||||
</a-space>
|
||||
</div>
|
||||
|
||||
<!-- 服务器列表 -->
|
||||
<a-spin :spinning="loading" class="min-h-0 flex-1">
|
||||
<a-empty v-if="!servers.length" class="mt-20" :description="t('server.empty')" />
|
||||
<!-- 内容区(独立磨砂卡片,内部滚动) -->
|
||||
<div class="glass-panel glass-panel-flat min-h-0 flex-1 overflow-y-auto p-5">
|
||||
<a-spin :spinning="loading">
|
||||
<a-empty v-if="!servers.length" class="mt-20" :description="t('server.empty')" />
|
||||
|
||||
<div v-else class="grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-3">
|
||||
<ServerCard v-for="item in servers" :key="item.id" :server="item" @edit="openEdit(item)"
|
||||
@delete="onDelete(item)" @toggle-enabled="(value) => onToggleEnabled(item, value)"
|
||||
@toggle-pinned="(value) => onTogglePinned(item, value)" />
|
||||
</div>
|
||||
</a-spin>
|
||||
<div v-else class="grid grid-cols-1 gap-4 md:grid-cols-2 xl:grid-cols-3">
|
||||
<ServerCard v-for="item in servers" :key="item.id" :server="item" @edit="openEdit(item)"
|
||||
@delete="onDelete(item)" @toggle-enabled="(value) => onToggleEnabled(item, value)"
|
||||
@toggle-pinned="(value) => onTogglePinned(item, value)" />
|
||||
</div>
|
||||
</a-spin>
|
||||
</div>
|
||||
|
||||
<!-- 新增 / 编辑弹窗 -->
|
||||
<ServerFormModal v-model:open="modalOpen" :server="editing" @saved="onSaved" />
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<div class="flex h-full min-h-0">
|
||||
<div class="glass-panel flex h-full min-h-0">
|
||||
<!-- 左侧:设置菜单 -->
|
||||
<aside class="w-44 shrink-0 border-r border-slate-200/70 p-2 dark:border-white/10">
|
||||
<a-menu
|
||||
|
||||
+10
-3
@@ -1,7 +1,14 @@
|
||||
<template>
|
||||
<div class="flex h-full flex-col p-6">
|
||||
<h2 class="mb-4 text-lg font-semibold">{{ t("menu.tunnels") }}</h2>
|
||||
<a-result status="info" :sub-title="t('common.developing')" />
|
||||
<div class="flex h-full flex-col gap-3">
|
||||
<!-- 顶部操作栏(独立磨砂卡片) -->
|
||||
<div class="glass-panel glass-panel-flat flex shrink-0 items-center justify-between gap-3 px-5 py-3">
|
||||
<h2 class="text-lg font-semibold">{{ t("menu.tunnels") }}</h2>
|
||||
</div>
|
||||
|
||||
<!-- 内容区(独立磨砂卡片) -->
|
||||
<div class="glass-panel glass-panel-flat min-h-0 flex-1 overflow-y-auto p-5">
|
||||
<a-result status="info" :sub-title="t('common.developing')" />
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user