{{ me.name || me.username }}
@{{ me.username }}
还没有项目,先点左侧「+ 新建项目」或「导入」
{{ detail.project.name }} · {{ detail.project.location }} {{ detail.project.start_date }} → {{ detail.project.end_date || '进行中' }}
任务总数
{{ detail.stats.total }}
已完成 {{ detail.stats.done }} · {{ detail.stats.progress }}%
进行中
{{ detail.stats.in_progress }}
我方在执行
待外部
{{ detail.stats.waiting }}
等外单位答复
逾期未完成
{{ detail.stats.overdue }}
需立即催办
阻塞
{{ detail.stats.blocked }}
需协调解决
任务被前置卡住
{{ detail.stats.blocked_count }}
上一个环节没做完
阶段待解锁
{{ detail.stats.gates_locked }}
前置阶段成果未齐备
成果待确认
{{ detail.stats.gates_unconfirmed }}
任务做完但成果未登记
⚠ 停留超期
{{ detail.stats.dwell ? (detail.stats.dwell.severe + detail.stats.dwell.overdue + detail.stats.dwell.late_start) : 0 }}
严重 {{ detail.stats.dwell ? detail.stats.dwell.severe : 0 }} · 累计超 {{ detail.stats.dwell ? detail.stats.dwell.overdue_sum : 0 }} 天
⏱ 停留最久的任务
按「超出计划工期的天数」排序 —— 这些是最该立刻问一句「卡在哪了」的活儿。
任务问题原因阶段责任单位计划工期已停留超期计时方式
{{ dw(t).reason_kind_name || '未分类' }} 推断
{{ dw(t).reason || '—' }}
{{ phaseName(t.phase_id) }} {{ t.owner_role || '—' }} {{ t.dwell.planned || '未设置' }} 天 {{ t.dwell.dwell }} 天 +{{ t.dwell.overdue }} 天 {{ t.dwell.basis }}
逾期未完成清单
没有逾期任务
任务阶段责任单位计划完成逾期状态
{{ phaseName(t.phase_id) }} {{ t.owner_role || '—' }} {{ t.plan_end }} {{ daysLate(t) }} 天 {{ t.status_label }}
阶段门禁 · 前置与最终成果
阶段之间可以并行推进,但要进入下一阶段,前置阶段的最终成果必须到手 —— 阶段里最后一个任务做完 ≠ 成果已取得。
{{ ph.name }} 最终成果:{{ ph.deliverable || '未设置' }} 已取得 待前置:{{ ph.inst.locked_by.map(x => x.name + '(' + (x.deliverable || '成果') + ')').join('、') }} 任务已全部完成,请确认成果是否到手 前置已齐备,可启动 · 进度 {{ ph.inst ? ph.inst.done : 0 }}/{{ ph.inst ? ph.inst.total : 0 }}
已停用的线
停用的线不参与任何统计与视图(总览 / 预警 / 对比 / 分享均退场),数据完整保留,可随时重新启用。
{{ l.name }} 进度 {{ l.done }}/{{ l.total }} · 成果{{ l.obtained ? '已取得' : '未取得' }}
{{ s.n }}
上为任务状态(全站统一:圆点颜色 = 状态,悬浮任务看详情)。阶段验收状态:✓ 成果已取得 / 🔒 待前置 / ! 成果待确认 —— 任务全部做完但成果还没登记验收时显示「待确认」,到任务详情或「阶段推进图」确认成果后,下游阶段才会解锁。
{{ n.name }} ✓ 成果已取得 🔒 待前置 ! 成果待确认 已完成 进行中 {{ n.pct }}% 卡住后续 {{ n.blocks.length }} 个阶段
{{ n.done }}/{{ n.total }}
最终成果
{{ n.deliverable || '未设置' }}
取得于 {{ n.obtained_date }}
前置阶段要求
🔒 {{ d.name }}({{ d.deliverable || '成果' }}){{ d.done }}/{{ d.total }}
无前置,可独立推进
本阶段所需内容 · 办理流程
{{ s.name }} {{ s.done }}/{{ s.total }} ✓
{{ m.name }}{{ m.status_label || statusName(m.status) }}
该阶段未划分办理流程
对后续阶段的影响
{{ n.obtained ? '✓' : '🔒' }} {{ b.name }} {{ b.deliverable || '成果' }}
{{ n.obtained ? '成果已到手,后续阶段已解锁' : '成果未到手 —— 上面这些阶段现在动不了' }}
没有后续阶段依赖本阶段
停留风险
⚠ {{ n.risk_count }} 项超期停留 暂无超期停留
严重超期
{{ (alertSummary && alertSummary.severe) || 0 }}
超过 7 天,或超期已超过一整个工期
应开始未开始
{{ (alertSummary && alertSummary.late_start) || 0 }}
计划开始日已过,还没动手
已超期
{{ (alertSummary && alertSummary.overdue) || 0 }}
停留超过计划工期 1~6 天
接近工期
{{ (alertSummary && alertSummary.watch) || 0 }}
工期已用掉 80% 以上
累计超期天数
{{ (alertSummary && alertSummary.overdue_sum) || 0 }}
涉及 {{ (alertSummary && alertSummary.projects) || 0 }} 个项目
{{ alertList.length }} 项
{{ alertLoading ? '正在统计…' : '没有需要提醒的任务 —— 手上没有超期未交的活儿。' }}
{{ g.name }} {{ g.items.length }} 项
任务 问题原因 / 卡在谁 项目 / 阶段 责任单位 计划工期 已停留 超期 计时方式
{{ a.name }}
🔒 被前置卡住:{{ a.blocked_by.join('、') }}
{{ a.reason_kind_name || '未分类' }} 推断
{{ a.reason || '—' }}
卡在:{{ a.hold_party }}
⛓ 影响 {{ a.impact_count }} 项
{{ a.project_name }} {{ a.owner_role || '—' }}({{ a.assignee }}) {{ a.planned_days ? a.planned_days + ' 天' : '未设置' }}
{{ a.dwell }} 天 / {{ a.planned_days }} 天
+{{ a.overdue }} 天 接近 — {{ a.basis }}
口径说明:停留天数从「确认开工」(实际开始日)那天起算,含当天;待外部 / 阻塞的任务从进入该状态那天起算; 已完成的任务算的是最终历时。计划工期取任务上的工期,没填就用「计划完成 − 计划开始 + 1」推。 想改口径?在任务抽屉里填「计划开始 / 计划完成」或工期即可。
共 {{ portfolioProjects.length }} 个项目
项目类型地点负责人 起止进度 停留超期逾期待解锁阶段成果待确认
{{ p.code }}
来源:{{ trim(p.source_file, 24) }}
{{ p.type_name }} {{ p.location || '—' }} {{ p.manager || '—' }} {{ p.start_date || '—' }}
{{ p.stats.done }}/{{ p.stats.total }} · {{ p.stats.progress }}%
⏱ {{ p.dwell_alert }}0 {{ p.stats.overdue }}0 🔒 {{ p.gates_locked }}0 {{ p.gates_unconfirmed }} 项0
没有匹配的项目。点右上角「+ 新建项目」套用类型模板,或「导入」上传报批计划文档。
在管项目
{{ projects.length }}
共 {{ totalTasks }} 个任务节点
整体完成率
{{ overallPct }}%
{{ totalDone }} / {{ totalTasks }} 已完成
进行中
{{ sumBy('in_progress') }}
我方在执行
待外部
{{ sumBy('waiting') }}
等资规局 / 总包
逾期未完成
{{ sumBy('overdue') }}
需立即催办
阻塞
{{ sumBy('blocked') }}
需协调解决
任务被前置卡住
{{ sumBy('blocked_count') }}
上一个环节没做完
阶段待解锁
{{ sumBy('gates_locked') }}
前置阶段成果未齐备
成果待确认
{{ sumBy('gates_unconfirmed') }}
任务做完但成果未登记
⚠ 停留超期
{{ dwellTotals.alert }}
严重 {{ dwellTotals.severe }} · 累计超 {{ dwellTotals.overdue_sum }} 天
接近工期
{{ dwellTotals.watch }}
工期已用掉 80% 以上
共 {{ portfolioProjects.length }} 个项目
{{ p.stats.progress }}%
{{ p.name }}
{{ p.type_name }} · {{ p.location }}
{{ p.start_date }} → {{ p.end_date }}
各责任单位负担
{{ r.name }}{{ r.done }}/{{ r.total }} · 逾期{{ r.overdue }}
⏱ 停留超期 {{ p.dwell_alert }} 逾期 {{ p.stats.overdue }} 进行中 {{ p.stats.in_progress }} 待外部 {{ p.stats.waiting }} 下一步:{{ p.stats.next_task.name }}({{ p.stats.next_task.plan_end }})
共 {{ portfolioProjects.length }} 个项目 · 第 {{ dashPage }}/{{ dashTotalPages }} 页
🔴 待处理问题 最紧急 Top {{ problemList.length }} · 共 {{ dwellTotals.alert }} 项需提醒,按超期天数排序
每行回答三件事:原因(点开可改成真实原因)、停留多久、责任人;顺带给出影响面。
卡在哪一项问题原因 停留超期 责任人 / 卡在谁影响
{{ a.name }}
{{ a.project_name }}
{{ a.reason_kind_name || '未分类' }} 推断
{{ a.reason || '—' }}
{{ a.dwell }} 天 +{{ a.overdue }} 天 {{ a.owner_role || '—' }}({{ a.assignee }})
卡在:{{ a.hold_party }}
🔒 被前置卡住 {{ detail.stats.blocked_count }}
{{ visibleTasks.length }} / {{ detail.tasks.length }} 项 · 顶部流程带=推荐推进顺序(点节点只看该阶段)· 任务卡 #n=全项目推进序 · 悬浮看停留原因与影响面
推进顺序
阶段 / 任务
{{ r.key }}
{{ r.stat.done }}/{{ r.stat.total }} 完成 · 逾期 {{ r.stat.overdue }}
第 {{ (phaseLevels[ph.id] || 0) + 1 }} 步 {{ ph.name }} {{ phStat(ph).done }}/{{ phStat(ph).total }}
{{ pct(phStat(ph)) }}% 逾期 {{ phStat(ph).overdue }} ✓ 成果:{{ ph.deliverable || '已取得' }} ! 成果待确认:{{ ph.deliverable || '—' }} 🔒 待前置:{{ ph.inst.locked_by.map(x => x.name).join('、') }} 成果:{{ ph.deliverable }} ∥ 可并行:{{ phaseParallel(ph).join('、') }} ⇠ 前置:{{ phaseUpNames(ph).join('、') }} ⇢ 解锁:{{ phaseDownstream(ph).join('、') }}
{{ ph.stages.map(s=>s.name).join(' · ') || '未分组' }}
#{{ taskSeqMap[t.id] }} 🔒{{ t.name }}
{{ t.status_label || statusName(t.status) }} {{ t.plan_end }} · 逾期{{ daysLate(t) }}天 待前置 {{ blockCount(t.id) }} 前置✓{{ upCount(t.id) }} {{ downCount(t.id) }}↓ 📎 {{ matReadiness(t.id).ok }}/{{ matReadiness(t.id).total }} ⏱ {{ dwBadge(t) }} · {{ trim(t.work_content, 18) }}
—
菱形 = 仅计划完成时间(里程碑);长条 = 有起止区间
阶段 / 办理流程 / 任务
{{ m.label }}
{{ d.t }}
{{ row.name }} {{ row.stat.done }}/{{ row.stat.total }}
方块=阶段:同一层并列即可并行推进;箭头=前置门禁,拿到前置阶段最终成果才能启动。 拖方块卡身=移动/排序、拖层标题⠿=整层排序、悬停=高亮关联、双击方块=聚焦上下游链路。
阶段总数
{{ detail.phases.length }}
并列 / 串行由前置关系自动判定
可启动 / 推进中
{{ detail.stats.gates_ready }}
前置成果已齐备
被前置锁住
{{ detail.stats.gates_locked }}
等前置阶段出成果
成果待确认
{{ detail.stats.gates_unconfirmed }}
任务已做完,成果还没登记
任务被前置卡住
{{ detail.stats.blocked_count }}
阶段内部的前后依赖
关键路径
{{ criticalPath.length }}
最长依赖链节点数
{{ Math.round(panoZoom*100) }}%
✓ 成果已取得 🔒 待前置成果 ! 待确认 ⚠ 逾期 上游 下游 ╌▶ 材料供给(绿=已取得) ╌▶ 材料供给(紫=办理中) ✦ 产出材料 📎 需材料 🖱 悬停高亮关联 已聚焦:{{ phaseName(panoFocus) }} 的上下游链路 已选「{{ taskName(linkFrom) }}」,点目标任务建立依赖
⠿ {{ c.label }} {{ c.n }} 个阶段{{ c.soft ? ' · 可并行' : '' }}
{{ e.title }} {{ e.label }}
{{ c.phase.name }} {{ c.locked ? '待解锁' : (c.pct===100 ? '已完成' : (c.inst.done ? '进行中' : '未开始')) }}
最终成果 {{ c.phase.deliverable || '未设置' }} ✓ 已取得 🔒 未取得 ! 待确认
{{ c.inst.done }}/{{ c.inst.total }} · {{ c.pct }}%
空白拖动平移 · 滚轮缩放 · 拖方块卡身=移动 / 排序 · 拖层标题⠿=整层排序 · 悬停=高亮关联 · 双击=聚焦链路 · ▾/▸=收起 / 展开 · 虚线=材料供给(悬停看材料名) · 快捷键:F 全屏 / +− 缩放 / 0 重置 / E 展开 / C 收起 / Esc 退出
阶段内部的必要前提(办理流程顺序)
同一阶段里,办理流程按下面的顺序推进;被前置卡住的任务会在任务卡与方块里标 🔒。
{{ ph.name }} 该阶段未划分办理流程(任务直接挂在阶段下)
拖动卡片可改状态
{{ c.n }} {{ kbTasks(c.k).length }}
🔒{{ t.name }}
{{ phaseName(t.phase_id) }} {{ t.owner_role }} 待前置 {{ blockCount(t.id) }} 📎 {{ matReadiness(t.id).ok }}/{{ matReadiness(t.id).total }}
{{ t.plan_end }} · 逾期{{ daysLate(t) }}天
⏱ {{ dwBadge(t) }}
{{ tplDirty ? '有未保存修改' : '已保存' }}
参建角色 勾选「我方」的角色会在驾驶舱算作我方负担
材料库 由下方阶段 / 办理流程 / 任务项的「产出」自动汇总而成,供各节点的「需材料」与阶段「成果」引用;也可在此补充与具体任务无关的通用材料
材料名称 类别 来源 产出线 产出任务 跨线共享
{{ mt.name }}在下方节点上维护 {{ mt.kind }} {{ matSrc(mt) }} · 未保存 {{ (tpl.phases.find(p => p.key === mt.phase_key) || {}).name || '(跨线通用)' }} {{ (tplTaskOptions.find(c => c.key === mt.produced_by_task_key) || {}).label || '—' }} {{ mt.shared ? '✓' : '—' }}
材料库为空。在下方阶段 / 办理流程 / 任务项上点「产出」声明本节点产出哪些材料或成果,声明后立即出现在这里(标注「未保存」),点「保存类型」后正式落库; 与具体节点无关的通用材料可点「+ 手动补充」登记。
阶段 / 办理流程 / 任务项 共 {{ tplTaskCount }} 个任务项 —— 套用该类型建项目时会按此清单生成
阶段
产出 成果 不设前置=与其他阶段并行推进
{{ st.direct ? '未分组' : '流程' }} 原表未填「办理流程」,可把任务移到上面的流程里
任务项工作内容 默认责任单位 前置任务 需材料 产出 工期/天
该流程下还没有任务项,套用后不会生成任何任务
该阶段下还没有流程
还没有阶段。点右上「+ 阶段」开始搭结构,或「复制」一个已有类型改。
套用该类型创建项目
从左侧选择一个类型进行编辑,或新建一个类型
{{ sel.status_label }}
{{ sel.name }}
{{ phaseName(sel.phase_id) }} / {{ stageName(sel.stage_id) }}
计划工期 {{ dw(sel).planned ? dw(sel).planned + ' 天' : '未设置' }}
已停留 {{ dw(sel).dwell == null ? '—' : dw(sel).dwell + ' 天' }}
超期 {{ dw(sel).overdue ? '+' + dw(sel).overdue + ' 天' : '未超期' }}
剩余工期{{ dw(sel).deadline_left }} 天
计划开始{{ sel.plan_start || '未设置' }}
预计完成 {{ dw(sel).eta || '未设置' }}
是否按期 {{ dw(sel).done_on_time ? '按期完成' : '延期完成' }}
计时:{{ dw(sel).basis }}
判定:{{ dwName(sel) }}
没填计划工期 —— 先在「类型管理 → 任务项」里设工期,或在下面填计划开始/完成日。
拖住 {{ selImpact.count }} 项后续任务
波及后续阶段:{{ selImpact.cross.join('、') }}
{{ n }} …等共 {{ selImpact.count }} 项
暂无下游任务 —— 本项不卡别人
{{ sel.progress }}%
{{ t.status_label }} {{ t.name }} {{ phaseName(t.phase_id) }}
无前置 —— 可以立即开展
{{ m.status_label }} {{ m.name }} {{ m.kind }}
未关联材料
本项目台账里的材料都已关联。
台账还没有材料 —— 到「材料台账」页签登记。
{{ t.status_label }} {{ t.name }} {{ phaseName(t.phase_id) }}
无下游
工作情况 {{ wkCols.length > 1 ? '已加入 ' + (wkCols.length - 1) + ' 个对比项目 · 同名任务自动对齐成行' : '本项目工作明细,可加入其他项目并排对比' }}
工作事项 {{ c.name }}
{{ c.type_name }} · {{ c.manager || '—' }} · 进度 {{ c.progress }}%
工作情况加载中…
暂无工作数据
材料台账 {{ matStats.total }} 项 · 已取得 {{ matStats.obtained }} · 办理中 {{ matStats.preparing }}
材料名称 类别 状态 文号 取得日期 有效期至 产出任务 被引用 操作
{{ m.name }} 成果 共享
{{ m.note }}
{{ m.kind }} {{ m.status_label }}
已过期
{{ m.doc_no || '—' }} {{ m.obtained_date || '—' }} {{ m.expire_date || '长期' }} {{ m.produced_by || '—' }} {{ m.consumers.length ? m.consumers.length + ' 项任务' : '—' }}
没有符合筛选条件的材料。
还没有登记材料。类型模板里配好「材料库」后,套用建项目会自动生成台账(全部办理中); 也可以点「+ 登记材料」手工补充。任务可在抽屉里关联「前置材料」,材料未取得时任务视为被卡。
增加对比项目
最多同时对比 6 个项目(含当前项目)。
分享管理 配置展示信息与有效期,可随时停用或删除链接
标题类型链接今日变化有效期至 状态浏览创建日期操作
{{ s.title || '(未命名)' }}
{{ s.company }}
{{ s.kind_name }} {{ s.today_note || '—' }} {{ s.expires_at ? s.expires_at.slice(0, 10) : '永久' }} {{ !s.enabled ? '已停用' : (shareExpired(s) ? '已过期' : '生效中') }} {{ s.view_count }} {{ (s.created_at || '').slice(0, 10) }}
还没有分享链接。在项目概况 / 工作情况页点「分享」即可创建。
用户管理 账号按部门划分;管理员可管理全部用户,普通用户仅能查看与维护自己的信息
部门{{ depts.length }} 个
{{ d.name }} {{ d.count }} 人
还没有部门,先添加一个。
姓名用户名角色部门电话状态操作
{{ u.name || '—' }}
(当前登录)
{{ u.username }} {{ u.role==='admin' ? '管理员' : '普通用户' }} {{ u.dept_name || '—' }} {{ u.phone || '—' }} {{ u.enabled ? '启用' : '停用' }}
没有匹配的用户。
{{ matForm.id ? '编辑材料' : '登记材料' }}
添加工作线
模板中的线已全部启用;可到「类型模板」新增后再来,或用其他两种方式。
复制任务清单与线内前置关系;进度从零开始,跨线依赖不会复制(需按本项目实际重新指定)。
{{ userForm.id ? '编辑用户' : '新增用户' }}
修改密码
{{ shareModal.token ? '编辑分享' : '生成分享链接' }}
分享链接(点击可复制):
打开预览
导入报批计划
导入成功:类型「{{ impRes.type }}」· 项目「{{ impRes.project }}」· {{ impRes.phases }} 阶段 / {{ impRes.roles }} 角色 / {{ impRes.tasks }} 任务