端上:#47~#55 打包 —— 行程双轨、动态类型、表单全局规范 (#53)
#48 计划/实际双轨:nodeAction(start/done/cancel),完成即转实际行程, 实际行程不再显示状态;新增 actualStartedAt/actualEndedAt #49 类型/出行方式/车辆 chip 改内部读状态(@Builder 值传参不刷新) #50 类型点击立即变色、出行方式平铺、参与人显示已选头像 #51 节点类型动态加载(原硬编码5种)、地址 onPick 拿详细地址与坐标 #52 标签改主题色 Bold、必填红无星号、编辑行程标题同步 #53 表单两排版式(标签独占一行解决左右对不齐);电影弹层 layoutWeight 修滚动 #54 地址联想框加时间窗抑制(600ms 内不搜)、候选限高 180 含附件回填诊断日志(DIAG-ATTACH/FILL),待真机确认后移除
This commit is contained in:
@@ -320,20 +320,54 @@ export struct FbPersonEditSheet {
|
||||
// 小件
|
||||
// ============================================================
|
||||
|
||||
/** 一个输入行 */
|
||||
/**
|
||||
* 一个输入行(**两排版式**,全局规范 —— 用户 2026-11-05)。
|
||||
*
|
||||
* 🔴 「点击名册里面的"添加",姓名之类的内容全部都按这种形式显示。
|
||||
* 它会按照主题色,加粗大一点显示。**所有地方都需要这样改**。」
|
||||
* 🔴 「为了解决字数原因导致输入框左右来回对不齐的问题,我们全部按两排来显示:
|
||||
* 第一排显示片名…下一行开始是片名的输入框…这样一列下来就行了。」
|
||||
*
|
||||
* ## 规范
|
||||
*
|
||||
* | 项 | 规则 |
|
||||
* |---|---|
|
||||
* | 标签颜色 | **主题色** `this.accent` |
|
||||
* | 标签字重 | **Bold** |
|
||||
* | 标签字号 | `fontSmall`(比正文大一号) |
|
||||
* | 标签位置 | **独占第一排**(不是和输入框同行) |
|
||||
* | 输入框 | 第二排,整宽 |
|
||||
* | 必填 | **红色**,**无星号** |
|
||||
*
|
||||
* ## 为什么两排能解决对齐
|
||||
*
|
||||
* 原来同行时标签宽度由字数决定(「姓名」2 字 vs「我对他的称呼」6 字),
|
||||
* 输入框起点跟着变 ⇒ 整列左右错开。标签独占一行后,
|
||||
* 所有输入框都从同一左边距开始 ⇒ **天然对齐**,与标签字数无关。
|
||||
*
|
||||
* ⚠️ `hint` 参数保留(它是 placeholder),另加 `req` 表示必填。
|
||||
* 原来用 `hint='必填'` 冒充必填标记 —— 那只会在输入框里显示灰字,
|
||||
* 既不是红色也不在标签上,用户看不出哪个字段是必填。
|
||||
*/
|
||||
@Builder
|
||||
field(label: string, value: string, hint: string, onChange: (v: string) => void) {
|
||||
Column({ space: 4 }) {
|
||||
field(label: string, value: string, hint: string, onChange: (v: string) => void,
|
||||
req: boolean = false) {
|
||||
Column({ space: 6 }) {
|
||||
/* 第一排:标签(主题色 / 必填红,加粗,独占一行) */
|
||||
Text(label)
|
||||
.fontSize(FbMetric.fontTiny)
|
||||
.fontColor(FbColors.faint)
|
||||
.fontSize(FbMetric.fontSmall)
|
||||
.fontWeight(FontWeight.Bold)
|
||||
.fontColor(req ? '#C0533F' : this.accent)
|
||||
.width('100%')
|
||||
/* 第二排:输入框(整宽,与标签左边缘对齐) */
|
||||
TextInput({ text: value, placeholder: hint })
|
||||
.placeholderColor(FbColors.faint)
|
||||
.fontSize(FbMetric.fontSmall)
|
||||
.fontColor(FbColors.ink)
|
||||
.backgroundColor(FbColors.inputBg)
|
||||
.borderRadius(FbMetric.radiusS)
|
||||
.height(40)
|
||||
.height(42)
|
||||
.width('100%')
|
||||
.padding({ left: 12, right: 12 })
|
||||
.onChange((v: string): void => {
|
||||
onChange(v);
|
||||
@@ -765,7 +799,7 @@ export struct FbPersonEditSheet {
|
||||
Scroll() {
|
||||
Column({ space: 12 }) {
|
||||
this.section('基本')
|
||||
this.field('姓名', this.fName, '必填', (v: string): void => {
|
||||
this.field('姓名', this.fName, '', (v: string): void => {
|
||||
this.fName = v;
|
||||
})
|
||||
// 🔴 「我怎么称呼他」—— 只有我看得到(视角属性),与姓名分开
|
||||
|
||||
Reference in New Issue
Block a user