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
TypeScript
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;
};
};