# 客户管理 UI 调整 Spec ## Why 现有客户管理的功能菜单与界面与最新 UI 设计(`系统设计/UI/客户档案管理`、`客户档案编辑`、`客户档案详情`、`客户小程序授权管理`、`空间拓扑与用电架构`)不一致。需要按 UI 设计调整菜单结构与页面形态,同时以架构设计(`系统设计/xintong-architecture-full.html`)和数据库设计(`系统设计/db_design.html`)为功能边界——UI 中存在但数据库/架构中不存在的功能与字段一律舍弃,以数据库为准。 ## What Changes - **菜单结构调整**(`database/db_seed.sql` + `client/src/router/index.ts`): - `客户信息` → 重命名 `客户档案管理`(12) - `客户账号` → 重命名 `客户小程序授权管理`(14) - 新增 `空间拓扑与用电架构` 菜单(新 id 27,`/customer/topology`) - 移除 `客户建筑`(25)、`客户房间`(26)两个菜单及对应路由 - 保留 `客户部门`(13)、`客户拜访`(24)菜单与路由不变 - **客户档案管理页**(`client/src/views/customer/info/index.vue` 重构): - 按 UI 风格重排:顶部 KPI 统计卡 + 搜索栏 + 客户档案表格 - 仅使用数据库 `customer` 字段(客户编号/名称、省市区、地址、联系人/电话、邮编、传真、客户级别、状态、负责业务员) - **舍弃** UI 中数据库不存在的字段/能力:统一社会信用代码、法定代表人、行业属性、托管服务状态、ICC 设备状态、大华 ICC 同步、营业执照智能识别、导入意向客户、托管周期与费用等 - 保留 KPI 卡(基于数据库可聚合统计:客户总数、按状态/级别计数),需新增轻量后端 `/customers/stats` - **客户小程序授权管理页**(`client/src/views/customer/account/index.vue` 重构): - 重命名为「客户小程序授权管理」,UI 标题/说明改为「定向邀请准入制」风格 - 仅使用数据库 `customer_account` 字段:所属客户、登录手机号、微信绑定状态(wx_openid 是否存在)、状态、最近登录时间、创建时间 - **舍弃** UI 中无数据库支撑的邀请凭证/二维码/批量短信/发起邀请等能力 - 保留新增/编辑(含重置默认密码)、删除、微信解绑等基于现有 API 的操作 - **空间拓扑与用电架构页**(新增 `client/src/views/customer/topology/index.vue`): - 替换原「客户建筑」「客户房间」两个列表菜单,合并为单一空间拓扑页 - 树形拓扑:客户 → 建筑 → 房间 三层渲染(基于 `customer`、`customer_building`、`customer_room`) - 通过「新增/编辑空间节点」弹窗维护建筑与房间数据(复用现有 building/room CRUD API) - **舍弃** UI 中不存在的节点类型(变电所/配电室、监测回路、ICC 边缘网关)与相关指标 - 后端 API 基本不变,仅新增一个客户统计端点 `/customers/stats` ## Impact - 受影响对称菜单/权限:`sys_menu` 中客户管理子菜单(build/seed 变更) - 受影响前端:`client/src/router/index.ts`、`client/src/views/customer/info/index.vue`、`client/src/views/customer/account/index.vue`、新增 `client/src/views/customer/topology/index.vue`、`client/src/api/customer.ts`(新增 stats)、新增 `client/src/api/customerTopology.ts` - 受影响后端:`server/src/` 客户 controller 新增 `/customers/stats` - 不受影响:`客户部门`(customer/department)、`客户拜访`(customer/visit)页面与后端 ## ADDED Requirements ### Requirement: 客户统计端点 系统 SHALL 新增 `GET /customers/stats`,返回客户总数及按状态、按级别的计数,用于客户档案管理页顶部 KPI 卡。 #### Scenario: 成功获取统计 - **WHEN** 前端加载客户档案管理页 - **THEN** 后端返回 `{ total, statusCounts: {1/2/3/4: n}, levelCounts: {...} }`,仅统计当前登录人可见的客户(销售员按 salesman_id 过滤) ### Requirement: 空间拓扑页 系统 SHALL 提供客户→建筑→房间三层树形拓扑视图,并支持通过节点弹窗对建筑、房间进行新增/编辑/删除。 #### Scenario: 渲染拓扑 - **WHEN** 用户在客户管理选择一个客户 - **THEN** 页面展示该客户下建筑节点(含 building_name、purpose、floor_count),展开建筑展示其房间节点(含 room_code、room_name、floor_no、room_purpose) #### Scenario: 维护空间节点 - **WHEN** 用户点击「新增空间节点/新增子节点」或在节点右键操作 - **THEN** 弹出创建/编辑弹窗,提交后调用现有 building/room 创建、编辑、删除 API,并刷新拓扑 ## MODIFIED Requirements ### Requirement: 客户档案管理菜单与页面 菜单名由「客户信息」改为「客户档案管理」;页面按 UI 排版重构(KPI 卡 + 搜索 + 表格),字段仅保留数据库 `customer` 表已有字段。 #### Scenario: 列表展示 - **WHEN** 用户进入客户档案管理页 - **THEN** 展示基于数据库字段的 KPI 统计卡与客户档案表格,表格列包含:客户编号、客户名称、省市区、地址、联系人、联系电话、客户级别、状态、负责业务员、操作 ### Requirement: 小程序授权管理菜单与页面 菜单名由「客户账号」改为「客户小程序授权管理」;页面按 UI 标题风格调整,字段仅使用数据库 `customer_account` 字段,去掉无数据库支撑的邀请类能力。 #### Scenario: 列表与账号维护 - **WHEN** 用户进入客户小程序授权管理页 - **THEN** 展示账号列表(手机号、所属客户、微信绑定状态、状态、最近登录时间)并可新增/编辑/删除/重置密码/解绑微信 ## REMOVED Requirements ### Requirement: 客户建筑、客户房间独立菜单页 **Reason**: UI 设计将建筑/房间合并进「空间拓扑与用电架构」单一页面;数据库支持该合并(customer_building、customer_room)。 **Migration**: 移除 `sys_menu` 中 25、26 菜单与前端对应路由;建筑/房间的增删改改由空间拓扑页节点弹窗承担,复用现有 building/room API。 ### Requirement: UI 中存在但数据库/架构不支持的功能与字段 **Reason**: 按用户规则「若 UI 中存在架构和数据库中不存在的功能和字段,以架构和数据库设计为准」。 **Migration**: 舍弃统一社会信用代码、法定代表人、行业属性、托管服务状态、ICC 设备、用电参数、拓扑率、大华 ICC 同步、营业执照导入、邀请凭证/二维码/短信等字段与能力;KPI 改用数据库可聚合统计。