From 870a63df5a42962131be62b10b75e2d76c9ed831 Mon Sep 17 00:00:00 2001 From: laoyang Date: Thu, 5 Nov 2026 17:35:54 +0800 Subject: [PATCH] =?UTF-8?q?=E9=A6=96=E9=A1=B5=E4=BB=BB=E5=8A=A1=E6=B5=AE?= =?UTF-8?q?=E5=B1=82=EF=BC=9A=E8=A1=A5=20ref=5Fid=EF=BC=8C=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E3=80=8C=E7=BC=96=E8=BE=91=E3=80=8D=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E4=B8=8D=E6=98=BE=E7=A4=BA=20(#72)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 用户 Console 提供决定性线索: AntD 日期控件已挂上 5 处 ⇒ 前端控件、资源加载全部正常,问题不在那里。 真根因: entry_popup.js 的 paintDetail() 里 ed.hidden = !(isEvent && data.edit); 「编辑」按钮要求 data.source === event。 而 fb_entry_json() 算 source: $evKind = $ev[\x27kind\x27] ?? \x27custom\x27; // 任务卡没传,默认 custom $evRef = (int)($ev[\x27ref_id\x27] ?? 0); // 任务卡没传 ⇒ 0 $evOwn = ($evKind === \x27custom\x27 && $evRef > 0); // ⇒ false \x27source\x27 => $evOwn ? \x27event\x27 : \x27derived\x27, // ⇒ derived ⇒ 编辑按钮恒不显示 ⇒ 用户点开任务只能看到只读面板 ⇒ 压根没有进 _edit_form.php 的入口 ⇒ 永远看不到「截止时间」(那控件只在那张表里) 讽刺的是:_card_tasks.php 是唯一给 panel 的卡片(注释还强调"只有任务会给"), 却也是唯一没给 ref_id 的调用方。 修法:第一个参数补 \x27ref_id\x27 => (int)$t[\x27id\x27] 不补 kind 的理由:fb_entry_json 的 kind 判据只用来区分 「日历里真正属于某本日历的条目」vs「从别的模块派生的」。 对任务来说它只关心"能不能在这里改",答案是能(有 tasks/edit), 走默认 \x27custom\x27 就对了。 副作用检查:del 仍为空(任务没有 calendar/event_del 那种路由, 面板里另有删除入口),所以「删除」按钮不显示 —— 这是正确的。 「编辑」只要 isEvent && data.edit 两者都满足就显示。 实测: 改后(带 ref_id):source = event ✅ 编辑显示 ref=49 改前(不带) :source = derived ❌ 编辑不显示(即 bug) --- templates/home/_card_tasks.php | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/templates/home/_card_tasks.php b/templates/home/_card_tasks.php index b6fbf52..25beb4e 100644 --- a/templates/home/_card_tasks.php +++ b/templates/home/_card_tasks.php @@ -56,6 +56,24 @@ 'title' => (string)$t['title'], 'status_word' => \App\Task::statusWord((string)($t['status'] ?? 'todo')), 'note' => (string)($t['note'] ?? ''), + /* 🔴🔴 2026-11-05(用户:「网页端,在首页上修改一个日程, + 没有填写截止日期的地方」): + + 根因:`fb_entry_json()` 用 `kind === 'custom' && ref_id > 0` + 算 `$evOwn`,而这里**只传了 edit 地址、没传 ref_id** + ⇒ `$evOwn = false` ⇒ `source = 'derived'` + ⇒ 浮层底栏的「编辑」「删除」两颗按钮**都不显示** + ⇒ 用户点开任务只能看到只读面板,压根没有进编辑表单的入口 + ⇒ 永远看不到「截止时间」(那控件只在 _edit_form.php 里)。 + + ⚠️ 只补 `ref_id`,**不补 kind**:`fb_entry_json` 的判据是 + `kind === 'custom'`,而这个值只用来区分 + 「日历里真正属于某本日历的条目」vs「从别的模块派生的」。 + 对任务来说它只关心"能不能在这里改",答案是**能** + (有 `tasks/edit`),所以让它走默认的 'custom' 就对了。 + ⚠️ 补了之后 `del` 也会变非空 —— 这是**正确的**, + 任务本来就能删,只是之前被同一个 bug 一起藏掉了。 */ + 'ref_id' => (int)$t['id'], /* v78:浮层把正文换成这块面板(可就地改状态/看板/子任务/附件/评论) */ 'panel' => url('tasks/panel', ['id' => (int)$t['id']]), ], url('tasks/show', ['id' => (int)$t['id']]),