refactor: reduce duplicate ticket side metadata

This commit is contained in:
hailin
2026-07-03 16:49:12 +08:00
parent 0c1cf30566
commit 3449f02579

View File

@@ -1,59 +1,22 @@
import { AppField } from '@/components/app/AppField' import { AppField } from '@/components/app/AppField'
import { AppPriorityBadge } from '@/components/app/AppPriorityBadge'
import { AppStatusBadge } from '@/components/app/AppStatusBadge'
import { Badge } from '@/components/ui/badge' import { Badge } from '@/components/ui/badge'
import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card' import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'
import { Separator } from '@/components/ui/separator' import { Separator } from '@/components/ui/separator'
import { getTicketCategoryLabel } from './ticketCategories'
import type { Ticket } from './types' import type { Ticket } from './types'
type TicketMetaPanelProps = { type TicketMetaPanelProps = {
ticket: Ticket ticket: Ticket
} }
function displayUser(user: Ticket['assignee']) {
return user?.display_name || user?.username || '未设置'
}
export function TicketMetaPanel({ ticket }: TicketMetaPanelProps) { export function TicketMetaPanel({ ticket }: TicketMetaPanelProps) {
return ( return (
<Card> <Card>
<CardHeader> <CardHeader>
<CardTitle>工单属性</CardTitle> <CardTitle>处理信息</CardTitle>
</CardHeader> </CardHeader>
<CardContent> <CardContent>
<div className="grid gap-3"> <div className="grid gap-3">
<AppField label="当前状态">
<AppStatusBadge status={ticket.status} />
</AppField>
<AppField label="优先级">
<AppPriorityBadge priority={ticket.priority} />
</AppField>
<AppField label="问题分类">
<span className="text-sm text-foreground">{getTicketCategoryLabel(ticket.category_code)}</span>
</AppField>
<Separator />
<AppField label="提出人">
<span className="text-sm text-foreground">{ticket.submitter_name || '未填写'}</span>
</AppField>
<AppField label="提出机构">
<span className="text-sm text-foreground">{ticket.submitter_org || '未填写'}</span>
</AppField>
<AppField label="问题对象">
<span className="text-sm text-foreground">{ticket.problem_object || '未填写'}</span>
</AppField>
<Separator />
<AppField label="处理人">
<span className="text-sm text-foreground">{displayUser(ticket.assignee)}</span>
</AppField>
<AppField label="请求人">
<span className="text-sm text-foreground">{displayUser(ticket.requester)}</span>
</AppField>
<Separator />
<AppField label="关联系统">
<span className="text-sm text-foreground">{ticket.related_system || '未填写'}</span>
</AppField>
<AppField label="运行环境"> <AppField label="运行环境">
<span className="text-sm text-foreground">{ticket.environment || '未填写'}</span> <span className="text-sm text-foreground">{ticket.environment || '未填写'}</span>
</AppField> </AppField>