diff --git a/vehicle-data-platform/apps/web/src/pages/Quality.tsx b/vehicle-data-platform/apps/web/src/pages/Quality.tsx index d559a024..ac3cf808 100644 --- a/vehicle-data-platform/apps/web/src/pages/Quality.tsx +++ b/vehicle-data-platform/apps/web/src/pages/Quality.tsx @@ -1,4 +1,5 @@ import { Button, Card, Col, Form, Row, Select, Space, Table, Tag, Toast } from '@douyinfe/semi-ui'; +import { IconCopy } from '@douyinfe/semi-icons'; import { useEffect, useState } from 'react'; import { api } from '../api/client'; import type { OpsHealth, QualitySummary, QualityIssueRow } from '../api/types'; @@ -34,6 +35,20 @@ function qualityParams(values: Record) { return params; } +async function copyText(value: string, label: string) { + const text = value.trim(); + if (!text) { + Toast.warning(`${label}为空`); + return; + } + try { + await navigator.clipboard.writeText(text); + Toast.success(`已复制${label}`); + } catch { + Toast.error(`复制${label}失败`); + } +} + export function Quality({ onHealthLoaded }: { onHealthLoaded?: (health: OpsHealth) => void }) { const [issues, setIssues] = useState([]); const [summary, setSummary] = useState(emptySummary); @@ -152,7 +167,17 @@ export function Quality({ onHealthLoaded }: { onHealthLoaded?: (health: OpsHealt { title: '问题', dataIndex: 'issueType' }, { title: '级别', render: (_: unknown, row: QualityIssueRow) => {row.severity} }, { title: '最后时间', dataIndex: 'lastSeen' }, - { title: '说明', dataIndex: 'detail' } + { title: '说明', dataIndex: 'detail' }, + { + title: '操作', + width: 140, + render: (_: unknown, row: QualityIssueRow) => ( + + + + + ) + } ]} />