# 组长端项目详情页跳转功能实现 **日期**: 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元素 | |------|---------|----------| | ✅ 项目标题 | 点击标题文字 | `

` | | ✅ 卡片整体 | 点击卡片任意空白处 | `
` | | ✅ 查看详情按钮 | 点击"查看详情"按钮 | `