'待执行', 'ongoing' => '进行中', 'completed' => '已完成', 'cancelled' => '已取消', ]; $st = (string)($node['status'] ?? 'planned'); if (!isset($statusLabels[$st])) $st = 'planned'; $sLoc = json_decode_field($node['start_location'] ?? null); $eLoc = json_decode_field($node['end_location'] ?? null); /** * 交通只记一个号码(航班号 / 车次 / 班次)—— * 航班号本身就隐含航空公司,座位号对多人同行又没法记,所以都不收。 */ $tripFieldLabels = [ 'plane' => '航班号', 'train' => '车次', 'bus' => '班次', 'subway' => '线路', 'ship' => '航次', 'taxi' => '备注', ]; $tripLabel = $tripFieldLabels[(string)($node['travel_mode_type'] ?? '')] ?? '车次 / 班次'; $transportParts = []; if (!empty($node['trip_number'])) { $transportParts[] = $tripLabel . ' ' . $node['trip_number']; } $durationText = ''; if (!empty($node['duration_minutes'])) { $mins = (int)$node['duration_minutes']; $durationText = $mins >= 60 ? intdiv($mins, 60) . ' 小时 ' . ($mins % 60) . ' 分' : $mins . ' 分钟'; } ?>
时间 → ()
类型
出行方式
交通
起点 📍 🧭 导航
终点 📍 🧭 导航
描述
取消原因

照片与附件()

count($showPhotos)): ?> +张
📷 管理照片() 0): ?> 另有 个非图片附件