0; /* 分类名:Task::find 不带 join,这里按 id 在清单里找(清单一次查询就够, 比再跑一条 SQL 划算;找不到就当未分类)。 */ $tpCatName = ''; foreach ($tpCats as $tpCat) { if ((int)$tpCat['id'] === (int)($tpT['category_id'] ?? 0)) { $tpCatName = (string)$tpCat['name']; break; } } $tpDue = (string)($tpT['due_at'] ?? ''); $tpDueWord = \App\Task::dueWord($tpDue !== '' ? $tpDue : null); $tpLate = $tpDue !== '' && $tpStatus !== 'done' && \App\Task::isOverdue($tpDue); ?>
data-tk-url-due="">
状态
$tpSv): ?>
看板
截止
…
而且**没有截止时间时整行连显示都不显示** —— 用户根本不知道该去哪填。 ⇒ 换成与 `_edit_form.php` 同一套的 AntD 单点控件(`dtPlugin=antd-single`), 并且**不管有没有值都画出来**(空着就是"还没设",比"没有这个字段"清楚)。 `$dtValue = $tpDue` ⇒ 已有截止时间会带进控件(用户明确要求)。 ⚠️ 控件里改完**立即保存**(`data-tk-act="due"`,见 task_panel.js), 与状态/看板/子任务/评论/附件同一套交互 —— 面板里不该有"保存按钮"。 ⚠️ 这个面板是 AJAX 塞进来的,AntD 要靠 `fbBootAntd()` 补挂, 见 task_panel.js 的 paint()。 */ ?>
截止
负责人
$tpT['assignee_name'], 'my_nickname' => $tpT['assignee_nick'] ?? ''])) ?>
分类
循环
备注
子任务 /

还没有子任务。

附件
'1']; require __DIR__ . '/../_attachments.php'; ?>

还没有附件。

点击或拖动进行上传
讨论

还没有留言。写 @名字 可以点名。