可复用的待办任务面板组件,用于显示来自项目问题板块的待办任务。
import { TodoTasksPanelComponent, type TodoTaskFromIssue } from '../../../shared/components/todo-tasks-panel';
@Component({
imports: [TodoTasksPanelComponent]
})
<app-todo-tasks-panel
[tasks]="todoTasksList"
[loading]="loadingTodoTasks"
[error]="todoTaskError"
[title]="'待办任务'"
[subtitle]="'来自项目问题板块'"
(viewDetails)="onViewDetails($event)"
(markAsRead)="onMarkAsRead($event)"
(refresh)="onRefresh()">
</app-todo-tasks-panel>
onViewDetails(task: TodoTaskFromIssue): void {
console.log('查看详情:', task.title);
this.router.navigate(['/project', task.projectId], {
queryParams: { highlightIssue: task.id }
});
}
onMarkAsRead(task: TodoTaskFromIssue): void {
console.log('标记已读:', task.title);
this.tasks = this.tasks.filter(t => t.id !== task.id);
}
onRefresh(): void {
console.log('刷新任务列表');
this.loadTasks();
}
const tasks: TodoTaskFromIssue[] = [
{
id: 'issue-001',
projectId: 'proj-001',
projectName: '现代风格客厅',
title: '需要进一步明确需求',
description: '客户对色调有疑问',
status: '待处理',
priority: 'urgent',
issueType: 'bug',
relatedStage: '确认需求',
assigneeId: 'user-001',
assigneeName: '刘雨',
creatorId: 'user-002',
creatorName: '王设计师',
createdAt: new Date('2025-11-10'),
updatedAt: new Date('2025-11-11'),
dueDate: new Date('2025-11-15')
}
];
组件需要父组件提供以下样式类(在 dashboard.scss 中定义):
.todo-column {
background: white;
border-radius: 12px;
padding: 24px;
}
.column-header { /* 头部样式 */ }
.loading-state { /* 加载状态样式 */ }
.error-state { /* 错误状态样式 */ }
.empty-state { /* 空状态样式 */ }
.todo-list-compact { /* 列表容器样式 */ }
.todo-item-compact { /* 任务项样式 */ }
.priority-indicator { /* 优先级指示器 */ }
.task-content { /* 任务内容样式 */ }
.badge { /* 徽章样式 */ }
// ... 等等
<app-todo-tasks-panel
[tasks]="tasks"
[title]="'我的任务'"
[subtitle]="'个人待办事项'"
[loadingText]="'正在加载...'"
[emptyText]="'太好了!'"
[emptyHint]="'没有待办任务 🎉'">
</app-todo-tasks-panel>
<div class="dashboard-grid">
<!-- 待办任务 -->
<app-todo-tasks-panel [tasks]="tasks"></app-todo-tasks-panel>
<!-- 紧急事件 -->
<app-urgent-events-panel [events]="events"></app-urgent-events-panel>
<!-- 员工详情 -->
<app-employee-detail-panel [employeeDetail]="employee"></app-employee-detail-panel>
</div>
创建日期: 2025-11-11
维护人员: 开发团队