From d976cd03a31caab2472111c5dbfa9384f83d93de Mon Sep 17 00:00:00 2001 From: r Date: Fri, 3 Jul 2026 23:19:16 +0800 Subject: [PATCH] =?UTF-8?q?feat(terminal):=20=E5=B7=A5=E5=85=B7=E6=A0=8F?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=AE=9D=E5=A1=94=E4=B8=80=E9=94=AE=E7=99=BB?= =?UTF-8?q?=E5=BD=95=E6=8C=89=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 终端有打开会话时,在字号左侧提供宝塔登录,复用 useBtPanelLogin。 Co-authored-by: Cursor --- ...026-07-03-terminal-btpanel-login-button.md | 39 +++++++++++++++++++ ...026-07-03-terminal-btpanel-login-button.md | 29 ++++++++++++++ .../components/terminal/TerminalToolbar.vue | 32 +++++++++++++++ frontend/src/pages/TerminalPage.vue | 15 ++++++- 4 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 docs/audit/2026-07-03-terminal-btpanel-login-button.md create mode 100644 docs/changelog/2026-07-03-terminal-btpanel-login-button.md diff --git a/docs/audit/2026-07-03-terminal-btpanel-login-button.md b/docs/audit/2026-07-03-terminal-btpanel-login-button.md new file mode 100644 index 00000000..7c73b76a --- /dev/null +++ b/docs/audit/2026-07-03-terminal-btpanel-login-button.md @@ -0,0 +1,39 @@ +# 审计 — 2026-07-03 Terminal 宝塔登录按钮 + +**Changelog**: `docs/changelog/2026-07-03-terminal-btpanel-login-button.md` + +## Step 3 规则扫描 + +| 文件 | 规则 | 结论 | +|------|------|------| +| `TerminalToolbar.vue` | 仅 `session` 存在时显示;loading 防重复点击 | PASS | +| `TerminalPage.vue` | 复用 `useBtPanelLogin`;`serverId` 取自 `activeSession` | PASS | +| `useBtPanelLogin.ts` | 未改;并发去重与 `window.open` 行为不变 | PASS | + +## Closure + +| 项 | 状态 | 说明 | +|----|------|------| +| 终端内无法一键进宝塔 | FIXED | 工具栏「宝塔登录」+ 移动端菜单 | +| 与列表登录行为不一致 | N/A | 同一 composable / API | + +## 文件清单 + +- `frontend/src/components/terminal/TerminalToolbar.vue` +- `frontend/src/pages/TerminalPage.vue` + +## DoD + +- [x] Step 3 规则扫描 +- [x] Closure 表 +- [x] 文件清单与本次批次一致 +- [x] `npm run build-only` 通过 +- [x] `pre_deploy_check.sh` 全门通过 + +## 验证 + +```bash +cd frontend && npm run build-only +bash deploy/pre_deploy_check.sh +bash deploy/deploy-frontend.sh +``` diff --git a/docs/changelog/2026-07-03-terminal-btpanel-login-button.md b/docs/changelog/2026-07-03-terminal-btpanel-login-button.md new file mode 100644 index 00000000..82c65ce4 --- /dev/null +++ b/docs/changelog/2026-07-03-terminal-btpanel-login-button.md @@ -0,0 +1,29 @@ +# Terminal 工具栏一键登录宝塔 + +**日期**:2026-07-03 + +## 变更摘要 + +在 WebSSH 终端页,当已打开服务器会话时,于工具栏「字号」左侧增加 **宝塔登录** 按钮;复用服务器列表同一套 `useBtPanelLogin` 逻辑,对当前激活标签的 `serverId` 生成并打开宝塔面板登录链接。 + +## 动机 + +运维在终端排障时常需切到宝塔面板,此前只能回服务器列表点「一键登录」;在终端内直接登录可减少跳转。 + +## 涉及文件 + +**前端** + +- `frontend/src/components/terminal/TerminalToolbar.vue` — 桌面按钮 + 移动端齿轮菜单项 +- `frontend/src/pages/TerminalPage.vue` — 接入 `useBtPanelLogin`、loading 与点击处理 + +## 迁移 / 重启 + +- 仅前端静态资源:`bash deploy/deploy-frontend.sh`(Docker 生产走 `nexus-1panel.sh upgrade` 重建镜像内前端) + +## 验证 + +```bash +cd frontend && npm run build-only +# 打开 #/terminal,连接任意服务器后工具栏应显示「宝塔登录」 +``` diff --git a/frontend/src/components/terminal/TerminalToolbar.vue b/frontend/src/components/terminal/TerminalToolbar.vue index ef519b1c..8c348adf 100644 --- a/frontend/src/components/terminal/TerminalToolbar.vue +++ b/frontend/src/components/terminal/TerminalToolbar.vue @@ -37,6 +37,20 @@
+ 字号 @@ -67,6 +81,17 @@ /> + + + 一键登录宝塔 + + 字号 {{ fontSize }} 缩小 @@ -112,6 +137,7 @@ const props = defineProps<{ session: TermSessionData | null fontSize: number scrollback: number + btLoginLoading?: boolean }>() defineEmits<{ @@ -119,6 +145,7 @@ defineEmits<{ 'scrollback-change': [value: number] fullscreen: [] disconnect: [] + 'bt-login': [] }>() const statusLabel = computed(() => @@ -146,6 +173,11 @@ const statusColor = computed(() => min-width: 6.5rem; max-width: 7.5rem; } +.terminal-toolbar__bt-login { + font-weight: 600; + letter-spacing: 0.01em; + text-transform: none; +} .font-mono { font-family: 'Cascadia Code', 'Fira Code', 'JetBrains Mono', Menlo, monospace; } diff --git a/frontend/src/pages/TerminalPage.vue b/frontend/src/pages/TerminalPage.vue index 38cfb075..94adcbf2 100644 --- a/frontend/src/pages/TerminalPage.vue +++ b/frontend/src/pages/TerminalPage.vue @@ -34,10 +34,12 @@ :session="activeSession" :font-size="fontSize" :scrollback="scrollback" + :bt-login-loading="btLoginLoading" @font-change="changeFontSize" @scrollback-change="changeScrollback" @fullscreen="toggleFullscreen" @disconnect="disconnect" + @bt-login="onBtLogin" />