diff --git a/demo/App.vue b/demo/App.vue index 135e550..a1f2183 100644 --- a/demo/App.vue +++ b/demo/App.vue @@ -1,6 +1,6 @@ + + + + + diff --git a/demo/main.ts b/demo/main.ts index 2425c0f..b12ac85 100644 --- a/demo/main.ts +++ b/demo/main.ts @@ -1,5 +1,11 @@ import { createApp } from 'vue' import './style.css' import App from './App.vue' +import JordiumGantt from '../src/index' +// import DeclarativeColumnsDemo from './DeclarativeColumnsDemo.vue' -createApp(App).mount('#app') +// 使用 DeclarativeColumnsDemo 替代 App 来演示声明式列功能 +// 如果要切换回原来的演示,取消注释 App 并注释掉 DeclarativeColumnsDemo +const app = createApp(App) +app.use(JordiumGantt) // 全局注册 GanttChart 和 TaskListColumn +app.mount('#app') diff --git a/src/components/GanttChart.vue b/src/components/GanttChart.vue index 6180e31..ec1d17f 100644 --- a/src/components/GanttChart.vue +++ b/src/components/GanttChart.vue @@ -44,6 +44,7 @@ const props = withDefaults(defineProps(), { afternoon: { start: 13, end: 17 }, }), taskListConfig: undefined, + taskListColumnRenderMode: 'default', taskBarConfig: undefined, autoSortByStartDate: false, allowDragAndResize: true, @@ -84,11 +85,6 @@ const emit = defineEmits([ const { showMessage } = useMessage() const slots = useSlots() -// 获取所有列级 slot 名称并通过 provide 传递给子组件 -const columnSlotNames = computed(() => { - return Object.keys(slots).filter(name => name.startsWith('column-')) -}) - // 提供 slots 给子组件(TaskList 和 TaskRow) provide('gantt-column-slots', slots) @@ -135,6 +131,8 @@ interface Props { } // 任务列表配置 taskListConfig?: TaskListConfig + // 任务列表列渲染模式:'default' 使用 taskListConfig.columns 配置,'declarative' 使用声明式 标签 + taskListColumnRenderMode?: 'default' | 'declarative' // TaskBar 配置 taskBarConfig?: TaskBarConfig // 是否启用自动排序(根据开始时间排序任务) @@ -2307,6 +2305,7 @@ function handleMilestoneDialogDelete(milestoneId: number) { :tasks="tasksForTaskList" :use-default-drawer="props.useDefaultDrawer" :task-list-config="props.taskListConfig" + :task-list-column-render-mode="props.taskListColumnRenderMode" :enable-task-row-move="props.enableTaskRowMove" @task-collapse-change="handleTaskCollapseChange" @start-timer="handleStartTimer" @@ -2316,6 +2315,10 @@ function handleMilestoneDialogDelete(milestoneId: number) { @delete="handleTaskDelete" @task-row-moved="handleTaskRowMoved" > + + +