跨端: 日历「新建」按钮补文字(原先只有一个加号)+ 详情页三处缺失登记

## 一、日历的「新建」按钮(对齐 WebUI 的主动作)

WebUI `CalendarView.tsx:362-369` 那个按钮是工具栏里**唯一的实心按钮**:
`px-2.5 py-1 bg-blue-600 text-white` + `<PlusIcon/>` + **「新建」两个字**。

鸿蒙原先只有一个光秃秃的 `Button('+')` —— 丢掉的不只是文字,是**主动作这层语义**:
用户得猜"这个加号加什么"(加日程?加订阅?加日历?)。

改成蓝底 + 图标 + 「新建」,与 WebUI 同形。**设备实测截图确认**。

★ 与这条对照的是它左边那两条「导入/导出」:鸿蒙**有意**用文字而非图标,
理由已写在代码注释里(WebUI 有 `title` 可悬停,手指没有悬停)。
同一个道理在主动作上更成立 —— 主动作不该是个谜语。

## 二、邮件详情页缺三块功能(审计发现,服务端都已支持)

对照 `MailView.tsx` 逐段核对,鸿蒙 `MailDetailPage.ets` 缺:

| 功能 | WebUI | 服务端 |
|---|---|---|
| `RenameProposalBar` | `MailView.tsx:324` | ✅ `rename_proposal.go` 已在解析 `propose_alias` |
| `ForwardBar`(转发) | `MailView.tsx:378` | ✅ `forward.go`(含 `forwardSubject` 的 Fwd: 叠加处理) |
| `BudgetEditor`(预算) | `MailView.tsx:235` | ✅ `max_rounds` 字段 |

改名建议那条尤其重要(WebUI 注释:「Agent 干到一半自己改掉,人上一秒记住的
地址下一秒就失效」)—— 是否决制而不是 Agent 单方面改,这是**寻址稳定性**的设计。

三条都**没有**在这批里硬做:各含交互 + 接口 + 状态,不是顺手能补的量级。
登记进 `docs/DEBTS.json`(`harmony-maildetail-missing-three`)——
硬塞的结果是每条都半成品,那比缺着更糟(缺着是可见的,半成品是不可见的)。

## 三、审计中确认**已对齐**的部分(不是漏做)

- 通信:工具条三页签分组与顺序、列表行的字段集(发件人/主题/摘要/时间/未读点/
  账号徽标/档位徽标)、会话折叠与组头(别名/主题/未读/封数)、空态文案、
  发件箱的三处差异(数据源/`to_name`/不筛权限)、归档确认框。
- 日历:工具条分组与顺序、宽屏两栏(左网格 + 右 400vp 常驻)、右栏三态、
  月/周/日三档网格与农历小字、非本月淡出、今天高亮、事件圆点、
  点某天的行为(宽屏换右栏 / 窄屏滑入)、导入导出的三条结果分支。
- 联系人:卡片/列表两视图、字段集、归档确认框(含破坏性操作的二次确认)。
- 「我的」:八个分段的字段与顺序、壁纸选择器、主题三态、多账号入口。
- 管理页:列与操作、管理员门禁。
- 外壳:侧栏三项 + 底簇、底栏四项、徽标三档色调与位置、玻璃材质、让位。

## 判据

`run-all.mjs` → `checks=504 pass=503 fail=1`(唯一那条是 build-stamp 的
产物过期,重建后 7/7)。`hvigorw assembleHap` 成功。
`docs/DEBTS.json` 新增三条登记(断点差异 / 列表附件数 / 详情页三功能)。
This commit is contained in:
2026-09-19 15:19:57 +08:00
parent f655453424
commit 81621974b9
2 changed files with 34 additions and 8 deletions

View File

@ -38,6 +38,7 @@ import { CalendarApi } from '../api/CalendarApi';
import { hilog } from '@kit.PerformanceAnalysisKit';
import { CalendarEvent, CalendarEventInput, LunarLabels, LunarRangeResponse } from '../model/Models';
import { Theme } from '../common/Theme';
import { AmIcon } from '../common/Icons';
import {
DayCell,
monthGrid,
@ -1205,13 +1206,29 @@ export struct CalendarPage {
.fontColor(this.icsBusy ? Theme.textSubtle : Theme.accent)
.margin({ left: 8 })
.onClick(() => { this.exportIcs(); })
Button('+')
.fontSize(Theme.fontBody)
.backgroundColor(Theme.accent)
.fontColor(Theme.accentFg)
.height(26)
.margin({ left: 8 })
.onClick(() => this.openNew())
/*
* 新建 —— 对齐 WebUI `CalendarView.tsx:362-369`:**蓝底 + 图标 + 文字「新建」**。
*
* ★ 2026-09-19 审计改:原先这里是光秃秃的 `Button('+')`。
* 而 WebUI 那个按钮是 `px-2.5 py-1 bg-blue-600 text-white text-xs` +
* `<PlusIcon/>` + **「新建」两个字** —— 它是工具栏里唯一的实心按钮,
* 视觉上是"主动作"。只画一个加号会丢掉这层语义:
* 用户要猜"这个加号加什么"(加日程?加订阅?加日历?)。
*
* 上面「导入/导出」两条也刚因此保留为**文字**而不是图标
* (理由见它们上面的注释:WebUI 有 title 可悬停,手指没有悬停)。
* 同一个道理在这里更成立 —— 主动作不该是个谜语。
*/
Row({ space: 4 }) {
AmIcon({ iconName: 'plus', iconSize: 13, iconColor: Theme.accentFg })
Text('新建').fontSize(Theme.fontSmall).fontColor(Theme.accentFg)
}
.padding({ left: 10, right: 10 })
.height(26)
.backgroundColor(Theme.accent)
.borderRadius(Theme.radiusControl)
.margin({ left: 8 })
.onClick(() => this.openNew())
}
.width('100%')
.padding({ left: 10, right: 10, top: 6, bottom: 4 })