# 房源列表 UI 设计文档 > **版本**:v1.0 · **日期**:2026-04-26 > **依赖规范**:UI_SYSTEM.md v1.2 · 组件规范设计.md v1.0 > **PRD 来源**:`Project/fonrey/PRD/房源管理/房源管理模块PRD.md` §5.1 房源列表 > **优先级**:P0 功能在本文档中用 🔴 标注,P1 用 🟡,P2 用 ⚫ --- ## 目录 1. [模块概述](#1-模块概述) - 1.1 功能范围 - 1.2 页面清单 - 1.3 用户角色与权限差异 2. [页面设计规范](#2-页面设计规范) - 2.1 房源列表主页 3. [Data Table 规范](#3-data-table-规范) - 3.1 列定义 - 3.2 列状态变体 - 3.3 操作列 - 3.4 表格交互状态 4. [弹窗设计规范(列表页)](#4-弹窗设计规范列表页) - 4.1 自定义列弹窗 5. [交互状态规范](#5-交互状态规范) - 5.1 房源状态机 - 5.2 权限控制矩阵 - 5.3 HTMX 请求规范 6. [关键数据字段说明](#6-关键数据字段说明) 7. [竞品截图对应关系](#7-竞品截图对应关系) 8. [实现优先级与工期估算](#8-实现优先级与工期估算) 9. [开放问题(待决策)](#9-开放问题待决策) --- ## 1. 模块概述 ### 1.1 功能范围 **P0 功能(MVP 必须实现)🔴** - 房源列表展示(出售 / 出租 / 未挂牌 / 成交房源 / 全部房源 五个一级 Tab) - 关键词搜索(房源编号、小区/学校名称、地址、业主主姓名、电话、钥匙编号等) - 楼栋 / 单元 / 房号独立精确输入 - 多维度组合筛选(范围、区域、价格、面积、户型、楼层、标签、筛选、维护) - 列表数据展示(含交易类型标签、状态 Badge、价格趋势箭头) - 批量操作(批量收藏、取消收藏、设置保护房、修改相关方、删除) - 分页与每页条数控制(每页 20 条,可跳页) - 新增房源主 CTA 按钮 **P1 功能(第一迭代)🟡** - 已存搜索条件保存与快速调用 - 导出当前筛选结果(Excel) - 自定义列表显示字段 - 智能排序(系统推荐) - 海报视图切换 - 关注小区配置提示 - 重复房源检测 - 疑似问题号码房源查询 **P2 功能(路线图)⚫** - 地图找房视图 - 全部商铺列表 Tab - 全部写字楼列表 Tab ### 1.2 页面清单 | 页面名称 | URL 模式建议 | 优先级 | 对应 PRD 章节 | |---|---|---|---| | 房源列表(出售) | `/properties/?tab=for_sale` | P0 🔴 | §5.1, Story 2 | | 房源列表(出租) | `/properties/?tab=for_rent` | P0 🔴 | §5.1, Story 2 | | 房源列表(未挂牌) | `/properties/?tab=unlisted` | P0 🔴 | §5.1, Story 2 | | 房源列表(成交房源) | `/properties/?tab=sold` | P0 🔴 | §5.1, Story 2 | | 房源列表(全部房源) | `/properties/` | P0 🔴 | §5.1, Story 2 | ### 1.3 用户角色与权限差异 | 差异点 | 经纪人 | 店长 | 管理员 | |---|---|---|---| | 默认数据范围 | 仅自己名下(`seller_agent_id = me`) | 本门店全部(`org_unit_id IN my_stores`) | 全司所有 | | 「与我相关」快捷筛选 | 可用(默认可能已激活) | 可用 | 可用 | | 「我部门相关」快捷筛选 | 仅限自己所属部门 | 本门店 | 全司 | | 批量删除 | 仅限自己名下房源 | 本门店房源 | 所有房源 | | 修改相关方 | 不可操作他人房源 | 本门店范围 | 所有 | | 重复房源检测链接 | 可见 | 可见 | 可见 | | 「+ 新增房源」按钮 | 可见 | 可见 | 可见 | | 导出按钮 | 仅自己数据 | 本门店数据 | 全量 | | 业主电话 | 打码显示 | 打码显示(可申请查看) | 明文 | --- ## 2. 页面设计规范 ### 2.1 房源列表主页(P0 🔴) #### 2.1.1 页面概述 - **URL**:`/properties/`(query params:`tab`, `status`, `grade`, `page`, `q`, `sort`, `order` 等) - **访问入口**:顶部全局导航栏「房源」菜单 → 默认进入全部房源列表 - **页面职责**:展示经纪人名下(或门店/全司)的房源列表,支持多维度搜索筛选、批量操作、状态快览 - **竞品参考截图**: - `Project/fonrey/screenshots/房源/房源列表.png`(出售 Tab 视图,主参考) - `Project/fonrey/screenshots/房源/全部房源.png`(全部房源 Tab 视图) #### 2.1.2 布局结构 ``` ┌──────────────────────────────────────────────────────────────────────┐ │ 一级 Tab 导航(出售 / 出租 / 未挂牌 / 成交房源 / 全部房源) │ │ 右侧:更多 ▾ | 重复房源 | 疑似问题号码房源 | + 新增房源 按钮 │ ├──────────────────────────────────────────────────────────────────────┤ │ 搜索区域(关键词搜索 + 楼栋/单元/房号精确输入 + 地图找房入口) │ │ 关注小区配置提示条(可关闭) │ ├──────────────────────────────────────────────────────────────────────┤ │ 快捷筛选行(范围:最新挂牌 / 最新降价 / 与我相关 / 我部门相关 / 收藏房源 / 超时未跟进)│ │ 区域筛选行(区域按钮组 + 地铁选项) │ │ 价格筛选行(售价/单价 + 预设区间 + 自定义区间) │ │ 面积筛选行(预设区间 + 自定义区间) │ │ 房型筛选行(室数 + 卫生间数量) │ │ 楼层筛选行(低/中/高/顶/底 + 自定义区间) │ │ 标签筛选行(速销/独家/有钥匙/电梯等) │ │ 筛选行(相关方/维护人/房屋现状/状态属性/装修朝向等下拉) │ │ 维护行(发布/实勘/核验/跟进带看/钥匙委托/维护完成度) │ │ 底部操作行(查询 / 重置 / 已存搜索条件 ▾ / 收起更多 ∧) │ ├──────────────────────────────────────────────────────────────────────┤ │ 工具栏(房源海报 | 批量操作按钮 | 更多 ▾ | 共N条 | 导出 | 自定义列表 | 智能排序)│ ├──────────────────────────────────────────────────────────────────────┤ │ 数据表格主体 │ ├──────────────────────────────────────────────────────────────────────┤ │ 分页栏(共N条 | 上一页 / 页码 / 下一页 / 每页20条 / 跳页) │ └──────────────────────────────────────────────────────────────────────┘ ``` 整体页面背景:`bg-neutral-50` 主内容区外层容器:`max-w-[1600px] mx-auto px-6 py-4` 各区块背景:`bg-white rounded-lg border border-neutral-200` #### 2.1.3 区域详细规范 --- **[一级 Tab 导航区]** | 属性 | 说明 | |---|---| | 组件 | Tab Navigation(§10 Tab Navigation),underline 变体 | | 位置 | 页面最顶部,紧贴全局顶导下方,无额外卡片容器 | | Tab 项 | 出售(含数量 Badge)/ 出租(含数量 Badge)/ 未挂牌 / 成交房源 / 全部房源 | | 激活样式 | `border-b-2 border-primary-600 text-primary-600 font-medium` | | 非激活样式 | `text-neutral-500 hover:text-neutral-700` | | 右侧内容 | 「更多 ▾」下拉菜单 + 「重复房源」链接 + 「疑似问题号码房源」链接 + 「+ 新增房源」主按钮 | **右侧操作区(Tab 栏右侧,绝对定位)**: ```html
``` > **截图差异说明**:竞品截图中「+ 新增房源」为橙色按钮,Fonrey 使用主色 Teal(`bg-primary-600`),品牌差异,无需对齐竞品色。 --- **[搜索区域]** | 属性 | 说明 | |---|---| | 组件 | 搜索输入框组合 | | 容器 | `bg-white rounded-lg border border-neutral-200 px-4 py-3 mt-3` | | 关键词搜索框 | 宽约 `flex-1 max-w-lg`,占位符「房源编号/小区/学校名称/地址/业主姓名/电话/钥匙编号等」 | | 楼栋输入框 | 标签「楼栋」+ 独立 Input,`w-24`,精确匹配 `block_no` | | 单元输入框 | 标签「单元」+ 独立 Input,`w-24`,精确匹配 `unit_no` | | 房号输入框 | 标签「房号」+ 独立 Input + Heroicon `information-circle` 提示,`w-24`,精确匹配 `room_no` | | 搜索按钮 | `bg-primary-600 text-white` Heroicon `magnifying-glass`,`w-9 h-9 rounded-lg` | | 地图找房(P2 ⚫)| 右侧浅色按钮「🗺 地图找房 →」,P2 阶段置灰不可点击 | ```html ``` --- **[筛选区 - 详细规范]** 筛选区按行组织,每行格式:`[标签(w-8)] [选项组]`,标签使用 `text-xs text-neutral-400 whitespace-nowrap w-8`。 **范围筛选行**: | 筛选项 | 类型 | 说明 | |---|---|---| | 最新挂牌 | Checkbox | 筛选最近挂牌房源(`listed_at` 降序默认) | | 最新降价 | Checkbox | 最近有调价记录且降价 | | 与我相关 | Checkbox + ⓘ | `seller_agent_id = me OR first_recorder_id = me` | | 我部门相关 | Checkbox + ⓘ | 本门店员工相关房源 | | 收藏房源 | 下拉 ▾ | 展开选择收藏集合(来自 `property_favorites`) | | 超时未跟进房源 | Checkbox | `last_followed_at < NOW() - 7d`(具体阈值待产品确认) | ```html