UNPKG

jordium-gantt-vue3

Version:

A Vue 3 Gantt chart component for project management, task scheduling, resource planning, calendar, resource usage and timeline visualization.

69 lines (68 loc) 3.33 kB
/** * ResourceUsageTypes.ts - 资源工时分配视图(ResourceUsageView)相关类型定义 * v1.12.5 新增,对应 architect-v1.12.5.md 第 4.1 节数据实体设计 * * 注意:本文件不依赖 CalendarTypes.ts,刻度类型独立定义, * 以保持 ResourceUsageView 与 CalendarView 两个子系统互不依赖(architect 2.4 节约束)。 * * 数据格式说明(供独立使用 ResourceUsageView 的开发者参考): * ResourceUsageView 复用 Gantt 组件既有的 `Resource[]` 数据集,不需要单独的数据结构或转换步骤, * 与资源计划视图(viewMode="resource")传入的 `resources` 完全一致: * - resource.id / resource.name:资源列表左侧展示 * - resource.tasks: Task[]:该资源承接的任务集合,用于聚合工时,每个 task 需要: * - task.startDate / task.endDate(必需,ISO 日期字符串或 Date) * - task.estimatedHours(可选,任务预估总工时,缺省时按 8h/工作日折算) * - task.resources: [{ id, capacity }](可选,资源占用比例,缺省 100%) * 若宿主已经在使用 GanttChart 的 `resources` 数据,直接原样传给 <ResourceUsageView :resources="resources" /> * 即可获得与资源计划视图一致的工时聚合结果,无需额外转换。 */ /** 工时分配视图刻度 */ export type ResourceUsageScale = 'day' | 'week' | 'month'; /** 单个任务在某工时桶内的占比构成明细 */ export interface ResourceUsageTaskBreakdown { taskId: number | string; taskName: string; hours: number; /** 对应 task.resources[].capacity,占比累加语义与 conflictUtils.ts 保持一致 */ percent: number; } /** 单个资源在某个时间刻度桶内的工时聚合结果 */ export interface ResourceUsageCellData { resourceId: string | number; periodStart: Date; periodEnd: Date; /** 该资源在该桶内的工时总和 */ totalHours: number; /** 占比总和(可能 >100 表示超载),语义沿用 conflictUtils.ts 的 totalPercent */ totalPercent: number; /** totalPercent > overloadThreshold 时为 true */ isOverloaded: boolean; /** 仅 scale === 'day' 时有效:该桶(即当天)是否为周六/周日 */ isWeekend?: boolean; taskBreakdown: ResourceUsageTaskBreakdown[]; } /** cell-click / cell-hover / onCellClick 携带的事件负载 */ export interface ResourceUsageCellPayload { resourceId: string | number; cell: ResourceUsageCellData | null; } /** * task-detail-click / onTaskDetailClick 携带的事件负载(v1.13.0 新增,P1 待办 T7.4) * 点击工时单元格 Tooltip 明细中的某个任务时触发 */ export interface ResourceUsageTaskDetailClickPayload { resourceId: string | number; taskId: number | string; taskName: string; } /** 工时格阈值配色,均可选,未提供时回退到主题 CSS 变量的默认配色 */ export interface ResourceUsageColorConfig { /** 超载(totalPercent > overloadThreshold)背景色 */ overloadColor?: string; /** 正常区间背景色 */ normalColor?: string; /** 欠载(totalPercent < underloadThreshold)背景色 */ underloadColor?: string; /** 周末列背景色(仅 scale === 'day' 生效) */ weekendColor?: string; }