# 组长端跳转到纯净项目详情页(无管理端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组件 --- **功能实现完成!** ✨ 现在从组长端点击项目,会进入纯净的项目详情页,不再显示管理员端的侧边栏和顶部导航栏!