fix(servers): 未设路径区表格绑定 sort-by 启用服务端排序
未设路径面板缺 v-model:sort-by,列头点击不触发 API;与主表共享 sortBy。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,25 @@
|
||||
# 审计 — 未设路径服务器表格排序
|
||||
|
||||
**Changelog**: `docs/changelog/2026-06-08-unset-path-table-sort.md`
|
||||
|
||||
## 变更文件
|
||||
|
||||
`ServerUnsetPathPanel.vue` · `ServersPage.vue` · `web/app/index.html` · `web/app/assets/*`
|
||||
|
||||
## Step 3
|
||||
|
||||
| 项 | 结论 |
|
||||
|----|------|
|
||||
| sort-by 与主表共享 | PASS(同一 `sortBy` ref + `listQueryParams`) |
|
||||
| API 参数 | PASS(`target_path_unset=true` + `sort_by`/`sort_order` 已有) |
|
||||
| 无后端改动 | PASS |
|
||||
|
||||
## Closure
|
||||
|
||||
Gate 7/7 PASS · 生产部署 · `/health` 200
|
||||
|
||||
## DoD
|
||||
|
||||
- [x] 未设路径区列头可排序
|
||||
- [x] 与主表排序状态一致
|
||||
- [x] 前端构建通过
|
||||
@@ -0,0 +1,25 @@
|
||||
# 未设路径服务器表格排序修复
|
||||
|
||||
**日期**:2026-06-08
|
||||
|
||||
## 变更摘要
|
||||
|
||||
修复「未设置路径服务器」区域点击表头排序无效的问题:为 `ServerUnsetPathPanel` 的 `v-data-table-server` 绑定 `sort-by`,与主表共享同一排序状态并走服务端 `sort_by` / `sort_order` 参数。
|
||||
|
||||
## 动机
|
||||
|
||||
主表已有 `v-model:sort-by`,未设路径区缺绑定,列头点击无 API 请求、顺序不变。
|
||||
|
||||
## 涉及文件
|
||||
|
||||
- `frontend/src/components/servers/ServerUnsetPathPanel.vue` — 新增 `sortBy` prop 与 `update:sort-by` emit
|
||||
- `frontend/src/pages/ServersPage.vue` — `v-model:sort-by="sortBy"` 传给未设路径面板
|
||||
|
||||
## 迁移 / 重启
|
||||
|
||||
无。前端构建部署即可。
|
||||
|
||||
## 验证
|
||||
|
||||
1. 打开服务器页,在未设路径区点击「名称」「心跳」等列头,列表顺序应变化且与主表排序一致。
|
||||
2. `GET /api/servers/?target_path_unset=true&sort_by=...&sort_order=...` 应出现在网络请求中。
|
||||
@@ -53,8 +53,10 @@
|
||||
show-select
|
||||
show-expand
|
||||
:model-value="selectedItems"
|
||||
:sort-by="sortBy"
|
||||
v-model:expanded="expandedModel"
|
||||
@update:model-value="$emit('update:selected-items', $event)"
|
||||
@update:sort-by="$emit('update:sort-by', $event)"
|
||||
@update:page="$emit('update:page', $event)"
|
||||
@update:items-per-page="$emit('update:items-per-page', $event)"
|
||||
>
|
||||
@@ -177,6 +179,7 @@
|
||||
<script setup lang="ts">
|
||||
import { computed } from 'vue'
|
||||
import type { ServerApiItem } from '@/types/api'
|
||||
import type { TableSortItem } from '@/utils/serverTableSort'
|
||||
import { statusChipColor, statusLabel, formatRelativeTime } from '@/utils/status'
|
||||
import { normalizeServerIds } from '@/utils/serverSelection'
|
||||
import ServerInlineDetail from '@/components/servers/ServerInlineDetail.vue'
|
||||
@@ -189,6 +192,7 @@ const props = defineProps<{
|
||||
page: number
|
||||
itemsPerPage: number
|
||||
itemsPerPageOptions: ReadonlyArray<{ readonly value: number; readonly title: string }>
|
||||
sortBy: TableSortItem[]
|
||||
expandedIds: number[]
|
||||
selectedItems: Array<ServerApiItem | number>
|
||||
selectAllLoading: boolean
|
||||
@@ -199,6 +203,7 @@ const props = defineProps<{
|
||||
|
||||
const emit = defineEmits<{
|
||||
refresh: []
|
||||
'update:sort-by': [sortBy: TableSortItem[]]
|
||||
'update:page': [page: number]
|
||||
'update:items-per-page': [n: number]
|
||||
'update:selected-items': [items: Array<ServerApiItem | number>]
|
||||
|
||||
@@ -302,6 +302,7 @@
|
||||
:items-per-page-options="dataTablePageOptions"
|
||||
:expanded-ids="expandedUnsetIds"
|
||||
v-model:selected-items="unsetSelectedItems"
|
||||
v-model:sort-by="sortBy"
|
||||
:select-all-loading="selectAllUnsetLoading"
|
||||
:editing-path-id="editingPathId"
|
||||
:editing-path-value="editingPathValue"
|
||||
|
||||
Reference in New Issue
Block a user