STAGNATION-MODIFICATION-FEATURE-SUMMARY.md 7.8 KB

停滞/改图原因标记功能实现总结

功能概述

实现了组长端紧急事件的停滞和改图原因标记功能,支持原因归类、自定义填写、预计恢复时间设置,并在项目标签中展示相关信息。同时实现了紧急事件的优先级排序机制。


实现的核心功能

1. 停滞/改图原因弹窗组件

文件路径: src/app/pages/team-leader/dashboard/components/stagnation-reason-modal/

组件功能:

  • ✅ 模块化的弹窗组件,可复用于停滞和改图两种场景
  • ✅ 支持三种原因类型选择:
    • 设计师原因停滞 / 设计师主动优化
    • 客户原因导致项目无法推进 / 客户要求改图
    • 其他原因(自定义输入)
  • ✅ 设置预计恢复时间(仅停滞场景)
  • ✅ 支持备注说明
  • ✅ 表单验证(自定义原因必填)
  • ✅ 现代化UI设计,带动画效果

组件文件:

  • stagnation-reason-modal.component.ts
  • stagnation-reason-modal.component.html
  • stagnation-reason-modal.component.scss

2. 数据模型扩展

UrgentEvent 接口扩展

文件: dashboard.model.ts, interfaces.ts

新增字段:

// 标记状态
isMarkedAsStagnant?: boolean;
isMarkedAsModification?: boolean;

// 停滞原因
stagnationReasonType?: 'designer' | 'customer' | 'custom';
stagnationCustomReason?: string;

// 改图原因
modificationReasonType?: 'designer' | 'customer' | 'custom';
modificationCustomReason?: string;

// 通用字段
estimatedResumeDate?: Date;     // 预计恢复时间
reasonNotes?: string;           // 备注说明
markedAt?: Date;                // 标记时间
markedBy?: string;              // 标记人
priorityWeight?: number;        // 优先级权重

Project 接口扩展

同样添加了停滞/改图原因相关字段,支持项目看板展示。


3. 紧急事件操作按钮

文件: todo-section.component.html, todo-section.component.ts

新增功能:

  • 标记停滞按钮: 点击后打开弹窗,填写停滞原因
  • 标记改图按钮: 点击后打开弹窗,填写改图原因
  • ✅ 已标记的事件不再显示对应按钮(避免重复标记)
  • ✅ 按钮样式区分(停滞=红色,改图=黄色)

4. 原因标签展示

紧急事件列表展示

文件: todo-section.component.html, todo-section.component.scss

展示内容:

  • ✅ 停滞原因标签(红色背景)
    • 显示原因类型或自定义原因
    • 显示预计恢复日期
  • ✅ 改图原因标签(黄色背景)
    • 显示原因类型或自定义原因
  • ✅ 备注说明(灰色背景)
    • 显示补充备注信息

样式特点:

  • 使用SVG图标增强视觉识别
  • 色彩编码:停滞(红色),改图(黄色),备注(灰色)
  • 响应式布局,自适应内容长度

项目看板展示

文件: project-kanban.component.html, project-kanban.component.scss

在项目卡片中展示停滞/改图原因:

  • ✅ 卡片内嵌式展示
  • ✅ 简洁的标签样式
  • ✅ 与项目其他信息协调一致

5. 紧急事件优先级排序

文件: urgent-event.service.ts

排序规则: 客户服务事件 > 工作阶段事件 > 小图截止 > 整体交付延期

权重计算:

基础权重:
- 客户服务事件: 1000分
- 工作阶段事件: 800分
- 对图事件(小图截止): 600分
- 交付事件(整体交付): 400分

加成规则:
- 紧急程度: critical +300, high +200, medium +100
- 逾期天数: 每天 +10分(上限100)
- 停滞天数: 每天 +5分(上限100)
- 已标记停滞/改图: +50分
- 需要跟进的客户事件: +100分

实现方法:

  • calculatePriorityWeight(): 计算单个事件权重
  • 事件列表按权重降序排序
  • 权重相同时按截止时间排序

6. Dashboard 处理逻辑

文件: dashboard.ts

新增方法:

