UNPKG

jordium-gantt-vue3

Version:

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

88 lines (87 loc) 4.33 kB
import { ResourceUsageScale, ResourceUsageCellPayload, ResourceUsageCellData, ResourceUsageTaskDetailClickPayload } from '../../models/types/ResourceUsageTypes'; import { Resource } from '../../models/classes/Resource'; import { ResourceListConfig } from '../../models/configs/ResourceListConfig'; import { TimelineScale, TimelineScaleConfig } from '../../models/types/TimelineScale'; interface Props { resources: Resource[]; scale?: ResourceUsageScale; defaultScale?: ResourceUsageScale; dateRange?: { start: Date; end: Date; }; resourceListConfig?: ResourceListConfig; /** TaskList 列渲染模式:'default' 使用 resourceListConfig.columns 配置,'declarative' 使用默认插槽中的 TaskListColumn 声明式列 */ columnRenderMode?: 'default' | 'declarative'; /** * 表头格式配置(v1.13.0),与 GanttChart 传给 Timeline 的 scaleConfigs 同构(Record<TimelineScale, TimelineScaleConfig>), * 未提供时回退到与 Timeline 一致的内置默认值 SCALE_CONFIGS,确保任务/资源/资源利用率视图的表头格式逻辑保持一致。 * 仅使用 day/week/month 三个刻度的 formatters(primary 用于第一行年/月分组,secondary 用于第二行具体周期标签)。 */ scaleConfigs?: Record<TimelineScale, TimelineScaleConfig>; overloadThreshold?: number; underloadThreshold?: number; /** 超载单元格背景色,未提供时使用主题默认色 */ overloadColor?: string; /** 正常单元格背景色,未提供时使用主题默认色 */ normalColor?: string; /** 欠载单元格背景色,未提供时使用主题默认色 */ underloadColor?: string; /** 周末列背景色,未提供时使用主题默认色(仅 scale === 'day' 生效) */ weekendColor?: string; /** 行高(px),左右两侧面板共用,默认 40 */ rowHeight?: number; /** 单元格列宽(px),未提供时按 scale 使用默认值(day: 56 / week: 80 / month: 100) */ columnWidth?: number; disabled?: boolean; onBeforeScaleChange?: (next: ResourceUsageScale, prev: ResourceUsageScale) => boolean | Promise<boolean>; onCellClick?: (payload: ResourceUsageCellPayload) => void; /** v1.13.0 点击工时单元格 Tooltip 明细中的某个任务时触发(P1 待办 T7.4) */ onTaskDetailClick?: (payload: ResourceUsageTaskDetailClickPayload) => void; } declare var __VLS_6: {}; type __VLS_Slots = {} & { default?: (props: typeof __VLS_6) => any; }; declare const __VLS_component: import('vue').DefineComponent<Props, { refreshAggregation: () => void; setScale: (scale: ResourceUsageScale) => void; }, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, { "task-detail-click": (payload: ResourceUsageTaskDetailClickPayload) => any; "scale-change": (payload: { next: ResourceUsageScale; prev: ResourceUsageScale; }) => any; "cell-click": (payload: ResourceUsageCellPayload) => any; "cell-hover": (payload: ResourceUsageCellPayload | null) => any; "overload-detected": (payload: { resourceId: string | number; periods: ResourceUsageCellData[]; }) => any; }, string, import('vue').PublicProps, Readonly<Props> & Readonly<{ "onTask-detail-click"?: ((payload: ResourceUsageTaskDetailClickPayload) => any) | undefined; "onScale-change"?: ((payload: { next: ResourceUsageScale; prev: ResourceUsageScale; }) => any) | undefined; "onCell-click"?: ((payload: ResourceUsageCellPayload) => any) | undefined; "onCell-hover"?: ((payload: ResourceUsageCellPayload | null) => any) | undefined; "onOverload-detected"?: ((payload: { resourceId: string | number; periods: ResourceUsageCellData[]; }) => any) | undefined; }>, { disabled: boolean; rowHeight: number; defaultScale: ResourceUsageScale; overloadThreshold: number; underloadThreshold: number; columnRenderMode: "default" | "declarative"; }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, any>; declare const _default: __VLS_WithSlots<typeof __VLS_component, __VLS_Slots>; export default _default; type __VLS_WithSlots<T, S> = T & { new (): { $slots: S; }; };