# 组长端看板子组件 API 参考手册 ## 快速查找 - [DashboardMetricsComponent](#dashboardmetricscomponent) - 统计指标 - [DashboardFilterBarComponent](#dashboardfilterbarcomponent) - 筛选条件 - [ProjectKanbanComponent](#projectkanbancomponent) - 项目看板 - [TodoSectionComponent](#todosectioncomponent) - 待办任务 - [WorkloadGanttComponent](#workloadganttcomponent) - 工作负载 - [SmartMatchModalComponent](#smartmatchmodalcomponent) - 智能推荐 - [DashboardAlertsComponent](#dashboardalertscomponent) - 预警提醒 --- ## 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' 等) | ### 使用示例 ```html ``` --- ## 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) | ### 使用示例 ```html ``` --- ## ProjectKanbanComponent ### 功能 显示四大核心阶段的项目看板视图 ### Props (Inputs) | 属性名 | 类型 | 必需 | 默认值 | 说明 | |--------|------|------|--------|------| | `corePhases` | any[] | ✅ | [] | 核心阶段定义 | | `projects` | Project[] | ✅ | [] | 项目列表 | ### Events (Outputs) | 事件名 | 参数类型 | 说明 | |--------|---------|------| | `viewProject` | {projectId: string, phaseId: string} | 点击项目卡片时触发 | | `openSmartMatch` | Project | 点击智能推荐按钮时触发 | | `assignProject` | string | 点击快速分配按钮时触发(项目ID) | | `reviewProject` | {projectId: string, rating: string} | 质量评审时触发 | ### 使用示例 ```html ``` --- ## 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 | 从紧急事件创建待办时触发 | ### 使用示例 ```html ``` --- ## WorkloadGanttComponent ### 功能 显示设计师工作负载甘特图(周/月视图) ### Props (Inputs) | 属性名 | 类型 | 必需 | 默认值 | 说明 | |--------|------|------|--------|------| | `designerWorkloadMap` | Map | ✅ | new Map() | 设计师工作量映射 | | `realDesigners` | any[] | ✅ | [] | 真实设计师列表 | | `filteredProjects` | Project[] | ✅ | [] | 筛选后的项目列表 | ### Events (Outputs) | 事件名 | 参数类型 | 说明 | |--------|---------|------| | `employeeClick` | string | 点击设计师行时触发(设计师名称) | ### 使用示例 ```html ``` --- ## SmartMatchModalComponent ### 功能 显示智能推荐设计师弹窗 ### Props (Inputs) | 属性名 | 类型 | 必需 | 默认值 | 说明 | |--------|------|------|--------|------| | `visible` | boolean | ✅ | false | 弹窗显示状态 | | `selectedProject` | Project \| null | ✅ | null | 选中的项目 | | `recommendations` | any[] | ✅ | [] | 推荐的设计师列表 | ### Events (Outputs) | 事件名 | 参数类型 | 说明 | |--------|---------|------| | `close` | void | 关闭弹窗时触发 | | `assign` | string | 分配项目时触发(设计师ID) | ### 使用示例 ```html ``` --- ## DashboardAlertsComponent ### 功能 显示超期项目预警提醒 ### Props (Inputs) | 属性名 | 类型 | 必需 | 默认值 | 说明 | |--------|------|------|--------|------| | `showAlert` | boolean | ✅ | false | 预警显示状态 | | `overdueProjects` | Project[] | ✅ | [] | 超期项目列表 | | `urgentPinnedProjects` | Project[] | ✅ | [] | 紧急固定区项目 | ### Events (Outputs) | 事件名 | 参数类型 | 说明 | |--------|---------|------| | `viewAllOverdue` | void | 点击"查看全部超期项目"时触发 | | `closeAlert` | void | 关闭预警时触发 | | `filterStatus` | string | 快速筛选时触发 | ### 使用示例 ```html ``` --- ## 通用类型定义 ### Project ```typescript 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 ```typescript 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 ```typescript 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 ```typescript 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. 性能优化 ```typescript // 使用 trackBy 优化 ngFor
{{ item.name }}
trackById(index: number, item: any): string { return item.id; } ``` ### 2. 错误处理 ```typescript // 在子组件中捕获错误并通过 Output 传递 try { // ... 操作 } catch (error) { this.error.emit({ message: '操作失败', error }); } ``` ### 3. 加载状态 ```html
加载中...
暂无数据
``` --- **最后更新**: 2024-11-21