From f8de495029d09c50d987ff0a97a6e92474e480b1 Mon Sep 17 00:00:00 2001 From: yml2213 Date: Thu, 6 Aug 2026 14:11:48 +0800 Subject: [PATCH] =?UTF-8?q?fix(douyu):=20=E8=B4=A6=E5=8F=B7=E6=A0=87?= =?UTF-8?q?=E7=AD=BE=E5=88=97=E8=A1=A8=E6=8C=89=E7=94=A8=E6=88=B7=E5=8F=AF?= =?UTF-8?q?=E8=A7=81=E8=8C=83=E5=9B=B4=E8=BF=87=E6=BB=A4=20&=20=E5=AF=BC?= =?UTF-8?q?=E5=85=A5=E5=BC=B9=E7=AA=97=E5=88=87=E6=8D=A2=E7=AD=9B=E9=80=89?= =?UTF-8?q?=E6=97=B6=E6=B8=85=E7=A9=BA=E5=B7=B2=E9=80=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- web/backend/routers/accounts.py | 10 ++++++++-- web/frontend/src/api/douyu.ts | 2 +- web/frontend/src/pages/DouyuTasksPage.tsx | 2 ++ 3 files changed, 11 insertions(+), 3 deletions(-) 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));