fix(admin-worker): 修复打手管理切换寄卖权限后表格状态未自动刷新的问题
1. 修复 WorkersPanel 中 queryKey 匹配偏差,改用统一的 admin-worker-platform-workers 查询键与 refreshWorkers(); 2. 引入 setQueriesData 乐观更新机制,点击 Switch 切换后毫秒级原地更新行状态,无需手动刷新页面。
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user