# 组长端跳转到纯净项目详情页(无管理端UI)
**日期**: 2025-10-24
**需求**: 从组长端点击项目后,进入纯净的项目详情页,不显示管理员端的侧边栏导航等UI元素
---
## 📋 问题描述
### 用户反馈
从组长端点击项目后,跳转到 `/admin/project-detail/:projectId/order`:
- ❌ 显示了管理员端的侧边栏导航
- ❌ 显示了管理员端的顶部导航栏
- ❌ 整体布局包含了 AdminLayout
### 用户期望
- ✅ 只显示项目详情页的内容
- ✅ 无侧边栏、无顶部导航
- ✅ 纯净的项目内容展示
---
## 🎯 解决方案
### 核心思路
使用 `wxwork` 路由而非 `admin` 路由:
| 路由类型 | 路径格式 | 特点 |
|---------|---------|------|
| ❌ 管理员端路由 | `/admin/project-detail/:projectId/order` | 包含AdminLayout(侧边栏+顶部栏) |
| ✅ wxwork路由 | `/wxwork/:cid/project/:projectId/order` | 纯净页面,无任何布局包裹 |
### 路由对比
#### 原来的路由(带布局)
```typescript
// src/app/app.routes.ts 第184-235行
{
path: 'admin',
loadComponent: () => import('./pages/admin/admin-layout/admin-layout').then(m => m.AdminLayout),
children: [
// ... 其他路由
{
path: 'project-detail/:projectId',
loadComponent: () => import('../modules/project/pages/project-detail/project-detail.component').then(m => m.ProjectDetailComponent),
children: [
{ path: 'order', ... },
{ path: 'requirements', ... },
// ...
]
}
]
}
```
**特点**:
- ✅ 完整的管理后台体验
- ❌ 有侧边栏导航
- ❌ 有顶部导航栏
- ❌ 适合管理员使用
#### 现在使用的路由(纯净)
```typescript
// src/app/app.routes.ts 第312-377行
{
path: 'wxwork/:cid',
children: [
{
path: 'project/:projectId',
loadComponent: () => import('../modules/project/pages/project-detail/project-detail.component').then(m => m.ProjectDetailComponent),
children: [
{ path: 'order', ... },
{ path: 'requirements', ... },
// ...
]
}
]
}
```
**特点**:
- ✅ 纯净的项目详情页
- ✅ 无侧边栏、无顶部栏
- ✅ 全屏显示项目内容
- ✅ 适合组长、设计师使用
---
## 📝 实现细节
### 1. TypeScript修改
**文件**: `src/app/pages/team-leader/dashboard/dashboard.ts`
**位置**: 第2204-2219行
**修改内容**:
```typescript
// 查看项目详情 - 跳转到纯净的项目详情页(无管理端UI)
viewProjectDetails(projectId: string): void {
if (!projectId) {
console.warn('⚠️ 项目ID为空,无法跳转');
return;
}
// 获取公司ID
const cid = localStorage.getItem('company') || 'cDL6R1hgSi';
// 跳转到wxwork路由的项目详情页(纯净页面,无管理端侧边栏)
// 路由格式:/wxwork/:cid/project/:projectId/order
this.router.navigate(['/wxwork', cid, 'project', projectId, 'order']);
console.log('✅ 组长端跳转到纯净项目详情页:', projectId);
}
```
**关键点**:
1. **获取cid**: 从 `localStorage.getItem('company')` 获取
2. **默认值**: 如果没有,使用默认的 `cDL6R1hgSi`
3. **路由参数**: `['/wxwork', cid, 'project', projectId, 'order']`
4. **URL示例**: `/wxwork/cDL6R1hgSi/project/iKvYck89zE/order`
### 2. HTML模板修改
**文件**: `src/app/pages/team-leader/dashboard/dashboard.html`
**位置**: 第233行
**修改内容**:
```html
{{ project.name }}
{{ project.name }}
```
**改进点**:
- 移除了 `routerLink`,统一使用 `viewProjectDetails()` 方法
- 添加了 `cursor: pointer` 样式,鼠标悬停显示手型
- 保持 `$event.stopPropagation()` 防止事件冒泡
---
## 🎨 用户体验对比
### 修改前(带管理端UI)
```
┌─────────────────────────────────────────┐
│ 系统管理后台 [管理员顶部栏] │
├──────┬──────────────────────────────────┤
│ 侧 │ 项目详情页内容 │
│ 边 │ ├─ 订单分配 │
│ 栏 │ ├─ 确认需求 │
│ │ ├─ 交付执行 │
│ 导 │ └─ 售后归档 │
│ 航 │ │
│ │ │
└──────┴──────────────────────────────────┘
```
**缺点**:
- 占用空间:侧边栏占据约200px宽度
- 视觉干扰:管理端元素与项目内容混在一起
- 角色混淆:组长看到管理员的界面
### 修改后(纯净页面)
```
┌─────────────────────────────────────────┐
│ 项目详情页内容(全屏) │
│ ├─ 订单分配 │
│ ├─ 确认需求 │
│ ├─ 交付执行 │
│ └─ 售后归档 │
│ │
│ │
│ │
│ │
└─────────────────────────────────────────┘
```
**优点**:
- ✅ 全屏显示:更多空间展示项目信息
- ✅ 专注内容:无干扰元素
- ✅ 角色明确:纯粹的项目视图
---
## 🧪 测试验证
### 测试步骤
1. **清除或设置cid**
```javascript
// 在浏览器控制台执行
// 方式1: 使用真实的公司ID
localStorage.setItem("company", "cDL6R1hgSi");
// 方式2: 清除cid,测试默认值
localStorage.removeItem("company");
```
2. **刷新浏览器**
```
Ctrl+Shift+R (Windows/Linux)
Cmd+Shift+R (Mac)
```
3. **访问组长端Dashboard**
```
http://localhost:4200/team-leader/dashboard
```
4. **点击任意项目卡片**
- 点击项目标题
- 或点击"查看详情"按钮
- 或点击卡片空白处
5. **验证URL和页面**
**预期URL**:
```
http://localhost:4200/wxwork/cDL6R1hgSi/project/iKvYck89zE/order
```
**预期页面表现**:
- ✅ 无侧边栏导航
- ✅ 无顶部管理栏
- ✅ 全屏显示项目内容
- ✅ 显示四个阶段标签:订单分配、确认需求、交付执行、售后归档
- ✅ 当前在"订单分配"阶段
### 测试案例
| 测试项 | 操作 | 预期结果 |
|--------|------|---------|
| 有cid | localStorage.setItem("company", "abc123") | 跳转到 `/wxwork/abc123/project/...` |
| 无cid | localStorage.removeItem("company") | 跳转到 `/wxwork/cDL6R1hgSi/project/...` (默认值) |
| 点击标题 | 点击项目名称 | 跳转到纯净项目详情页 |
| 点击按钮 | 点击"查看详情" | 跳转到纯净项目详情页 |
| 点击卡片 | 点击卡片空白处 | 跳转到纯净项目详情页 |
| 不同项目 | 点击3个不同项目 | 每次跳转到不同的projectId |
| 刷新页面 | F5刷新 | 页面保持,数据不丢失 |
| 后退按钮 | 点击浏览器后退 | 返回组长端Dashboard |
---
## 🔄 URL格式对比
### 管理员端路由(带布局)
```
格式: /admin/project-detail/:projectId/order
示例: /admin/project-detail/iKvYck89zE/order
访问者: 管理员
特点: 有侧边栏、顶部栏
适用: 后台管理操作
```
### wxwork路由(纯净)
```
格式: /wxwork/:cid/project/:projectId/order
示例: /wxwork/cDL6R1hgSi/project/iKvYck89zE/order
访问者: 组长、设计师、客服
特点: 无任何布局,全屏显示
适用: 项目协作查看
```
### 设计师路由
```
格式: /designer/project-detail/:id
示例: /designer/project-detail/iKvYck89zE
访问者: 设计师
特点: 设计师专用界面
适用: 设计师工作视图
```
---
## 📦 涉及文件
### 修改的文件
1. ✅ `src/app/pages/team-leader/dashboard/dashboard.ts`
- 第2204-2219行:修改 `viewProjectDetails()` 方法
- 改为跳转到 wxwork 路由
2. ✅ `src/app/pages/team-leader/dashboard/dashboard.html`
- 第233行:修改项目标题的点击事件
- 从 `routerLink` 改为 `(click)` 事件
### 相关文件(无需修改)
- `src/app/app.routes.ts` - 路由配置(已有wxwork路由)
- `src/modules/project/pages/project-detail/project-detail.component.ts` - 项目详情组件
- `src/pages/admin/admin-layout/admin-layout.ts` - 管理员布局(不使用)
---
## 💡 技术细节
### cid (Company ID) 的作用
```typescript
const cid = localStorage.getItem('company') || 'cDL6R1hgSi';
```
**用途**:
1. **企微授权**: WxworkSDK初始化需要cid
2. **数据隔离**: 不同公司看到不同的数据
3. **多租户支持**: 支持多个公司使用同一系统
**存储位置**: `localStorage['company']`
**默认值**: `cDL6R1hgSi`
### 路由参数说明
```typescript
this.router.navigate(['/wxwork', cid, 'project', projectId, 'order']);
```
| 参数位置 | 参数名 | 说明 | 示例 |
|---------|--------|------|------|
| 参数1 | 'wxwork' | 路由前缀 | 固定值 |
| 参数2 | cid | 公司ID | 'cDL6R1hgSi' |
| 参数3 | 'project' | 项目路由 | 固定值 |
| 参数4 | projectId | 项目ID | 'iKvYck89zE' |
| 参数5 | 'order' | 当前阶段 | 'order'/'requirements'/'delivery'/'aftercare' |
### 阶段切换
用户可以在项目详情页切换阶段:
```
/wxwork/:cid/project/:projectId/order ← 订单分配
/wxwork/:cid/project/:projectId/requirements ← 确认需求
/wxwork/:cid/project/:projectId/delivery ← 交付执行
/wxwork/:cid/project/:projectId/aftercare ← 售后归档
```
---
## 🎯 适用场景
### ✅ 适合使用纯净页面的场景
1. **组长查看项目**: 无需管理端功能,专注项目内容
2. **设计师协作**: 多个设计师共同查看项目
3. **移动端访问**: 小屏幕下更友好
4. **企微内嵌**: 在企业微信中打开项目详情
5. **分享链接**: 发给客户或外部协作者
### ❌ 不适合的场景(应使用管理端路由)
1. **系统配置**: 需要访问系统设置
2. **用户管理**: 需要管理员权限
3. **批量操作**: 需要侧边栏快速导航
4. **数据统计**: 需要查看多个管理模块
---
## 📖 相关文档
- `src/app/app.routes.ts` - 完整路由配置
- `docs/task/2025102218-team-leader-project-detail-navigation.md` - 组长端项目跳转功能
- `docs/task/2025102217-wxwork-sdk-init-fix.md` - 企微SDK初始化修复
- `rules/wxwork/guard-wxwork.md` - 企微路由守卫文档
---
## 🎉 总结
### 修改前
- ❌ 跳转到 `/admin/project-detail/:projectId/order`
- ❌ 显示管理员端侧边栏和顶部栏
- ❌ 页面布局受AdminLayout限制
- ❌ 占用额外空间,视觉干扰
### 修改后
- ✅ 跳转到 `/wxwork/:cid/project/:projectId/order`
- ✅ 纯净的项目详情页,无任何管理端UI
- ✅ 全屏显示,更多空间展示项目内容
- ✅ 更清晰的角色定位(组长 vs 管理员)
### 核心优势
1. **空间利用**: 全屏显示,无侧边栏占用
2. **专注内容**: 无管理端元素干扰
3. **角色明确**: 纯粹的项目协作视图
4. **灵活性强**: 适合多种场景(移动端、企微、分享)
5. **性能更好**: 无需加载AdminLayout组件
---
**功能实现完成!** ✨
现在从组长端点击项目,会进入纯净的项目详情页,不再显示管理员端的侧边栏和顶部导航栏!