feat(terminal): 右侧服务器列表增加搜索

侧栏复用 PickerSearch,按名称/域名筛选并支持搜索历史。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Nexus Agent
2026-06-12 05:46:34 +08:00
parent e42612e75f
commit 80aaf855a3
3 changed files with 31 additions and 18 deletions
@@ -0,0 +1,16 @@
# 终端页右侧服务器列表搜索
**日期**: 2026-06-12
## 变更摘要
终端页右侧服务器栏增加与空态/弹窗一致的搜索框,支持按名称、域名筛选及搜索历史。
## 涉及文件
- `frontend/src/components/terminal/TerminalServerPicker.vue`
- `frontend/src/pages/TerminalPage.vue`
## 验证
`npm run type-check`;终端页右侧输入关键词,列表实时过滤。
@@ -4,24 +4,17 @@
服务器 服务器
<span class="text-caption text-medium-emphasis ml-1">({{ servers.length }})</span> <span class="text-caption text-medium-emphasis ml-1">({{ servers.length }})</span>
</div> </div>
<v-skeleton-loader v-if="loading" type="list-item@8" class="px-2 pt-2" /> <div class="terminal-server-rail__search px-2 pt-2 pb-1">
<v-list v-else density="compact" nav class="terminal-server-rail__list flex-grow-1 py-0"> <PickerSearch
<v-list-item :search="search"
v-for="s in servers" :search-history="searchHistory"
:key="s.id" @update:search="$emit('update:search', $event)"
rounded="lg" @search-commit="$emit('search-commit')"
class="mb-1" />
@click="$emit('select', s.id)" </div>
> <v-skeleton-loader v-if="loading" type="list-item@8" class="px-2 pt-1" />
<template #prepend> <v-list v-else density="compact" nav class="terminal-server-rail__list flex-grow-1 py-0 px-2">
<v-icon :color="s.is_online ? 'success' : 'grey'" size="8">mdi-circle</v-icon> <PickerListItems :servers="servers" @select="$emit('select', $event)" />
</template>
<v-list-item-title class="text-body-2 text-truncate" :title="s.name">{{ s.name }}</v-list-item-title>
<v-list-item-subtitle class="text-truncate" :title="s.domain">{{ s.domain }}</v-list-item-subtitle>
</v-list-item>
<v-list-item v-if="servers.length === 0" class="text-medium-emphasis">
暂无匹配的服务器
</v-list-item>
</v-list> </v-list>
</aside> </aside>
+4
View File
@@ -101,7 +101,11 @@
<TerminalServerPicker <TerminalServerPicker
mode="sidebar" mode="sidebar"
:servers="filteredServers" :servers="filteredServers"
:search="serverSearch"
:search-history="terminalSearchHistory"
:loading="serversLoading" :loading="serversLoading"
@update:search="onServerSearchUpdate"
@search-commit="commitServerSearch"
@select="(id) => newSession(id)" @select="(id) => newSession(id)"
/> />
</div> </div>