Files
yunke/docs/superpowers/specs/2026-08-08-yunke-delete-accountlist-design.md
T

54 lines
2.9 KiB
Markdown

# 删除 AccountList 页(/accounts → /staff 重定向)设计
> 日期:2026-08-08|分支:`feat/yunke-data-mirror`|总 spec 收尾(§「AccountList 删除清单」L115-122)
> 背景:AccountList(`/accounts`)与 StaffList(`/staff`)内容重复,云客无此页。总 spec 定:删路由+文件+导航入口,`/accounts`→`/staff` 客户端重定向;**保留后端 `GET /api/accounts` 与前端 `getAccounts()`**(StaffList 依赖)。
## 1. 目标与范围
**目标**:删除冗余的 AccountList 页,`/accounts` 客户端重定向到 `/staff`,清理导航入口与过期注释。
**改动(纯前端)**:
1. `yunkes/src/router/index.ts`:移除 `/accounts` 路由记录;新增 `/accounts` → `/staff` 重定向(放在 customers 路由附近)。
2. 删除 `yunkes/src/views/AccountList.vue`。
3. `yunkes/src/layouts/MainLayout.vue`:移除指向 `/accounts` 的 `<el-menu-item>`。
4. `yunkes/src/views/StaffList.vue`:更新 2 处注释("reused from AccountList.vue" → "reused from accountFields.ts")—— drawer 实际来自 `accountFields.ts`,与 AccountList.vue 无文件依赖。
**不动(保留数据层)**:
- `yunkes/src/api/index.ts` 的 `getAccounts()`(→ 后端 `/api/accounts`)—— StaffList `loadTab` 依赖,**不删**。
- 后端 `GET /api/accounts`、`Account` 模型—— 不动。
**不在本 plan**:
- StaffList 本身的改动(仅注释)。
- 后端任何改动。
## 2. 关键事实(plan 核实,grep `AccountList|/accounts|'accounts'`)
- `router/index.ts:25-29`:`/accounts` route(name 'accounts', component AccountList.vue)。
- `MainLayout.vue:126`:`<el-menu-item index="/accounts">`。
- `StaffList.vue:27, 836`:注释提及 AccountList.vue。
- `api/index.ts:123`:`getAccounts` 调 `/accounts`(后端,保留)。
- 无其它 UI 引用(无 `router.push({name:'accounts'})`、无其它 `/accounts` 链接)。
- `/` 重定向到 `customers`;catch-all `/:pathMatch(.*)*` → customers。
## 3. 文件清单
- 改 `yunkes/src/router/index.ts`(删 route + 加 redirect)。
- 删 `yunkes/src/views/AccountList.vue`。
- 改 `yunkes/src/layouts/MainLayout.vue`(删 menu-item)。
- 改 `yunkes/src/views/StaffList.vue`(2 处注释)。
- **不改** `api/index.ts`、后端。
## 4. 验收
- `vue-tsc -b` exit 0(无对 AccountList 的悬空引用)。
- **浏览器实测**(本地,无云客):
- 访问 `/accounts` → URL 变 `/staff`、StaffList 渲染(客户端重定向,非 HTTP 301)。
- 导航菜单无「账号」入口;其它菜单项不变。
- StaffList 正常加载(`getAccounts` 仍工作)。
- grep 全仓 `AccountList` 无 UI 残留引用(`api/index.ts` 的 `getAccounts`/`/accounts` 是后端调用,不算 UI 残留)。
## 5. 风险
- **悬空引用**:若有遗漏的 `AccountList` import/`name:'accounts'` → vue-tsc 报错(plan grep 兜底)。
- **重定向 vs 路由匹配**:Vue Router 同路径 redirect + 无 component 即可;`/accounts` redirect 到 `name:'staff'`。