首页任务面板:可直接改截止时间(附件/评论/子任务/状态/看板已有) #74

Open
opened 2026-11-05 09:41:55 +00:00 by laoyang · 0 comments
Owner

首页任务浮层:面板里直接改截止时间(其余功能已有)

用户(2026-11-05)

「现在需要把所有这些修改功能,都添加到点开后直接弹出的那个框里面。
也就是点开之后,就可以修改任务的所有信息,包括:

  1. 上传附件;
  2. 添加评论;
  3. 添加子任务;
  4. 修改截止时间。当然,如果现在已经有截止时间,就把它带进来。
  5. 改变它的状态,把它添加到某个面板里面。
    这些操作全部都在这一个页面完成。因为页面有滚动条,直接往下滚动就可以了。」

现状盘点(templates/tasks/_panel.php 已实现的)

# 用户要的 现状
1 上传附件 ✅ 已有(data-tk-drop-box + data-tk-act="attach",第 224 行起)
2 添加评论 ✅ 已有(tasks/comment_add 表单,第 262 行起)
3 添加子任务 ✅ 已有(tasks/create + parent_id,第 188 行起)
4 修改截止时间 ❌ 缺失 —— 只读一行 <dd>截止 …</dd>
5 改状态 / 挪看板 ✅ 已有(data-tk-act="status" / "board",第 89/113 行)

所以只有第 4 项要做。 其余四项本来就在,用户可能没往下滚到(或以为要点「编辑」才有)。

改法

把第 129 行那段只读的:

<div class="kv-row"><dt>截止</dt>
  <dd class="<?= $tpLate ? 'kb-late' : '' ?>"><?= e($tpDue) ?>…</dd>
</div>

换成与 _edit_form.php 同一套的 AntD 单点控件:

<div class="tk-sec tk-sec-inline">
  <span class="tk-sec-lb">截止</span>
  <?php $dtName = 'due_at'; $dtValue = $tpDue;
        $dtPlugin = 'antd-single';
        require __DIR__ . '/../_datetime.php'; ?>
</div>

关键设计:怎么保存

面板里其他动作(状态/看板/子任务/评论/附件)都是各自一个 AJAX 动作立即生效。
截止时间也应该一致 —— 改完立即保存,不引入"保存按钮"。

做法:复用已有的 tasks/status 那套思路,但因 due_at 不在那个动作里,
需要新加一个动作 tasks/due(或在现有 update 里支持只传 due_at)。

优先选:给 task_panel.js 加一个 data-tk-act="due" 处理,
提交到新路由 tasks/due(只收 id + due_at + ajax_panel=1),
成功后重载面板。

⚠️ AntD 控件在 AJAX 面板里的注意点

  1. _datetime.php 里 $dtPlugin='antd-single' 会输出 data-dt-antd-single="1",
    必需 fbBootAntd() 才能挂上 —— task_panel.js 换 HTML 后要调一次
    (参考 entry_popup.js:290)。
  2. 这个面板是 tasks/panel AJAX 返回的,不在首屏,
    所以第一次打开时才会加载 1.8MB 的 antd。
  3. React #321 已由 #73 修(loadJs 去重),这里能正常挂上。

验收

  • 点开任务 → 面板里「截止」是可点的日期选择器,不是只读文字
  • 已有截止时间的任务,控件里带出原值
  • 改完立刻生效(不刷新页面、不需要点保存)
  • 重开面板能看到新值
  • 上传附件 / 评论 / 子任务 / 状态 / 看板 仍正常(都已存在,别改坏)

顺带说明

用户可能不知道面板里已经能传附件/评论/子任务 —— 那些都在面板下方,
需要往下滚。如果滚不到或视觉上不明显,可能需要加个滚动提示。
先看效果再说。


为什么单独建单

与 #72 不同:#72 是修编辑按钮不显示;本单是把面板本身补全,让用户不必进编辑页。与 #73(React 重复加载)也不同,那是底层缺陷。

