diff --git a/web/backend/routers/accounts.py b/web/backend/routers/accounts.py index 9141c94..76d27d1 100644 --- a/web/backend/routers/accounts.py +++ b/web/backend/routers/accounts.py @@ -377,8 +377,14 @@ def list_tags( db: Session = Depends(get_db), current: User = Depends(get_current_user), ): - """获取所有标签列表。""" - tags = db.query(Account.tag).filter(Account.tag != "", Account.tag.isnot(None)).distinct().all() + """获取当前用户可见账号的标签列表。""" + query = _visible_accounts_query(db, current) + tags = ( + query.filter(Account.tag != "", Account.tag.isnot(None)) + .with_entities(Account.tag) + .distinct() + .all() + ) return [t[0] for t in tags if t[0]] diff --git a/web/frontend/src/api/douyu.ts b/web/frontend/src/api/douyu.ts index da1658b..57182dd 100644 --- a/web/frontend/src/api/douyu.ts +++ b/web/frontend/src/api/douyu.ts @@ -15,7 +15,7 @@ export const douyuApi = { taskTypes: () => api.get, Record>('/douyu/task-types'), listAccounts: (params?: { search?: string; tag?: string; ids?: string }) => api.get('/douyu/accounts', { params }), - listAccountsPaged: (params: PageParams & { tag?: string; ids?: string }) => + listAccountsPaged: (params: PageParams & { ids?: string }) => api.get, PaginatedResponse>('/douyu/accounts', { params }), getConfig: () => api.get('/douyu/config'), updateConfig: (data: Partial) => api.put('/douyu/config', data), diff --git a/web/frontend/src/pages/DouyuTasksPage.tsx b/web/frontend/src/pages/DouyuTasksPage.tsx index 0e2a8ab..1e5287b 100644 --- a/web/frontend/src/pages/DouyuTasksPage.tsx +++ b/web/frontend/src/pages/DouyuTasksPage.tsx @@ -853,6 +853,8 @@ export default function DouyuTasksPage({ handbook }: { handbook: HandbookKind }) if (!importOpen) return; accountApi.listTags().then(setImportTags).catch(() => {}); }, [importOpen]); + // 切换搜索/标签时清空已选,避免计数与可见行不一致 + useEffect(() => { setImportSelectedIds([]); }, [importSearch, importTag]); const importAccounts = (ids: number[]) => { const toImport = importPool.filter((a) => ids.includes(a.id));