「点击行程里旅行日历本里的信息时,弹出来的那个框是在首页上弹出的, 还是没有出发地和目的地。」
FbEventSheet(日程详情卡)只渲染三样与位置有关的东西:
FbEventSheet
this.event.location → 一行「地点」
而行程派生条目(kind = 'trip')根本没有 location —— 服务端 Calendar::month() 的 trip 段从来没输出过 location 字段, 它输出的是 from_place / to_place(#67 才刚补上)。
kind = 'trip'
location
Calendar::month()
from_place
to_place
于是详情卡里:
时间 2026-11-07 16:50–21:41 日历本 旅行 重复 ... (没有地点行,因为 location 是空串) 备注 ...
用户看不到「北京南站 → 青岛北站」,也无法从详情卡导航。
FbCalEvent
fromPlace
toPlace
FbCalEventFull
shellOf()
b.place
event.location
fromPlace: string; toPlace: string; fromLng: string; fromLat: string; toLng: string; toLat: string;
首页 FbHomePage.shellOf() 与日程页 FbCalendarPage.shellOf() 两处都要改 (两个独立实现,容易只改一处)。
FbHomePage.shellOf()
FbCalendarPage.shellOf()
navRow 现在硬编码标签「地点」,改成接受标签参数(仍是有限个参数, 但要守住「@Builder 多值参数不参与状态观察」这条坑 —— 详情卡是每次打开才重建, 不存在"数据变了行不刷新"的场景,所以安全)。
navRow
渲染顺序:
三者互不冲突:行程条目通常只有前两个,普通日程只有第三个。
出发地 → 用 fromLng/fromLat;目的地 → 用 toLng/toLat。 没有坐标时传地名让 FbNav 自己地理编码。
fromLng
fromLat
toLng
toLat
FbNav
相关:#67(服务端已带出 from_place/to_place 与坐标,本单是端上详情卡没消费)
#67 改的是日历卡片列表上的显示与 Calendar::month() 的输出;本单是端上详情浮层(FbEventSheet)没消费那两个字段,断点在 FbCalEventFull 与 shellOf()。同一需求的下游一环,但文件与验收点不同。
用户反馈原话:
「导航的,点进去导航之后,为什么目的地地址前面有个问号」
上一轮的 navTargetOf() 拼的是:
navTargetOf()
return lat + ',' + lng + '?' + place; // ❌
那个 ? 是照抄 geo:lat,lng?q=地名 这个 URI 的写法。 但这里拼出来的字符串不是 URI,它是交给 fbOpenNavigation() 的普通文本。
?
geo:lat,lng?q=地名
fbOpenNavigation()
FbNav.parseGeoOf() 的实际动作是:
FbNav.parseGeoOf()
数字,数字
clean
所以:
输入 36.168977,120.375693?青岛北站 剪掉坐标后剩 ?青岛北站 ← 问号留下了
这个 clean 直接进了高德的 dname 参数,于是目的地标题显示成「?青岛北站」。
dname
改成地名在前、空格、坐标在后:
return place + ' ' + lat + ',' + lng; // ✅
输入 青岛北站 36.168977,120.375693 剪掉坐标后剩 青岛北站 ← 干净
parseGeoOf
=== 旧写法(带问号)=== 输入: 36.168977,120.375693?青岛北站 坐标: 36.168977 120.375693 地名(clean):[?青岛北站] ← ❌ === 新写法 === 输入: 青岛北站 36.168977,120.375693 坐标: 36.168977 120.375693 地名(clean):[青岛北站] ← ✅ === 无坐标 === 输入: 青岛北站 ok: false(走系统地理编码,正确)
FbEventSheet.ets
FbDayEventPanel.ets
第二处是 #67 留下的同一类 bug —— 当时拼的也是 lat,lng?地名, 只是那次没人点导航所以没暴露。这次一并修掉。
lat,lng?地名
No dependencies set.
The note is not visible to the blocked user.
日程详情卡:行程条目没有出发地和目的地
用户(2026-11-05)
现状
FbEventSheet(日程详情卡)只渲染三样与位置有关的东西:而行程派生条目(
kind = 'trip')根本没有location——服务端
Calendar::month()的 trip 段从来没输出过location字段,它输出的是
from_place/to_place(#67 才刚补上)。于是详情卡里:
用户看不到「北京南站 → 青岛北站」,也无法从详情卡导航。
根因链
location(正确 —— 行程没有单一"地点"概念)FbCalEvent已在 #67 加上fromPlace/toPlace和坐标 ✅FbCalEventFull没有这三个字段 ← 断点在这shellOf()只把b.place塞进locationFbEventSheet只读event.location改法
①
FbCalEventFull加字段②
shellOf()传递首页
FbHomePage.shellOf()与日程页FbCalendarPage.shellOf()两处都要改(两个独立实现,容易只改一处)。
③
FbEventSheet增加两行navRow现在硬编码标签「地点」,改成接受标签参数(仍是有限个参数,但要守住「@Builder 多值参数不参与状态观察」这条坑 —— 详情卡是每次打开才重建,
不存在"数据变了行不刷新"的场景,所以安全)。
渲染顺序:
三者互不冲突:行程条目通常只有前两个,普通日程只有第三个。
④ 导航目标
出发地 → 用
fromLng/fromLat;目的地 → 用toLng/toLat。没有坐标时传地名让
FbNav自己地理编码。验收
相关:#67(服务端已带出 from_place/to_place 与坐标,本单是端上详情卡没消费)
为什么单独建单
#67 改的是日历卡片列表上的显示与 Calendar::month() 的输出;本单是端上详情浮层(FbEventSheet)没消费那两个字段,断点在 FbCalEventFull 与 shellOf()。同一需求的下游一环,但文件与验收点不同。
二次反馈修复(2026-11-05 17:21)
用户反馈原话:
根因:我把 URI 语法用在了普通文本上
上一轮的
navTargetOf()拼的是:那个
?是照抄geo:lat,lng?q=地名这个 URI 的写法。但这里拼出来的字符串不是 URI,它是交给
fbOpenNavigation()的普通文本。FbNav.parseGeoOf()的实际动作是:数字,数字当坐标clean= 把坐标从原文里剪掉之后剩下的文字,用作显示地名所以:
这个
clean直接进了高德的dname参数,于是目的地标题显示成「?青岛北站」。修法
改成地名在前、空格、坐标在后:
实测验证(复刻
parseGeoOf逻辑跑)两处都改了
FbEventSheet.etsnavTargetOf()(#69 新增的)FbDayEventPanel.ets第二处是 #67 留下的同一类 bug —— 当时拼的也是
lat,lng?地名,只是那次没人点导航所以没暴露。这次一并修掉。