返回任务
` 的 `change` 直接提交。 实现走**既有的 `tasks/status` + `X-Requested-With`**(它本来就回 JSON, 见 index.php 那个分支)—— 不新开路由、不加新契约。 ⚠️ **无 JS 时仍要能用**:`
`:点一下**就地展开**一张表单。 ⇒ 改成**弹框**(与「新建任务」「新建日程」「编辑观影记录」同一形态)。 ⚠️ 表单本身**一个字没改** —— 仍 require 同一份 `_edit_form.php` (条目浮层 `tasks/edit?embed=1` 也用它,两处永远同一张)。 这次只是给它套一层 `.cal-modal` 壳(由 `$tkEditModal` 开关)。 ⚠️ 为什么"就地展开"不够:展开会把下面的**子任务 / 附件 / 评论**整段往下推, 而用户只是想改几个字段;弹框则原地浮起、关掉就回来。 ⚠️ `$tkEditEmbed` 仍为 false —— 那是"要不要自己的保存键", 弹框形态下按钮在**弹框底栏**(与新建任务一致),所以这里仍传 false, 由 `$tkEditModal` 把"保存"挪到底栏。 */ ?>

子任务 项

还没有子任务。把一件大事拆成几件小事,进度才看得见。

+ 加一项子任务

附件

还没有附件。

共享

还没共享给别人。共享之后,任何一个人完成都算完成。

(int)$p['id'] !== $meId)); $ppSelected = []; $ppMode = 'single'; $ppOpenBtn = '选择要共享给谁'; $ppTitle = '共享给谁'; $ppEmptyText = '未选择'; require __DIR__ . '/../_person_picker.php'; ?>

讨论 条

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

` 就地展开表单;现在点「编辑这项任务」浮起弹框。 ⚠️ **`_edit_form.php` 里的日期控件要在"打开弹框的那一刻"才升级成 antd** —— 弹框初始是 `hidden` 的,`app.js` 的挂载器按"页面里有没有 `[data-dt-antd]`"来找, 而 `hidden` 的元素**在 DOM 里是存在的**,所以挂载本身会成功; 但 antd 的弹出面板依赖元素有**实际尺寸**(hidden 时宽高为 0), 拿到 0 尺寸会让面板定位错乱。⇒ 打开时显式再 boot 一次(幂等,见 movies/show.php 同一手法)。 ⚠️ 事件**委托**(挂 document)而不是逐个 addEventListener: 与观影详情页同一理由 —— 校验失败若重画了这块,委托仍然有效,不用重绑。 ⚠️ 幂等闸门 `__fbTkEditBound`:本页脚本只跑一次,但加上它以后若有人复用这段 (比如某天详情页也做"替换正文再重跑脚本")不会被绑第二套监听。 */ ?> ` 的 `change` → fetch 提交到**既有的** `tasks/status` (它本来就认 `X-Requested-With` 并回 `{ok,id,status,word,msg}`,见 index.php)。 成功后**就地**更新页面上的三处显示,不刷页: · 这个下拉自己(保持选中项); · 页头副标题里的状态词(`page-head .sub`); · 页头那颗「标记完成 / 重新打开」按钮的文案与语义(它跟着状态走)。 失败/拿不到 JSON 时**退回原生提交**(下拉还在那个 form 里,`form.submit()` 即可)—— 与全站"没有 JS 照样能用"的口径一致。 ⚠️ 为什么不用「表单自动提交」(`this.form.submit()` 就完事): 那会整页刷新、滚动位置丢掉,而用户在详情页往下翻着看子任务/评论—— 改个状态就跳回顶部是"打一次断",用户要的是"选一下就改了"。 ⚠️ 循环任务(`repeat_rule` + 有截止日):服务端会顺带排下一次, 它的提示语在 `d.msg` 里 —— 所以这里要把 msg 显示出来, 否则用户不知道"下一次也排上了"(那是 v24 就定下的行为,不能因为改交互而丢掉)。 提示落在页面顶部一条轻提示里(`#tkStFlash`),2.5 秒后自淡出。 ⚠️ **幂等**:本段脚本在页面里只跑一次(详情页没有"替换正文再重跑"那套), 但为了以后若有人复用这段,加了 `window.__fbTkStBound` 闸门。 */ ?>