v84: 首页「+ 新建」日程 + 红线去端点 + 新建表单两处可见性修复
用户 2026-10-23 原话:「日程,没有新建日程按钮,名册,也没有新增成员这个按钮。」
「首页上的日程,红色线不对,变短了左侧缺了一块。在日程模块中,那个红线左侧
是不是还有一个红点?如果有,去掉。」
① 首页日程区块加「+ 新建」(FbHomePage / Widgets.FbSectionTitle)
- FbSectionTitle 扩两个可选参数 addText / onAdd,带默认值 ⇒ 老调用点一行不改
- 按需懒拉 /calendar/books,缓存进 calBooks,同一会话只拉一次
- todayIso() 用本地年月日拼,**不用 toISOString**(UTC 会让早 8 点前算成昨天)
② 时间红线两端统一成「一根满宽线、无端点装饰、无行首文字」(FbDayTimeline)
- 老写法 `Row { Text(时间) width(34); 线; 圆点 }` ⇒ 行首 34vp 把线顶掉一块
(与网页端 .ag-now「双重缩进」同一类病),行尾 6x6 圆点就是用户问的红点
- 改成满高 Column + Blank 撑高 + 满宽 2px 线,与卡片端同一写法
③ 🔴 真机实测发现的两处可见性问题(FbEventEditSheet)
- 「加入哪本日历」原来排在「提醒」之后 ⇒ 表单高于卡片(maxHeight 86%),
它被推到滚动区下方,首屏只看到被底边切掉半行的标题(实测 bounds 高 7px)。
它是必选项(没选就「请选一本日历」存不上)⇒ 挪到「全天」之后、日期时间之前。
- 错误提示原来在滚动区**内部最底部** ⇒ 用户在顶部点「创建」时提示在几百 px
之下看不见;就算滚到底也被 Scroll 底边切半行。现象是「点了创建什么都没发生」。
⇒ 挪到滚动区外面、按钮区上方(实测:Scroll 底 1953,提示 1984~2024,按钮 2074)。
真机验收(设备 5NC0225B27004718,线上 family.yangyq.net):
- 静态守卫 1112/0;BUILD SUCCESSFUL;install bundle successfully
- 「+ 新建」bounds [868,931][1018,1045],点击真的弹出「新建日程」
- 诊断确认 books=15 canWrite=6(数据层完全正常,之前的「选不了日历本」是可见性问题)
- 日历本挪位后首屏可见:标题高 40px(原 7px),10 本 chip 从 838 排到 1358
- 错误提示挪位后不滚动即可见:命中「日程得有个标题」
- **端到端建卡成功**:线上库确认 id=2411 cal=5 20:00~21:00,首页 1 条→2 条;
测试数据已按 id 精确删除(remaining_test_rows=0),重启后恢复 1 条
This commit is contained in:
@@ -148,6 +148,25 @@ export struct FbEmptyBox {
|
||||
export struct FbSectionTitle {
|
||||
@Param title: string = '';
|
||||
@Param extra: string = '';
|
||||
/**
|
||||
* 🔴 v84(用户 2026-10-23):「日程,没有新建日程按钮,名册,也没有新增成员
|
||||
* 这个按钮。……首页上的其他卡片也应该有这些基本功能。」
|
||||
*
|
||||
* `addText` 非空 ⇒ 在 extra 右边给一颗**小号文字按钮**(空 = 不画,行为与原来完全一致)。
|
||||
*
|
||||
* ⚠️ 为什么是"可选参数 + 默认空"而不是新加一个组件:
|
||||
* 本组件被首页 4 个区块、日程页、任务页等多处引用,
|
||||
* 改签名会波及所有调用点;`@Param` 带默认值则**老调用点一行都不用改**。
|
||||
* ⚠️ 为什么按钮文案用文字而不是 `+` 图标:
|
||||
* 首页区块标题这一行只有 20vp 高,放图标按钮手指点不准(实测点击热区
|
||||
* 会小于 40vp);文字按钮横向量足,且与网页端 `datatable` 的「新增」观感一致。
|
||||
* ⚠️ 点击热区用 `padding` 撑到 **44vp 高**(不是 fontTiny 那么点大)——
|
||||
* `hitTestBehavior` 默认是 `Default`,padding 区**算在热区内**。
|
||||
*/
|
||||
@Param addText: string = '';
|
||||
/** 点「新增」;`addText` 为空时永不触发 */
|
||||
@Event onAdd: () => void = (): void => {
|
||||
};
|
||||
|
||||
build() {
|
||||
Row() {
|
||||
@@ -162,9 +181,27 @@ export struct FbSectionTitle {
|
||||
.fontSize(FbMetric.fontTiny)
|
||||
.fontColor(FbColors.faint)
|
||||
}
|
||||
if (this.addText.length > 0) {
|
||||
/* extra 存在时用 6vp 间距隔开;extra 为空时靠 Blank 顶到右边 */
|
||||
if (this.extra.length === 0) {
|
||||
Blank()
|
||||
}
|
||||
Text(this.addText)
|
||||
.fontSize(FbMetric.fontTiny)
|
||||
/* ⚠️ 用 `FbColors.brand`(品牌砖红),不是 `accent` ——
|
||||
`FbColors` 里**没有** `accent` 这个字段(编译会报
|
||||
"Property 'accent' does not exist")。 */
|
||||
.fontColor(FbColors.brand)
|
||||
.fontWeight(FontWeight.Medium)
|
||||
.padding({ left: 10, right: 2, top: 12, bottom: 12 })
|
||||
.onClick((): void => {
|
||||
this.onAdd();
|
||||
})
|
||||
}
|
||||
}
|
||||
.width('100%')
|
||||
.padding({ left: 4, right: 4, top: 12, bottom: 8 })
|
||||
.alignItems(VerticalAlign.Center)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user