markEventAsStagnant(payload)

  • 接收事件和原因数据
  • 更新事件状态和原因字段
  • 添加"停滞期"标签
  • 触发数据持久化(预留接口)

markEventAsModification(payload)

  • 接收事件和原因数据
  • 更新事件状态和原因字段
  • 添加"改图期"标签
  • 触发数据持久化(预留接口)

saveEventMarkToDatabase(event, type, reason)

  • 预留的数据持久化方法
  • 可保存到Parse数据库
  • 当前使用console.log记录

数据流

用户点击"标记停滞/改图"
  ↓
打开StagnationReasonModal弹窗
  ↓
用户填写原因、日期、备注
  ↓
点击"确认标记"
  ↓
todo-section组件emit事件
  ↓
dashboard组件处理
  ↓
更新urgentEvents数据
  ↓
UI自动刷新展示原因标签
  ↓
(可选)持久化到数据库

文件清单

新建文件

  1. stagnation-reason-modal.component.ts - 弹窗组件逻辑
  2. stagnation-reason-modal.component.html - 弹窗模板
  3. stagnation-reason-modal.component.scss - 弹窗样式

修改文件

  1. dashboard.model.ts - UrgentEvent接口扩展
  2. interfaces.ts - UrgentEvent和Project接口扩展
  3. todo-section.component.ts - 添加弹窗集成和事件处理
  4. todo-section.component.html - 添加按钮和标签展示
  5. todo-section.component.scss - 添加标签样式
  6. dashboard.ts - 添加标记处理方法
  7. dashboard.html - 添加markEventAsModification事件绑定
  8. urgent-event.service.ts - 添加优先级排序逻辑
  9. project-kanban.component.html - 添加项目卡片原因展示
  10. project-kanban.component.scss - 添加项目卡片标签样式

功能特点

✨ 用户体验优化

  • 模块化设计: 弹窗组件可复用,易于维护
  • 智能表单: 根据选择动态显示字段
  • 视觉反馈: 清晰的色彩编码和图标
  • 操作便捷: 一键标记,快速填写

🎯 业务价值

  • 原因追溯: 清晰记录停滞/改图原因
  • 优先级管理: 确保核心问题优先处理
  • 数据可视化: 项目状态一目了然
  • 决策支持: 为项目管理提供数据依据

🔧 技术亮点

  • TypeScript 类型安全: 完整的类型定义
  • Angular Standalone组件: 现代化架构
  • 响应式设计: 适配不同屏幕尺寸
  • 权重算法: 科学的优先级计算

使用说明

标记停滞

  1. 在紧急事件列表找到需要标记的事件
  2. 点击"标记停滞"按钮
  3. 在弹窗中选择停滞原因类型
  4. (可选)设置预计恢复时间和备注
  5. 点击"确认标记"

标记改图

  1. 在紧急事件列表找到需要标记的事件
  2. 点击"标记改图"按钮
  3. 在弹窗中选择改图原因类型
  4. (可选)填写备注说明
  5. 点击"确认标记"

查看原因

  • 紧急事件列表: 在事件卡片中直接查看原因标签
  • 项目看板: 在项目卡片中查看关联的停滞/改图原因

后续扩展建议

数据持久化

  • 实现saveEventMarkToDatabase()方法
  • 创建Parse数据表存储标记记录
  • 支持历史记录查询

统计分析

  • 停滞原因分布统计
  • 改图频率分析
  • 设计师/客户原因占比

通知提醒

  • 预计恢复时间到期提醒
  • 长期停滞项目告警
  • 频繁改图项目预警

权限控制

  • 仅组长可标记
  • 标记记录不可删除
  • 审计日志追踪

测试要点

功能测试

  • 弹窗正常打开/关闭
  • 三种原因类型切换正常
  • 自定义原因必填验证
  • 日期选择器正常工作
  • 标记后UI正确更新
  • 优先级排序正确

UI测试

  • 标签样式正确显示
  • 色彩编码清晰
  • 响应式布局正常
  • 不同浏览器兼容

边界测试

  • 长文本原因处理
  • 特殊字符输入
  • 重复标记处理
  • 网络异常处理

更新日期

2024-11-23

维护者

Cascade AI Assistant