diff --git a/src/resource-scheduler/components/schedule-table/schedule-table.scss b/src/resource-scheduler/components/schedule-table/schedule-table.scss index 6d9c5829631e65f57a9fbfdb449172bdfd9fbed3..f45f3d814c8eb7e2dac2d378722fa165f6775e91 100644 --- a/src/resource-scheduler/components/schedule-table/schedule-table.scss +++ b/src/resource-scheduler/components/schedule-table/schedule-table.scss @@ -28,4 +28,8 @@ width: 100%; min-height: 100%; } + + .schedule-toolbar-extra{ + height: 40px; + } } \ No newline at end of file diff --git a/src/resource-scheduler/components/schedule-table/schedule-table.tsx b/src/resource-scheduler/components/schedule-table/schedule-table.tsx index 6b25fb1dd5c8fbe84a9fedd528c0352f94d19583..3129b83eca33cec56dfc2b097673dbe3134d29d5 100644 --- a/src/resource-scheduler/components/schedule-table/schedule-table.tsx +++ b/src/resource-scheduler/components/schedule-table/schedule-table.tsx @@ -1,4 +1,4 @@ -import { computed, defineComponent, PropType, ref } from 'vue'; +import { computed, defineComponent, PropType, ref, useSlots } from 'vue'; import { IResourceViewModel, IScheduleResource, @@ -13,10 +13,14 @@ import { useScheduleTableStyle, useVirtualScroll, } from '../../hooks/use-schedule-table'; +import { ScheduleToolbar } from '../schedule-toolbar/schedule-toolbar'; import './schedule-table.scss'; export const ScheduleTable = defineComponent({ name: 'ScheduleTable', + components: { + ScheduleToolbar, + }, props: { resources: { type: Array as PropType, @@ -102,14 +106,23 @@ export const ScheduleTable = defineComponent({ initStore(props, emit); // 初始化表格 - const { resourceViewModels, taskViewModels } = useInitScheduleTable( - headerCanvas, - bodyCanvas, - coordinateElement, - ); + const { + resourceViewModels, + taskViewModels, + onRefresh, + onSave, + onSaveAs, + onConfigRefresh, + } = useInitScheduleTable(headerCanvas, bodyCanvas, coordinateElement); + + // 插槽 + const slots = useSlots(); // 计算表格样式 - const { headerStyle, bodyStyle } = useScheduleTableStyle(props); + const { headerStyle, bodyStyle } = useScheduleTableStyle( + props, + slots && !!slots.extraToolbar, + ); // 监听视图大小变化 useScheduleTableReSize(props, headerCanvas, bodyCanvas, coordinateElement); @@ -150,11 +163,29 @@ export const ScheduleTable = defineComponent({ visibleTaskViewModels, handleScroll, visibleRange, + onRefresh, + onSave, + onSaveAs, + onConfigRefresh, }; }, render() { return (
+
+ + {this.$slots.extraToolbar ? ( +
+ {this.$slots.extraToolbar()} +
+ ) : null} +
{ + const options = []; + for (let i = 1; i <= _hours; i++) { + options.push({ + value: i, + label: `${i}小时`, + }); + } + return ( + + {options.map(item => { + return ( + + ); + })} + + ); + }; + + // 渲染显示天数列表 + const renderDaysList = (_days: number = 7) => { + const options = []; + for (let i = 1; i <= _days; i++) { + options.push({ + value: i, + label: `${i}天`, + }); + } + return ( +
+
onDaysClickChange(1)} + > +