auto-sync: 2026-05-17 06:16:35
This commit is contained in:
@@ -0,0 +1,87 @@
|
|||||||
|
// 任务详情弹窗
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import type { Task } from '../types';
|
||||||
|
|
||||||
|
interface Props {
|
||||||
|
task: Task | null;
|
||||||
|
onClose: () => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
export function TaskModal({ task, onClose }: Props) {
|
||||||
|
if (!task) return null;
|
||||||
|
|
||||||
|
const fields = [
|
||||||
|
['ID', task.id],
|
||||||
|
['标题', task.title],
|
||||||
|
['状态', task.status],
|
||||||
|
['类型', task.task_type || '-'],
|
||||||
|
['负责人', task.assignee || '未分配'],
|
||||||
|
['分配者', task.assigned_by],
|
||||||
|
['优先级', String(task.priority)],
|
||||||
|
['风险级别', task.risk_level || '-'],
|
||||||
|
['描述', task.description || '-'],
|
||||||
|
['必须完成', task.must_haves || '-'],
|
||||||
|
['依赖', task.depends_on || '-'],
|
||||||
|
['输出路径', task.output_path || '-'],
|
||||||
|
['结果摘要', task.result_summary || '-'],
|
||||||
|
['重试', `${task.retry_count}/${task.max_retries}`],
|
||||||
|
['创建时间', task.created_at?.substring(0, 19) || '-'],
|
||||||
|
['更新时间', task.updated_at?.substring(0, 19) || '-'],
|
||||||
|
['完成时间', task.completed_at?.substring(0, 19) || '-'],
|
||||||
|
];
|
||||||
|
|
||||||
|
return (
|
||||||
|
<div
|
||||||
|
style={{
|
||||||
|
position: 'fixed',
|
||||||
|
top: 0,
|
||||||
|
left: 0,
|
||||||
|
right: 0,
|
||||||
|
bottom: 0,
|
||||||
|
background: 'rgba(0,0,0,0.6)',
|
||||||
|
display: 'flex',
|
||||||
|
alignItems: 'center',
|
||||||
|
justifyContent: 'center',
|
||||||
|
zIndex: 1000,
|
||||||
|
}}
|
||||||
|
onClick={onClose}
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
className="card"
|
||||||
|
style={{
|
||||||
|
width: '90%',
|
||||||
|
maxWidth: 600,
|
||||||
|
maxHeight: '80vh',
|
||||||
|
overflowY: 'auto',
|
||||||
|
padding: 24,
|
||||||
|
}}
|
||||||
|
onClick={e => e.stopPropagation()}
|
||||||
|
>
|
||||||
|
<div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginBottom: 16 }}>
|
||||||
|
<h3 style={{ fontSize: 18, fontWeight: 700 }}>{task.title}</h3>
|
||||||
|
<button className="btn" onClick={onClose}>关闭</button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<table style={{ width: '100%' }}>
|
||||||
|
<tbody>
|
||||||
|
{fields.map(([label, value]) => (
|
||||||
|
<tr key={label}>
|
||||||
|
<td style={{ color: 'var(--muted)', width: 100, fontWeight: 600, fontSize: 12 }}>
|
||||||
|
{label}
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
{label === '状态' ? (
|
||||||
|
<span className={`badge badge-${value}`}>{value}</span>
|
||||||
|
) : (
|
||||||
|
value
|
||||||
|
)}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
))}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user