编译时出现以下错误:
Error: app/pages/customer-service/consultation-order/components/designer-calendar/designer-calendar.component.ts:555:21 - error TS2551: Property 'availableDates' does not exist on type 'Designer'. Did you mean 'nextAvailableDate'?
555     return designer.availableDates?.includes(dateStr) ?? false;
                       ~~~~~~~~~~~~~~
在实现月历视图时,isDateAvailable() 方法中使用了 designer.availableDates 属性,但这个属性在 Designer 接口中不存在。
Designer 接口定义:
export interface Designer {
  id: string;
  name: string;
  avatar?: string;
  groupId: string;
  groupName: string;
  isLeader: boolean;
  status: 'available' | 'busy' | 'stagnant' | 'overloaded';
  currentProjects: number;
  lastOrderDate?: string;
  idleDays?: number;
  completedThisMonth?: number;
  averageCycle?: number;
  upcomingEvents?: DesignerEvent[];  // ✅ 有这个
  workload?: number;
  nextAvailableDate?: Date;  // ✅ 有这个
  // ❌ 没有 availableDates
}
修改 isDateAvailable() 方法的实现逻辑,不再依赖不存在的 availableDates 属性,而是通过设计师的 status 和 upcomingEvents 来判断:
isDateAvailable(designer: Designer, date: Date): boolean {
  const dateStr = this.formatDateString(date);
  return designer.availableDates?.includes(dateStr) ?? false;  // ❌ 错误
}
isDateAvailable(designer: Designer, date: Date): boolean {
  // 如果设计师状态是available且该日期没有事件,则认为空闲
  if (designer.status === 'available') {
    const events = this.getDateEvents(designer, date);
    return events.length === 0;
  }
  return false;
}
新的空闲判断逻辑:
available - 说明设计师当前是空闲状态getDateEvents() 返回空数组这样的判断更合理:
其他日期状态判断方法:
isDateReview() - 判断是否对图日isDateReview(designer: Designer, date: Date): boolean {
  const dateStr = this.formatDateString(date);
  const events = designer.upcomingEvents || [];
  return events.some(e => 
    e.type === 'review' && 
    this.formatDateString(e.date) === dateStr
  );
}
isDateBusy() - 判断是否忙碌isDateBusy(designer: Designer, date: Date): boolean {
  const events = this.getDateEvents(designer, date);
  return events.some(e => e.type === 'project');
}
yss-project/src/app/pages/customer-service/consultation-order/components/designer-calendar/designer-calendar.component.ts
isDateAvailable() 方法实现✅ TypeScript编译通过 ✅ 无Linter错误 ✅ 类型检查通过
需要验证的功能:
available 时,无事件的日期显示✓(绿色空闲标识)busy 时,不显示空闲标识问题已完全解决。新的实现逻辑更加合理,使用了 Designer 接口中实际存在的属性,并且判断逻辑更清晰:只有当设计师整体状态为空闲,且该日期没有任何安排时,才认为该日期空闲可接单。