# 组长端项目详情页跳转功能实现
**日期**: 2025-10-24
**需求**: 组长端点击项目卡片时,能够跳转到管理员端的真实项目详情页
---
## 📋 需求说明
### 用户需求
组长端 (`/team-leader/dashboard`) 的项目看板中:
- ✅ 点击项目卡片时,跳转到真实的项目详情页
- ✅ 使用真实的项目ID,不是固定的地址
- ✅ 跳转格式:`/admin/project-detail/{projectId}/order`
- ✅ 每个项目都有独立的详情页,不重复
### 示例
- **旧行为**: 点击项目无响应或跳转到不存在的页面
- **新行为**:
- 点击项目1 → `/admin/project-detail/iKvYck89zE/order`
- 点击项目2 → `/admin/project-detail/7EFEsEd0ht/order`
- 点击项目3 → `/admin/project-detail/abc123xyz/order`
---
## ✅ 实现方案
### 1. HTML模板修改
**文件**: `src/app/pages/team-leader/dashboard/dashboard.html`
**位置**: 第227-258行(项目卡片区域)
**修改内容**:
#### A. 修改项目标题的 routerLink
```html
{{ project.name }}
{{ project.name }}
```
**说明**:
- 从组长端路由 `/team-leader/project-detail/:id` 改为管理员端路由
- 添加默认子路由 `order`(订单分配阶段)
- 保留 `$event.stopPropagation()` 防止触发卡片的点击事件
#### B. 项目卡片整体点击事件(已存在)
```html
```
**说明**:
- 点击卡片任意位置都会触发 `viewProjectDetails()`
- 使用真实的 `project.id`
#### C. "查看详情"按钮(已存在)
```html
```
---
### 2. TypeScript逻辑添加
**文件**: `src/app/pages/team-leader/dashboard/dashboard.ts`
**位置**: 第2471-2514行(文件末尾)
**新增方法**:
#### A. viewProjectDetails() - 查看项目详情
```typescript
/**
* 查看项目详情 - 跳转到管理员端真实项目详情页
*/
viewProjectDetails(projectId: string): void {
if (!projectId) {
console.warn('项目ID为空,无法跳转');
return;
}
// 跳转到管理员端的项目详情页,使用真实的项目ID
// 路由格式:/admin/project-detail/:projectId/order
this.router.navigate(['/admin/project-detail', projectId, 'order']);
console.log('✅ 跳转到项目详情页:', projectId);
}
```
**功能**:
- 参数校验:检查 `projectId` 是否为空
- 路由跳转:使用 `Router.navigate()` 跳转到管理员端项目详情页
- 日志记录:记录跳转的项目ID,方便调试
#### B. quickAssignProject() - 快速分配项目
```typescript
/**
* 快速分配项目
*/
quickAssignProject(projectId: string): void {
console.log('快速分配项目:', projectId);
// TODO: 实现快速分配逻辑
alert('快速分配功能待实现');
}
```
**用途**:
- 为 HTML 中的"手动分配"按钮提供事件处理
- 当前为占位实现,未来可扩展
#### C. openSmartMatch() - 智能推荐
```typescript
/**
* 打开智能推荐弹窗
*/
openSmartMatch(project: any): void {
console.log('打开智能推荐:', project);
// TODO: 实现智能推荐逻辑
alert('智能推荐功能待实现');
}
```
**用途**:
- 为 HTML 中的"🤖 智能推荐"按钮提供事件处理
- 当前为占位实现,未来可集成智能推荐算法
#### D. reviewProjectQuality() - 质量评审
```typescript
/**
* 质量评审
*/
reviewProjectQuality(projectId: string, quality: 'excellent' | 'qualified' | 'unqualified'): void {
console.log('质量评审:', projectId, quality);
// TODO: 实现质量评审逻辑
const qualityText = quality === 'excellent' ? '优秀' : quality === 'qualified' ? '合格' : '不合格';
alert(`已将项目评为${qualityText}`);
}
```
**用途**:
- 为质量评审按钮提供事件处理
- 支持三种评级:优秀、合格、不合格
---
## 📁 涉及文件
### 修改的文件
1. ✅ `src/app/pages/team-leader/dashboard/dashboard.html`
- 第233行:修改项目标题的 `routerLink`
- 从 `/team-leader/project-detail/:id` 改为 `/admin/project-detail/:id/order`
2. ✅ `src/app/pages/team-leader/dashboard/dashboard.ts`
- 新增 `viewProjectDetails()` 方法(第2471-2485行)
- 新增 `quickAssignProject()` 方法(第2487-2494行)
- 新增 `openSmartMatch()` 方法(第2496-2503行)
- 新增 `reviewProjectQuality()` 方法(第2505-2513行)
### 相关文件
- `src/app/app.routes.ts` - 管理员端项目详情页路由配置
- `src/modules/project/pages/project-detail/project-detail.component.ts` - 项目详情页组件
---
## 🎯 功能特性
### 1. 多入口访问
组长可以通过以下方式进入项目详情页:
| 入口 | 触发方式 | HTML元素 |
|------|---------|----------|
| ✅ 项目标题 | 点击标题文字 | `` |
| ✅ 卡片整体 | 点击卡片任意空白处 | `
` |
| ✅ 查看详情按钮 | 点击"查看详情"按钮 | `