售后处置为补救完成或问题不成立时自动退还原追缴金额

This commit is contained in:
yml2213
2026-08-22 13:54:58 +08:00
parent 9beb501fa6
commit 6ac77c0124
12 changed files with 170 additions and 10 deletions
@@ -137,7 +137,10 @@ const AfterSalesPanel = forwardRef<AfterSalesPanelHandle>(function AfterSalesPan
resolutionNote: String(values.resolutionNote || '').trim(),
recoveryAmount: action === 'upheld' ? Number(values.recoveryAmount || 0) : 0,
}),
'售后问题单已处置',
(result) =>
(result.data?.refundedTotalAmount || 0) > 0
? `售后问题单已处置,已退还原追缴 ${formatMoney(result.data.refundedTotalAmount)} 至打手可用余额`
: '售后问题单已处置',
)
if (!succeeded) return
setAfterSalesCase(null)
@@ -264,6 +267,11 @@ const AfterSalesPanel = forwardRef<AfterSalesPanelHandle>(function AfterSalesPan
{formatMoney(item.recoveryAmount)} {formatMoney(item.debtAmount)}
</Typography.Text>
) : null}
{item.refundedAmount > 0 ? (
<Typography.Text type="success">
退 {formatMoney(item.refundedAmount)}
</Typography.Text>
) : null}
</div>
),
},
@@ -399,7 +407,11 @@ const AfterSalesPanel = forwardRef<AfterSalesPanelHandle>(function AfterSalesPan
>
<InputNumber min={0} precision={2} addonAfter="元" className="full-width" />
</Form.Item>
) : null
) : (
<Typography.Paragraph type="secondary" style={{ marginBottom: 16 }}>
退退
</Typography.Paragraph>
)
}
</Form.Item>
<Form.Item
@@ -352,6 +352,11 @@ function WorkerAfterSalesItem({
{formatMoney(item.debtAmount)}
</Typography.Text>
) : null}
{Number(item.refundedAmount || 0) > 0 ? (
<Typography.Text type="success" strong>
退 {formatMoney(item.refundedAmount)}
</Typography.Text>
) : null}
</Space>
) : null}
</Space>
@@ -37,6 +37,7 @@ const LEDGER_TYPE_OPTIONS = [
{ value: 'after_sales_deposit_deduction', label: '售后扣减押金' },
{ value: 'after_sales_balance_deduction', label: '售后扣减余额' },
{ value: 'after_sales_debt_offset', label: '抵扣售后欠款' },
{ value: 'after_sales_refund', label: '售后追缴退还' },
]
const REQUEST_TYPE_OPTIONS = [
@@ -60,6 +60,7 @@ export function formatLedgerType(ledgerType: string) {
after_sales_deposit_deduction: '售后扣减押金',
after_sales_balance_deduction: '售后扣减余额',
after_sales_debt_offset: '抵扣售后欠款',
after_sales_refund: '售后追缴退还',
}
return labels[ledgerType] || ledgerType || '-'
}
@@ -77,6 +78,7 @@ export function resolveLedgerTagColor(ledgerType: string) {
if (ledgerType === 'after_sales_deposit_deduction') return 'red'
if (ledgerType === 'after_sales_balance_deduction') return 'red'
if (ledgerType === 'after_sales_debt_offset') return 'orange'
if (ledgerType === 'after_sales_refund') return 'green'
return 'default'
}
@@ -509,10 +509,11 @@ export function resolveAdminAfterSalesCase(
recoveryAmount?: number
},
) {
return apiPost<{ case: WorkerAfterSalesCase }>(
`/api/v1/admin/worker-platform/after-sales-cases/${caseId}/resolve`,
payload,
)
return apiPost<{
case: WorkerAfterSalesCase
refundedTotalAmount: number
refundedRecoveries: Array<{ caseId: number; caseNo: string; amount: number }>
}>(`/api/v1/admin/worker-platform/after-sales-cases/${caseId}/resolve`, payload)
}
export function fetchAdminWorkOrderEvents(workOrderId: number) {
@@ -182,6 +182,9 @@ export type WorkerAfterSalesCase = {
pendingDepositDeductionAmount: number
availableDeductionAmount: number
debtAmount: number
refundedAmount: number
refundedAt: string | null
refundedBy: string
createdBy: string
resolvedBy: string
resolvedAt: string | null