# 区域管理 UI 设计文档 > **任务编号**:06(P0-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. 可访问性与规范 - 表格列头使用 `` - 纯图标按钮补充 `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`) - 区域字典(城区/商圈)将作为房源/客源筛选条件来源,需保持命名与状态一致