2024-10-24
Angular项目在编译时出现多个错误,主要集中在管理员项目管理页面(project-management)缺少团队分配相关的属性和方法。
| 错误属性 | 文件位置 | 错误类型 | 
|---|---|---|
| showTeamAssignmentModal | project-management.html:265 | TS2339 | 
| selectedProject | project-management.html:265 | TS2339 | 
| projectTeams | project-management.html:268 | TS2551 | 
| currentTeamAssignment | project-management.html:269 | TS2339 | 
| currentQuotationItems | project-management.html:272 | TS2339 | 
| 错误方法 | 文件位置 | 错误类型 | 
|---|---|---|
| openTeamAssignmentModal | project-management.html:198 | TS2339 | 
| closeTeamAssignmentModal | project-management.html:273 | TS2339 | 
| confirmTeamAssignment | project-management.html:274 | TS2339 | 
| 错误组件 | 文件位置 | 错误类型 | 
|---|---|---|
| app-designer-team-assignment-modal | project-management.html:266 | NG8001 | 
在 project-management.ts 中添加团队分配相关属性:
// 团队分配相关属性
showTeamAssignmentModal = false;
selectedProject: Project | null = null;
projectTeams: any[] = [];
currentTeamAssignment: any = {
  primaryTeamId: null,
  quotationAssignments: [],
  crossTeamCollaborators: []
};
currentQuotationItems: any[] = [];
说明:
showTeamAssignmentModal: 控制弹窗显示状态selectedProject: 当前选中的项目projectTeams: 项目团队列表currentTeamAssignment: 当前团队分配信息currentQuotationItems: 当前报价项列表在 project-management.ts 中添加三个方法:
openTeamAssignmentModal(project: Project): void {
  this.selectedProject = project;
  this.showTeamAssignmentModal = true;
  // TODO: 加载项目团队和报价项数据
  console.log('打开团队分配弹窗:', project);
}
closeTeamAssignmentModal(): void {
  this.showTeamAssignmentModal = false;
  this.selectedProject = null;
  this.currentTeamAssignment = {
    primaryTeamId: null,
    quotationAssignments: [],
    crossTeamCollaborators: []
  };
  this.currentQuotationItems = [];
}
confirmTeamAssignment(event: any): void {
  console.log('确认团队分配:', event);
  // TODO: 保存团队分配数据到Parse Server
  this.closeTeamAssignmentModal();
  // 重新加载项目列表
  this.loadProjects();
}
在 project-management.html 中注释掉团队分配组件:
<!-- 设计师团队分配弹窗 - 暂时注释,等待组件开发完成 -->
<!--
@if (showTeamAssignmentModal && selectedProject) {
  <app-designer-team-assignment-modal
    [visible]="showTeamAssignmentModal"
    [projectTeams]="projectTeams"
    [selectedTeamId]="currentTeamAssignment.primaryTeamId"
    [selectedDesigners]="currentTeamAssignment.quotationAssignments"
    [crossTeamCollaborators]="currentTeamAssignment.crossTeamCollaborators"
    [quotationItems]="currentQuotationItems"
    (close)="closeTeamAssignmentModal()"
    (confirm)="confirmTeamAssignment($event)"
  ></app-designer-team-assignment-modal>
}
-->
说明:
app-designer-team-assignment-modal 组件尚未开发projectTeams 属性组件名称: app-designer-team-assignment-modal
输入属性:
visible: boolean - 弹窗显示状态projectTeams: any[] - 项目团队列表selectedTeamId: string | null - 选中的团队IDselectedDesigners: any[] - 选中的设计师列表crossTeamCollaborators: any[] - 跨团队协作者列表quotationItems: any[] - 报价项列表输出事件:
close: EventEmitter - 关闭事件
confirm: EventEmitter - 确认事件
功能需求:
需要实现的功能:
加载项目团队数据
ProjectTeam 表查询Profile 表获取团队成员信息加载报价项数据
ProjectQuotation 表查询保存团队分配
assignee 字段interface ProjectTeam {
  id: string;
  name: string;
  leaderId: string;
  leaderName: string;
  members: TeamMember[];
  company: Pointer<Company>;
}
interface TeamMember {
  profileId: string;
  name: string;
  role: string;
  skills: string[];
}
interface QuotationAssignment {
  quotationItemId: string;
  quotationItemName: string;
  assignedDesigners: string[]; // Profile IDs
}
interface TeamAssignment {
  projectId: string;
  primaryTeamId: string;
  quotationAssignments: QuotationAssignment[];
  crossTeamCollaborators: string[]; // Profile IDs from other teams
}
yss-project/src/app/pages/admin/project-management/project-management.ts
yss-project/src/app/pages/admin/project-management/project-management.html
app-designer-team-assignment-modal 组件尚未创建,需要后续开发any 类型,后续应定义明确的接口本次修复成功解决了所有编译错误,通过添加必要的属性和方法,并暂时注释掉未开发的组件,使项目能够正常编译和运行。
后续需要:
app-designer-team-assignment-modal 组件any 类型✅ 项目现已可以正常编译和运行