ARTICLE · 1287080
做项目计划,嫌 MPP 太厚重、Excel 太难排版,我写了一个 Project Tracker
我想管理项目,而不是反复调整表格
在日常工作里,我经常需要编写项目计划。任务什么时候开始、谁负责、哪些节点不能推迟,都是计划里必须说清楚的事;以及项目进度完成了多少,跟预期差距有多大,是否有风险等。
我之前用过 Project 的 .mpp 文件,也用 Excel 编写。MPP 工具对我的日常需求来说太厚重,界面也不够美观;Excel 虽然灵活,但我总觉得呈现不够正式,排版难,颜色搭配也不好看。
我想把注意力放回任务本身:列清楚计划,看得懂时间关系,修改后不用重新整理版式。于是,我开发了 Project Tracker,把这些操作收进一个可以直接打开的 HTML 文件。
把边界收在日常工程项目计划里
我把它定位为轻量的项目计划与跟踪工具,面向需要维护任务、负责人和里程碑的工程同事。任务列表和甘特图放在同一张视图里:前者说明做什么,后者用时间条说明什么时候做。
多项目、复制项目、中英文切换和深浅主题都在同一个文件里。计划也能作为副本交给别人查看。
我没有实现 MPP 格式兼容,也不把它当作资源成本核算工具。单机版的重点是计划编辑、直观展示和文件交付;发出去的副本不会自动跟随原计划更新。
一个HTML,分清编辑、计算和保存
界面由 HTML 和 CSS 组成,JavaScript负责交互、日期计算和绘图,三者都在同一个文件内。任务按父子结构组织,项目索引记录有哪些项目、当前打开哪一个;每个项目分别保存任务和显示设置。
编辑操作先更新任务数据,再由排期逻辑处理依赖,最后重新绘制列表、时间轴和统计卡片。甘特图与表格读取同一份数据,不需要各维护一份计划。
日常修改写入 localStorage,也就是浏览器的本地存储。JSON 用于备份,分享则把选定项目嵌入新的 HTML;数据文件、可交互副本和打印结果各有用途。

图1|单文件内完成编辑、计算与绘图,本地保存与文件交付各司其职。
拖日期、调层级,勾选今天看清进展
第一组功能是直接编辑计划。填写任务名称、负责人和日期,生成层级列表与时间条;未定日期的任务仍可保留。甘特条可以左右拖动调整排期,拖两端改变起止日期,操作始终对应原任务,不会因鼠标上下偏移而串到另一行。
双击任务条或所在时间轨道,可以添加 milestone 重要节点,用菱形、星形或圆点标记关键日期;标记也能拖动和编辑。它是任务内的关键节点标记,与任务所属的里程碑分区不同。
任务从属关系不必靠剪切粘贴:点击左移升级、右移降级,便能调整父子层级;上移、下移按钮一键调整任务顺序。拖日期不改变任务所在行,改变顺序和层级则使用独立按钮,避免把两种操作混在一起。
第二组是进度查看。勾选“显示今天线”,一键显示今天的位置、甘特条的进度填充和百分比;取消后回到以排期为主的视图。自动进度按日期计算,也可手动覆盖,时间过去多少不能直接等同于实际完成多少。
顶部任务总结卡片集中显示总体进度、条目总数、进行中、未开始、已完成、待定以及各风险等级数量,一眼就能看到计划概况。可交互的状态和风险卡片还能点击高亮、再次点击筛选对应任务,不必逐行找。

图2|示例:勾选今天显示进度,顶部总结卡片集中呈现任务状态。
第三组是风险与交付。我填写发生概率、影响、说明和应对措施,得到风险等级与详情提示;前置依赖和周末工作日设置参与排期。JSON 用于备份和导入,分享可选当前、全部或指定项目生成独立 HTML,打印/PDF 用于静态展示。

图3|风险编辑:概率、影响、说明与应对措施,填写内容为演示。

图4|分享界面:选择要嵌入独立 HTML 的项目范围。
把排版规则交给界面,而不是每次手工修
在 Excel 里,任务数据和呈现格式混在一起,新增一行或调整日期后,我还要照顾单元格与颜色。Tracker 把信息保存成结构化数据,显示时统一生成任务行和时间条,分组颜色由规则处理,减少逐条修饰的动作。
屏幕上的视图也不能直接照搬到纸上。打印前,程序重新布局时间轴并隐藏编辑按钮;打印结束后再恢复交互界面。适应屏幕和只读全屏则服务于日常查看,不需要把编辑控件一起带进展示画面。
没有可核实的耗时数据,我不写效率提升比例。能确认的是,同一份任务数据用于编辑、展示与交付,版式不必每次重新拼。
连线合法,不代表导入的数据也合法
排期里一个容易漏掉的判断,是只检查编辑器新建的连线。编辑界面能拒绝循环,但导入文件仍可能带着循环关系;如果直接调整日期,计算过程就可能失去明确的先后顺序。
我把校验放到实际排期之前:检查整个依赖图,确认没有循环再修改日期。这里使用拓扑排序,也就是按前置关系逐步排列任务;重复的前置项先去重,避免被错误地判成循环。父子关系也要单独约束,不能仅靠画出的连线判断。
分享文件还有数据隔离的问题。只复制页面不足以区分不同副本,所以生成文件时加入独立快照标识,用它区分本地存储键;同时剔除临时筛选状态,避免接收者打开后误以为某些任务消失了。
自动保存不等于写回原 HTML,数据留在当前浏览器里。换电脑或清理数据可能影响它,所以我保留 JSON 备份,不把本地存储当作唯一副本。
让计划回到任务本身,而不是版式
我做这个工具,是想在日常项目管理里少花一些精力照顾版式,多关注任务、日期和风险。一个可以直接打开的文件,加上清楚的时间表达,比堆叠功能更贴近我最初的需求。
它仍需要认真维护计划、确认真实进度和定期备份。如果你也嫌 MPP 厚重,又不想反复调整 Excel,可以借鉴这个思路:先区分任务数据和显示方式,再把编辑、展示与交付做成一条清楚的流程。
如果你也有这方面的痛点,欢迎评论区交流!















































































