fix(admin-worker): 修复打手管理切换寄卖权限后表格状态未自动刷新的问题

1. 修复 WorkersPanel 中 queryKey 匹配偏差,改用统一的 admin-worker-platform-workers 查询键与 refreshWorkers();
2. 引入 setQueriesData 乐观更新机制,点击 Switch 切换后毫秒级原地更新行状态,无需手动刷新页面。
This commit is contained in:
yml2213
2026-09-21 13:37:54 +08:00
parent cb8b249e57
commit 937e51db6b
@@ -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 {