Files
smart_grid_iot/.trae/specs/adjust-customer-management-ui/spec.md
T
andyesfly c60caa4770 refactor(客户管理): 完成客户管理模块UI与架构全面调整
1.  调整菜单与路由:重命名客户信息/客户账号为客户档案管理/客户小程序授权管理,移除客户建筑/房间路由,新增空间拓扑路由
2.  后端新增客户统计接口`/customers/stats`,前端同步API与类型定义
3.  重构客户档案与小程序授权页面,仅保留数据库支持字段,移除无支撑功能
4.  新增空间拓扑页面,合并建筑与房间管理为树形拓扑视图
5.  更新数据库种子数据与权限配置,清理废弃菜单与绑定关系
6.  补充UI设计文档与规范说明
2026-09-09 17:31:24 +08:00

77 lines
6.5 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 调整 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 改用数据库可聚合统计。