网页端:保存按钮整行 + 左上角「编辑任务」+ 补回分类与循环 (#83)

用户 2026-11-05:
  「保存按钮感觉太小了。要不也像鸿蒙版一样长长的一条?」
  「最左上角也是一样,应该显示"编辑任务",而不是显示任务的标题。」
  「你倒是提醒我了,分类和重复,也就是循环,都需要加上,鸿蒙端也得加上。」

① 保存按钮 → 整行长条
   原来 `.btn-sm` 是内联宽(按文字撑),在 648px 宽的面板里又小又偏。
   ⇒ `.tk-attr-actions > .btn { width:100%; height:42px; justify-content:center }`
   实测:648 x 42,占行宽 100% ✅

② 左上角改「编辑任务」
   根因:`entry_popup.js` 的 `paintDetail()` 第 142 行永远是
     titleEl().textContent = data.title || 详情
   任务面板带 `data.panel`,它本身就是编辑面板,标题栏写任务名会让用户
   以为"这是详情页,只是恰好能改"。
   ⇒ `var headText = data.panel ? 编辑任务 : (data.title || 详情);`
   ⚠️ 其它来源(观影/旅程/日程/纪念日)**保持显示名字**:它们点开的
      确实是"这条记录的详情",显示名字才是对的。

③ 补回分类与循环
   上一轮我按「不需要额外信息」把这两项删了 —— 理解偏了:
   用户指的是"不要编辑表单里那些多余字段",不是"分类/循环不要"。
   ⇒ 补回,位置放在协作人之后(用户指定的前四项顺序不动)。
   ⚠️ `tasks/panel_save` 的 `$sd` 需要能接这两个字段 —— 见服务端那侧,
      它用 `array_key_exists` 判"传没传",所以不传时保留原值、传了就更新。

实测渲染:任务标题 → 截止 → 负责人 → 备注 → 协作人 → 分类 → 循环 ✅
This commit is contained in:
2026-11-05 20:14:43 +08:00
parent 4d04490f7f
commit 255fb8a240
3 changed files with 62 additions and 1 deletions
+41
View File
@@ -243,6 +243,47 @@ $tpLate = $tpDue !== '' && $tpStatus !== 'done' && \App\Task::isOverdue($tpD
<?php endif; ?>
</div>
<?php /* 🔴 #83(用户 2026-11-05):「你倒是提醒我了,分类和重复,也就是循环,
都需要加上,鸿蒙端也得加上。」
#82 里我按「不需要额外信息」把这两项删了 —— 那是我理解偏了,
用户说的是"不要编辑表单里那些额外的字段",不是"分类/循环不要"。
⇒ 补回。位置放在协作人之后:用户明确指定的前四项
(截止/负责人/备注/协作人)顺序不动,这两项作为补充排在后面。 */ ?>
<div class="tk-attr-row">
<span class="tk-attr-lb">分类</span>
<?php if ($tpCan): ?>
<select class="select" name="category_id" id="tkp-category">
<option value="0">未分类</option>
<?php foreach ($tpCats as $tpC): ?>
<?php $tpCid = (int)($tpC['id'] ?? 0); ?>
<option value="<?= $tpCid ?>"
<?= $tpCid === (int)($tpT['category_id'] ?? 0) ? ' selected' : '' ?>>
<?= e((string)($tpC['name'] ?? '')) ?>
</option>
<?php endforeach; ?>
</select>
<?php else: ?>
<span class="tk-attr-val"><?= $tpCatName !== '' ? e($tpCatName) : '未分类' ?></span>
<?php endif; ?>
</div>
<div class="tk-attr-row">
<span class="tk-attr-lb">循环</span>
<?php if ($tpCan): ?>
<select class="select" name="repeat_rule" id="tkp-repeat">
<?php foreach (\App\Task::REPEAT as $tpRk => $tpRv): ?>
<option value="<?= e($tpRk) ?>"
<?= (string)($tpT['repeat_rule'] ?? '') === (string)$tpRk ? ' selected' : '' ?>>
<?= e($tpRv) ?>
</option>
<?php endforeach; ?>
</select>
<?php else: ?>
<span class="tk-attr-val"><?= e(\App\Task::repeatWord((string)($tpT['repeat_rule'] ?? ''))) ?></span>
<?php endif; ?>
</div>
<?php if ($tpCan): ?>
<div class="tk-attr-actions">
<button type="button" class="btn btn-sm" data-tk-act="save-attrs">保存</button>