feat(接单): 支持客服手动结束赠送冷却

This commit is contained in:
yml2213
2026-08-28 20:39:41 +08:00
parent e680792161
commit 5d5d63bb59
11 changed files with 255 additions and 2 deletions
@@ -157,6 +157,20 @@ export function formatWorkOrderEvent(event: WorkOrderEvent): EventNodeStyle {
case 'material_updated':
return { title: '更新了订单资料', color: 'cyan' }
// —— 好友赠送节点 ——
case 'gift_material_submitted':
return { title: '打手提交好友赠送资料,等待客服确认加好友', color: 'cyan' }
case 'friend_confirmed':
return { title: '客服确认已加好友,赠送冷却开始', color: 'gold' }
case 'gift_cooldown_completed_by_admin':
return {
title: note ? `客服手动结束赠送冷却:${note}` : '客服手动结束赠送冷却',
description: '打手现在可以提交赠送凭证与验收资料',
color: 'green',
}
case 'gift_material_reset':
return { title: note ? `客服重置打手好友赠送资料:${note}` : '客服重置打手好友赠送资料', color: 'orange' }
// —— 验收节点 ——
case 'acceptance_submitted': {
const imageCount = readPayload(event, 'imageCount')
@@ -50,6 +50,7 @@ import {
cancelAdminWorkOrder,
cancelAdminWorkOrderShare,
cancelAdminWorkOrderSharing,
completeAdminWorkOrderGiftCooldown,
confirmAdminWorkOrderFriend,
deductAdminWorkOrderPendingDeposit,
deleteAdminWorkOrder,
@@ -886,6 +887,22 @@ export default function WorkOrdersPanel() {
})
}
function completeGiftCooldown(row: WorkOrder) {
modal.confirm({
title: '手动结束赠送冷却?',
content:
'确认后将立即允许打手提交赠送凭证与验收资料;订单任务时限将从当前时刻重新计算。此操作会记录在订单流转记录中。',
okText: '确认结束冷却',
okButtonProps: { type: 'primary' },
cancelText: '取消',
onOk: () =>
runAction(
() => completeAdminWorkOrderGiftCooldown(row.workOrderId),
'已手动结束赠送冷却,打手现在可以提交验收',
),
})
}
function requestResetGiftMaterial(row: WorkOrder) {
modal.confirm({
title: '重置打手好友赠送资料?',
@@ -1018,7 +1035,9 @@ export default function WorkOrdersPanel() {
</Tag>
) : null}
{row.acceptanceMode === 'friend_gift' ? <Tag color="purple"></Tag> : null}
{row.acceptanceMode === 'friend_gift' && row.gift ? (
{row.acceptanceMode === 'friend_gift' &&
row.gift &&
!['pending_material', 'unassigned', 'open'].includes(row.rawStatus || row.status) ? (
<Tag color={resolveGiftPhaseColor(row.gift.phase)}>
{formatGiftPhase(row.gift.phase)}
</Tag>
@@ -1234,6 +1253,11 @@ export default function WorkOrdersPanel() {
</Button>
) : null}
{row.capabilities?.canCompleteGiftCooldown && canManageProblem ? (
<Button type="primary" onClick={() => completeGiftCooldown(row)}>
</Button>
) : null}
{row.capabilities?.canResetGiftFlow && canManageProblem ? (
<Button danger onClick={() => requestResetGiftMaterial(row)}>
@@ -1639,6 +1663,15 @@ export default function WorkOrdersPanel() {
</Button>
) : null}
{detailOrder.capabilities?.canCompleteGiftCooldown && canManageProblem ? (
<Button
type="primary"
size="small"
onClick={() => completeGiftCooldown(detailOrder)}
>
</Button>
) : null}
{detailOrder.capabilities?.canResetGiftFlow && canManageProblem ? (
<Button
size="small"
@@ -686,6 +686,13 @@ export function confirmAdminWorkOrderFriend(workOrderId: number) {
)
}
/** 好友赠送模式:客服人工确认冷却完成,立即允许打手提交验收。 */
export function completeAdminWorkOrderGiftCooldown(workOrderId: number) {
return apiPost<{ order: WorkOrder }>(
`/api/v1/admin/worker-platform/orders/${workOrderId}/complete-gift-cooldown`,
)
}
/** 好友赠送模式:重置打手资料,冷却与好友时间清零 */
export function resetAdminWorkOrderGiftMaterial(workOrderId: number, note?: string) {
return apiPost<{ order: WorkOrder }>(
@@ -557,6 +557,7 @@ export type WorkOrder = {
canResolveProblem: boolean
canDeduct: boolean
canConfirmFriend?: boolean
canCompleteGiftCooldown?: boolean
canResetGiftFlow?: boolean
}
rewardAmount: number