日期: 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错误