# 首页任务浮层:面板里直接改截止时间(其余功能已有) ## 用户(2026-11-05) > 「现在需要把所有这些修改功能,都添加到点开后直接弹出的那个框里面。 > 也就是点开之后,就可以修改任务的所有信息,包括: > 1. 上传附件; > 2. 添加评论; > 3. 添加子任务; > 4. 修改截止时间。当然,如果现在已经有截止时间,就把它带进来。 > 5. 改变它的状态,把它添加到某个面板里面。 > 这些操作全部都在这一个页面完成。因为页面有滚动条,直接往下滚动就可以了。」 ## 现状盘点(`templates/tasks/_panel.php` 已实现的) | # | 用户要的 | 现状 | |---|---|---| | 1 | 上传附件 | ✅ **已有**(`data-tk-drop-box` + `data-tk-act="attach"`,第 224 行起) | | 2 | 添加评论 | ✅ **已有**(`tasks/comment_add` 表单,第 262 行起) | | 3 | 添加子任务 | ✅ **已有**(`tasks/create` + `parent_id`,第 188 行起) | | 4 | 修改截止时间 | ❌ **缺失** —— 只读一行 `<dd>截止 …</dd>` | | 5 | 改状态 / 挪看板 | ✅ **已有**(`data-tk-act="status"` / `"board"`,第 89/113 行) | **所以只有第 4 项要做。** 其余四项本来就在,用户可能没往下滚到(或以为要点「编辑」才有)。 ## 改法 把第 129 行那段只读的: ```php <div class="kv-row"><dt>截止</dt> <dd class="<?= $tpLate ? 'kb-late' : '' ?>"><?= e($tpDue) ?>…</dd> </div> ``` 换成与 `_edit_form.php` 同一套的 AntD 单点控件: ```php <div class="tk-sec tk-sec-inline"> <span class="tk-sec-lb">截止</span> <?php $dtName = 'due_at'; $dtValue = $tpDue; $dtPlugin = 'antd-single'; require __DIR__ . '/../_datetime.php'; ?> </div> ``` ### 关键设计:怎么保存 面板里其他动作(状态/看板/子任务/评论/附件)都是**各自一个 AJAX 动作**立即生效。 截止时间也应该一致 —— **改完立即保存**,不引入"保存按钮"。 做法:复用已有的 `tasks/status` 那套思路,但因 `due_at` 不在那个动作里, 需要新加一个动作 `tasks/due`(或在现有 update 里支持只传 due_at)。 **优先选**:给 `task_panel.js` 加一个 `data-tk-act="due"` 处理, 提交到新路由 `tasks/due`(只收 `id` + `due_at` + `ajax_panel=1`), 成功后重载面板。 ### ⚠️ AntD 控件在 AJAX 面板里的注意点 1. `_datetime.php` 里 `$dtPlugin='antd-single'` 会输出 `data-dt-antd-single="1"`, **必需** `fbBootAntd()` 才能挂上 —— `task_panel.js` 换 HTML 后要调一次 (参考 `entry_popup.js:290`)。 2. 这个面板是 `tasks/panel` AJAX 返回的,**不在首屏**, 所以第一次打开时才会加载 1.8MB 的 antd。 3. React #321 已由 #73 修(loadJs 去重),这里能正常挂上。 ## 验收 - [ ] 点开任务 → 面板里「截止」是**可点的日期选择器**,不是只读文字 - [ ] 已有截止时间的任务,控件里**带出原值** - [ ] 改完立刻生效(不刷新页面、不需要点保存) - [ ] 重开面板能看到新值 - [ ] 上传附件 / 评论 / 子任务 / 状态 / 看板 仍正常(都已存在,别改坏) ## 顺带说明 用户可能不知道面板里已经能传附件/评论/子任务 —— 那些都在**面板下方**, 需要往下滚。如果滚不到或视觉上不明显,可能需要加个滚动提示。 先看效果再说。 --- ### 为什么单独建单 与 #72 不同:#72 是修编辑按钮不显示;本单是把面板本身补全,让用户不必进编辑页。与 #73(React 重复加载)也不同,那是底层缺陷。
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: laoyang/FamilyBook#74