组长端看板子组件 API 参考手册
快速查找
DashboardMetricsComponent
功能
显示关键统计指标卡片,支持点击快速筛选
Props (Inputs)
| 属性名 |
类型 |
必需 |
默认值 |
说明 |
overdueCount |
number |
✅ |
0 |
超期项目数量 |
dueSoonCount |
number |
✅ |
0 |
临期项目数量 |
pendingApprovalCount |
number |
✅ |
0 |
待审批项目数量 |
pendingAssignmentCount |
number |
✅ |
0 |
待分配项目数量 |
overloadedDesignersCount |
number |
✅ |
0 |
超负荷设计师数量 |
averageWorkloadRate |
number |
✅ |
0 |
平均负载率(百分比) |
Events (Outputs)
| 事件名 |
参数类型 |
说明 |
filterStatus |
string |
点击卡片时触发,参数为状态标识('overdue', 'dueSoon' 等) |
使用示例
<app-dashboard-metrics
[overdueCount]="overdueProjects.length"
[dueSoonCount]="dueSoonProjects.length"
[pendingApprovalCount]="pendingApprovalProjects.length"
[pendingAssignmentCount]="pendingAssignmentProjects.length"
[overloadedDesignersCount]="overloadedDesignersCount"
[averageWorkloadRate]="averageWorkloadRate"
(filterStatus)="filterByStatus($event)">
</app-dashboard-metrics>
DashboardFilterBarComponent
功能
统一管理所有筛选条件,支持智能搜索建议
Props (Inputs)
| 属性名 |
类型 |
必需 |
默认值 |
说明 |
projects |
Project[] |
✅ |
[] |
项目列表(用于搜索建议) |
designers |
string[] |
✅ |
[] |
设计师列表 |
corePhases |
any[] |
✅ |
[] |
核心阶段列表 |
searchTerm |
string |
❌ |
'' |
搜索关键词(双向绑定) |
selectedType |
'all' | 'soft' | 'hard' |
❌ |
'all' |
项目类型(双向绑定) |
selectedUrgency |
'all' | 'high' | 'medium' | 'low' |
❌ |
'all' |
紧急程度(双向绑定) |
selectedStatus |
string |
❌ |
'all' |
项目状态(双向绑定) |
selectedDesigner |
string |
❌ |
'all' |
选中的设计师(双向绑定) |
selectedMemberType |
'all' | 'vip' | 'normal' |
❌ |
'all' |
会员类型(双向绑定) |
selectedCorePhase |
string |
❌ |
'all' |
核心阶段(双向绑定) |
selectedProjectId |
string |
❌ |
'' |
选中的项目ID(双向绑定) |
selectedTimeWindow |
string |
❌ |
'all' |
时间窗(双向绑定) |
Events (Outputs)
| 事件名 |
参数类型 |
说明 |
filterChange |
FilterState |
任何筛选条件改变时触发 |
viewProject |
string |
选择项目或点击搜索建议时触发(项目ID) |
使用示例
<app-dashboard-filter-bar
[projects]="projects"
[designers]="designers"
[corePhases]="corePhases"
[(searchTerm)]="searchTerm"
[(selectedStatus)]="selectedStatus"
(filterChange)="onFilterChange($event)"
(viewProject)="viewProjectDetails($event)">
</app-dashboard-filter-bar>
ProjectKanbanComponent
功能
显示四大核心阶段的项目看板视图
Props (Inputs)
| 属性名 |
类型 |
必需 |
默认值 |
说明 |
corePhases |
any[] |
✅ |
[] |
核心阶段定义 |
projects |
Project[] |
✅ |
[] |
项目列表 |
Events (Outputs)
| 事件名 |
参数类型 |
说明 |
viewProject |
{projectId: string, phaseId: string} |
点击项目卡片时触发 |
openSmartMatch |
Project |
点击智能推荐按钮时触发 |
assignProject |
string |
点击快速分配按钮时触发(项目ID) |
reviewProject |
{projectId: string, rating: string} |
质量评审时触发 |
使用示例
<app-project-kanban
[corePhases]="corePhases"
[projects]="filteredProjects"
(viewProject)="viewProjectDetailsByPhase($event.projectId, $event.phaseId)"
(openSmartMatch)="openSmartMatch($event)"
(assignProject)="quickAssignProject($event)"
(reviewProject)="reviewProjectQuality($event)">
</app-project-kanban>
TodoSectionComponent
功能
显示待办任务和紧急事件,支持标签筛选
Props (Inputs)
| 属性名 |
类型 |
必需 |
默认值 |
说明 |
todoTasksFromIssues |
TodoTaskFromIssue[] |
✅ |
[] |
待办任务列表 |
loadingTodoTasks |
boolean |
❌ |
false |
待办任务加载状态 |
todoTaskError |
string |
❌ |
'' |
待办任务错误信息 |
urgentEvents |
UrgentEvent[] |
✅ |
[] |
紧急事件列表 |
loadingUrgentEvents |
boolean |
❌ |
false |
紧急事件加载状态 |
Events (Outputs)
| 事件名 |
参数类型 |
说明 |
refresh |
void |
点击刷新按钮时触发 |
navigateToIssue |
TodoTaskFromIssue |
点击待办任务时触发 |
markAsRead |
TodoTaskFromIssue |
标记任务为已读时触发 |
projectClick |
string |
点击紧急事件的项目时触发(项目ID) |
confirmEventOnTime |
UrgentEvent |
确认事件按时完成时触发 |
markEventAsStagnant |
UrgentEvent |
标记为停滞期时触发 |
resolveUrgentEvent |
UrgentEvent |
解决紧急事件时触发 |
createTodoFromEvent |
UrgentEvent |
从紧急事件创建待办时触发 |
使用示例
<app-todo-section
[todoTasksFromIssues]="todoTasksFromIssues"
[urgentEvents]="urgentEvents"
(refresh)="refreshTodoTasks()"
(resolveUrgentEvent)="resolveUrgentEvent($event)">
</app-todo-section>
WorkloadGanttComponent
功能
显示设计师工作负载甘特图(周/月视图)
Props (Inputs)
| 属性名 |
类型 |
必需 |
默认值 |
说明 |
designerWorkloadMap |
Map
| ✅ |
new Map() |
设计师工作量映射 |
realDesigners |
any[] |
✅ |
[] |
真实设计师列表 |
filteredProjects |
Project[] |
✅ |
[] |
筛选后的项目列表 |
Events (Outputs)
| 事件名 |
参数类型 |
说明 |
employeeClick |
string |
点击设计师行时触发(设计师名称) |
使用示例
<app-workload-gantt
[designerWorkloadMap]="designerWorkloadMap"
[realDesigners]="realDesigners"
[filteredProjects]="filteredProjects"
(employeeClick)="onEmployeeClick($event)">
</app-workload-gantt>
SmartMatchModalComponent
功能
显示智能推荐设计师弹窗
Props (Inputs)
| 属性名 |
类型 |
必需 |
默认值 |
说明 |
visible |
boolean |
✅ |
false |
弹窗显示状态 |
selectedProject |
Project | null |
✅ |
null |
选中的项目 |
recommendations |
any[] |
✅ |
[] |
推荐的设计师列表 |
Events (Outputs)
| 事件名 |
参数类型 |
说明 |
close |
void |
关闭弹窗时触发 |
assign |
string |
分配项目时触发(设计师ID) |
使用示例
<app-smart-match-modal
[visible]="showSmartMatch"
[selectedProject]="selectedProject"
[recommendations]="recommendations"
(close)="closeSmartMatch()"
(assign)="assignToDesigner($event)">
</app-smart-match-modal>
DashboardAlertsComponent
功能
显示超期项目预警提醒
Props (Inputs)
| 属性名 |
类型 |
必需 |
默认值 |
说明 |
showAlert |
boolean |
✅ |
false |
预警显示状态 |
overdueProjects |
Project[] |
✅ |
[] |
超期项目列表 |
urgentPinnedProjects |
Project[] |
✅ |
[] |
紧急固定区项目 |
Events (Outputs)
| 事件名 |
参数类型 |
说明 |
viewAllOverdue |
void |
点击"查看全部超期项目"时触发 |
closeAlert |
void |
关闭预警时触发 |
filterStatus |
string |
快速筛选时触发 |
使用示例
<app-dashboard-alerts
[showAlert]="showAlert"
[overdueProjects]="overdueProjects"
(viewAllOverdue)="viewAllOverdueProjects()"
(closeAlert)="closeAlert()">
</app-dashboard-alerts>
通用类型定义
Project
interface Project {
id: string;
name: string;
currentStage: string;
deadline: Date;
designerName: string;
urgency: 'high' | 'medium' | 'low';
type: 'soft' | 'hard';
isOverdue: boolean;
dueSoon: boolean;
memberType: 'vip' | 'normal';
// ... 其他字段
}
FilterState
interface FilterState {
searchTerm: string;
type: 'all' | 'soft' | 'hard';
urgency: 'all' | 'high' | 'medium' | 'low';
status: string;
designer: string;
memberType: 'all' | 'vip' | 'normal';
corePhase: string;
projectId: string;
timeWindow: 'all' | 'today' | 'threeDays' | 'sevenDays';
}
TodoTaskFromIssue
interface TodoTaskFromIssue {
id: string;
title: string;
description: string;
priority: IssuePriority;
type: IssueType;
status: IssueStatus;
projectId: string;
projectName: string;
assigneeName: string;
createdAt: Date;
updatedAt: Date;
dueDate?: Date;
tags: string[];
}
UrgentEvent
interface UrgentEvent {
id: string;
title: string;
description: string;
eventType: 'phase_deadline' | 'delivery' | 'review' | 'customer_alert';
category: 'customer' | 'phase' | 'review' | 'delivery';
deadline: Date;
projectId: string;
projectName: string;
designerName: string;
urgencyLevel: 'critical' | 'high' | 'medium';
overdueDays?: number;
labels?: string[];
// ... 其他字段
}
最佳实践
1. 性能优化
// 使用 trackBy 优化 ngFor
<div *ngFor="let item of items; trackBy: trackById">
{{ item.name }}
</div>
trackById(index: number, item: any): string {
return item.id;
}
2. 错误处理
// 在子组件中捕获错误并通过 Output 传递
try {
// ... 操作
} catch (error) {
this.error.emit({ message: '操作失败', error });
}
3. 加载状态
<!-- 显示加载状态 -->
<div *ngIf="loading">加载中...</div>
<div *ngIf="!loading && data.length === 0">暂无数据</div>
<div *ngIf="!loading && data.length > 0">
<!-- 数据展示 -->
</div>
最后更新: 2024-11-21