dingdanquanliucheng/后台管理系统重构方案.md
2026-05-26 11:36:57 +08:00

278 lines
13 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.

# 后台管理系统重构方案
> 日期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`