From 937e51db6b1dc323a59f93d8f54aa82e4e60dcef Mon Sep 17 00:00:00 2001 From: yml2213 Date: Mon, 21 Sep 2026 13:37:54 +0800 Subject: [PATCH] =?UTF-8?q?fix(admin-worker):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=89=93=E6=89=8B=E7=AE=A1=E7=90=86=E5=88=87=E6=8D=A2=E5=AF=84?= =?UTF-8?q?=E5=8D=96=E6=9D=83=E9=99=90=E5=90=8E=E8=A1=A8=E6=A0=BC=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E6=9C=AA=E8=87=AA=E5=8A=A8=E5=88=B7=E6=96=B0=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1. 修复 WorkersPanel 中 queryKey 匹配偏差,改用统一的 admin-worker-platform-workers 查询键与 refreshWorkers(); 2. 引入 setQueriesData 乐观更新机制,点击 Switch 切换后毫秒级原地更新行状态,无需手动刷新页面。 --- .../src/pages/admin/panels/WorkersPanel.tsx | 24 +++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/apps/frontend/src/pages/admin/panels/WorkersPanel.tsx b/apps/frontend/src/pages/admin/panels/WorkersPanel.tsx index ba3d0fb5..aad8ea42 100644 --- a/apps/frontend/src/pages/admin/panels/WorkersPanel.tsx +++ b/apps/frontend/src/pages/admin/panels/WorkersPanel.tsx @@ -473,13 +473,33 @@ export default function WorkersPanel() { async function handleToggleConsignmentPermission(row: WorkerUser, checked: boolean) { setUpdatingConsignmentWorkerId(row.workerId) try { - await updateAdminWorkerConsignmentPermission(row.workerId, { canConsign: checked }) + const res = await updateAdminWorkerConsignmentPermission(row.workerId, { + canConsign: checked, + }) + const updatedWorker = res.data?.worker + if (updatedWorker) { + queryClient.setQueriesData<{ data: { items: WorkerUser[]; pagination: any } }>( + { queryKey: ['admin-worker-platform-workers'] }, + (old) => { + if (!old?.data?.items) return old + return { + ...old, + data: { + ...old.data, + items: old.data.items.map((item) => + item.workerId === row.workerId ? { ...item, ...updatedWorker } : item, + ), + }, + } + }, + ) + } message.success( checked ? `已为打手 ${row.displayName || row.username} 开通寄卖权限` : `已关闭打手 ${row.displayName || row.username} 的寄卖权限`, ) - await queryClient.invalidateQueries({ queryKey: ['admin-workers'] }) + await refreshWorkers() } catch (err: any) { message.error(err instanceof Error ? err.message : '更新寄卖权限失败') } finally {