日期: 2025-10-22 14:00
需求: 优化"项目负载时间轴"甘特图,让组长清晰看到每个项目的负载情况
用户指出之前优化错了图表:
需求是优化下方的"项目负载时间轴",让每个项目的负载情况更清晰。
文件: dashboard.html 第65-69行
<!-- 工作量负载概览 -->
<div class="workload-gantt-card">
  <div class="gantt-header">
    <h3>工作量负载概览</h3>
    <p class="gantt-subtitle">设计师每日工作状态一目了然</p>
说明:
文件: dashboard.html 第89-91行
<div class="title">项目负载时间轴</div>
<div class="hint">
  👤 设计师按负载由高到低排列 | 🎨 每个条形代表一个项目 | 🔴超期 🟠临期 🟢正常
</div>
改进:
文件: dashboard.ts 第1476-1545行
┌──────────────────────────────────────┐
│ 🎨 现代简约客厅设计方案              │
│ 🔥 高紧急  ⭐ VIP                    │
├──────────────────────────────────────┤
│ 👤 设计师:张三 🔴 超负荷            │
│ 📋 阶段:施工图深化                  │
│ 📅 周期:2025/10/20 ~ 2025/10/30 (10天) │
│ ⏱️ 状态:剩余3天                     │
├──────────────────────────────────────┤
│ 💡 点击条形可查看项目详情            │
└──────────────────────────────────────┘
文件: dashboard.ts 第1562-1632行
负载状态图标
🔥 = 超负荷(5+项目)⚡ = 忙碌(3-4项目)○ = 空闲(0-2项目)项目数量徽章(带彩色背景)
视觉效果
🔥 张三 5  ← 红色徽章,超负荷
⚡ 李四 3  ← 橙色徽章,忙碌
⚡ 王五 3  ← 橙色徽章,忙碌
○ 赵六 1   ← 绿色徽章,轻负载
○ 孙七 0   ← 灰色徽章,空闲
文件: dashboard.ts 第1668-1777行
增加条形高度
0.5 * rowHeight 提升到 0.6 * rowHeight项目名称直接显示
紧急度图标集成
超负荷视觉强化
文字样式优化
if (width >= 50) {
  // 显示:🔥 项目名称(截断过长部分)
  const fullText = `${urgencyIcon} ${displayName}`;
} else if (width >= 30) {
  // 仅显示:🔥
  const urgencyIcon = '🔥'; // 或 ⚡ 或 ✓
} else {
  // 仅显示彩色条形,无文字
}
文件: dashboard.ts 第1546-1560行
title: {
  text: this.ganttScale === 'week' ? '本周项目排期' : '本月项目排期',
  subtext: '每个条形代表一个项目,颜色越深紧急度越高',
  left: 'center',
  top: 10,
  textStyle: { fontSize: 15, color: '#374151', fontWeight: 600 },
  subtextStyle: { fontSize: 12, color: '#6b7280' }
}
legend: {
  data: ['🔥 高紧急', '⚡ 中紧急', '✓ 正常', '🟢 可接单', '🟡 忙碌', '🔴 超负荷'],
  bottom: 10,
  itemGap: 20,
  textStyle: { fontSize: 12, color: '#6b7280' }
}
文件: dashboard.ts 第1560行
grid: { 
  left: 150,   // 增加左侧空间(原110px)
  right: 70,   // 增加右侧空间(原64px)
  top: 60,     // 增加顶部空间(原30px)
  bottom: 70   // 增加底部空间(原60px)
}
说明:
文件: dashboard.scss 第168-172行
.gantt-container {
  width: 100%;
  height: 600px; // 增加高度(原500px)
  min-height: 500px;
}
说明:
| 问题 | 描述 | 
|---|---|
| ❌ 项目名称不显示 | 无法知道是哪个项目 | 
| ❌ 紧急度不明显 | 只有颜色区分 | 
| ❌ 条形太细 | 不易识别 | 
| ❌ Y轴信息简单 | 只有名称和圆点 | 
| ❌ Tooltip信息少 | 缺少关键数据 | 
| ❌ 无图表标题 | 不知道时间范围 | 
| 改进 | 描述 | 
|---|---|
| ✅ 项目名称直接显示 | 🔥 项目名称(如果空间足够) | 
| ✅ 紧急度图标清晰 | 🔥⚡✓ 三种图标 | 
| ✅ 条形更粗 | 高度增加20%(0.5→0.6) | 
| ✅ Y轴彩色徽章 | 🔥张三 5(红色徽章) | 
| ✅ Tooltip信息丰富 | 8项关键信息 | 
| ✅ 图表标题清晰 | "本周/本月项目排期" | 
┌────────────────────────────────────────────────────────────────────┐
│                        本周项目排期                                 │
│              每个条形代表一个项目,颜色越深紧急度越高                │
├────────────────────────────────────────────────────────────────────┤
│                                                                    │
│  🔥 张三 5  ████████████████████████████████████████              │
│             🔥 现代简约客厅  🔥 轻奢卧室  ⚡ 北欧书房              │
│                                                                    │
│  ⚡ 李四 3  ████████████████████████░░░░░░░░░░░░                  │
│             ⚡ 工业风餐厅  ✓ 新中式茶室  ✓ 日式和室                │
│                                                                    │
│  ○ 王五 1   ████████░░░░░░░░░░░░░░░░░░░░░░░░░░░░                 │
│             ✓ 美式田园客厅                                         │
│                                                                    │
│  ○ 赵六 0   ░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░               │
│             (空闲可接单)                                          │
│                                                                    │
├────────────────────────────────────────────────────────────────────┤
│ 图例:🔥高紧急  ⚡中紧急  ✓正常  🟢可接单  🟡忙碌  🔴超负荷      │
└────────────────────────────────────────────────────────────────────┘
颜色说明:
🔴 深红色 = 高紧急项目
🟠 橙色 = 中紧急项目
🟢 绿色 = 正常项目
操作: 打开页面,切换到"周视图"
效果:
🔥 张三 5,立即知道张三超负荷操作: 鼠标悬浮在任意项目条形上
效果:
操作: 查看Y轴左侧
效果:
🔥 图标 + 红色徽章 = 超负荷⚡ 图标 + 橙色徽章 = 忙碌○ 图标 + 绿/灰徽章 = 可接单操作: 查看项目条形
效果:
if (width >= 50) {
  // 显示完整:图标 + 项目名称
  return { type: 'group', children: [rect, text] };
} else if (width >= 30) {
  // 仅显示图标
  return { type: 'group', children: [rect, icon] };
} else {
  // 仅显示条形
  return rect;
}
formatter: (val: string) => {
  const countDisplay = count >= 5 ? `{highCount|${count}}` : // 红色徽章
                      count >= 3 ? `{mediumCount|${count}}` : // 橙色徽章
                      count >= 1 ? `{lowCount|${count}}` : // 绿色徽章
                      `{idleCount|${count}}`; // 灰色徽章
  return `${statusIcon} {name|${text}} ${countDisplay}`;
}
if (workloadStatus === 'overloaded') {
  rectStyle.shadowBlur = 8;
  rectStyle.shadowColor = 'rgba(220, 38, 38, 0.4)';
  rectStyle.shadowOffsetY = 2;
}
const remainingDays = Math.ceil((end.getTime() - now.getTime()) / DAY);
const remainingText = remainingDays > 0 ? `剩余${remainingDays}天` : 
                     remainingDays === 0 ? '今天截止' : 
                     `已超期${Math.abs(remainingDays)}天`;
const remainingColor = remainingDays > 7 ? '#16a34a' : // 绿色
                      remainingDays > 0 ? '#ea580c' : // 橙色
                      '#dc2626'; // 红色
| 文件 | 变更内容 | 行数 | 
|---|---|---|
| dashboard.html | 还原上方标题 + 优化下方说明 | 65-91 | 
| dashboard.ts | Tooltip增强 + Y轴徽章 + 条形显示 + 标题图例 | 1476-1777 | 
| dashboard.scss | 增加容器高度 | 168-172 | 
组长打开页面后3秒内即可:
实施完成时间: 2025-10-22 14:00
状态: ✅ 已完成并优化
测试状态: ✅ 无Lint错误