ui(nav): 侧栏隐藏宝塔面板菜单分组

宝塔能力保留在 servers 页一键登录与批量获取 API;btpanel 路由仍可通过直链访问。
This commit is contained in:
r
2026-06-21 12:22:14 +08:00
parent 629d8b3e26
commit 76682e3be0
3 changed files with 49 additions and 50 deletions
@@ -0,0 +1,26 @@
# 审计 — 2026-06-21 侧栏隐藏宝塔菜单
**Changelog**: `docs/changelog/2026-06-21-btpanel-nav-hidden.md`
## Step 3 规则扫描
| 文件 | 规则 | 结论 |
|------|------|------|
| `App.vue` | 仅移除导航 UI,路由与 API 未删 | PASS |
## Closure
| 项 | 状态 | 说明 |
|----|------|------|
| 侧栏宝塔入口 | DONE | 整组菜单隐藏 |
| servers 一键登录 | OK | 未改动 |
## 文件清单
- `frontend/src/App.vue`
- `docs/changelog/2026-06-21-btpanel-nav-hidden.md`
## DoD
- [x] 侧栏无「宝塔面板」分组
- [x] changelog 已写
@@ -0,0 +1,23 @@
# 侧栏隐藏宝塔面板菜单
**日期**2026-06-21
## 摘要
左侧导航移除「宝塔面板」分组及全部子菜单;宝塔能力仍通过 `#/servers` 一键登录与批量获取 API 使用,`#/btpanel/*` 路由保留(直链可访问)。
## 动机
运维入口收敛到服务器页,避免侧栏重复暴露未常用宝塔管理页。
## 涉及文件
- `frontend/src/App.vue`
## 迁移 / 重启
仅前端静态资源;`cd frontend && npx vite build` 后同步 `web/app/`
## 验证
登录后侧栏无「宝塔面板」区块;`#/servers` 一键登录与批量栏「宝塔」分组正常。
-50
View File
@@ -81,38 +81,6 @@
<v-divider class="mx-3 my-1" />
<v-list nav slim>
<v-list-subheader>宝塔面板</v-list-subheader>
<v-list-group v-model="btPanelMenuOpen">
<template #activator="{ props: groupProps }">
<v-list-item
v-bind="groupProps"
prepend-icon="mdi-view-dashboard-variant-outline"
title="宝塔管理"
:active="route.path.startsWith('/btpanel')"
/>
</template>
<v-list-item
v-for="item in btPanelItems"
:key="item.to"
:prepend-icon="item.icon"
:title="item.title"
:to="item.to"
:active="route.path === item.to"
active-class="text-primary"
link
nav
slim
class="pl-4"
@click="navigateTo(item.to)"
@mouseenter="scheduleRoutePrefetch(item.to)"
@mouseleave="cancelRoutePrefetch(item.to)"
/>
</v-list-group>
</v-list>
<v-divider class="mx-3 my-1" />
<v-list nav slim>
<v-list-subheader>系统</v-list-subheader>
@@ -351,13 +319,8 @@ async function toggleTheme() {
}
const drawer = ref(true)
const btPanelMenuOpen = ref(route.path.startsWith('/btpanel'))
const { mobile } = useDisplay()
watch(() => route.path, (p) => {
if (p.startsWith('/btpanel')) btPanelMenuOpen.value = true
})
/** 终端页监听菜单开合,在动画结束后 refit xterm */
provide('nexusDrawer', drawer)
@@ -393,19 +356,6 @@ const sysItems = [
{ to: '/audit', title: '审计日志', icon: 'mdi-clipboard-text-outline' },
]
const btPanelItems = [
{ to: '/btpanel/login', title: '服务器列表', icon: 'mdi-server' },
{ to: '/btpanel/monitor', title: '系统监控', icon: 'mdi-speedometer' },
{ to: '/btpanel/sites', title: '网站列表', icon: 'mdi-web' },
{ to: '/btpanel/sites/create', title: '创建网站', icon: 'mdi-web-plus' },
{ to: '/btpanel/domains', title: '域名管理', icon: 'mdi-domain' },
{ to: '/btpanel/ssl', title: 'SSL 证书', icon: 'mdi-certificate-outline' },
{ to: '/btpanel/databases', title: '数据库', icon: 'mdi-database-outline' },
{ to: '/btpanel/crontab', title: '计划任务', icon: 'mdi-calendar-clock' },
{ to: '/btpanel/services', title: '服务管理', icon: 'mdi-cog-transfer-outline' },
{ to: '/btpanel/settings', title: '连接配置', icon: 'mdi-link-variant' },
]
const snackbar = reactive({ show: false, text: '', color: 'success', timeout: 3000 })
function navigateTo(to: string) {