fix(frontend): 修复 AdminTaskDetailPage 中 useMutation 的 Hook 调用顺序
- 将 useMutation 提升至组件顶层,避免因位于 query.isLoading 等早期 return 分支之后导致 React Hooks 顺序变动报错 - 验证方式:前端类型检查(0 error)、单测 132 项全通及前端 Vite 重新构建成功
This commit is contained in:
@@ -86,6 +86,24 @@ export default function AdminTaskDetailPage() {
|
||||
enabled: Boolean(taskId),
|
||||
})
|
||||
const detail = query.data?.data
|
||||
const orderId = detail?.order?.orderId ? String(detail.order.orderId) : ''
|
||||
|
||||
const statusMutation = useMutation({
|
||||
mutationFn: (data: { status: 'active' | 'paused' | 'closed'; reason?: string }) => {
|
||||
if (!orderId) throw new Error('当前任务无关联订单信息')
|
||||
return updateAdminOrderClaimStatus(orderId, data)
|
||||
},
|
||||
onSuccess: () => {
|
||||
message.success('订单兑换状态已更新')
|
||||
setStatusModalVisible(false)
|
||||
setStatusReason('')
|
||||
void query.refetch()
|
||||
},
|
||||
onError: (err: unknown) => {
|
||||
message.error(err instanceof Error ? err.message : '更新状态失败')
|
||||
},
|
||||
})
|
||||
|
||||
const canManageTaskLifecycle = hasAdminRole('operator')
|
||||
const canOperateIndustryVoucher = hasAdminRole('support')
|
||||
const canCloseTasks = hasAdminRole('support')
|
||||
@@ -241,7 +259,6 @@ export default function AdminTaskDetailPage() {
|
||||
)
|
||||
}
|
||||
|
||||
const orderId = resolvedDetail.order?.orderId ? String(resolvedDetail.order.orderId) : ''
|
||||
const platformOrderId =
|
||||
resolvedDetail.order?.platformOrderId || resolvedDetail.task.platformOrderId || ''
|
||||
const h5ClaimUrl = platformOrderId
|
||||
@@ -250,22 +267,6 @@ export default function AdminTaskDetailPage() {
|
||||
const claimStatus = resolvedDetail.order?.claimStatus || 'active'
|
||||
const claimStatusReason = resolvedDetail.order?.claimStatusReason || ''
|
||||
|
||||
const statusMutation = useMutation({
|
||||
mutationFn: (data: { status: 'active' | 'paused' | 'closed'; reason?: string }) => {
|
||||
if (!orderId) throw new Error('当前任务无关联订单信息')
|
||||
return updateAdminOrderClaimStatus(orderId, data)
|
||||
},
|
||||
onSuccess: () => {
|
||||
message.success('订单兑换状态已更新')
|
||||
setStatusModalVisible(false)
|
||||
setStatusReason('')
|
||||
void query.refetch()
|
||||
},
|
||||
onError: (err: unknown) => {
|
||||
message.error(err instanceof Error ? err.message : '更新状态失败')
|
||||
},
|
||||
})
|
||||
|
||||
const handleCopyH5Link = () => {
|
||||
if (!h5ClaimUrl) return
|
||||
navigator.clipboard
|
||||
|
||||
Reference in New Issue
Block a user