# 调度页目标服务器按分类选择

**日期**: 2026-06-08

## 变更摘要

调度新建/编辑表单中的「目标服务器」由 `v-select` 多选下拉，改为复用 `ServerCategoryPicker` 组件，支持按分类分组、分类全选、全选与搜索。

## 动机

与脚本页、推送等批量操作一致，2000+ 子机场景下按分类勾选比扁平下拉更易用。

## 涉及文件

- `frontend/src/pages/SchedulesPage.vue` — 接入 `ServerCategoryPicker`；`loadServers({ all: true })` 拉全量含 `category`

## 迁移 / 重启

- 仅前端静态资源，无需 DB 迁移或 API 重启

## 验证方式

1. `cd frontend && npm run build`
2. 打开 `#/schedules` → 新建/编辑 → 确认分组卡片、全选、分类全选、搜索可用
3. 保存后 `server_ids` JSON 与原先一致

## 2026-06-08 补充 — 保存失败无提示修复

- 目标服务器改用独立 `editorServerIds` ref（与脚本页一致），修复嵌套 `form.server_ids` v-model 不同步导致「已选 N 台」但提交为空
- 对话框内增加红色 `saveError` 提示；全局 snackbar 提高 z-index，避免被 dialog 遮挡
- `formatApiError` / `normalizeDetail` / `useSnackbar` 禁止空字符串提示
