/* ──────────── 任务中心 ──────────── */ .task-center { padding: var(--space-lg); max-width: 1400px; margin: 0 auto; } /* 页面标题 */ .task-header { margin-bottom: var(--space-lg); } .task-title { font-size: var(--font-size-2xl); font-weight: var(--font-weight-bold); color: var(--text-primary); margin: 0 0 var(--space-xs) 0; } .task-subtitle { font-size: var(--font-size-sm); color: var(--text-secondary); margin: 0; } /* 筛选栏 */ .task-filters { display: flex; align-items: flex-start; justify-content: space-between; margin-bottom: var(--space-lg); padding: var(--space-md); background: var(--bg-surface); border-radius: var(--radius-lg); border: 1px solid var(--border-primary); } .task-status-tabs { flex: 1; } .task-status-tabs .ant-tabs-nav { margin-bottom: 0; } .task-status-tabs .ant-tabs-tab { padding: var(--space-sm) var(--space-md); font-size: var(--font-size-sm); } .task-type-filter { flex-shrink: 0; margin-left: var(--space-md); } /* 表格 */ .task-table { background: var(--bg-surface); border-radius: var(--radius-lg); overflow: hidden; border: 1px solid var(--border-primary); } .task-table .ant-table { background: transparent; } .task-table .ant-table-thead > tr > th { background: var(--bg-secondary); border-bottom: 1px solid var(--border-primary); font-weight: var(--font-weight-semibold); font-size: var(--font-size-sm); color: var(--text-secondary); } .task-table .ant-table-tbody > tr > td { border-bottom: 1px solid var(--border-light); } .task-table .ant-table-tbody > tr:hover > td { background: var(--bg-hover); } /* 任务 ID */ .task-id { font-family: var(--font-mono, monospace); font-size: var(--font-size-xs); color: var(--text-secondary); } /* 状态标签 */ .task-status-tag { display: inline-flex; align-items: center; gap: 4px; } .task-progress { font-size: var(--font-size-xs); opacity: 0.9; } /* 当前步骤 */ .task-step { font-size: var(--font-size-sm); color: var(--text-secondary); } /* 耗时 */ .task-duration { font-size: var(--font-size-sm); color: var(--text-secondary); font-variant-numeric: tabular-nums; } /* 时间 */ .task-time { font-size: var(--font-size-sm); color: var(--text-secondary); } /* 操作按钮 */ .task-retry-btn { color: var(--primary-500); } .task-retry-btn:hover { color: var(--primary-600); } .task-action-placeholder { color: var(--text-disabled, var(--text-secondary)); font-size: var(--font-size-sm); } /* 展开行 - 错误详情 */ .task-error-detail { padding: var(--space-md); background: var(--bg-secondary); border-radius: var(--radius-md); border: 1px solid var(--border-primary); } .task-error-header { display: flex; align-items: center; gap: var(--space-sm); margin-bottom: var(--space-md); font-weight: var(--font-weight-semibold); color: var(--error-500, #ef4444); } .task-error-icon { font-size: var(--font-size-lg); } .task-error-body { display: flex; flex-direction: column; gap: var(--space-sm); } .task-error-row { display: flex; align-items: flex-start; gap: var(--space-sm); font-size: var(--font-size-sm); } .task-error-label { color: var(--text-secondary); flex-shrink: 0; min-width: 80px; } .task-error-message { color: var(--error-500, #ef4444); word-break: break-all; } .task-error-stack { flex-direction: column; } .task-error-stack pre { margin: var(--space-xs) 0 0 0; padding: var(--space-sm); background: var(--bg-surface); border-radius: var(--radius-sm); font-size: var(--font-size-xs); color: var(--text-secondary); overflow-x: auto; max-height: 200px; font-family: var(--font-mono, monospace); } .task-expand-empty { padding: var(--space-md); text-align: center; color: var(--text-secondary); font-size: var(--font-size-sm); } /* 空状态 */ .task-empty { padding: var(--space-2xl) 0; text-align: center; color: var(--text-secondary); } .task-empty .anticon { font-size: 48px; margin-bottom: var(--space-md); opacity: 0.5; } .task-empty p { margin: 0; font-size: var(--font-size-base); } /* 错误状态 */ .task-error { padding: var(--space-2xl); text-align: center; color: var(--error-500, #ef4444); } .task-error .anticon { font-size: 48px; margin-bottom: var(--space-md); } .task-error p { margin: 0 0 var(--space-md) 0; font-size: var(--font-size-base); } /* 响应式 */ @media (max-width: 768px) { .task-center { padding: var(--space-md); } .task-filters { flex-direction: column; gap: var(--space-md); } .task-type-filter { margin-left: 0; width: 100%; } .task-type-filter .ant-select { width: 100% !important; } .task-status-tabs .ant-tabs-nav { overflow-x: auto; } .task-status-tabs .ant-tabs-tab { padding: var(--space-xs) var(--space-sm); font-size: var(--font-size-xs); } }