大厅与后台工单列表改为精确补丁并支持抢单确认
This commit is contained in:
@@ -415,14 +415,22 @@ function patchAdminWorkOrderCaches(
|
||||
.filter(Boolean)
|
||||
const keyword = String(queryKey[2] || '')
|
||||
const workerId = Number(queryKey[3] || 0)
|
||||
const targetWorkOrderId = Number(queryKey[4] || 0)
|
||||
const page = Number(queryKey[5] || 1)
|
||||
const workerLevelIds = String(queryKey[4] || '')
|
||||
.split(',')
|
||||
.map((value) => Number(value))
|
||||
.filter(Boolean)
|
||||
const targetWorkOrderId = Number(queryKey[5] || 0)
|
||||
const page = Number(queryKey[6] || 1)
|
||||
// 等级筛选的匹配逻辑只在服务端(接单打手或拼单参与者等级),快照不含等级,
|
||||
// 无法在前端复现:已有行视为匹配(拉取时已通过服务端过滤),但不再插入新行。
|
||||
const levelFilterActive = workerLevelIds.length > 0
|
||||
const matches =
|
||||
(!statuses.length || statuses.includes(String(item.status || ''))) &&
|
||||
matchesWorkOrderKeyword(item, keyword) &&
|
||||
(!workerId || workerId === Number(item.worker?.workerId || 0)) &&
|
||||
(!targetWorkOrderId || targetWorkOrderId === Number(item.workOrderId || 0))
|
||||
const shouldInsert = event.operation === 'upsert' && page === 1 && matches
|
||||
const shouldInsert =
|
||||
event.operation === 'upsert' && page === 1 && matches && !levelFilterActive
|
||||
const operation = event.operation === 'remove' || !matches ? 'remove' : 'upsert'
|
||||
queryClient.setQueryData(
|
||||
queryKey,
|
||||
|
||||
@@ -233,7 +233,8 @@ function patchWorkerHallCaches(
|
||||
event: RealtimeEvent,
|
||||
) {
|
||||
if (event.operation === 'refresh') {
|
||||
void queryClient.resetQueries({ queryKey: ['worker-hall-orders'] })
|
||||
// 仅大厅全局配置变化走全量刷新;不清缓存,旧列表保持展示避免误点。
|
||||
void queryClient.invalidateQueries({ queryKey: ['worker-hall-orders'] })
|
||||
return
|
||||
}
|
||||
const workerSnapshot = applyWorkerDepositRule(queryClient, event.data)
|
||||
|
||||
Reference in New Issue
Block a user