dingdanquanliucheng/后台管理系统重构方案.md

278 lines
13 KiB
Markdown
Raw Normal View History

2026-05-26 11:36:57 +08:00
# 后台管理系统重构方案
> 日期2026-05-26 | 范围:`frontend/web-admin` 前端页面与路由
---
## 一、现状概览
当前系统共有 **27 个 .vue 页面文件**,路由注册了 **22 条**,侧边栏导航挂了 **16 个入口**
核心问题:
1. **6 组功能重叠** — 多个页面做同一件事,入口分散
2. **4 个幽灵页面** — 已写好但不在导航中,或完全是演示数据
3. **1 个死链** — 导航中的 `/customers/import` 在路由表中不存在
4. **1 个万能页面** — BusinessPage 把订单录入、履约、提醒、配置、员工管理全塞在一起
---
## 二、幽灵页面确认结论
通过对比 API 调用和数据来源,确认以下页面的状态:
| 页面 | 路由 | 数据来源 | 判断 |
|------|------|----------|------|
| **ManagerFlowPage** | `/manager`(不在导航) | **100% 硬编码演示数据**,零 API 调用 | **可删除** — 纯原型 |
| **SalesFlowPage** | `/sales-flow`(不在导航) | 调用 `/api/orders/flow-overview`(该接口后端未定义),全部回退到演示数据 | **可删除** — 功能已被 OrdersPage + ApprovalsPage + OrderTrackingPage 覆盖 |
| **EmployeesPage** | 无路由 | 调用 `fetchSystemUsers` / `fetchSystemRoles`,与 SystemPage 用户管理 tab 完全相同 | **可删除** — 是 SystemPage 的重复版本 |
| **ProductPage** | 无路由 | 独立产品管理页面,功能已被 MasterDataPage 的"产品管理"tab 完全覆盖 | **可删除** — MasterDataPage 已取代 |
| **SupplierPage** | 无路由 | 独立供应商管理页面,功能已被 MasterDataPage 的"工厂/供应商"tab 完全覆盖 | **可删除** — MasterDataPage 已取代 |
另外 DriverPage (`/driver/tasks`) 虽不在导航中,但有独立后端接口 `fetchDriverTasks`,属于有效功能,需要决定是否加入导航。
---
## 三、重叠组详细分析与合并策略
### 重叠组 1配置管理ConfigPage vs ConfigCenterPage
| 维度 | ConfigPage (`/config`) | ConfigCenterPage (`/config-center`) |
|------|------------------------|-------------------------------------|
| 标题 | 配置管理 | 系统配置中心 |
| 核心功能 | 规则校验状态展示 + 配置项编辑 | 配置项编辑(含启用/禁用开关)+ 提醒检查触发 |
| 后端接口 | `fetchConfigItem` / `updateConfigItem` | 同左 + `runAllReminderChecks` 等 |
| 特有能力 | 自动校验项对齐展示 | 按业务分组查看 + 一键触发提醒检查 |
**合并方案:保留 ConfigPage合入 ConfigCenterPage 的能力**
- ConfigPage 保留"配置项编辑"和"校验状态展示"
- 从 ConfigCenterPage 搬入:启用/禁用开关、配置分组视图、提醒检查按钮
- 删除 ConfigCenterPage
- 新路由:`/config`
### 重叠组 2权限与审计PermissionsCenterPage vs AuditPage
| 维度 | PermissionsCenterPage (`/permissions`) | AuditPage (`/audit`) |
|------|----------------------------------------|----------------------|
| 标题 | 权限与可见性中心 | 权限与审计 |
| 角色可见性 | 有 | 有(相同) |
| 字段脱敏规则 | 有(可编辑开关) | 无 |
| 权限矩阵 | 有(角色 x 模块表格) | 无 |
| 审计日志 | 有(展示) | 有(展示 + 筛选 + 导出) |
**合并方案:保留 AuditPage合入 PermissionsCenterPage 的独有能力**
- AuditPage 保留"审计日志"(筛选 + 导出)
- 从 PermissionsCenterPage 搬入:字段脱敏规则编辑、权限矩阵表格
- 删除 PermissionsCenterPage
- 新路由:`/audit`,标题改为"权限与审计"
### 重叠组 3客户管理CustomerCenterPage vs MasterDataPage 客户 tab
| 维度 | CustomerCenterPage (`/customers`) | MasterDataPage 客户 tab (`/master-data`) |
|------|------------------------------------|-------------------------------------------|
| 客户录入 | 有(基础表单) | 有(完整表单 + 模态框) |
| 客户导入 | 有(基础) | 有(完整) |
| 客户列表 | 有(基础) | 有(完整 + 详情弹窗) |
| 新客户判定 | 有 | 有 |
| 欠款提醒 | 有 | 无 |
MasterDataPage 的客户管理功能更完整(对接了真实 API `fetchCustomerList`、`createCustomer`、`importCustomers`、`fetchCustomerDetail`CustomerCenterPage 是早期简化版本。
**合并方案:保留 MasterDataPage 的客户管理代码,移至独立的 CustomerCenterPage**
- 用 MasterDataPage 客户 tab 的完整代码替换 CustomerCenterPage
- MasterDataPage 去掉"客户管理"tab只保留产品分类、产品管理、工厂/供应商
- 新路由:`/customers`CustomerCenterPage+ `/master-data`MasterDataPage
### 重叠组 4员工/用户管理EmployeeCenterPage vs SystemPage
| 维度 | EmployeeCenterPage (`/employees`) | SystemPage (`/system`) |
|------|-----------------------------------|------------------------|
| 用户列表 | 有(只读展示) | 有(含查询、新增、编辑、重置密码) |
| 角色管理 | 无独立 tab | 有(角色 CRUD |
| 菜单管理 | 无 | 有(菜单 CRUD |
| 权限分配 | 有(基础表单) | 有(角色授权) |
SystemPage 功能远比 EmployeeCenterPage 完整。EmployeeCenterPage 实际上是 SystemPage 用户列表的简化只读版本。
**合并方案:保留 SystemPage删除 EmployeeCenterPage**
- 导航中"员工中心"直接链接到 `/system`
- 删除 EmployeeCenterPage
- 新路由:`/system`
### 重叠组 5订单录入散落在 4 个页面)
| 页面 | 订单录入位置 |
|------|-------------|
| OrdersPage | 有完整录入表单(客户、来源、交付方式、备注) |
| SalesFlowPage | 有录入 tab客户、产品、来源、交付方式、备注 |
| BusinessPage | 有"订单录入"tab客户、产品、规格、数量、单价、来源、支付方式 |
| SalesmanCenterPage | 有"快速录单"(客户、产品、数量、售价、备注) |
**合并方案:统一到 OrdersPage其余页面删除或精简**
- OrdersPage 作为订单录入的唯一入口,增加产品/数量/单价字段(从 BusinessPage 搬入)
- SalesFlowPage 整体删除(已在幽灵页面确认中)
- BusinessPage 删除订单录入功能
- SalesmanCenterPage 的录单功能改为跳转到 OrdersPage
### 重叠组 6审批管理ApprovalsPage vs ManagerFlowPage
**合并方案:删除 ManagerFlowPage已在幽灵页面确认中**
ManagerFlowPage 的"发厂"和"履约"功能目前使用演示数据,后端未实现。如后续需要,可在 ApprovalsPage 中扩展 tab。
---
## 四、新导航结构(按功能域分组)
```
工作台
├── 后台工作台 /dashboard (DashboardPage)
└── 审批中心 /approvals (ApprovalsPage)
主数据
├── 客户管理 /customers (CustomerCenterPage — 用 MasterDataPage 客户 tab 代码替换)
├── 基础资料 /master-data (MasterDataPage — 去掉客户 tab)
└── 司机管理 /driver/tasks (DriverPage — 从隐藏提升到可见)
订单与审批
├── 订单中心 /orders (OrdersPage — 合并录入能力)
├── 订单轨迹 /orders/tracking (OrderTrackingPage)
└── 提醒中心 /reminders (ReminderCenterPage)
配置与权限
├── 配置管理 /config (ConfigPage — 合并 ConfigCenterPage)
├── 权限与审计 /audit (AuditPage — 合并 PermissionsCenterPage)
└── 系统管理 /system (SystemPage — 吸收 EmployeeCenterPage)
报表
├── 报表统计 /reports/performance (ReportsPage)
└── 报表核对 /reports/audit (ReportAuditPage)
AI 能力
└── AI 识别 /ai-recognition (AIRecognitionPage)
```
**对比变化:**
| 指标 | 重构前 | 重构后 |
|------|--------|--------|
| 导航入口数 | 16 | 12 |
| 页面文件数 | 27 | 18减少 9 个) |
| 路由数 | 22 | 15减少 7 条) |
| 死链 | 1`/customers/import` | 0 |
| 幽灵页面 | 5 | 0 |
---
## 五、具体文件变更清单
### 删除的文件9 个)
| 文件 | 原因 |
|------|------|
| `views/SalesFlowPage.vue` | 幽灵页面,功能被 OrdersPage + ApprovalsPage 覆盖 |
| `views/ManagerFlowPage.vue` | 幽灵页面100% 演示数据 |
| `views/EmployeesPage.vue` | 幽灵页面SystemPage 的重复版本 |
| `views/ProductPage.vue` | 幽灵页面,已被 MasterDataPage 取代 |
| `views/SupplierPage.vue` | 幽灵页面,已被 MasterDataPage 取代 |
| `views/ConfigCenterPage.vue` | 合并入 ConfigPage |
| `views/PermissionsCenterPage.vue` | 合并入 AuditPage |
| `views/EmployeeCenterPage.vue` | 功能被 SystemPage 完整覆盖 |
| `views/BusinessPage.vue` | "万能页面",各功能归还到对应专业页面 |
### 修改的文件5 个)
| 文件 | 变更内容 |
|------|----------|
| `views/ConfigPage.vue` | 合入 ConfigCenterPage 的启用/禁用开关、分组视图、提醒检查按钮 |
| `views/AuditPage.vue` | 合入 PermissionsCenterPage 的脱敏规则编辑、权限矩阵表格 |
| `views/CustomerCenterPage.vue` | 用 MasterDataPage 客户 tab 的完整代码替换当前简化版本 |
| `views/MasterDataPage.vue` | 删除客户管理 tab保留产品分类 + 产品 + 供应商三个 tab |
| `views/OrdersPage.vue` | 从 BusinessPage 搬入产品/数量/单价等字段,完善录入表单 |
### 修改的配置文件2 个)
| 文件 | 变更内容 |
|------|----------|
| `router.js` | 删除 7 条废弃路由,更新组件引用,修复死链 |
| `App.vue` | 重写 `navGroups`,从 3 组 16 入口改为 5 组 12 入口 |
---
## 六、路由变更对照表
### 删除的路由
| 旧路由 | 对应组件 | 原因 |
|--------|----------|------|
| `/config-center` | ConfigCenterPage | 合并入 `/config` |
| `/permissions` | PermissionsCenterPage | 合并入 `/audit` |
| `/employees` | EmployeeCenterPage | 合并入 `/system` |
| `/manager` | ManagerFlowPage | 幽灵页面删除 |
| `/sales-flow` | SalesFlowPage | 幽灵页面删除 |
| `/customers/import` | (不存在) | 死链修复:客户导入改为 CustomerCenterPage 内的功能入口 |
| `/business` | BusinessPage | 万能页面删除,功能已分散 |
### 保留的路由
| 路由 | 组件 | 变更 |
|------|------|------|
| `/login` | LoginPage | 不变 |
| `/dashboard` | DashboardPage | 不变 |
| `/approvals` | ApprovalsPage | 不变 |
| `/approvals/:id` | ApprovalDetailPage | 不变 |
| `/customers` | CustomerCenterPage | 代码替换为 MasterDataPage 客户 tab 版本 |
| `/master-data` | MasterDataPage | 去掉客户 tab |
| `/orders` | OrdersPage | 合入 BusinessPage 录单字段 |
| `/orders/:id` | OrderDetailPage | 不变 |
| `/orders/tracking` | OrderTrackingPage | 不变 |
| `/driver/tasks` | DriverPage | 新增到导航 |
| `/driver/tasks/:id` | DriverTaskDetailPage | 不变 |
| `/config` | ConfigPage | 合入 ConfigCenterPage 能力 |
| `/audit` | AuditPage | 合入 PermissionsCenterPage 能力 |
| `/system` | SystemPage | 吸收 EmployeeCenterPage 功能 |
| `/reminders` | ReminderCenterPage | 不变 |
| `/ai-recognition` | AIRecognitionPage | 不变 |
| `/reports/performance` | ReportsPage | 不变 |
| `/reports/audit` | ReportAuditPage | 不变 |
---
## 七、实施建议
### 分批推进顺序
| 批次 | 内容 | 风险 | 预估工作量 |
|------|------|------|------------|
| **第 1 批** | 删除 5 个幽灵页面 + 更新路由 + 修复死链 | 低 — 这些页面本来就不在导航中 | 0.5h |
| **第 2 批** | 合并 ConfigPage + ConfigCenterPage | 中 — 需要整合两个页面的 UI 和逻辑 | 1.5h |
| **第 3 批** | 合并 AuditPage + PermissionsCenterPage | 中 — 权限矩阵和脱敏规则需要仔细搬移 | 1.5h |
| **第 4 批** | 用 MasterDataPage 客户 tab 替换 CustomerCenterPage | 中 — 需要确保 API 调用对齐 | 1h |
| **第 5 批** | 精简 MasterDataPage去掉客户 tab+ 删除 BusinessPage | 低 — 删减为主 | 0.5h |
| **第 6 批** | 合并 EmployeeCenterPage 到 SystemPage + 删除 EmployeeCenterPage | 低 — SystemPage 已经更完整 | 0.5h |
| **第 7 批** | OrdersPage 合入 BusinessPage 录单字段 + 更新导航 | 中 — 录单表单需要补齐字段 | 1h |
| **第 8 批** | 重写 App.vue navGroups + 最终验证 | 低 — 纯配置变更 | 0.5h |
### 每批的验证方法
每完成一批后:
1. 启动前端开发服务器,确认无编译报错
2. 逐个点击导航菜单,确认每个页面可正常加载
3. 检查浏览器控制台无 JS 报错
4. 确认被合并/删除页面的旧 URL 有合理的 404 或重定向处理
---
## 八、风险点
1. **MasterDataPage 客户 tab 代码量大1700+ 行)**:替换 CustomerCenterPage 时需要确保 mockApi 的所有导入函数都存在
2. **BusinessPage 删除后,其中的"履约调度"功能**目前后端无真实接口,删除不影响实际业务,但如果后续需要,需要重新开发
3. **DriverPage 提升到导航**:需要确认司机功能是否已经对业务方可见,避免过早暴露未完成功能
4. **`/customers/import` 死链**:如果有用户书签了这个 URL需要在路由中加一条重定向到 `/customers`