行程:#47~#51 打包 —— 双轨状态、动态类型、动作按钮、去提示 (#51)

#47 编辑浮层居中、类型换行、去掉手动状态选择、按钮改胶囊
#48 计划/实际双轨:完成即转实际行程,取消≠删除,记真实开始/结束时间
#50 类型点击无反应(@Builder 值传参不建立依赖)
#51 节点类型动态加载(服务端9种,原端上硬编码5种)+ 地址结构化回调

API 新增:GET /trips/<id>/node-types、PATCH /trips/<id>/nodes/action
DB 新增:trip_nodes.actual_started_at / actual_ended_at
This commit is contained in:
2026-11-05 12:40:57 +08:00
parent a1140437a1
commit f58a128816
9 changed files with 1361 additions and 46 deletions
+13 -17
View File
@@ -171,13 +171,12 @@ $nfEmbed = !empty($nfEmbed);
</option>
<?php endif; ?>
</select>
<span class="tip">在右上角「设置 → 节点类型」里可以增删自定义。</span>
</div>
<div class="field">
<label>当前状态</label>
<div class="node-stage-ro"><?= e(\App\Trip::stageWord($stage)) ?></div>
</div>
<?php /* 🔴 #47(2026-11-05):**「当前状态」不再显示**。
用户:「实际行程、当前状态实际行程,这个地方也不要出现,
因为这是没有意义的。我现在本来就是添加的一个实际行程。」
⇒ 阶段由入口决定(计划/实际两颗按钮),编辑时不该再展示。 */ ?>
<?php /* ---- 标题 ---- */ ?>
<div class="field full">
@@ -202,7 +201,6 @@ $nfEmbed = !empty($nfEmbed);
<?php $dtName = 'ends_at'; $dtValue = $n['ends_at'] ?? '';
$dtId = 'nf-e'; $dtRange = 'end'; $dtPlugin = 'antd';
require __DIR__ . '/../_datetime.php'; ?>
<span class="tip">结束时间可不填;填到几点几分,详情页就显示到几点几分。</span>
</div>
<?php /* ---- 出行方式(TripLog 的 travel_modes)---- */ ?>
@@ -251,7 +249,6 @@ $nfEmbed = !empty($nfEmbed);
<label for="nf-tripno">车次 / 航班号</label>
<input class="input" id="nf-tripno" name="trip_no"
value="<?= e(old('trip_no', $n['trip_no'] ?? '')) ?>" placeholder="如:G1234、CA1234">
<span class="tip">座位这类同团不同座的信息就不记了。</span>
</div>
<?php /* 线路名与承运方:v24 第 20 批 第 5 条 用户明确「都不要了」——
原话:「添加行程,线路名、承运方,都不要了。」
@@ -283,16 +280,15 @@ $nfEmbed = !empty($nfEmbed);
</div>
</div>
<div class="field">
<label for="nf-status">执行状态</label>
<select class="select" id="nf-status" name="status">
<?php foreach (\App\Trip::NODE_STATUS as $sk => $sv): ?>
<option value="<?= e($sk) ?>"<?= ($n['status'] ?? 'planned') === $sk ? ' selected' : '' ?>>
<?= e($sv) ?>
</option>
<?php endforeach; ?>
</select>
</div>
<?php /* 🔴 #47(2026-11-05):**「执行状态」不再由表单选**。
用户:「这个里面不要让它手动去动。只要是添加的计划行程,
它的状态就是计划中。在计划行程里面点击开始执行,
它的状态自然变成进行中…所以编辑这个地方不要出现
计划中、进行中、已完成、已取消。」
⇒ 状态由 show.php 节点卡片上的动作按钮改(#47 新增的 API)。
表单**不提交 status**,服务端 saveNode 的 PATCH 语义会沿用原值
(见 Trip::saveNode 里 `array_key_exists` 的判定)。 */ ?>
<div class="field full">
<label for="nf-detail">记录</label>