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) {
|
async function handleToggleConsignmentPermission(row: WorkerUser, checked: boolean) {
|
||||||
setUpdatingConsignmentWorkerId(row.workerId)
|
setUpdatingConsignmentWorkerId(row.workerId)
|
||||||
try {
|
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(
|
message.success(
|
||||||
checked
|
checked
|
||||||
? `已为打手 ${row.displayName || row.username} 开通寄卖权限`
|
? `已为打手 ${row.displayName || row.username} 开通寄卖权限`
|
||||||
: `已关闭打手 ${row.displayName || row.username} 的寄卖权限`,
|
: `已关闭打手 ${row.displayName || row.username} 的寄卖权限`,
|
||||||
)
|
)
|
||||||
await queryClient.invalidateQueries({ queryKey: ['admin-workers'] })
|
await refreshWorkers()
|
||||||
} catch (err: any) {
|
} catch (err: any) {
|
||||||
message.error(err instanceof Error ? err.message : '更新寄卖权限失败')
|
message.error(err instanceof Error ? err.message : '更新寄卖权限失败')
|
||||||
} finally {
|
} finally {
|
||||||
|
|||||||
Reference in New Issue
Block a user