278 lines
13 KiB
Markdown
278 lines
13 KiB
Markdown
# 后台管理系统重构方案
|
||
|
||
> 日期: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`
|