From 139fa19f90b8e8cae826fd93a38891f4ddd539df Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Mon, 21 Sep 2026 02:34:44 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B7=A8=E7=AB=AF:=20=E8=BD=AC=E5=8F=91?= =?UTF-8?q?=E5=85=A5=E5=8F=A3=E7=A7=BB=E5=88=B0=E5=A4=B4=E9=83=A8=E5=8A=A8?= =?UTF-8?q?=E4=BD=9C=E8=A1=8C=E3=80=81=E5=8F=B3=E4=B8=8B=E5=8F=AA=E7=95=99?= =?UTF-8?q?=E5=9B=9E=E5=A4=8D=E7=90=83=EF=BC=88=E6=88=91=E5=A4=9A=E6=91=86?= =?UTF-8?q?=E4=BA=86=E4=B8=80=E4=B8=AA=E7=90=83=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 承接上一条。用户之前说「还有其他行为都要一一对齐,例如邮件展示页面」, 我当时补了头部的「标记已读 / 对话树」,却把**转发**做成了右下角的第二个球。 照 WebUI 核对(`MailView.tsx:520-544` 与 `:994`): · 头部动作行是**三个**:标记已读 → 对话树 → **转发** (`ForwardIcon` + 文字,`text-gray-500` = 导航样式) · 右下角只有**一个**球:`reply-fab`,点开才是回复框。**转发从来不是球。** 多出来那个球是我自己发明的,两个问题: ① 它没有任何对应物,纯属"看着缺就补一个"; ② 转发在 WebUI 是**导航**(灰、与对话树并列),球是**主操作** (蓝、抢注意力)—— 把导航做成主操作,页面里就有了两个同等重量的动作, 看不出主次。 改动:头部动作行补上「转发」(顺序与样式逐项对齐 WebUI),删掉右下角那个球。 设备已验:头部一行是「对话树 · 转发」(同 y),右下只剩一个蓝色回复球。 `files=33 checks=530 pass=530 fail=0`,`mutants=52 ran=52 skipped=0`,`baseline=7/7✓`。 --- .../src/main/ets/pages/MailDetailPage.ets | 37 +++++++++++-------- 1 file changed, 21 insertions(+), 16 deletions(-) diff --git a/client/harmony/entry/src/main/ets/pages/MailDetailPage.ets b/client/harmony/entry/src/main/ets/pages/MailDetailPage.ets index bbf45d3..b31adea 100644 --- a/client/harmony/entry/src/main/ets/pages/MailDetailPage.ets +++ b/client/harmony/entry/src/main/ets/pages/MailDetailPage.ets @@ -807,6 +807,26 @@ export struct MailDetailView { Text('对话树').fontSize(12).fontColor(Theme.textMuted) } .onClick(() => { this.openThread(); }) + /* + * ★★ 2026-09-20 补:**转发在这里**,不在右下角的球上。 + * + * WebUI `MailView.tsx:534-541` 的头部动作行是三个: + * 标记已读 → 对话树 → **转发**(`ForwardIcon` + 文字,灰=导航) + * 而右下角只有一个球(`reply-fab`,`MailView.tsx:994`), + * 点开才是回复框。**转发从来不是球**。 + * + * 我原来在右下角摆了两个球(转发 + 回复),那是自己发明的: + * · 多出来那个球没有任何对应物,纯属"看着缺就补一个"; + * · 转发在 WebUI 是"**导航**"(灰、跟对话树并列), + * 球是"**主操作**"(蓝、抢注意力)—— 把导航做成主操作, + * 页面里就有了两个同等重量的动作,看不出主次。 + * 现在与 WebUI 同构:头部一个转发入口,右下只剩回复球。 + */ + Row({ space: 4 }) { + AmIcon({ iconName: 'forward', iconSize: 14, iconColor: Theme.textMuted }) + Text('转发').fontSize(12).fontColor(Theme.textMuted) + } + .onClick(() => { this.showReplyBox = false; this.showForwardBox = true; }) } .width('100%') .margin({ bottom: 6 }) @@ -1038,21 +1058,6 @@ export struct MailDetailView { * 会让人分不出哪个更主要。 */ Row({ space: 12 }) { - Button() { - AmIcon({ iconName: 'forward', iconSize: 20, iconColor: Theme.accentFor() }) - } - .width(48).height(48) - .borderRadius(24) - .backgroundColor(Theme.surfaceMuted) - .onClick(() => { - /* - * 打开转发框时把回复框关掉:两者都是底部弹层, - * 同时开着会叠在一起(WebUI 也用同一份 `forwarding` 状态互斥)。 - */ - this.showReplyBox = false; - this.showForwardBox = true; - }) - Button() { AmIcon({ iconName: 'chatBubble', iconSize: 24, iconColor: Theme.accentFg }) } @@ -1062,7 +1067,7 @@ export struct MailDetailView { .onClick(() => { this.showForwardBox = false; this.showReplyBox = true; }) } .alignItems(VerticalAlign.Bottom) - /* 让出底部悬浮条;右边距与原来的回复球一致(球没变位置,只是多了左边一个) */ + /* 让出底部悬浮条(右下只剩这一个回复球,与 WebUI `reply-fab` 同位) */ .margin({ right: 16, bottom: this.navReserve + 16 }) } .width('100%').layoutWeight(1)