修复链接 feifei 不展示

This commit is contained in:
yml2213
2026-07-09 18:57:52 +08:00
parent 82a763b313
commit 32eb442b72
2 changed files with 19 additions and 6 deletions
@@ -29,6 +29,7 @@ const STATUS_LABELS: Record<string, string> = {
disabled: '已停用', disabled: '已停用',
dispatched_pending_return: '待退还号码', dispatched_pending_return: '待退还号码',
expired: '已过期', expired: '已过期',
external: '外部链接',
failed: '失败', failed: '失败',
invalid: '已作废', invalid: '已作废',
link_generated: '已生成链接', link_generated: '已生成链接',
@@ -90,6 +91,7 @@ const STATUS_COLORS: Record<string, string> = {
customer_processing: 'blue', customer_processing: 'blue',
delivered: 'green', delivered: 'green',
disabled: 'red', disabled: 'red',
external: 'cyan',
failed: 'red', failed: 'red',
invalid: 'orange', invalid: 'orange',
link_generated: 'cyan', link_generated: 'cyan',
@@ -88,11 +88,13 @@ export default function AdminTaskDetailPage() {
const detail = query.data?.data const detail = query.data?.data
const canManageTaskLifecycle = hasAdminRole('operator') const canManageTaskLifecycle = hasAdminRole('operator')
const canCloseTasks = hasAdminRole('support') const canCloseTasks = hasAdminRole('support')
const claimTokenStatus = String(detail?.claimToken?.status || '').trim()
const isExternalClaimLink = claimTokenStatus.toLowerCase() === 'external'
const claimUrl = useMemo(() => { const claimUrl = useMemo(() => {
const tokenStatus = String(detail?.claimToken?.status || '').trim() const tokenStatus = String(detail?.claimToken?.status || '').trim()
const taskStatus = String(detail?.task.status || '').trim() const taskStatus = String(detail?.task.status || '').trim()
if (tokenStatus !== 'active' || ['closed', 'expired'].includes(taskStatus)) { if (!isUsableClaimLinkStatus(tokenStatus) || ['closed', 'expired'].includes(taskStatus)) {
return '' return ''
} }
@@ -100,8 +102,8 @@ export default function AdminTaskDetailPage() {
}, [detail?.claimToken?.claimUrl, detail?.claimToken?.status, detail?.task.status, lastClaimUrl]) }, [detail?.claimToken?.claimUrl, detail?.claimToken?.status, detail?.task.status, lastClaimUrl])
const claimLinkInvalid = Boolean( const claimLinkInvalid = Boolean(
detail?.claimToken?.claimUrl && detail?.claimToken?.claimUrl &&
String(detail.claimToken.status || '').trim() && claimTokenStatus &&
String(detail.claimToken.status || '').trim() !== 'active', !isUsableClaimLinkStatus(claimTokenStatus),
) )
useEffect(() => { useEffect(() => {
@@ -383,9 +385,13 @@ export default function AdminTaskDetailPage() {
)} )}
<Space wrap> <Space wrap>
<StatusTag value={resolvedDetail.claimToken.status} /> <StatusTag value={resolvedDetail.claimToken.status} />
<Typography.Text type="secondary"> {isExternalClaimLink ? (
{formatAdminDateTime(resolvedDetail.claimToken.expiredAt)} <Typography.Text type="secondary"></Typography.Text>
</Typography.Text> ) : (
<Typography.Text type="secondary">
{formatAdminDateTime(resolvedDetail.claimToken.expiredAt)}
</Typography.Text>
)}
<Button icon={<CopyOutlined />} disabled={!claimUrl} onClick={copyClaimUrl}> <Button icon={<CopyOutlined />} disabled={!claimUrl} onClick={copyClaimUrl}>
</Button> </Button>
@@ -655,6 +661,11 @@ function TaskActionPanel({
) )
} }
function isUsableClaimLinkStatus(value: unknown) {
const normalized = String(value || '').trim().toLowerCase()
return normalized === 'active' || normalized === 'external'
}
function FulfillmentOverviewPanel({ function FulfillmentOverviewPanel({
detail, detail,
claimUrl, claimUrl,