style(dashboard): 将顶部标题栏与操作栏移入主工作区大背景卡片内部
This commit is contained in:
parent
b7aac02ada
commit
5cbc0241e6
@ -3665,9 +3665,9 @@ P0-05 从 `[!]` 调整为 `[~]`,并未标记完成;P0-04 剩余门禁和全
|
||||
|
||||
## 2026年10月18日 顶部标题与操作栏移入整体页面大容器背景框
|
||||
|
||||
- [ ] 需求梳理与确认:将之前悬浮在背景框外部的顶部标题栏(SCERT / SSL 证书管理、证书管理总览)与操作栏(刷新状态及各板块操作按钮)移入整体页面卡片容器内部,使整个页面具有统一、连贯的大背景卡片视觉。
|
||||
- [ ] 结构与样式调整:重构 Dashboard.vue 及 DashboardLayout.css,将顶部标题区与操作栏收纳至页面卡片容器内,优化内边距、分割边界与网格自适应流。
|
||||
- [ ] 前端测试验证:执行全量 357 项单元测试确保 100% 通过无回归。
|
||||
- [ ] 生产构建与部署:打包生产静态资源并部署至第一台 Linux 生产服务器(8.137.23.95:/scert/web/)。
|
||||
- [ ] 浏览器 MCP 实机验收与页面效果复核。
|
||||
- [ ] 规范双重推送 Git 远程仓库。
|
||||
- [✓] 需求梳理与确认:将之前悬浮在背景框外部的顶部标题栏(SCERT / SSL 证书管理、证书管理总览)与操作栏(刷新状态及各板块操作按钮)移入整体页面卡片容器内部,使整个页面具有统一、连贯的大背景卡片视觉。
|
||||
- [✓] 结构与样式调整:重构 Dashboard.vue 及 DashboardLayout.css,将顶部标题区与操作栏收纳至页面卡片容器内(.dashboard-workspace > .dashboard-content 顶部),优化内边距、分割边界与网格自适应流。
|
||||
- [✓] 前端测试验证:执行全量 357 项单元测试确保 100% 通过无回归(357 pass, 0 fail)。
|
||||
- [✓] 生产构建与部署:打包生产静态资源(vite build)并通过安全 SFTP 部署至第一台 Linux 生产服务器(8.137.23.95:/scert/web/)。
|
||||
- [✓] 浏览器 MCP 实机验收与页面效果复核:通过 CDP 刷新页面并读取实机 DOM,验证顶部标题栏与操作栏已成功内置于主卡片容器中,展示正常。
|
||||
- [✓] 规范双重推送 Git 远程仓库。
|
||||
|
||||
@ -138,7 +138,23 @@ const { activeSection, activeLabel, sections, selectSection } = useDashboardNavi
|
||||
|
||||
<template>
|
||||
<main class="page-shell">
|
||||
<header class="topbar">
|
||||
|
||||
|
||||
<div class="dashboard-messages" aria-live="polite">
|
||||
<p v-if="error" class="error-banner">{{ error }}</p>
|
||||
<p v-if="notice" class="notice-banner">{{ notice }}</p>
|
||||
<p v-if="taskQueryError" class="error-banner" role="alert">{{ taskQueryError }}</p>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-workspace">
|
||||
<div
|
||||
:key="activeSection"
|
||||
class="dashboard-content"
|
||||
role="region"
|
||||
:aria-label="activeLabel"
|
||||
tabindex="0"
|
||||
>
|
||||
<header class="topbar">
|
||||
<div>
|
||||
<p class="eyebrow">SCERT / SSL 证书管理</p>
|
||||
<h1>证书管理总览</h1>
|
||||
@ -169,21 +185,6 @@ const { activeSection, activeLabel, sections, selectSection } = useDashboardNavi
|
||||
</button>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<div class="dashboard-messages" aria-live="polite">
|
||||
<p v-if="error" class="error-banner">{{ error }}</p>
|
||||
<p v-if="notice" class="notice-banner">{{ notice }}</p>
|
||||
<p v-if="taskQueryError" class="error-banner" role="alert">{{ taskQueryError }}</p>
|
||||
</div>
|
||||
|
||||
<div class="dashboard-workspace">
|
||||
<div
|
||||
:key="activeSection"
|
||||
class="dashboard-content"
|
||||
role="region"
|
||||
:aria-label="activeLabel"
|
||||
tabindex="0"
|
||||
>
|
||||
<div v-if="activeSection === 'overview'" class="overview-section">
|
||||
|
||||
<section class="panel overview-panel">
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
.page-shell {
|
||||
display: grid;
|
||||
grid-template-rows: auto auto minmax(0, 1fr);
|
||||
grid-template-rows: auto minmax(0, 1fr);
|
||||
gap: 16px;
|
||||
width: 100%;
|
||||
max-width: 1600px;
|
||||
@ -11,6 +11,9 @@
|
||||
|
||||
.topbar {
|
||||
gap: 16px;
|
||||
padding: 24px 24px 16px;
|
||||
border-bottom: 1px solid #f0f4f9;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.topbar h1 {
|
||||
@ -36,7 +39,7 @@
|
||||
}
|
||||
|
||||
.page-shell:not(:has(.dashboard-messages > p)) {
|
||||
grid-template-rows: auto minmax(0, 1fr);
|
||||
grid-template-rows: minmax(0, 1fr);
|
||||
}
|
||||
|
||||
.dashboard-messages p {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user