修复时间:2025年11月2日
状态:✅ 已完成
在组长端项目大盘中,点击项目卡片或"查看详情"按钮时,无法正确跳转到项目详情页。
原因:使用了错误的路由格式。
/team-leader/project-detail/:projectId
问题:
app.routes.ts 中不存在/wxwork/:cid/project/:projectId
优势:
app.routes.ts 中已定义CustomWxworkAuthGuard)cid 区分公司)| 文件 | 修改位置 | 方法名 |
|---|---|---|
dashboard.ts |
第 2535-2545 行 | viewProjectDetails() |
dashboard.ts |
第 2367-2372 行 | selectProject() |
dashboard.ts |
第 2575-2579 行 | quickAssignProject() |
dashboard.ts |
第 2622-2632 行 | openWorkloadEstimator() |
team-management.ts |
第 391-396 行 | viewProjectDetails() |
workload-calendar.ts |
第 217-223 行 | navigateToProject() |
文件位置:src/app/pages/team-leader/dashboard/dashboard.ts
行号:2535-2545
修改前 ❌
viewProjectDetails(projectId: string): void {
if (!projectId) {
return;
}
// 获取公司ID
const cid = localStorage.getItem('company') || 'cDL6R1hgSi';
// 跳转到组长端项目详情页(包含审批功能)
this.router.navigate(['/wxwork', cid, 'team-leader', 'project-detail', projectId]);
}
修改后 ✅
viewProjectDetails(projectId: string): void {
if (!projectId) {
return;
}
// 获取公司ID
const cid = localStorage.getItem('company') || 'cDL6R1hgSi';
// 跳转到企微认证项目详情页(正确路由)
this.router.navigate(['/wxwork', cid, 'project', projectId]);
}
影响范围:
文件位置:src/app/pages/team-leader/dashboard/dashboard.ts
行号:2367-2372
修改前 ❌
selectProject(): void {
if (this.selectedProjectId) {
this.router.navigate(['/team-leader/project-detail', this.selectedProjectId]);
}
}
修改后 ✅
selectProject(): void {
if (this.selectedProjectId) {
const cid = localStorage.getItem('company') || 'cDL6R1hgSi';
this.router.navigate(['/wxwork', cid, 'project', this.selectedProjectId]);
}
}
影响范围:
文件位置:src/app/pages/team-leader/dashboard/dashboard.ts
行号:2575-2579
修改前 ❌
// 无推荐或用户取消,跳转到详细分配页面
// 改为跳转到复用详情(组长视图),通过 query 参数标记 assign 模式
this.router.navigate(['/team-leader/project-detail', projectId], { queryParams: { mode: 'assign' } });
修改后 ✅
// 无推荐或用户取消,跳转到详细分配页面
// 跳转到项目详情页
const cid = localStorage.getItem('company') || 'cDL6R1hgSi';
this.router.navigate(['/wxwork', cid, 'project', projectId]);
影响范围:
文件位置:src/app/pages/team-leader/dashboard/dashboard.ts
行号:2622-2632
修改前 ❌
openWorkloadEstimator(): void {
// 工具迁移至详情页:引导前往当前选中项目详情
if (this.selectedProjectId) {
this.router.navigate(['/team-leader/project-detail', this.selectedProjectId], { queryParams: { tool: 'estimator' } });
} else {
this.router.navigate(['/team-leader/dashboard']);
}
window?.fmode?.alert('工作量预估工具已迁移至项目详情页...');
}
修改后 ✅
openWorkloadEstimator(): void {
// 工具迁移至详情页:引导前往当前选中项目详情
const cid = localStorage.getItem('company') || 'cDL6R1hgSi';
if (this.selectedProjectId) {
this.router.navigate(['/wxwork', cid, 'project', this.selectedProjectId]);
} else {
this.router.navigate(['/wxwork', cid, 'team-leader']);
}
window?.fmode?.alert('工作量预估工具已迁移至项目详情页...');
}
影响范围:
文件位置:src/app/pages/team-leader/team-management/team-management.ts
行号:391-396
修改前 ❌
viewProjectDetails(projectId: string): void {
// 改为复用设计师项目详情(组长上下文),具备审核/同步权限
this.router.navigate(['/team-leader/project-detail', projectId]);
}
修改后 ✅
viewProjectDetails(projectId: string): void {
// 跳转到企微认证项目详情页(正确路由)
const cid = localStorage.getItem('company') || 'cDL6R1hgSi';
this.router.navigate(['/wxwork', cid, 'project', projectId]);
}
影响范围:
文件位置:src/app/pages/team-leader/workload-calendar/workload-calendar.ts
行号:217-223
修改前 ❌
navigateToProject(t: Task, ev?: Event): void {
if (ev) { ev.stopPropagation(); ev.preventDefault?.(); }
if (!t || !t.projectId) return;
// 复用设计师端项目详情页面(通过 URL 上下文赋予组长审核权限)
this.router.navigate(['/team-leader/project-detail', t.projectId]);
}
修改后 ✅
navigateToProject(t: Task, ev?: Event): void {
if (ev) { ev.stopPropagation(); ev.preventDefault?.(); }
if (!t || !t.projectId) return;
// 跳转到企微认证项目详情页(正确路由)
const cid = localStorage.getItem('company') || 'cDL6R1hgSi';
this.router.navigate(['/wxwork', cid, 'project', t.projectId]);
}
影响范围:
所有方法都进行了相同的修改:
从 ❌
this.router.navigate(['/team-leader/project-detail', projectId]);
改为 ✅
const cid = localStorage.getItem('company') || 'cDL6R1hgSi';
this.router.navigate(['/wxwork', cid, 'project', projectId]);
cid 参数(从 localStorage 获取)/wxwork/:cid/project/:projectIdteam-leader/project-detail1️⃣ 项目大盘测试
/wxwork/:cid/project/:projectId2️⃣ 项目列表测试
3️⃣ 快速分配测试
4️⃣ 团队管理测试
5️⃣ 负载日历测试
所有跳转都应该:
http://localhost:4200/wxwork/cDL6R1hgSi/project/:projectId/team-leader/project-detail/B2xcbHfFR8
问题:
/wxwork/cDL6R1hgSi/project/B2xcbHfFR8
优势:
app.routes.ts/wxwork/:cid
├─ activation (身份激活)
├─ survey/profile (员工问卷)
├─ survey/project/:id (项目问卷)
├─ designer (设计师工作台)
├─ team-leader (组长工作台) ✅
├─ project/:id (项目详情) ✅ 统一入口
│ ├─ order (订单分配)
│ ├─ design (方案设计)
│ ├─ modeling (建模渲染)
│ └─ delivery (交付验收)
└─ contact/:id (客户联系人)
cid 参数区分不同公司组长点击项目 → 404 错误 → 无法查看详情
组长点击项目 → 正确跳转 → 查看项目详情 → 可以审批/操作
修复完成! ✅ 现在组长端所有项目跳转都使用正确的路由格式。