ui(nav): 侧栏隐藏宝塔面板菜单分组
宝塔能力保留在 servers 页一键登录与批量获取 API;btpanel 路由仍可通过直链访问。
This commit is contained in:
@@ -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` 一键登录与批量栏「宝塔」分组正常。
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user