diff --git a/static/app.js b/static/app.js index e101b51..fc369b6 100644 --- a/static/app.js +++ b/static/app.js @@ -193,6 +193,7 @@ window.openTaskForm = (projectId, taskId) => { document.querySelector(`#task-owner-${projectId}`).value = task.owner || ""; document.querySelector(`#task-due-${projectId}`).value = task.due_date || ""; document.querySelector(`#task-notes-${projectId}`).value = task.notes || ""; + document.querySelector(`#task-blockers-${projectId}`).value = task.blockers || ""; document.querySelector(`#task-submit-btn-${projectId}`).textContent = "保存修改"; } form.scrollIntoView({ behavior: "smooth" }); @@ -266,6 +267,7 @@ function showTaskModal(projectId) { +
@@ -275,7 +277,7 @@ function showTaskModal(projectId) { ${phases.map((phase) => { const pt = tasks.filter((t) => t.phase === phase); if (!pt.length) return ""; - return `
${phase}${pt.length}
${pt.map((t) => `
${t.task}${t.notes ? `${t.notes}` : ""}
${t.owner || ""}${t.due_date || ""}
`).join("")}
`; + return `
${phase}${pt.length}
${pt.map((t) => `
${t.task}${t.notes ? `${t.notes}` : ""}${t.blockers ? `⚠ ${t.blockers}` : ""}
${t.owner || ""}${t.due_date || ""}
`).join("")}
`; }).join("")}
`; document.querySelector("#taskModal").classList.add("active"); if (window.lucide) window.lucide.createIcons(); diff --git a/static/styles.css b/static/styles.css index 9f9e174..85267b8 100644 --- a/static/styles.css +++ b/static/styles.css @@ -538,6 +538,7 @@ td { .task-main { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; } .task-name { color: #1e293b; font-size: 13px; } .task-desc { color: #94a3b8; font-size: 12px; word-wrap: break-word; overflow-wrap: break-word; } +.task-blocker { color: #dc2626; font-size: 12px; word-wrap: break-word; overflow-wrap: break-word; } .task-col { color: #64748b; font-size: 12px; white-space: nowrap; width: 100px; text-align: right; } .task-col-badge { color: #64748b; font-size: 12px; white-space: nowrap; width: 90px; text-align: right; } .task-none { color: #94a3b8; font-size: 13px; padding: 12px 14px; text-align: center; border-top: 1px solid #f1f5f9; }