Files
nexus/Project/fonrey/UI_DESIGN/房源管理/新增房源_UI.md
2026-04-28 16:39:52 +08:00

199 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 新增房源 UI 设计文档
> **版本**v1.0 · **日期**2026-04-28
> **依赖规范**`UI_SYSTEM/UI_SYSTEM.md v1.2`、`UI_SYSTEM/UI_SYSTEM文档要求.md`
> **PRD 来源**`PRD/房源管理/房源管理模块PRD.md` §5.3(新增房源)+ §5.3.1 / §5.3.2(类型差异)
> **TASK 来源**`PRD/TASK.md` · `US-PROPERTY-001`
> **数据模型来源**`DATA_MODEL/DATA_MODEL_PROPERTY.md`
---
## 1. 模块概述
### 1.1 设计目标
本任务对应 `UI_设计任务总表.md` 任务 02P0-A`US-PROPERTY-001`
- 支持经纪人录入二手房源核心信息,并完成必填校验
- 以「新增住宅」为 P0 主链路
- 同页支持切换房源类型并展示差异字段(便于评审与后续迭代)
- 保存成功后给出“保存成功”反馈并进入详情页(静态原型中为模拟跳转)
### 1.2 页面清单
| 页面 | 文件 | 优先级 | 说明 |
|---|---|---|---|
| 新增房源页 | `UI_DESIGN/新增房源_UI.html` | P0 🔴 | 主表单页,含类型切换、锚点导航、校验与保存反馈 |
---
## 2. 信息架构与布局
### 2.1 页面骨架
```
Top Bar固定 56px高优先主导航
├─ 左侧品牌区Fonrey
├─ 中部主导航(工作台/房源/客源/营销/交易/数据/人事/系统)
└─ 右侧消息+用户信息
Sidebar固定左侧 240px位于 Top Bar 下方)
└─ 房源管理二级导航(全部房源/我的房源/公海池/成交房源/已删房源)
Main Contentml-60 + pt-[72px]
├─ 页面头卡(面包屑 + 页面标题 + Theme Toggle + 返回列表)
├─ 房源类型选择器(住宅/别墅/商住/商铺/写字楼/其他)
├─ 表单锚点导航(房源核心信息 / 业主联系人 / 基础信息 / 交易信息 / 相关方)
├─ 五个纵向区块卡片(按锚点顺序)
└─ 底部操作条(取消 / 保存并继续新增 / 保存)
```
### 2.2 设计说明
- 页面壳层**对齐 `UI_DESIGN/新增客源_UI.html`**:同款 top bar + left sidebar + content 区域栅格
- 表单采用“分区块竖向布局 + 顶部锚点”方案,对齐 PRD §5.3
- 锚点导航 `sticky`,滚动时高亮当前区块
- 必填未填时:字段红框 + 错误文案 + 自动滚动到首个错误字段
---
## 3. 字段设计(通用)
## 3.1 房源核心信息
| 字段 | 控件 | 必填 | 规则 / 说明 | 数据模型映射 |
|---|---|---|---|---|
| 状态 | Radio | 是 | 出售 / 出租 / 租售 / 暂缓 | `properties.status` |
| 房源属性 | Radio | 是 | 公盘 / 私盘 | `properties.attribute` |
| 用途 | Radio | 否 | 选项随房源类型变化 | `properties.usage_type` |
| 小区名称 | 搜索输入 | 是 | 支持联想,原型中为文本输入 | `properties.complex_id`(落地后) |
| 户室号 | 3 段输入 | 否 | 栋/幢/弄/胡同 + 单元/号 + 门牌/室号 | `block_no/unit_no/room_no` |
| 所在楼层 | 数字输入×2 | 是 | 当前楼层 ≤ 总楼层 | `floor/total_floors` |
| 户型 | 室厅卫厨阳台 | 条件必填 | 商铺/写字楼不显示 | `bedroom_count...balcony_count` |
| 建筑面积 | 数字输入 | 是 | 单位 m² | `area` |
| 售价 | 数字输入 | 条件必填 | 状态含出售/租售时显示 | `sale_price` |
| 租价 | 数字输入 | 条件必填 | 状态含出租/租售时显示 | `rent_price` |
| 开间 | 数字输入 | 条件必填 | 仅商铺显示,单位米 | `shop_frontage` |
| 进深 | 数字输入 | 条件必填 | 仅商铺显示,单位米 | `shop_depth` |
| 层高 | 数字输入 | 条件必填 | 仅商铺显示,单位米 | `shop_height` |
| 位置 | Radio | 条件必填 | 仅商铺:临街/商场/小区/底商/商业综合体 | `shop_location` |
## 3.2 业主/联系人
| 字段 | 控件 | 必填 | 规则 | 数据模型映射 |
|---|---|---|---|---|
| 姓名 | Input | 是 | 联系人1必填 | `property_contacts.name` |
| 性别 | Radio | 是 | 先生 / 女士,默认先生 | `property_contacts.gender` |
| 身份 | Select | 是 | 默认业主 | `property_contacts.identity` |
| 电话1 | Input | 否 | 手机/座机格式提示 | `phone_enc/phone_hash`(后端加密) |
| 电话2 | Input | 否 | 备用号码 | `phone2_enc/phone2_hash` |
交互:支持“+ 添加联系人”,第 1 个联系人不可删除。
## 3.3 基础信息
| 字段 | 控件 | 必填 | 规则 | 数据模型映射 |
|---|---|---|---|---|
| 朝向 | Radio | 是 | 10个枚举值 | `properties.orientation` |
| 装修 | Radio | 是 | 毛坯~豪装 | `properties.decoration` |
## 3.4 交易信息
| 字段 | 控件 | 必填 | 规则 | 数据模型映射 |
|---|---|---|---|---|
| 房本年限 | 双下拉 | 是(显示时) | 左侧年限 + 右侧补充 | `ownership_years / ownership_years_detail` |
显示规则:
- 住宅 / 别墅 / 其他:显示完整交易信息入口(本版先落地房本年限)
- 商住:仅显示房本年限
- 商铺 / 写字楼:不显示该区块
## 3.5 相关方
| 字段 | 控件 | 必填 | 规则 | 数据模型映射 |
|---|---|---|---|---|
| 首录方 | 只读输入 | 自动 | 默认当前登录人 | `first_recorder_id` |
| 号码方 | 员工选择 | 是 | 默认当前登录人,可清除重选 | `number_holder_id` |
| 出售方 | 员工选择 | 是 | 默认当前登录人,可清除重选 | `seller_agent_id` |
---
## 4. 房源类型差异(对齐 PRD §5.3.1
| 类型 | 区块结构 | 与住宅差异 |
|---|---|---|
| 住宅P0 | 5区块完整 | 用途:普通住宅/花园洋房 |
| 别墅P1 | 5区块完整 | 用途:联排/独栋/双拼/叠加 |
| 商住P2 | 5区块 | 用途字段保留但无选项;交易信息仅房本年限 |
| 商铺P2 | 4区块无交易信息 | 无户型;新增开间/进深/层高/位置 |
| 写字楼P2 | 4区块无交易信息 | 无户型;其余与住宅主干一致 |
| 其他P2 | 5区块完整 | 用途为10项杂类 |
> 说明:根据 PRDP2 类型在 v1 为“即将上线”。原型保留展示与交互,提交时给出“即将上线”提示,避免与开发范围冲突。
---
## 5. 关键交互与状态
## 5.1 联动规则
1. **状态-价格联动**
- 出售:仅显示售价
- 出租:仅显示租价
- 租售:售价+租价均显示
- 暂缓:隐藏售价/租价并给出提示文案
2. **类型-字段联动**
- 商铺/写字楼:隐藏户型
- 商铺:显示开间/进深/层高/位置
- 商铺/写字楼:隐藏交易信息
3. **校验失败定位**
- 点击保存后,自动滚动到首个错误字段
- 字段红框 + 错误文案
## 5.2 页面状态
| 状态 | 触发 | 反馈 |
|---|---|---|
| 默认 | 首次进入 | 住宅类型 + 空白表单 |
| 编辑中 | 任意字段修改 | 页面 `dirty` 标记 |
| 保存中 | 点击保存 | 按钮 loading + 禁用 |
| 保存成功 | 校验通过 | Success Toast保存成功正在跳转 |
| 保存失败 | 校验不通过 | 错误提示 + 自动定位 |
| 类型未开放 | 提交 P2 类型 | Warning Toast该类型即将上线 |
## 5.3 离开确认
- 页面有未保存更改时,离开触发浏览器确认
- 对齐 PRD“离开页面需提示是否放弃填写内容”
---
## 6. 主题与可访问性
## 6.1 主题(本任务新增)
页面内置 Theme Toggle`Light / Dark / System`
- 存储键:`fonrey_theme`
- `system` 跟随 `prefers-color-scheme`
- 颜色通过 CSS 变量驱动,避免硬编码
## 6.2 可访问性
- 所有输入项均有可见 Label
- 错误提示与字段 `aria-describedby` 关联
- 锚点导航和按钮均支持键盘焦点态
- 颜色之外辅以文字提示(如必填、错误、状态文案)
---
## 7. 实现与评审清单
- [x] 产出 `UI_DESIGN/房源管理/新增房源_UI.md`
- [x] 产出 `UI_DESIGN/新增房源_UI.html`
- [x] 覆盖 `US-PROPERTY-001` 的主流程与验收关键点
- [x] 包含 Light / Dark / System 主题切换
- [ ] 待你评审后按反馈迭代(先改 HTML再回写本 UI 文档)