甘特图样式:
.gantt_container { border-color: transparent !important; .gantt_right { top: 0% !important; display: flex !important; } .gantt_side_content { overflow: visible !important; } .weekend { background: #ff9e2f; color: #fff !important; } // .gantt_selected { // background: #f4f5fe !important; // } .gantt_grid_data .gantt_row.gantt_selected { background: #f4f5fe !important; } .gantt_task_row.gantt_selected { background: #f4f5fe !important; } .gantt_grid_data .gantt_row.odd:hover, .gantt_grid_data .gantt_row:hover { background: #f4f5fe !important; } .gantt_task_line.gantt_selected { box-shadow: 0 0 5px #f4f5fe; } .gantt_grid_scale .gantt_grid_head_cell { font-size: 14px; font-weight: 400; color: rgba(28, 28, 28, 0.76); } .gantt_task .gantt_task_scale .gantt_scale_cell { font-size: 12px; font-weight: 400; color: rgba(28, 28, 28, 0.76); } .gantt_side_content.gantt_right { padding-left: 5px; top: 20%; } .gantt_task_line.gantt_project { background: #656bff; border: none; } .gantt_task_line { border-radius: 5px; background: #b0bdff; border: none; } .gantt_task_content { color: #fff; } .gantt_task_progress { display: none; } .gantt_selected .weekend { background: #2f51ff; } .weekend-border-bottom { border-bottom: 1px solid rgba(217, 217, 217, 1); } .gantt_grid_scale .gantt_grid_head_cell { border-right: 1px solid #d9d9d9 !important; &:nth-last-child(1) { border-right: none !important; } } .gantt_row, .gantt_task_row { border-bottom: none; } .gantt_task_cell { border-right-color: rgba(28, 28, 28, 0.1); } .gantt_row_task { border-bottom: 1px solid rgba(217, 217, 217, 1); } .gantt_row_project { border-bottom: 1px solid rgba(217, 217, 217, 1) !important; } .gantt_cell { border-right: 1px solid rgba(217, 217, 217, 1) !important; } .gantt_last_cell { border-right: none !important; } // .day-item{ // width: 60px !important; // }、 .gantt_marker { z-index: 99; background: #ff4141; } .gantt_tree_icon { width: 21px; height: 100%; background-repeat: no-repeat; background-position: center center; background-size: 100% auto; margin-right: 5px; } .gantt_folder_open { background-image: url('./../img/gante/gantt_folder_open.png') !important; margin-right: 4px; } .gantt_folder_closed { background-image: url('./../img/gante/gantt_folder_closed.png') !important; margin-right: 4px; } .gantt_file { background-image: url('./../img/gante/gantt_file.png') !important; margin-right: 4px; } .gantt_close { width: 12px !important; background-image: url('./../img/gante/gantt_close.png') !important; margin-right: 6px; } .gantt_open { width: 12px !important; background-image: url('./../img/gante/gantt_close.png') !important; transform: rotate(-90deg); } .dont-show { display: none; height: 0 !important; } .gantt_task_line{ min-width: 21px; } .gongxu{ background-image: url('./../img/gante/gongxu.png') !important; }}.gantt-error { display: none !important;}.shadow-right { box-shadow: 1px 0px 4px 0px rgba(0, 0, 0, 0.15);}.lag-advane { display: flex; align-items: center; position: absolute; top: -50% !important; z-index: 12; // left: -100%; .icon { width: 20px; height: 20px; background-size: 100% 100%; background-repeat: no-repeat; margin-right: 2px; } .lag { background-image: url('./../../assets/img/manage/icon_lag.png'); } .lag-value { color: #ff4141; } .advane { background-image: url('./../../assets/img/manage/icon_advance.png'); } .advane-value { color: #14cf20; }}//员工任务详情.myself-project-bar { display: flex; align-items: center; .bar-right-item { width: 90px; height: 21px; background-size: 100% 100%; background-repeat: no-repeat; position: relative; } .myself-project-progress { position: absolute; left: 6px; width: 40px; text-align: center; color: #fff; } .myself-project-overTime { position: absolute; left: 71px; text-align: center; color: #000000; } .task-lag { background-image: url('./../img/gante/task_lag.png'); } .task-finish { background-image: url('./../img/gante/task_finish.png'); }}// 项目总视图.tooltip-box { .project-name { font-size: 14px; }}.bar-right-item { display: flex; align-items: center; align-content: center;}// manage 页面 样式.finish-state-icon { width: 20px; height: 20px; background-size: 100% 100%; background-repeat: no-repeat;}.finish-progress { width: 54px; height: 21px; line-height: 24px; background-size: 100% 100%; background-repeat: no-repeat; font-size: 12px; font-weight: 600; text-align: center; color: #ffffff;}.finish-schedule { display: flex; align-items: center; margin-left: 4px;}.finish-finish { .finish-schedule { display: none; }}//任务超前右侧样式.finish-advance { .finish-state-icon { background-image: url('./../../assets/img/manage/icon_finish.png'); } .finish-progress { background-image: url('./../../assets/img/manage/back_advance.png'); } .finish-schedule { color: #14cf20; .finish-schedule-icon { background-image: url('./../../assets/img/manage/icon_advance.png'); } }}//滞后右侧样式.finish-lag { .finish-state-icon { background-image: url('./../../assets/img/manage/icon_error.png'); } .finish-progress { background-image: url('./../../assets/img/manage/back_lag.png'); } .finish-schedule { color: #ff4141; .finish-schedule-icon { background-image: url('./../../assets/img/manage/icon_lag.png'); } }}.finish-schedule-icon { width: 20px; height: 20px; background-size: 100% 100%; background-repeat: no-repeat; margin-right: 2px;}.special-item { background: rgba(203, 212, 255, 0.5); border: 1px dashed #b0bdff; border-radius: 4px; padding: 0 4px; color: rgba(51, 51, 51, 1);}.task-progress-line { position: absolute; left: 0px; bottom: 0px; width: 100%; z-index: 999; height: 6px; background: #eeeeee; .line-bar { position: absolute; left: 0; height: 6px; background: #2f51ff; } .value { position: absolute; right: 2px; bottom: 7px; font-size: 12px; font-weight: 400; color: #979797; line-height: 1; }}
数据模板:
demoData: { data: [ { id: 520, projectName: '项目1', startTime: '2023-09-25', endTime: '2023-10-31', showEndTime: '2023-11-01', projectStatus: '暂无任务', projectProgress: 0, projectRatio: '', projectTotalTime: 0, projectUsedTime: 0, functionName: '', xmdj: '2', cityName: '成都', name: '1', projectMap: {}, parent: 0, start_date: '2023-09-24 16:00:00.000', end_date: '2023-10-31 16:00:00.000', progress: 0.5, duration: 37 }, { id: 517, projectName: '项目2', startTime: '2023-09-18', endTime: '2023-10-23', showEndTime: '2023-10-24', projectStatus: '暂无任务', projectProgress: 0, projectRatio: '', projectTotalTime: 0, projectUsedTime: 0, functionName: '', xmdj: '0', cityName: '深圳', name: '2', projectMap: {}, parent: 0, start_date: '2023-09-17 16:00:00.000', end_date: '2023-10-23 16:00:00.000', progress: 0.2 }, { id: 505, projectName: '项目3', startTime: '2023-09-04', endTime: '2023-09-30', showEndTime: '2023-10-01', projectStatus: '滞后', projectProgress: 0.76, projectRatio: 0.12, projectTotalTime: 3267.6, projectUsedTime: 2477.7, functionName: '现状还原', xmdj: '3', cityName: '成都', name: '3', projectMap: {}, parent: 0, start_date: '2023-09-03 16:00:00.000', end_date: '2023-09-30 16:00:00.000', progress: 0.1 }, { id: 508, projectName: '项目4', startTime: '2023-09-04', endTime: '2023-10-20', showEndTime: '2023-10-21', projectStatus: '滞后', projectProgress: 0.57, projectRatio: 0.04, projectTotalTime: 3582.5, projectUsedTime: 2033.2, functionName: '测试功能', xmdj: '1', cityName: '成都', name: '4', projectMap: {}, parent: 0, start_date: '2023-09-03 16:00:00.000', end_date: '2023-10-20 16:00:00.000', progress: 0.15 }, { id: 511, projectName: '项目5', startTime: '2023-09-01', endTime: '2023-10-31', showEndTime: '2023-11-01', projectStatus: '滞后', projectProgress: 0.07, projectRatio: 0.03, projectTotalTime: 2150.5, projectUsedTime: 140, functionName: '悬浮球', xmdj: '1', cityName: '成都', name: '5', projectMap: {}, parent: 0, start_date: '2023-07-31 16:00:00.000', end_date: '2023-10-31 16:00:00.000', progress: 0.28 }, { id: 507, projectName: '项目6', startTime: '2023-08-28', endTime: '2023-10-01', showEndTime: '2023-10-02', projectStatus: '滞后', projectProgress: 0.48, projectRatio: 0.21, projectTotalTime: 4957, projectUsedTime: 2367, functionName: '产品原型图', xmdj: '1', cityName: '三亚', name: '6', projectMap: { 部门1: 1 }, parent: 0, start_date: '2023-07-27 16:00:00.000', end_date: '2023-10-01 16:00:00.000', progress: 0.33 }, { id: 1, projectName: '项目7', startTime: '2023-08-28', endTime: '2023-10-25', showEndTime: '2023-10-26', projectStatus: '超前', projectProgress: 0.27, projectRatio: 0.15, projectTotalTime: 2027.5, projectUsedTime: 557, functionName: '测量工具', xmdj: '1', cityName: '佛山', name: '7', projectMap: {}, parent: 0, start_date: '2023-06-27 16:00:00.000', end_date: '2023-10-25 16:00:00.000', progress: 0.67 }, { id: 2, projectName: '项目7', startTime: '2023-08-28', endTime: '2023-10-25', showEndTime: '2023-10-26', projectStatus: '滞后', projectProgress: 0.27, projectRatio: 0.15, projectTotalTime: 2027.5, projectUsedTime: 557, functionName: '测量工具', xmdj: '1', cityName: '佛山', name: '7', projectMap: {}, parent: 0, start_date: '2023-06-27 16:00:00.000', end_date: '2023-10-25 16:00:00.000', progress: 0.67 }, { id: 3, projectName: '项目7', startTime: '2023-08-28', endTime: '2023-10-25', showEndTime: '2023-10-26', projectStatus: '滞后', projectProgress: 0.27, projectRatio: 0.15, projectTotalTime: 2027.5, projectUsedTime: 557, functionName: '测量工具', xmdj: '1', cityName: '佛山', name: '7', projectMap: {}, parent: 0, start_date: '2023-06-27 16:00:00.000', end_date: '2023-10-25 16:00:00.000', progress: 0.67 }, { id: 4, projectName: '项目7', startTime: '2023-08-28', endTime: '2023-10-25', showEndTime: '2023-10-26', projectStatus: '滞后', projectProgress: 0.27, projectRatio: 0.15, projectTotalTime: 2027.5, projectUsedTime: 557, functionName: '测量工具', xmdj: '1', cityName: '佛山', name: '7', projectMap: {}, parent: 0, start_date: '2023-06-27 16:00:00.000', end_date: '2023-10-25 16:00:00.000', progress: 0.67 }, { id: 5, projectName: '项目7', startTime: '2023-08-28', endTime: '2023-10-25', showEndTime: '2023-10-26', projectStatus: '滞后', projectProgress: 0.27, projectRatio: 0.15, projectTotalTime: 2027.5, projectUsedTime: 557, functionName: '测量工具', xmdj: '1', cityName: '佛山', name: '7', projectMap: {}, parent: 0, start_date: '2023-06-27 16:00:00.000', end_date: '2023-10-25 16:00:00.000', progress: 0.67 }, { id: 6, projectName: '项目7', startTime: '2023-08-28', endTime: '2023-10-25', showEndTime: '2023-10-26', projectStatus: '滞后', projectProgress: 0.27, projectRatio: 0.15, projectTotalTime: 2027.5, projectUsedTime: 557, functionName: '测量工具', xmdj: '1', cityName: '佛山', name: '7', projectMap: {}, parent: 0, start_date: '2023-06-27 16:00:00.000', end_date: '2023-10-25 16:00:00.000', progress: 0.67 }, { id: 7, projectName: '项目7', startTime: '2023-08-28', endTime: '2023-10-25', showEndTime: '2023-10-26', projectStatus: '滞后', projectProgress: 0.27, projectRatio: 0.15, projectTotalTime: 2027.5, projectUsedTime: 557, functionName: '测量工具', xmdj: '1', cityName: '佛山', name: '7', projectMap: {}, parent: 0, start_date: '2023-06-27 16:00:00.000', end_date: '2023-10-25 16:00:00.000', progress: 0.67 }, { id: 8, projectName: '项目7', startTime: '2023-08-28', endTime: '2023-10-25', showEndTime: '2023-10-26', projectStatus: '滞后', projectProgress: 0.27, projectRatio: 0.15, projectTotalTime: 2027.5, projectUsedTime: 557, functionName: '测量工具', xmdj: '1', cityName: '佛山', name: '7', projectMap: {}, parent: 0, start_date: '2023-06-27 16:00:00.000', end_date: '2023-10-25 16:00:00.000', progress: 0.67 }, { id: 9, projectName: '项目7', startTime: '2023-08-28', endTime: '2023-10-25', showEndTime: '2023-10-26', projectStatus: '滞后', projectProgress: 0.27, projectRatio: 0.15, projectTotalTime: 2027.5, projectUsedTime: 557, functionName: '测量工具', xmdj: '1', cityName: '佛山', name: '7', projectMap: {}, parent: 0, start_date: '2023-06-27 16:00:00.000', end_date: '2023-10-25 16:00:00.000', progress: 0.67 } ] }
View Code时间切换数据模板:
const zoomConfig = { levels: [ { name: 'day', scale_height: 60, scales: [{ unit: 'day', step: 1, format: '%d %M' }] }, { name: 'week', scale_height: 60, scales: [ { unit: 'week', step: 1, format: function (date) { let dateToStr = gantt.date.date_to_str('%m-%d') let endDate = gantt.date.add(date, -6, 'day') let weekNum = gantt.date.date_to_str('%W')(date) //第几周 return dateToStr(endDate) + ' 至 ' + dateToStr(date) } }, { unit: 'day', step: 1, format: '%d', // + "周%D" css: function (date) { if (date.getDay() == 0 || date.getDay() == 6) { return 'day-item weekend weekend-border-bottom' } else { return 'day-item' } } } ] }, { name: 'month', scale_height: 60, min_column_width: 18, scales: [ { unit: 'month', format: '%Y-%m' }, { unit: 'day', step: 1, format: '%d', css: function (date) { if (date.getDay() == 0 || date.getDay() == 6) { return 'day-item weekend weekend-border-bottom' } else { return 'day-item' } } } ] }, { name: 'quarter', height: 60, min_column_width: 110, scales: [ { unit: 'quarter', step: 1, format: function (date) { let yearStr = new Date(date).getFullYear() + '年' let dateToStr = gantt.date.date_to_str('%M') let endDate = gantt.date.add(gantt.date.add(date, 3, 'month'), -1, 'day') return yearStr + dateToStr(date) + ' - ' + dateToStr(endDate) } }, { unit: 'week', step: 1, format: function (date) { let dateToStr = gantt.date.date_to_str('%m-%d') let endDate = gantt.date.add(date, 6, 'day') let weekNum = gantt.date.date_to_str('%W')(date) return dateToStr(date) + ' 至 ' + dateToStr(endDate) } } ] }, { name: 'year', scale_height: 50, min_column_width: 150, scales: [ { unit: 'year', step: 1, format: '%Y年' }, { unit: 'month', format: '%Y-%m' } ] } ]}
View Code