jordium-gantt-vue3
Version:
A Vue 3 Gantt chart component for project management, task scheduling, resource planning, calendar, resource usage and timeline visualization.
51 lines (50 loc) • 1.93 kB
TypeScript
import { Task } from '../classes/Task';
/** 工作时间配置(与 GanttChart.vue 现有 workingHours 结构保持一致,便于宿主复用同一份配置) */
export interface WorkingHoursConfig {
morning?: {
start: number;
end: number;
};
afternoon?: {
start: number;
end: number;
};
}
/** 日历刻度 */
export type CalendarScale = 'day' | 'week' | 'month';
/**
* 拖拽选区草稿:mousedown~mouseup 过程中,前置钩子(onBeforeSelect)接收到的候选选区
*/
export interface CalendarSelectionDraft {
startDate: Date;
endDate: Date;
/** 当前资源筛选态下的资源上下文,未筛选时为 undefined */
resourceId?: string | number;
/** 选区产生时所在的刻度,决定了下游解析选区的最小粒度语义 */
scale: CalendarScale;
}
/**
* 拖拽选区结果:前置钩子放行后,对外通知的最终选区
* 结构与 Draft 一致,仅用于语义上区分"草稿"与"已确认结果"
*/
export type CalendarSelectionRange = CalendarSelectionDraft;
/** 选区被取消时的原因 */
export type CalendarSelectionCancelReason = 'before-hook-rejected' | 'user-cancelled';
/**
* v1.13.0 任务卡片拖拽移动结果:日/周/月视图中拖拽已创建任务松开后对外通知的新旧时间范围,
* 供宿主应用同步到自身业务数据(如后端持久化)
*/
export interface CalendarTaskMovePayload {
/** 被拖拽的任务(日期已更新为拖拽结果,可直接用于后续保存) */
task: Task;
/** 拖拽前的开始时间 */
previousStartDate: Date;
/** 拖拽前的结束时间 */
previousEndDate: Date;
/** 拖拽后的开始时间 */
newStartDate: Date;
/** 拖拽后的结束时间 */
newEndDate: Date;
/** 当前资源筛选态下的资源上下文,未筛选时为 undefined */
resourceId?: string | number;
}