# 解决"未分配"问题和完整显示所有组员 **日期**: 2025-10-24 **问题**: 组长端工作量负载概览图未显示全部组员,且项目负责人显示"未分配" --- ## 🔴 问题分析 ### 1. 项目负责人显示"未分配" **根本原因**: 数据库中 `Project` 表的 `assignee` 字段为空 **代码位置**: `src/app/pages/team-leader/services/designer.service.ts` 第330行 ```typescript designerName: assignee?.get('name') || '未分配', ``` **数据流程**: ``` Parse数据库 → Project表 → assignee字段(Pointer) ↓ 如果assignee为null → designerName = '未分配' ``` ### 2. 工作量甘特图未显示所有组员 **根本原因**: 只统计了**已分配项目**的设计师 **代码位置**: `src/app/pages/team-leader/dashboard/dashboard.ts` 约2000行 ```typescript // ❌ 问题代码:只获取有项目的设计师 const assigned = this.filteredProjects.filter(p => !!p.designerName); const designers = Array.from(new Set(assigned.map(p => p.designerName))); ``` **结果**: - ✅ 有项目的设计师:显示在甘特图中 - ❌ 没有项目的设计师:不显示 --- ## ✅ 解决方案 ### 方案1:修复甘特图 - 显示所有组员 修改 `updateWorkloadGantt()` 方法,使用真实的设计师列表而非从项目中提取: ```typescript // ✅ 修改后:使用真实的设计师列表 const designers = this.realDesigners.length > 0 ? this.realDesigners.map(d => d.name) : Array.from(new Set(this.filteredProjects.filter(p => p.designerName && p.designerName !== '未分配').map(p => p.designerName))); // 如果没有设计师,显示提示 if (designers.length === 0) { // 显示"暂无组员数据" return; } ``` ### 方案2:项目分配功能 在数据库层面为项目分配设计师: ```typescript /** * 在designer.service.ts中已有方法 */ async assignProject(projectId: string, designerId: string): Promise { const project = Parse.Object.extend('Project').createWithoutData(projectId); const designer = Parse.Object.extend('Profile').createWithoutData(designerId); project.set('assignee', designer); project.set('status', '进行中'); await project.save(); return true; } ``` ### 方案3:数据库检查和修复 **检查步骤**: 1. 打开Parse Dashboard 2. 查看 `Project` 表 3. 检查 `assignee` 字段 4. 对于未分配的项目,手动设置 `assignee` **SQL修复(如果有SQL访问权限)**: ```sql -- 查看未分配的项目 SELECT objectId, title, status, assignee FROM Project WHERE assignee IS NULL OR assignee = ''; -- 批量分配给某个设计师 UPDATE Project SET assignee = {Profile的指针} WHERE assignee IS NULL; ``` --- ## 📝 具体修改 ### 修改1: updateWorkloadGantt方法 **文件**: `src/app/pages/team-leader/dashboard/dashboard.ts` **位置**: updateWorkloadGantt() 方法内 **修改内容**: