Files
nexus/Project/fonrey/UI_DESIGN/楼盘管理/区域管理_UI.md
2026-04-29 07:08:27 +08:00

182 lines
6.6 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 设计文档
> **任务编号**06P0-B
> **覆盖范围**`US-COMPLEX-003`(管理员维护区域管理:城区/商圈)
> **输出文件**`UI_DESIGN/区域管理_UI.html`
> **设计基线**`UI_SYSTEM/UI_SYSTEM.md`列表页模板、Top Bar + Sidebar 壳层、表格/分页规范)
> **竞品截图参考**
> - `Project/fonrey/screenshots/楼盘管理/区域管理.png`
> - `Project/fonrey/screenshots/楼盘管理/商圈管理.png`
> - `Project/fonrey/screenshots/楼盘管理/编辑商圈.png`
> - `Project/fonrey/screenshots/楼盘管理/查看关联.png`
---
## 1. 目标与范围
### 1.1 页面目标
区域管理页用于运营/数据管理员统一维护“城区-商圈”两级地理字典,并支撑楼盘、房源、客源模块的区域筛选与统计。
核心目标:
1. 在同一业务页面支持“城区管理 / 商圈管理”双子模块切换
2. 支持关键词检索、区域过滤、有无坐标过滤
3. 支持批量操作(合并城区、合并商圈、转移商圈)
4. 支持新增/修改商圈弹窗维护
5. 支持查看商圈关联关系(标准区域映射)
### 1.2 本任务边界
- ✅ 包含:壳层、模块 Tab、子 Tab、筛选区、批量区、表格、分页、弹窗校验、关联关系弹窗
- ✅ 包含:竞品截图中的关键文案与字段结构(城区/商圈/关联关系)
- ⛔ 不包含:真实后端 CRUD、真实关联跳转、真实地图 API、真实权限鉴权
---
## 2. 信息架构
### 2.1 壳层结构(统一后台模板)
- **Top Bar固定 56px**:品牌 + 一级导航 + 用户区
- **Sidebar固定 240px**:房源管理二级导航
- **Main Content`ml-60 pt-[72px]`**
1. 面包屑 + 页面标题
2. 模块 Tab楼盘 / 区域管理 / 学校管理 / 应用标准数据)
3. 区域管理子 Tab城区管理 / 商圈管理)
4. 筛选区 + 批量区 + 列表区 + 分页区
### 2.2 区域管理子模块
#### A. 城区管理
- 筛选:城区名称关键词 + 有无坐标(不限/有坐标/无坐标)
- 列表字段:城区名称 / 商圈数量 / 楼盘数量 / 坐标 / 操作
- 操作:修改、设置坐标、合并城区、新增城区
#### B. 商圈管理
- 筛选:商圈名称关键词 + 区域过滤(标签)+ 有无坐标
- 列表字段:城区名称 / 商圈名称(含“标准”标签)/ 楼盘数量 / 坐标 / 操作
- 操作:修改、查看关联关系、设置坐标、合并商圈、转移商圈、新增商圈
### 2.3 关联关系视图(弹窗承载)
- 触发:商圈列表行内「查看关联关系」
- 筛选:标准区域(下拉)、本地区域(下拉)
- 列表字段:标准城市 / 标准城区 / 标准商圈 / 关联本地商圈 / 本地商圈所属城区 / 操作(变更)
- 支持批量修改按钮(勾选后启用)
---
## 3. 关键交互设计
### 3.1 子 Tab 切换
- 点击「城区管理 / 商圈管理」切换内容区
- 切换后保留当前模块壳层和分页区风格一致
### 3.2 筛选与重置
- 点击「查询」执行前端过滤
- 点击「重置」清空关键词与标签筛选,恢复默认列表
- 坐标筛选支持:不限 / 有坐标 / 无坐标
### 3.3 批量操作启用规则
- 未勾选时:批量按钮禁用态
- 勾选 1 条及以上:批量按钮启用
- 提示区实时显示:`已选本页 N 条`
### 3.4 新增/编辑弹窗
#### 城区弹窗
- 标题:新增城区 / 修改城区
- 字段:
- 城区名称(必填)
- 城区简称(选填)
- 校验:城区名称为空时提示“请输入城区名称”
#### 商圈弹窗
- 标题:新增商圈 / 修改商圈
- 字段:
- 所属城区(必填,下拉)
- 商圈名称(必填,文本)
- 校验:
- 未选城区:`请选择所属城区`
- 未填商圈名称:`请输入商圈名称`
### 3.5 设置坐标弹窗
- 支持城区/商圈两种来源
- 字段:纬度、经度
- 校验:任一为空时提示“请完整填写经纬度”
### 3.6 查看关联关系弹窗
- 保持“查看关联情况”核心信息结构
- 支持顶部筛选 + 列表 + 批量修改占位
- 点击「变更」仅触发原型提示(无真实提交)
---
## 4. 状态矩阵
| 状态 | 触发 | 页面反馈 |
|---|---|---|
| 默认态 | 首次进入页面 | 默认显示“城区管理”,加载城区列表 |
| 子模块切换 | 点击子 Tab | 切换到对应列表和筛选区 |
| 查询态 | 输入关键词并查询 | 列表按条件过滤 |
| 空结果态 | 条件过严 | 表格显示“暂无匹配数据” |
| 勾选态 | 勾选行/全选 | 批量按钮启用,显示已选条数 |
| 弹窗校验失败 | 必填缺失提交 | 字段下方红字错误,弹窗保持打开 |
| 保存成功(原型) | 校验通过提交 | 关闭弹窗 + Toast 成功提示 |
| 主题策略 | 统一后台视觉 | 页面内不包含 Light/Dark/System 切换控件 |
---
## 5. 字段与数据模型映射DATA_MODEL_COMPLEX
| UI 字段 | 数据模型字段 |
|---|---|
| 城区名称 | `districts.name` |
| 城区简称 | `districts.short_name` |
| 所属城市 | `districts.city` |
| 商圈名称 | `business_areas.name` |
| 所属城区 | `business_areas.district_id -> districts.id` |
| 商圈坐标 | `business_areas.latitude` / `business_areas.longitude` |
| 城区坐标(原型占位) | `districts` 扩展坐标字段PRD层业务占位 |
| 商圈数量 | `COUNT(business_areas.id)`(按城区聚合) |
| 楼盘数量 | `COUNT(complexes.id)`(按城区/商圈聚合) |
| 关联本地商圈 | `business_areas.name`(映射结果) |
| 标准城市/城区/商圈 | 标准区域字典(独立映射域,原型以 mock 展示) |
---
## 6. 可访问性与规范
- 表格列头使用 `<th scope="col">`
- 纯图标按钮补充 `aria-label`
- 弹窗支持 `Esc` 关闭
- 错误提示采用“字段下方红字文本”,不只依赖颜色
- 焦点样式统一 `focus-visible:ring-2 focus-visible:ring-primary-600/40`
- 页面保持浅色后台主题,不引入主题切换控件
---
## 7. 验收清单
- [x] 壳层结构Top Bar + Sidebar + Main
- [x] 模块 Tab 与子 Tab 结构完整
- [x] 城区管理筛选/列表/批量/分页完整
- [x] 商圈管理筛选/列表/批量/分页完整
- [x] 商圈编辑弹窗字段与校验符合 PRD Story 10
- [x] 关联关系视图字段与交互符合 PRD Story 11
- [x] 页面内不包含 Light/Dark/System 主题切换控件
- [ ] 控制台 0 报错(待本地预览验证)
---
## 8. 后续衔接
- 本页评审通过后进入任务07组织人事`US-ORG-001~003`
- 区域字典(城区/商圈)将作为房源/客源筛选条件来源,需保持命名与状态一致