v24 第 17 批:城市聚合 / 高德地址 / 表单精简(用户 10 条)
用户 10 条原话要点与落地:
- ①「统计出来的不是目的地,也不是车站,而是城市…城市要聚合,有多段行程,
都有青岛作为出发地或者目的地,那么就只记一次」
→ trip_nodes 补 from_city/to_city(Schema v22),Trip::cities() 改成
「出发地 ∪ 到达地」去重、按最早时间 + 出发地优先排。
详情页信息区显示的就是这个聚合结果(第 4 条:「图片右侧显示的是聚合的城市,
而不是终点地址」)。
- ②「类型不够丰富,你看看 triplog 里面都有哪些,都拿过来」
→ NodeType::TRIPLOG_TYPES(休息/突发/购物/拜访亲友),在 all() 里读时自愈补齐。
- ③「出行方式,只有选择自驾,才让选车辆;车辆下拉框不需要出现什么财务里登记的车,
只把车辆列出来就行了」→ DRIVE_MODES 收窄成 ['drive'];
Vehicle::pickable() 只回车辆库;车辆页删掉「财务里已登记的车」那块。
- ③「飞机、铁路,只记录车次、航班号就可以…座位什么的不记录了」
→ seat_info / gate 从表单与列表**彻底移除**(列保留,老数据不丢;
saveNode 的 UPDATE 也不再写这两列,否则会抹掉迁来的数据)。
- ③「出发地和到达地,都用高德地图的接口,记录详细地址」+「参与人弹框选择」
+「给参与人标注角色这个功能去掉」
→ 新增 templates/trips/_loc_field.php(高德联想 + 详细地址 + 坐标 + 城市 +
导航链接,没配 key 也能手输);参与人改用全局弹框选人组件;
角色输入框删除,saveNodeMembers 改成差集增删(否则老 role_tag 被静默抹掉)。
- ④「triplog 中的行程花销数据,没有同步过来,需要迁移过来」
→ 新增 _tooling/_fb_b17_backfill.php:迁地址(20 条)、花销(4 笔 ¥8584)、
车辆(3 台)。线上已执行并核对(笔数与金额一分不差)。
- ④「行程中,时间明明具体到了时分秒,怎么不显示?」
→ Trip::nodeSpan():行程时间精确到时分(同一天只写一次日期、跨天写月日、
两头都没时分就不写 00:00)。
其他:
- App\Geo 扩展 cityFromPoint / cityFromText / navUrl / jsConfig。
中文地址提城市修掉四种错法(白名单→黑名单、取最后→取第一个、直辖市最先认、
离线表只能兜底),并加了「五大连池 ≠ 大连」的位置守卫。
- config.example.php 加 amap 段(key / security_js / nav_src)。
验证:
- e2e 920/0(+29 条本批断言)· 升级 149/0(+15 条 v22 断言)·
城市解析 32/32(新套件,样例全是 TripLog 线上真实地址)·
桌面几何 428/0 · 移动端 688/0 · 交互 92/0 · 窄屏溢出 24/0。
- 反向验证 5/5:城市退回读 place / 只算到达地 / 时间退回只到日期 /
打车也要车 / 类型不补 —— 五种坏法全部被断言抓住。
- 部署:服务器自检 19/19;线上 schema v22;补迁后花销 4 笔 ¥8584 与源库对齐。
This commit is contained in:
@@ -2993,7 +2993,10 @@ switch ($r) {
|
||||
$familyId = (int)Auth::familyId();
|
||||
View::render('trips/vehicles', [
|
||||
'title' => '车辆管理',
|
||||
'ledger' => Vehicle::fromLedger($familyId),
|
||||
// ⚠️ v24 第 17 批 第 3 条:**不再传** ledger(财务里的车)——
|
||||
// 用户原话「车辆下拉框,不需要出现什么财务里登记的车」。
|
||||
// 模板里那一整块也删掉了。fromLedger() 方法仍在模型层保留
|
||||
// (将来按车统计油费/保养要用它跟 vehicles.ledger_id 对上)。
|
||||
'mine' => Vehicle::all($familyId),
|
||||
], 'trips');
|
||||
break;
|
||||
@@ -3142,11 +3145,9 @@ switch ($r) {
|
||||
$isEdit = $r === 'trips/node_update';
|
||||
$nid = $isEdit ? (int)($_POST['id'] ?? 0) : 0;
|
||||
// v24 第 16 批:表单照 TripLog 的节点,字段全量(用户第 7 条)。
|
||||
// 参与人的角色标签走 roles[person_id] => 角色(TripLog 的 role_tag)。
|
||||
$roles = [];
|
||||
foreach ((array)($_POST['roles'] ?? []) as $pid => $role) {
|
||||
$roles[(int)$pid] = (string)$role;
|
||||
}
|
||||
// ⚠️ 第 17 批 用户第 3 条把「角色标注」去掉了("这个功能去掉,不要了"),
|
||||
// 所以这里**不再读** roles;座位/登机口也不再从表单收(字段已从界面移除,
|
||||
// 数据库那两列保留,详见 Trip::saveNode 的处理)。
|
||||
$d = [
|
||||
'title' => trim((string)($_POST['title'] ?? '')),
|
||||
'detail' => trim((string)($_POST['detail'] ?? '')),
|
||||
@@ -3159,17 +3160,25 @@ switch ($r) {
|
||||
// 新建时用户在表单里选的「计划 / 实际」;编辑时表单带的是隐藏 stage
|
||||
'stage' => (string)($_POST['stage_pick'] ?? $_POST['stage'] ?? 'plan'),
|
||||
'members' => filter_family_person_ids((array)($_POST['members'] ?? []), $familyId),
|
||||
'roles' => $roles,
|
||||
// ---- v21:交通与起终点(TripLog 同款)----
|
||||
// ---- v21:交通(TripLog 同款)----
|
||||
'travel_mode' => (string)($_POST['travel_mode'] ?? ''),
|
||||
'vehicle_id' => (int)($_POST['vehicle_id'] ?? 0),
|
||||
'line_name' => trim((string)($_POST['line_name'] ?? '')),
|
||||
'carrier' => trim((string)($_POST['carrier'] ?? '')),
|
||||
'trip_no' => trim((string)($_POST['trip_no'] ?? '')),
|
||||
'seat_info' => trim((string)($_POST['seat_info'] ?? '')),
|
||||
'gate' => trim((string)($_POST['gate'] ?? '')),
|
||||
// ---- v22:出发地 / 到达地(地点名 + 详细地址 + 坐标 + 城市)----
|
||||
// 用户第 17 批 第 3 条:「出发地和到达地,都用高德地图的接口,记录详细地址」。
|
||||
// 城市由前端联想带回(`*_city`),带不回时 Trip::saveNode 里用 App\Geo 解析。
|
||||
'from_place' => trim((string)($_POST['from_place'] ?? '')),
|
||||
'to_place' => trim((string)($_POST['to_place'] ?? '')),
|
||||
'from_addr' => trim((string)($_POST['from_addr'] ?? '')),
|
||||
'to_addr' => trim((string)($_POST['to_addr'] ?? '')),
|
||||
'from_lng' => trim((string)($_POST['from_lng'] ?? '')),
|
||||
'from_lat' => trim((string)($_POST['from_lat'] ?? '')),
|
||||
'to_lng' => trim((string)($_POST['to_lng'] ?? '')),
|
||||
'to_lat' => trim((string)($_POST['to_lat'] ?? '')),
|
||||
'from_city' => trim((string)($_POST['from_city'] ?? '')),
|
||||
'to_city' => trim((string)($_POST['to_city'] ?? '')),
|
||||
];
|
||||
if ($d['title'] === '') {
|
||||
flash('err', '这段行程得有个名字。');
|
||||
|
||||
Reference in New Issue
Block a user