vxe-gantt 4.2.4 → 4.2.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/gantt/src/gantt-chart.js +93 -15
- package/es/gantt/src/gantt-view.js +72 -10
- package/es/gantt/src/gantt.js +12 -4
- package/es/gantt/src/static.js +6 -2
- package/es/gantt/src/table-emits.js +1 -0
- package/es/gantt/src/util.js +8 -4
- package/es/gantt/style.css +28 -6
- package/es/gantt/style.min.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/ui/index.js +4 -1
- package/es/ui/src/log.js +1 -1
- package/es/ui/src/utils.js +3 -0
- package/es/vxe-gantt/style.css +28 -6
- package/es/vxe-gantt/style.min.css +1 -1
- package/lib/gantt/src/gantt-chart.js +80 -13
- package/lib/gantt/src/gantt-chart.min.js +1 -1
- package/lib/gantt/src/gantt-view.js +70 -9
- package/lib/gantt/src/gantt-view.min.js +1 -1
- package/lib/gantt/src/gantt.js +13 -2
- package/lib/gantt/src/gantt.min.js +1 -1
- package/lib/gantt/src/static.js +6 -2
- package/lib/gantt/src/static.min.js +1 -1
- package/lib/gantt/src/table-emits.js +1 -1
- package/lib/gantt/src/table-emits.min.js +1 -1
- package/lib/gantt/src/util.js +10 -5
- package/lib/gantt/src/util.min.js +1 -1
- package/lib/gantt/style/style.css +28 -6
- package/lib/gantt/style/style.min.css +1 -1
- package/lib/index.umd.js +187 -33
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/ui/index.js +4 -1
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/ui/src/utils.js +4 -0
- package/lib/ui/src/utils.min.js +1 -1
- package/lib/vxe-gantt/style/style.css +28 -6
- package/lib/vxe-gantt/style/style.min.css +1 -1
- package/package.json +3 -3
- package/packages/gantt/src/gantt-chart.ts +100 -15
- package/packages/gantt/src/gantt-view.ts +69 -10
- package/packages/gantt/src/gantt.ts +13 -3
- package/packages/gantt/src/static.ts +7 -3
- package/packages/gantt/src/table-emits.ts +1 -0
- package/packages/gantt/src/util.ts +11 -7
- package/packages/ui/index.ts +3 -0
- package/packages/ui/src/utils.ts +4 -0
- package/styles/components/gantt-module/gantt-chart.scss +31 -4
- package/styles/theme/base.scss +1 -0
|
@@ -2,8 +2,8 @@ import { h, inject, ref, onMounted, onUnmounted } from 'vue';
|
|
|
2
2
|
import { defineVxeComponent } from '../../ui/src/comp';
|
|
3
3
|
import { VxeUI } from '@vxe-ui/core';
|
|
4
4
|
import XEUtils from 'xe-utils';
|
|
5
|
-
import { getCellRestHeight, hasMilestoneTask,
|
|
6
|
-
import { getStringValue, isEnableConf } from '../../ui/src/utils';
|
|
5
|
+
import { getCellRestHeight, hasMilestoneTask, getTaskType, hasSubviewTask } from './util';
|
|
6
|
+
import { getStringValue, isEnableConf, hasEnableConf } from '../../ui/src/utils';
|
|
7
7
|
const { getIcon, renderEmptyElement } = VxeUI;
|
|
8
8
|
const sourceType = 'gantt';
|
|
9
9
|
const viewType = 'chart';
|
|
@@ -14,12 +14,12 @@ export default defineVxeComponent({
|
|
|
14
14
|
const $xeGanttView = inject('$xeGanttView', {});
|
|
15
15
|
const { props: ganttProps, reactData: ganttReactData, internalData: ganttInternalData } = $xeGantt;
|
|
16
16
|
const { reactData: ganttViewReactData, internalData: ganttViewInternalData } = $xeGanttView;
|
|
17
|
-
const { computeProgressField, computeTitleField, computeTypeField, computeTaskBarOpts, computeScaleUnit, computeTaskLinkOpts, computeTaskBarMilestoneOpts } = $xeGantt.getComputeMaps();
|
|
17
|
+
const { computeProgressField, computeTitleField, computeTypeField, computeTaskBarOpts, computeScaleUnit, computeTaskLinkOpts, computeTaskBarMilestoneOpts, computeTaskBarSubviewOpts } = $xeGantt.getComputeMaps();
|
|
18
18
|
const refElem = ref();
|
|
19
19
|
const refTaskWrapperElem = ref();
|
|
20
20
|
const refChartBeforeWrapperElem = ref();
|
|
21
21
|
const refChartAfterWrapperElem = ref();
|
|
22
|
-
const renderTaskBar = ($xeTable, row, rowid, rowIndex, $rowIndex, _rowIndex) => {
|
|
22
|
+
const renderTaskBar = ($xeTable, row, rowid, rowIndex, $rowIndex, _rowIndex, rowChildren, isExpandTree) => {
|
|
23
23
|
const tableReactData = $xeTable.reactData;
|
|
24
24
|
const { resizeHeightFlag, pendingRowFlag } = tableReactData;
|
|
25
25
|
const tableInternalData = $xeTable.internalData;
|
|
@@ -30,13 +30,14 @@ export default defineVxeComponent({
|
|
|
30
30
|
const defaultRowHeight = computeDefaultRowHeight.value;
|
|
31
31
|
const ganttSlots = $xeGantt.context.slots;
|
|
32
32
|
const taskBarSlot = ganttSlots.taskBar || ganttSlots['task-bar'];
|
|
33
|
-
const { taskBarMilestoneConfig } = ganttProps;
|
|
33
|
+
const { taskBarMilestoneConfig, taskBarSubviewConfig } = ganttProps;
|
|
34
34
|
const { activeLink, activeBarRowid } = ganttReactData;
|
|
35
35
|
const titleField = computeTitleField.value;
|
|
36
36
|
const progressField = computeProgressField.value;
|
|
37
37
|
const typeField = computeTypeField.value;
|
|
38
38
|
const taskBarOpts = computeTaskBarOpts.value;
|
|
39
39
|
const taskBarMilestoneOpts = computeTaskBarMilestoneOpts.value;
|
|
40
|
+
const taskBarSubviewOpts = computeTaskBarSubviewOpts.value;
|
|
40
41
|
const scaleUnit = computeScaleUnit.value;
|
|
41
42
|
const barParams = { $gantt: $xeGantt, row, scaleType: scaleUnit };
|
|
42
43
|
const { showProgress, showContent, contentMethod, barStyle, moveable, showTooltip } = taskBarOpts;
|
|
@@ -47,8 +48,9 @@ export default defineVxeComponent({
|
|
|
47
48
|
const cellHeight = resizeHeightFlag ? getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight) : 0;
|
|
48
49
|
let title = getStringValue(XEUtils.get(row, titleField));
|
|
49
50
|
const progressValue = showProgress ? Math.min(100, Math.max(0, XEUtils.toNumber(XEUtils.get(row, progressField)))) : 0;
|
|
50
|
-
const
|
|
51
|
-
const isMilestone = !!(taskBarMilestoneConfig && hasMilestoneTask(
|
|
51
|
+
const renderTaskType = getTaskType(XEUtils.get(row, typeField));
|
|
52
|
+
const isMilestone = !!(hasEnableConf(taskBarMilestoneConfig, taskBarMilestoneOpts) && hasMilestoneTask(renderTaskType));
|
|
53
|
+
const isSubview = !!(hasEnableConf(taskBarSubviewConfig, taskBarSubviewOpts) && hasSubviewTask(renderTaskType));
|
|
52
54
|
const vbStyle = {};
|
|
53
55
|
const vpStyle = {
|
|
54
56
|
width: `${progressValue || 0}%`
|
|
@@ -109,7 +111,85 @@ export default defineVxeComponent({
|
|
|
109
111
|
cbVNs.push(h('div', Object.assign({ key: 'cbc', class: 'vxe-gantt-view--chart-custom-bar-content-wrapper' }, ctOns), $xeGantt.callSlot(taskBarSlot, barParams)));
|
|
110
112
|
}
|
|
111
113
|
else {
|
|
112
|
-
if (
|
|
114
|
+
if (isSubview && rowChildren && rowChildren.length) {
|
|
115
|
+
if (isExpandTree) {
|
|
116
|
+
if (taskBarSubviewOpts.showOverview) {
|
|
117
|
+
cbVNs.push(h('div', {
|
|
118
|
+
key: 'vcso',
|
|
119
|
+
class: ['vxe-gantt-view--chart-subview-wrapper is--overview', {
|
|
120
|
+
'is--round': round,
|
|
121
|
+
'is--move': moveable
|
|
122
|
+
}]
|
|
123
|
+
}, [
|
|
124
|
+
h('div', {
|
|
125
|
+
key: rowid,
|
|
126
|
+
rowid: rowid,
|
|
127
|
+
class: 'vxe-gantt-view--chart-subview-bar'
|
|
128
|
+
}, [
|
|
129
|
+
h('div', {
|
|
130
|
+
class: 'vxe-gantt-view--chart-subview-bar-content-wrapper'
|
|
131
|
+
}, [
|
|
132
|
+
showContent
|
|
133
|
+
? h('div', {
|
|
134
|
+
class: 'vxe-gantt-view--chart-content'
|
|
135
|
+
}, title)
|
|
136
|
+
: renderEmptyElement($xeGantt)
|
|
137
|
+
])
|
|
138
|
+
])
|
|
139
|
+
]));
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
cbVNs.push(h('div', {
|
|
144
|
+
key: 'vcsc',
|
|
145
|
+
class: ['vxe-gantt-view--chart-subview-wrapper is--inline', {
|
|
146
|
+
'is--round': round,
|
|
147
|
+
'is--move': moveable
|
|
148
|
+
}]
|
|
149
|
+
}, rowChildren.map(childRow => {
|
|
150
|
+
const childRowid = $xeTable.getRowid(childRow);
|
|
151
|
+
let childTitle = getStringValue(XEUtils.get(childRow, titleField));
|
|
152
|
+
const childProgressValue = showProgress ? Math.min(100, Math.max(0, XEUtils.toNumber(XEUtils.get(childRow, progressField)))) : 0;
|
|
153
|
+
const childRenderTaskType = getTaskType(XEUtils.get(childRow, typeField));
|
|
154
|
+
const vpcStyle = {
|
|
155
|
+
width: `${childProgressValue || 0}%`
|
|
156
|
+
};
|
|
157
|
+
if (isBarRowStyle) {
|
|
158
|
+
const { completedBgColor } = barStyObj;
|
|
159
|
+
if (completedBgColor) {
|
|
160
|
+
vpcStyle.backgroundColor = completedBgColor;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (contentMethod) {
|
|
164
|
+
childTitle = getStringValue(contentMethod({ row: childRow, title: childTitle, scaleType: scaleUnit }));
|
|
165
|
+
}
|
|
166
|
+
return h('div', {
|
|
167
|
+
key: childRowid,
|
|
168
|
+
rowid: childRowid,
|
|
169
|
+
class: ['vxe-gantt-view--chart-subview-bar', `is--${childRenderTaskType}`, {
|
|
170
|
+
'row--pending': !!pendingRowFlag && !!pendingRowMaps[childRowid]
|
|
171
|
+
}]
|
|
172
|
+
}, [
|
|
173
|
+
h('div', {
|
|
174
|
+
class: 'vxe-gantt-view--chart-subview-bar-content-wrapper'
|
|
175
|
+
}, [
|
|
176
|
+
showProgress
|
|
177
|
+
? h('div', {
|
|
178
|
+
class: 'vxe-gantt-view--chart-progress',
|
|
179
|
+
style: vpcStyle
|
|
180
|
+
})
|
|
181
|
+
: renderEmptyElement($xeGantt),
|
|
182
|
+
showContent
|
|
183
|
+
? h('div', {
|
|
184
|
+
class: 'vxe-gantt-view--chart-content'
|
|
185
|
+
}, childTitle)
|
|
186
|
+
: renderEmptyElement($xeGantt)
|
|
187
|
+
])
|
|
188
|
+
]);
|
|
189
|
+
})));
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
else if (isMilestone) {
|
|
113
193
|
const { icon, iconStatus, iconStyle } = taskBarMilestoneOpts;
|
|
114
194
|
const tbmParams = { $gantt: $xeGantt, row };
|
|
115
195
|
cbVNs.push(h('div', Object.assign({ key: 'vcm', class: 'vxe-gantt-view--chart-milestone-wrapper' }, ctOns), [
|
|
@@ -132,14 +212,12 @@ export default defineVxeComponent({
|
|
|
132
212
|
cbVNs.push(h('div', Object.assign({ key: 'vbc', class: 'vxe-gantt-view--chart-bar-content-wrapper' }, ctOns), [
|
|
133
213
|
showProgress
|
|
134
214
|
? h('div', {
|
|
135
|
-
key: 'vcp',
|
|
136
215
|
class: 'vxe-gantt-view--chart-progress',
|
|
137
216
|
style: vpStyle
|
|
138
217
|
})
|
|
139
218
|
: renderEmptyElement($xeGantt),
|
|
140
219
|
showContent
|
|
141
220
|
? h('div', {
|
|
142
|
-
key: 'vcc',
|
|
143
221
|
class: 'vxe-gantt-view--chart-content'
|
|
144
222
|
}, title)
|
|
145
223
|
: renderEmptyElement($xeGantt)
|
|
@@ -149,7 +227,7 @@ export default defineVxeComponent({
|
|
|
149
227
|
return h('div', {
|
|
150
228
|
key: rowid,
|
|
151
229
|
rowid,
|
|
152
|
-
class: ['vxe-gantt-view--chart-row', `is--${
|
|
230
|
+
class: ['vxe-gantt-view--chart-row', `is--${renderTaskType}`, {
|
|
153
231
|
'row--pending': !!pendingRowFlag && !!pendingRowMaps[rowid],
|
|
154
232
|
'is--round': round,
|
|
155
233
|
'is--move': moveable
|
|
@@ -162,7 +240,7 @@ export default defineVxeComponent({
|
|
|
162
240
|
}
|
|
163
241
|
}, [
|
|
164
242
|
h('div', {
|
|
165
|
-
class: [taskBarSlot ? 'vxe-gantt-view--chart-custom-bar' : 'vxe-gantt-view--chart-bar', `is--${
|
|
243
|
+
class: [taskBarSlot ? 'vxe-gantt-view--chart-custom-bar' : 'vxe-gantt-view--chart-bar', `is--${renderTaskType}`, {
|
|
166
244
|
'is--active': activeBarRowid === rowid,
|
|
167
245
|
'active--link': activeLink && (rowid === `${activeLink.from}` || rowid === `${activeLink.to}`)
|
|
168
246
|
}],
|
|
@@ -204,15 +282,15 @@ export default defineVxeComponent({
|
|
|
204
282
|
rowIndex = rowRest.index;
|
|
205
283
|
_rowIndex = rowRest._index;
|
|
206
284
|
}
|
|
207
|
-
trVNs.push(renderTaskBar($xeTable, row, rowid, rowIndex, $rowIndex, _rowIndex));
|
|
208
285
|
let isExpandTree = false;
|
|
209
286
|
let rowChildren = [];
|
|
210
|
-
if (treeConfig
|
|
287
|
+
if (treeConfig) {
|
|
211
288
|
rowChildren = row[childrenField];
|
|
212
289
|
isExpandTree = !!treeExpandedFlag && rowChildren && rowChildren.length > 0 && !!treeExpandedMaps[rowid];
|
|
213
290
|
}
|
|
291
|
+
trVNs.push(renderTaskBar($xeTable, row, rowid, rowIndex, $rowIndex, _rowIndex, rowChildren, isExpandTree));
|
|
214
292
|
// 如果是树形表格
|
|
215
|
-
if (isExpandTree) {
|
|
293
|
+
if (treeConfig && isExpandTree && !scrollYLoad && !transform) {
|
|
216
294
|
trVNs.push(...renderTaskRows($xeTable, rowChildren));
|
|
217
295
|
}
|
|
218
296
|
});
|
|
@@ -2,7 +2,7 @@ import { h, ref, reactive, nextTick, inject, onBeforeUnmount, provide, computed,
|
|
|
2
2
|
import { defineVxeComponent } from '../../ui/src/comp';
|
|
3
3
|
import { setScrollTop, setScrollLeft, removeClass, addClass, hasClass } from '../../ui/src/dom';
|
|
4
4
|
import { VxeUI } from '@vxe-ui/core';
|
|
5
|
-
import { getRefElem, getStandardGapTime, getTaskBarLeft, getTaskBarWidth, hasMilestoneTask } from './util';
|
|
5
|
+
import { getRefElem, getStandardGapTime, getTaskBarLeft, getTaskBarWidth, hasMilestoneTask, getTaskType, hasSubviewTask } from './util';
|
|
6
6
|
import XEUtils from 'xe-utils';
|
|
7
7
|
import GanttViewHeaderComponent from './gantt-header';
|
|
8
8
|
import GanttViewBodyComponent from './gantt-body';
|
|
@@ -198,13 +198,20 @@ export default defineVxeComponent({
|
|
|
198
198
|
const updateTodayData = () => {
|
|
199
199
|
const ganttReactData = $xeGantt.reactData;
|
|
200
200
|
const { taskScaleList } = ganttReactData;
|
|
201
|
+
const minScale = computeMinScale.value;
|
|
201
202
|
const weekScale = taskScaleList.find(item => item.type === 'week');
|
|
203
|
+
const isMinWeek = minScale.type === 'week';
|
|
202
204
|
const itemDate = new Date();
|
|
203
|
-
|
|
205
|
+
let [yyyy, M, MM, dd, HH, mm, ss] = XEUtils.toDateString(itemDate, 'yyyy-M-MM-dd-HH-mm-ss').split('-');
|
|
204
206
|
const e = itemDate.getDay();
|
|
205
207
|
const E = e + 1;
|
|
206
208
|
const q = Math.ceil((itemDate.getMonth() + 1) / 3);
|
|
207
|
-
const W = XEUtils.getYearWeek(itemDate, weekScale ? weekScale.startDay : undefined)
|
|
209
|
+
const W = `${XEUtils.getYearWeek(itemDate, weekScale ? weekScale.startDay : undefined)}`;
|
|
210
|
+
if (isMinWeek && checkWeekOfsetYear(W, M)) {
|
|
211
|
+
yyyy = `${Number(yyyy) + 1}`;
|
|
212
|
+
M = '1';
|
|
213
|
+
MM = '0' + M;
|
|
214
|
+
}
|
|
208
215
|
internalData.todayDateMaps = {
|
|
209
216
|
year: yyyy,
|
|
210
217
|
quarter: `${yyyy}_q${q}`,
|
|
@@ -631,14 +638,24 @@ export default defineVxeComponent({
|
|
|
631
638
|
const rowid = $xeTable.getRowid(row);
|
|
632
639
|
let startValue = XEUtils.get(row, startField);
|
|
633
640
|
let endValue = XEUtils.get(row, endField);
|
|
634
|
-
const
|
|
641
|
+
const renderTaskType = getTaskType(XEUtils.get(row, typeField));
|
|
642
|
+
const isMilestone = hasMilestoneTask(renderTaskType);
|
|
643
|
+
const isSubview = hasSubviewTask(renderTaskType);
|
|
635
644
|
if (isMilestone) {
|
|
636
645
|
if (!startValue) {
|
|
637
646
|
startValue = endValue;
|
|
638
647
|
}
|
|
639
648
|
endValue = startValue;
|
|
640
649
|
}
|
|
641
|
-
if (
|
|
650
|
+
if (isSubview) {
|
|
651
|
+
ctMaps[rowid] = {
|
|
652
|
+
row,
|
|
653
|
+
rowid,
|
|
654
|
+
oLeftSize: 0,
|
|
655
|
+
oWidthSize: 0
|
|
656
|
+
};
|
|
657
|
+
}
|
|
658
|
+
else if (startValue && endValue) {
|
|
642
659
|
const { offsetLeftSize, offsetWidthSize } = renderFn(startValue, endValue);
|
|
643
660
|
ctMaps[rowid] = {
|
|
644
661
|
row,
|
|
@@ -762,13 +779,16 @@ export default defineVxeComponent({
|
|
|
762
779
|
reactData.overflowX = overflowX;
|
|
763
780
|
}
|
|
764
781
|
};
|
|
765
|
-
const
|
|
782
|
+
const updateTaskChartStyle = () => {
|
|
766
783
|
const { dragBarRow } = ganttInternalData;
|
|
767
784
|
const { viewCellWidth } = reactData;
|
|
768
785
|
const { elemStore, chartMaps } = internalData;
|
|
769
786
|
const $xeTable = internalData.xeTable;
|
|
770
787
|
const chartWrapper = getRefElem(elemStore['main-chart-task-wrapper']);
|
|
771
788
|
if (chartWrapper && $xeTable) {
|
|
789
|
+
const { computeTreeOpts } = $xeTable.getComputeMaps();
|
|
790
|
+
const treeOpts = computeTreeOpts.value;
|
|
791
|
+
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
772
792
|
XEUtils.arrayEach(chartWrapper.children, (rowEl) => {
|
|
773
793
|
const barEl = rowEl.children[0];
|
|
774
794
|
if (!barEl) {
|
|
@@ -779,9 +799,51 @@ export default defineVxeComponent({
|
|
|
779
799
|
return;
|
|
780
800
|
}
|
|
781
801
|
const chartRest = rowid ? chartMaps[rowid] : null;
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
802
|
+
const row = chartRest ? chartRest.row : null;
|
|
803
|
+
// 子任务视图
|
|
804
|
+
if (hasClass(barEl, 'is--subview')) {
|
|
805
|
+
const childWrapperEl = barEl.firstElementChild;
|
|
806
|
+
if (childWrapperEl) {
|
|
807
|
+
// 行内展示
|
|
808
|
+
if (hasClass(childWrapperEl, 'is--inline')) {
|
|
809
|
+
XEUtils.arrayEach(childWrapperEl.children, (childEl) => {
|
|
810
|
+
const childBarEl = childEl;
|
|
811
|
+
const childRowid = childBarEl.getAttribute('rowid') || '';
|
|
812
|
+
const childChartRest = childRowid ? chartMaps[childRowid] : null;
|
|
813
|
+
childBarEl.style.left = `${getTaskBarLeft(childChartRest, viewCellWidth)}px`;
|
|
814
|
+
// 里程碑不需要宽度
|
|
815
|
+
if (!hasClass(childBarEl, 'is--milestone')) {
|
|
816
|
+
childBarEl.style.width = `${getTaskBarWidth(childChartRest, viewCellWidth)}px`;
|
|
817
|
+
}
|
|
818
|
+
});
|
|
819
|
+
}
|
|
820
|
+
else {
|
|
821
|
+
// 如果展开子任务
|
|
822
|
+
const childBarEl = childWrapperEl.firstElementChild;
|
|
823
|
+
if (childBarEl) {
|
|
824
|
+
let minChildLeftSize = 0;
|
|
825
|
+
let maxChildLeftSize = 0;
|
|
826
|
+
const rowChildren = row ? row[childrenField] : [];
|
|
827
|
+
rowChildren.forEach(childRow => {
|
|
828
|
+
const childRowid = $xeTable.getRowid(childRow);
|
|
829
|
+
const childChartRest = childRowid ? chartMaps[childRowid] : null;
|
|
830
|
+
if (childChartRest) {
|
|
831
|
+
maxChildLeftSize = Math.max(maxChildLeftSize, childChartRest.oLeftSize + childChartRest.oWidthSize);
|
|
832
|
+
minChildLeftSize = minChildLeftSize ? Math.min(minChildLeftSize, childChartRest.oLeftSize) : childChartRest.oLeftSize;
|
|
833
|
+
}
|
|
834
|
+
});
|
|
835
|
+
childBarEl.style.left = `${viewCellWidth * minChildLeftSize}px`;
|
|
836
|
+
childBarEl.style.width = `${viewCellWidth * (maxChildLeftSize - minChildLeftSize)}px`;
|
|
837
|
+
}
|
|
838
|
+
}
|
|
839
|
+
}
|
|
840
|
+
}
|
|
841
|
+
else {
|
|
842
|
+
barEl.style.left = `${getTaskBarLeft(chartRest, viewCellWidth)}px`;
|
|
843
|
+
// 里程碑不需要宽度
|
|
844
|
+
if (!hasClass(barEl, 'is--milestone')) {
|
|
845
|
+
barEl.style.width = `${getTaskBarWidth(chartRest, viewCellWidth)}px`;
|
|
846
|
+
}
|
|
785
847
|
}
|
|
786
848
|
});
|
|
787
849
|
}
|
|
@@ -901,7 +963,7 @@ export default defineVxeComponent({
|
|
|
901
963
|
}
|
|
902
964
|
reactData.scrollXWidth = viewTableWidth;
|
|
903
965
|
return Promise.all([
|
|
904
|
-
|
|
966
|
+
updateTaskChartStyle(),
|
|
905
967
|
$xeGantt.handleUpdateTaskLinkStyle ? $xeGantt.handleUpdateTaskLinkStyle($xeGanttView) : null
|
|
906
968
|
]);
|
|
907
969
|
};
|
package/es/gantt/src/gantt.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { h, ref, computed, provide, reactive, onBeforeUnmount, onUnmounted, watch, nextTick, onMounted } from 'vue';
|
|
2
2
|
import { defineVxeComponent } from '../../ui/src/comp';
|
|
3
3
|
import XEUtils from 'xe-utils';
|
|
4
|
-
import { getLastZIndex, nextZIndex, isEnableConf, formatText } from '../../ui/src/utils';
|
|
4
|
+
import { getLastZIndex, nextZIndex, isEnableConf, hasEnableConf, formatText } from '../../ui/src/utils';
|
|
5
5
|
import { getOffsetHeight, getPaddingTopBottomSize, getDomNode, toCssUnit, addClass, removeClass } from '../../ui/src/dom';
|
|
6
6
|
import { getSlotVNs } from '../../ui/src/vn';
|
|
7
7
|
import { VxeUI } from '@vxe-ui/core';
|
|
@@ -86,7 +86,7 @@ function getViewTypeLevel(type) {
|
|
|
86
86
|
export default defineVxeComponent({
|
|
87
87
|
name: 'VxeGantt',
|
|
88
88
|
mixins: [],
|
|
89
|
-
props: Object.assign(Object.assign({}, tableProps), { columns: Array, pagerConfig: Object, proxyConfig: Object, toolbarConfig: Object, formConfig: Object, zoomConfig: Object, links: Array, layouts: Array, taskConfig: Object, taskViewScaleConfig: Object, taskViewConfig: Object, taskLinkConfig: Object, taskBarConfig: Object, taskBarMilestoneConfig: Object, taskBarTooltipConfig: Object, taskSplitConfig: Object, taskBarResizeConfig: Object, taskBarMoveConfig: Object, size: {
|
|
89
|
+
props: Object.assign(Object.assign({}, tableProps), { columns: Array, pagerConfig: Object, proxyConfig: Object, toolbarConfig: Object, formConfig: Object, zoomConfig: Object, links: Array, layouts: Array, taskConfig: Object, taskViewScaleConfig: Object, taskViewConfig: Object, taskLinkConfig: Object, taskBarConfig: Object, taskBarMilestoneConfig: Object, taskBarSubviewConfig: Object, taskBarTooltipConfig: Object, taskSplitConfig: Object, taskBarResizeConfig: Object, taskBarMoveConfig: Object, size: {
|
|
90
90
|
type: String,
|
|
91
91
|
default: () => getConfig().gantt.size || getConfig().size
|
|
92
92
|
} }),
|
|
@@ -189,6 +189,9 @@ export default defineVxeComponent({
|
|
|
189
189
|
const computeTaskBarMilestoneOpts = computed(() => {
|
|
190
190
|
return Object.assign({}, getConfig().gantt.taskBarMilestoneConfig, props.taskBarMilestoneConfig);
|
|
191
191
|
});
|
|
192
|
+
const computeTaskBarSubviewOpts = computed(() => {
|
|
193
|
+
return Object.assign({}, getConfig().gantt.taskBarSubviewConfig, props.taskBarSubviewConfig);
|
|
194
|
+
});
|
|
192
195
|
const computeTaskBarTooltipOpts = computed(() => {
|
|
193
196
|
return Object.assign({}, getConfig().gantt.taskBarTooltipConfig, props.taskBarTooltipConfig);
|
|
194
197
|
});
|
|
@@ -248,12 +251,13 @@ export default defineVxeComponent({
|
|
|
248
251
|
return !!(scrollbarOpts.y && scrollbarOpts.y.position === 'left');
|
|
249
252
|
});
|
|
250
253
|
const computeStyles = computed(() => {
|
|
251
|
-
const { height, maxHeight } = props;
|
|
254
|
+
const { height, maxHeight, taskBarSubviewConfig } = props;
|
|
252
255
|
const { isZMax, tZindex } = reactData;
|
|
253
256
|
const taskViewOpts = computeTaskViewOpts.value;
|
|
254
257
|
const { tableStyle } = taskViewOpts;
|
|
255
258
|
const taskBarOpts = computeTaskBarOpts.value;
|
|
256
259
|
const { barStyle } = taskBarOpts;
|
|
260
|
+
const taskBarSubviewOpts = computeTaskBarSubviewOpts.value;
|
|
257
261
|
const stys = {};
|
|
258
262
|
if (isZMax) {
|
|
259
263
|
stys.zIndex = tZindex;
|
|
@@ -267,13 +271,16 @@ export default defineVxeComponent({
|
|
|
267
271
|
}
|
|
268
272
|
}
|
|
269
273
|
if (barStyle && !XEUtils.isFunction(barStyle)) {
|
|
270
|
-
const { bgColor, completedBgColor } = barStyle;
|
|
274
|
+
const { bgColor, completedBgColor, overviewBgColor } = barStyle;
|
|
271
275
|
if (bgColor) {
|
|
272
276
|
stys['--vxe-ui-gantt-view-task-bar-background-color'] = bgColor;
|
|
273
277
|
}
|
|
274
278
|
if (completedBgColor) {
|
|
275
279
|
stys['--vxe-ui-gantt-view-task-bar-completed-background-color'] = completedBgColor;
|
|
276
280
|
}
|
|
281
|
+
if (overviewBgColor && hasEnableConf(taskBarSubviewConfig, taskBarSubviewOpts)) {
|
|
282
|
+
stys['--vxe-ui-gantt-view-task-bar-overview-background-color'] = overviewBgColor;
|
|
283
|
+
}
|
|
277
284
|
}
|
|
278
285
|
if (tableStyle) {
|
|
279
286
|
const { width: defTbWidth } = tableStyle;
|
|
@@ -434,6 +441,7 @@ export default defineVxeComponent({
|
|
|
434
441
|
computeTaskBarResizeOpts,
|
|
435
442
|
computeTaskSplitOpts,
|
|
436
443
|
computeTaskBarMilestoneOpts,
|
|
444
|
+
computeTaskBarSubviewOpts,
|
|
437
445
|
computeTaskBarTooltipOpts,
|
|
438
446
|
computeTaskLinkOpts,
|
|
439
447
|
computeTaskViewScales,
|
package/es/gantt/src/static.js
CHANGED
|
@@ -21,12 +21,16 @@ export var VxeGanttDependencyType;
|
|
|
21
21
|
VxeGanttDependencyType[VxeGanttDependencyType["FinishToFinish"] = 3] = "FinishToFinish";
|
|
22
22
|
})(VxeGanttDependencyType || (VxeGanttDependencyType = {}));
|
|
23
23
|
/**
|
|
24
|
-
*
|
|
24
|
+
* 任务渲染类型
|
|
25
25
|
*/
|
|
26
26
|
export var VxeGanttTaskType;
|
|
27
27
|
(function (VxeGanttTaskType) {
|
|
28
28
|
/**
|
|
29
|
-
*
|
|
29
|
+
* 里程碑类型,该类型节点不需要结束日期
|
|
30
30
|
*/
|
|
31
31
|
VxeGanttTaskType["Milestone"] = "milestone";
|
|
32
|
+
/**
|
|
33
|
+
* 子视图类型,该类型会将子任务渲染到一行,无需开始日期和结束日期
|
|
34
|
+
*/
|
|
35
|
+
VxeGanttTaskType["Subview"] = "subview";
|
|
32
36
|
})(VxeGanttTaskType || (VxeGanttTaskType = {}));
|
package/es/gantt/src/util.js
CHANGED
|
@@ -31,14 +31,18 @@ export function getTaskBarLeft(chartRest, viewCellWidth) {
|
|
|
31
31
|
return chartRest ? viewCellWidth * chartRest.oLeftSize : 0;
|
|
32
32
|
}
|
|
33
33
|
export function getTaskBarWidth(chartRest, viewCellWidth) {
|
|
34
|
-
return Math.max(1, chartRest ? (Math.floor(viewCellWidth * chartRest.oWidthSize) - 1) : 0);
|
|
34
|
+
return chartRest && chartRest.oWidthSize ? Math.max(1, chartRest ? (Math.floor(viewCellWidth * chartRest.oWidthSize) - 1) : 0) : 0;
|
|
35
35
|
}
|
|
36
36
|
const taskTypeMaps = {
|
|
37
|
-
milestone: true
|
|
37
|
+
milestone: true,
|
|
38
|
+
subview: true
|
|
38
39
|
};
|
|
39
40
|
export function hasMilestoneTask(type) {
|
|
40
|
-
return
|
|
41
|
+
return type === 'milestone';
|
|
41
42
|
}
|
|
42
|
-
export function
|
|
43
|
+
export function hasSubviewTask(type) {
|
|
44
|
+
return type === 'subview';
|
|
45
|
+
}
|
|
46
|
+
export function getTaskType(type) {
|
|
43
47
|
return taskTypeMaps[type] ? type : 'default';
|
|
44
48
|
}
|
package/es/gantt/style.css
CHANGED
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
width: 100%;
|
|
12
12
|
height: 0;
|
|
13
13
|
}
|
|
14
|
-
.vxe-gantt-view--chart-row.row--pending .vxe-gantt-view--chart-bar
|
|
14
|
+
.vxe-gantt-view--chart-row.row--pending .vxe-gantt-view--chart-bar,
|
|
15
|
+
.vxe-gantt-view--chart-row.row--pending .vxe-gantt-view--chart-subview-bar {
|
|
15
16
|
color: var(--vxe-ui-font-disabled-color);
|
|
16
17
|
opacity: 0.5;
|
|
17
18
|
text-decoration: line-through;
|
|
@@ -28,7 +29,22 @@
|
|
|
28
29
|
border-radius: var(--vxe-ui-gantt-view-task-bar-border-radius);
|
|
29
30
|
}
|
|
30
31
|
|
|
32
|
+
.vxe-gantt-view--chart-subview-wrapper.is--round > .vxe-gantt-view--chart-subview-bar {
|
|
33
|
+
border-radius: var(--vxe-ui-gantt-view-task-bar-border-radius);
|
|
34
|
+
}
|
|
35
|
+
.vxe-gantt-view--chart-subview-wrapper.is--round > .vxe-gantt-view--chart-subview-bar .vxe-gantt-view--chart-subview-bar-content-wrapper {
|
|
36
|
+
border-radius: var(--vxe-ui-gantt-view-task-bar-border-radius);
|
|
37
|
+
}
|
|
38
|
+
.vxe-gantt-view--chart-subview-wrapper.is--round > .vxe-gantt-view--chart-subview-bar:hover::after {
|
|
39
|
+
border-radius: var(--vxe-ui-gantt-view-task-bar-border-radius);
|
|
40
|
+
}
|
|
41
|
+
.vxe-gantt-view--chart-subview-wrapper.is--overview > .vxe-gantt-view--chart-subview-bar {
|
|
42
|
+
color: #ffffff;
|
|
43
|
+
background-color: var(--vxe-ui-gantt-view-task-bar-overview-background-color);
|
|
44
|
+
}
|
|
45
|
+
|
|
31
46
|
.vxe-gantt-view--chart-bar,
|
|
47
|
+
.vxe-gantt-view--chart-subview-bar,
|
|
32
48
|
.vxe-gantt-view--chart-custom-bar {
|
|
33
49
|
display: flex;
|
|
34
50
|
flex-direction: row;
|
|
@@ -39,18 +55,21 @@
|
|
|
39
55
|
pointer-events: all;
|
|
40
56
|
}
|
|
41
57
|
.vxe-gantt-view--chart-bar.is--default,
|
|
58
|
+
.vxe-gantt-view--chart-subview-bar.is--default,
|
|
42
59
|
.vxe-gantt-view--chart-custom-bar.is--default {
|
|
43
60
|
color: #ffffff;
|
|
44
61
|
background-color: var(--vxe-ui-gantt-view-task-bar-background-color);
|
|
45
62
|
}
|
|
46
63
|
|
|
47
64
|
.vxe-gantt-view--chart-bar-content-wrapper,
|
|
48
|
-
.vxe-gantt-view--chart-custom-bar-content-wrapper
|
|
65
|
+
.vxe-gantt-view--chart-custom-bar-content-wrapper,
|
|
66
|
+
.vxe-gantt-view--chart-subview-bar-content-wrapper {
|
|
49
67
|
width: 100%;
|
|
50
68
|
overflow: hidden;
|
|
51
69
|
}
|
|
52
70
|
|
|
53
|
-
.vxe-gantt-view--chart-bar-content-wrapper
|
|
71
|
+
.vxe-gantt-view--chart-bar-content-wrapper,
|
|
72
|
+
.vxe-gantt-view--chart-subview-bar-content-wrapper {
|
|
54
73
|
width: 100%;
|
|
55
74
|
height: 100%;
|
|
56
75
|
display: flex;
|
|
@@ -58,11 +77,13 @@
|
|
|
58
77
|
align-items: center;
|
|
59
78
|
}
|
|
60
79
|
|
|
61
|
-
.vxe-gantt-view--chart-bar
|
|
80
|
+
.vxe-gantt-view--chart-bar,
|
|
81
|
+
.vxe-gantt-view--chart-subview-bar {
|
|
62
82
|
align-items: center;
|
|
63
83
|
height: var(--vxe-ui-gantt-view-chart-bar-height);
|
|
64
84
|
}
|
|
65
|
-
.vxe-gantt-view--chart-bar.is--default:hover::after
|
|
85
|
+
.vxe-gantt-view--chart-bar.is--default:hover::after,
|
|
86
|
+
.vxe-gantt-view--chart-subview-bar.is--default:hover::after {
|
|
66
87
|
content: "";
|
|
67
88
|
position: absolute;
|
|
68
89
|
top: 0;
|
|
@@ -72,7 +93,8 @@
|
|
|
72
93
|
background-color: rgba(0, 0, 0, 0.1);
|
|
73
94
|
pointer-events: none;
|
|
74
95
|
}
|
|
75
|
-
.vxe-gantt-view--chart-bar.is--milestone
|
|
96
|
+
.vxe-gantt-view--chart-bar.is--milestone,
|
|
97
|
+
.vxe-gantt-view--chart-subview-bar.is--milestone {
|
|
76
98
|
white-space: nowrap;
|
|
77
99
|
}
|
|
78
100
|
|
package/es/gantt/style.min.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@charset "UTF-8";.vxe-gantt-view--chart-task-wrapper{position:absolute;top:0;left:0;pointer-events:none}.vxe-gantt-view--chart-row{position:relative;width:100%;height:0}.vxe-gantt-view--chart-row.row--pending .vxe-gantt-view--chart-bar{color:var(--vxe-ui-font-disabled-color);opacity:.5;text-decoration:line-through}.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-bar,.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-custom-bar{border-radius:var(--vxe-ui-gantt-view-task-bar-border-radius)}.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-bar .vxe-gantt-view--chart-bar-content-wrapper,.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-bar .vxe-gantt-view--chart-custom-bar-content-wrapper,.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-custom-bar .vxe-gantt-view--chart-bar-content-wrapper,.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-custom-bar .vxe-gantt-view--chart-custom-bar-content-wrapper{border-radius:var(--vxe-ui-gantt-view-task-bar-border-radius)}.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-bar:hover::after,.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-custom-bar:hover::after{border-radius:var(--vxe-ui-gantt-view-task-bar-border-radius)}.vxe-gantt-view--chart-bar,.vxe-gantt-view--chart-custom-bar{display:flex;flex-direction:row;position:absolute;top:50%;left:0;transform:translateY(-50%);pointer-events:all}.vxe-gantt-view--chart-bar.is--default,.vxe-gantt-view--chart-custom-bar.is--default{color:#fff;background-color:var(--vxe-ui-gantt-view-task-bar-background-color)}.vxe-gantt-view--chart-bar-content-wrapper,.vxe-gantt-view--chart-custom-bar-content-wrapper{width:100%;overflow:hidden}.vxe-gantt-view--chart-bar-content-wrapper{width:100%;height:100%;display:flex;flex-direction:row;align-items:center}.vxe-gantt-view--chart-bar{align-items:center;height:var(--vxe-ui-gantt-view-chart-bar-height)}.vxe-gantt-view--chart-bar.is--default:hover::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.1);pointer-events:none}.vxe-gantt-view--chart-bar.is--milestone{white-space:nowrap}.vxe-gantt-view--chart-progress{flex-shrink:0;width:0;height:100%;text-align:left;background-color:var(--vxe-ui-gantt-view-task-bar-completed-background-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-gantt-view--chart-content{position:absolute;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9em;padding:0 .6em}.vxe-gantt-view--chart-milestone-wrapper{display:flex;flex-direction:row;align-items:center}.vxe-gantt-view--chart-milestone-icon{flex-shrink:0;padding:0 .3em;color:var(--vxe-ui-font-primary-color)}.vxe-gantt-view--chart-milestone-icon.theme--primary{color:var(--vxe-ui-font-primary-color)}.vxe-gantt-view--chart-milestone-icon.theme--success{color:var(--vxe-ui-status-success-color)}.vxe-gantt-view--chart-milestone-icon.theme--info{color:var(--vxe-ui-status-info-color)}.vxe-gantt-view--chart-milestone-icon.theme--warning{color:var(--vxe-ui-status-warning-color)}.vxe-gantt-view--chart-milestone-icon.theme--danger{color:var(--vxe-ui-status-danger-color)}.vxe-gantt-view--chart-milestone-icon.theme--error{color:var(--vxe-ui-status-error-color)}.vxe-gantt-view--chart-milestone-icon i{display:inline-block}.vxe-gantt-view--chart-milestone-content{flex-grow:1}.vxe-gantt-view--chart-row.row--drag-move{transition:transform .5s ease}.vxe-gantt-view--chart-row.row--drag-origin{opacity:.3}.vxe-gantt{position:relative;display:flex;flex-direction:column}.vxe-gantt.is--loading:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:99;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:var(--vxe-ui-loading-background-color)}.vxe-gantt.is--loading>.vxe-gantt-view .vxe-loading{background-color:transparent}.vxe-gantt.is--maximize{position:fixed;top:0;left:0;width:100%;height:100%;padding:.5em 1em;background-color:var(--vxe-ui-layout-background-color)}.vxe-gantt.is--split-drag{cursor:col-resize}.vxe-gantt.is--split-drag .vxe-gantt--table-wrapper::after,.vxe-gantt.is--split-drag .vxe-gantt--view-wrapper::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;background:0 0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-gantt .vxe-gantt--bottom-wrapper,.vxe-gantt .vxe-gantt--form-wrapper,.vxe-gantt .vxe-gantt--top-wrapper{position:relative}.vxe-gantt .vxe-gantt--gantt-container{position:relative;display:flex;flex-direction:row}.vxe-gantt .vxe-gantt--left-wrapper,.vxe-gantt .vxe-gantt--right-wrapper{flex-shrink:0;overflow:auto;outline:0}.vxe-gantt .vxe-gantt--table-wrapper,.vxe-gantt .vxe-gantt--view-wrapper{display:none;position:relative;flex-grow:1;overflow:hidden}.vxe-gantt .vxe-gantt--view-split-bar{flex-shrink:0;width:var(--vxe-ui-gantt-view-split-bar-width)}.vxe-gantt .vxe-gantt--view-split-bar.is--resize{cursor:col-resize}.vxe-gantt .vxe-gantt--view-split-bar-handle{background-color:var(--vxe-ui-gantt-view-split-bar-background-color)}.vxe-gantt .vxe-gantt--view-split-bar-handle:active,.vxe-gantt .vxe-gantt--view-split-bar-handle:hover{background-color:var(--vxe-ui-gantt-view-split-bar-hover-background-color)}.vxe-gantt.show--left .vxe-gantt--table-wrapper{display:block}.vxe-gantt.show--left.show--right .vxe-gantt--table-wrapper{flex-grow:unset;flex-shrink:0;width:var(--vxe-ui-gantt-view-table-default-width)}.vxe-gantt.show--right .vxe-gantt--view-wrapper{display:block}.vxe-gantt--layout-body-wrapper{display:flex;flex-direction:row;overflow:auto;flex-grow:1}.vxe-gantt--layout-body-content-wrapper{flex-grow:1;overflow:hidden}.vxe-gantt--layout-aside-left-wrapper,.vxe-gantt--layout-footer-wrapper,.vxe-gantt--layout-header-wrapper{flex-shrink:0;overflow:auto}.vxe-gantt--border-line{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;pointer-events:none;border:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--full .vxe-gantt-view--body-column,.vxe-gantt.border--full .vxe-gantt-view--footer-column,.vxe-gantt.border--full .vxe-gantt-view--header-column{background-image:linear-gradient(var(--vxe-ui-table-border-color),var(--vxe-ui-table-border-color)),linear-gradient(var(--vxe-ui-table-border-color),var(--vxe-ui-table-border-color));background-repeat:no-repeat;background-size:var(--vxe-ui-table-border-width) 100%,100% var(--vxe-ui-table-border-width);background-position:right top,right bottom}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--default .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-top-corner::before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;border-width:0;border-style:solid;border-color:var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-top-corner::before{border-bottom-width:var(--vxe-ui-table-border-width)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-bottom-corner{border-top:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--full .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--inner .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--outer .vxe-gantt-view--scroll-x-handle-appearance{position:absolute;left:0;width:100%;height:100%;z-index:1;pointer-events:none}.vxe-gantt.border--default.sx-pos--top .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--full.sx-pos--top .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--inner.sx-pos--top .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--outer.sx-pos--top .vxe-gantt-view--scroll-x-handle-appearance{top:0;border-bottom:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default.sx-pos--bottom .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--full.sx-pos--bottom .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--inner.sx-pos--bottom .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--outer.sx-pos--bottom .vxe-gantt-view--scroll-x-handle-appearance{bottom:0;height:calc(100% + var(--vxe-ui-table-border-width));border-top:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-top-corner::before{border-left-width:var(--vxe-ui-table-border-width);border-right-width:var(--vxe-ui-table-border-width)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-bottom-corner::before{border-left-width:var(--vxe-ui-table-border-width);border-right-width:var(--vxe-ui-table-border-width)}.vxe-gantt.border--default.sy-pos--right .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--default.sy-pos--right .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--full.sy-pos--right .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--full.sy-pos--right .vxe-gantt-view--scroll-y-top-corner::before{width:calc(100% + 1px);left:-1px}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-handle-appearance,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-handle-appearance{position:absolute;top:0;width:100%;height:100%;z-index:1;pointer-events:none}.vxe-gantt.border--default.sy-pos--left .vxe-gantt-view--scroll-y-handle-appearance,.vxe-gantt.border--full.sy-pos--left .vxe-gantt-view--scroll-y-handle-appearance{left:0;border-right:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default.sy-pos--right .vxe-gantt-view--scroll-y-handle-appearance,.vxe-gantt.border--full.sy-pos--right .vxe-gantt-view--scroll-y-handle-appearance{right:0;width:calc(100% + var(--vxe-ui-table-border-width));border-left:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--body-column,.vxe-gantt.border--default .vxe-gantt-view--footer-column,.vxe-gantt.border--default .vxe-gantt-view--header-column,.vxe-gantt.border--inner .vxe-gantt-view--body-column,.vxe-gantt.border--inner .vxe-gantt-view--footer-column,.vxe-gantt.border--inner .vxe-gantt-view--header-column{background-image:linear-gradient(var(--vxe-ui-table-border-color),var(--vxe-ui-table-border-color));background-repeat:no-repeat;background-size:100% var(--vxe-ui-table-border-width);background-position:right bottom}.vxe-gantt.border--default .vxe-gantt-view--footer-wrapper,.vxe-gantt.border--full .vxe-gantt-view--footer-wrapper,.vxe-gantt.border--inner .vxe-gantt-view--footer-wrapper{border-top:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--inner .vxe-gantt--border-line{border-width:0 0 1px 0}.vxe-gantt.border--none .vxe-gantt--border-line{display:none}.vxe-gantt--view-split-bar{position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-gantt--view-split-bar-handle{position:absolute;top:0;left:0;width:100%;height:100%;z-index:3}.vxe-gantt--view-split-bar-btn-wrapper{display:flex;flex-direction:column;align-items:center;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:5;pointer-events:none}.vxe-gantt--view-split-bar-btn-wrapper>div{margin-top:1em}.vxe-gantt--view-split-bar-btn-wrapper>div:first-child{margin-top:0}.vxe-gantt--view-split-bar-left-btn,.vxe-gantt--view-split-bar-right-btn{display:flex;flex-direction:row;align-items:center;justify-content:center;height:var(--vxe-ui-gantt-view-split-bar-height);width:var(--vxe-ui-gantt-view-split-bar-width);color:var(--vxe-ui-layout-background-color);border-radius:var(--vxe-ui-base-border-radius);background-color:var(--vxe-ui-gantt-view-handle-background-color);border:1px solid var(--vxe-ui-input-border-color);pointer-events:all;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .1s ease-in-out}.vxe-gantt--view-split-bar-left-btn:hover,.vxe-gantt--view-split-bar-right-btn:hover{color:#fff;background-color:var(--vxe-ui-font-primary-color)}.vxe-gantt--view-split-bar-left-btn:active,.vxe-gantt--view-split-bar-right-btn:active{transform:scale(.9)}.vxe-gantt--view-split-bar-left-btn i,.vxe-gantt--view-split-bar-right-btn i{font-size:.5em}.vxe-gantt--resizable-split-tip{display:none;position:absolute;top:0;left:0;width:1px;height:100%;z-index:7;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:col-resize}.vxe-gantt--resizable-split-tip:before{content:"";display:block;height:100%;background-color:var(--vxe-ui-table-resizable-drag-line-color)}.vxe-gantt--resizable-split-tip-number{position:absolute;top:0;left:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none}.vxe-gantt--resizable-split-number-left,.vxe-gantt--resizable-split-number-right{position:absolute;padding:.25em .25em;font-size:12px;border-radius:var(--vxe-ui-border-radius);white-space:nowrap;color:#fff;background-color:var(--vxe-ui-table-resizable-drag-line-color)}.vxe-gantt--resizable-split-number-left{right:0}.vxe-gantt--resizable-split-number-right{left:1px}.vxe-gantt.is--loading>.vxe-gantt-view--scroll-x-virtual{visibility:hidden}.vxe-gantt.is--loading>.vxe-gantt-view--layout-wrapper>.vxe-gantt-view--scroll-y-virtual{visibility:hidden}.vxe-gantt .vxe-gantt-view--scroll-x-virtual{height:0}.vxe-gantt .vxe-gantt-view--scroll-y-virtual{width:0}.vxe-gantt .vxe-gantt-view--scroll-x-virtual,.vxe-gantt .vxe-gantt-view--scroll-y-virtual{visibility:hidden;position:relative;flex-shrink:0;z-index:7}.vxe-gantt .vxe-gantt-view--scroll-x-handle,.vxe-gantt .vxe-gantt-view--scroll-x-left-corner,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner,.vxe-gantt .vxe-gantt-view--scroll-x-wrapper,.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt .vxe-gantt-view--scroll-y-handle,.vxe-gantt .vxe-gantt-view--scroll-y-top-corner,.vxe-gantt .vxe-gantt-view--scroll-y-wrapper{position:absolute}.vxe-gantt .vxe-gantt-view--scroll-x-handle,.vxe-gantt .vxe-gantt-view--scroll-x-wrapper{width:100%;left:0;bottom:0}.vxe-gantt .vxe-gantt-view--scroll-x-handle{overflow-y:hidden;overflow-x:scroll;height:18px}.vxe-gantt .vxe-gantt-view--scroll-x-wrapper{height:100%}.vxe-gantt .vxe-gantt-view--scroll-y-handle,.vxe-gantt .vxe-gantt-view--scroll-y-wrapper{width:100%;height:100%;right:0;top:0}.vxe-gantt .vxe-gantt-view--scroll-y-handle{overflow-y:scroll;overflow-x:hidden;width:18px;height:100%}.vxe-gantt .vxe-gantt-view--scroll-x-space{height:1px}.vxe-gantt .vxe-gantt-view--scroll-y-space{width:1px}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner,.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt .vxe-gantt-view--scroll-y-top-corner{display:none;position:absolute}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner{bottom:0;width:0;height:100%}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner::before,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner::before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;border-width:var(--vxe-ui-table-border-width);border-style:solid;border-color:var(--vxe-ui-table-border-color)}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner{left:0}.vxe-gantt .vxe-gantt-view--scroll-x-right-corner{right:0}.vxe-gantt.sy-pos--right .vxe-gantt-view--scroll-x-right-corner{right:1px}.vxe-gantt.sy-pos--right .vxe-gantt-view--scroll-x-right-corner::before{border-right:0}.vxe-gantt.sx-pos--bottom .vxe-gantt-view--scroll-x-right-corner{bottom:1px}.vxe-gantt.sx-pos--bottom .vxe-gantt-view--scroll-x-right-corner::before{border-bottom:0}.vxe-gantt .vxe-gantt-view--scroll-y-top-corner{background-color:var(--vxe-ui-table-header-background-color)}.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt .vxe-gantt-view--scroll-y-top-corner{top:0;right:0;width:100%;height:0}.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner{margin-top:-1px}.vxe-gantt-view--layout-wrapper{display:flex;flex-direction:row;background-color:var(--vxe-ui-layout-background-color)}.vxe-gantt-view--viewport-wrapper{position:relative;overflow:hidden;flex-grow:1}.vxe-gantt-view--render-vars{width:0;height:0;overflow:hidden}.vxe-gantt-view--column-info{width:var(--vxe-ui-gantt-view-default-cell-width)}.vxe-gantt-view{flex-grow:1;overflow:hidden}.vxe-gantt-view .vxe-body--x-space{width:100%;height:1px;margin-bottom:-1px}.vxe-gantt-view .vxe-body--y-space{width:0;float:left}.vxe-gantt-view--body-table,.vxe-gantt-view--header-table{border:0;border-spacing:0;border-collapse:separate;table-layout:fixed}.vxe-gantt-view--body-table col,.vxe-gantt-view--header-table col{width:var(--vxe-ui-gantt-view-default-cell-width)}.vxe-gantt-view--body-table{-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-gantt-view--header-wrapper{background-color:var(--vxe-ui-table-header-background-color)}.vxe-gantt-view--footer-wrapper{margin-top:calc(var(--vxe-ui-table-border-width) * -1);background-color:var(--vxe-ui-table-footer-background-color)}.vxe-gantt-view--body-wrapper,.vxe-gantt-view--header-wrapper{overflow:hidden}.vxe-gantt-view--header-inner-wrapper{overflow-y:hidden;overflow-x:scroll}.vxe-gantt-view--body-inner-wrapper{overflow-y:scroll;overflow-x:scroll}.vxe-gantt-view--body-inner-wrapper,.vxe-gantt-view--header-inner-wrapper{position:relative;width:100%;height:100%;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}.vxe-gantt-view--body-inner-wrapper::-webkit-scrollbar,.vxe-gantt-view--header-inner-wrapper::-webkit-scrollbar{display:none}.vxe-gantt-view--header-column{text-align:center;font-size:1em;height:var(--vxe-ui-gantt-view-cell-height,var(--vxe-ui-table-row-line-height))}.vxe-gantt-view--header-column.is--now{color:var(--vxe-ui-font-primary-color)}.vxe-gantt-view--body-column.is--now::before{content:"";position:absolute;top:0;left:0;width:1px;height:100%;background-color:var(--vxe-ui-font-primary-color)}.vxe-gantt-view--body-column,.vxe-gantt-view--footer-column,.vxe-gantt-view--header-column{position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-gantt-view--body-row.row--pending>.vxe-gantt-view--body-column::after{content:"";position:absolute;top:50%;left:0;width:100%;height:0;border-bottom:1px solid var(--vxe-ui-table-validate-error-color);z-index:1}.vxe-gantt-view--body-row.row--stripe{background-color:var(--vxe-ui-table-row-striped-background-color)}.vxe-gantt-view--body-row.row--radio{background-color:var(--vxe-ui-table-row-radio-checked-background-color)}.vxe-gantt-view--body-row.row--checked{background-color:var(--vxe-ui-table-row-checkbox-checked-background-color)}.vxe-gantt-view--body-row.row--current{background-color:var(--vxe-ui-table-row-current-background-color)}.vxe-gantt-view--body-row.row--hover{background-color:var(--vxe-ui-table-row-hover-background-color)}.vxe-gantt-view--body-row.row--hover.row--stripe{background-color:var(--vxe-ui-table-row-hover-striped-background-color)}.vxe-gantt-view--body-row.row--hover.row--radio{background-color:var(--vxe-ui-table-row-hover-radio-checked-background-color)}.vxe-gantt-view--body-row.row--hover.row--checked{background-color:var(--vxe-ui-table-row-hover-checkbox-checked-background-color)}.vxe-gantt-view--body-row.row--hover.row--current{background-color:var(--vxe-ui-table-row-hover-current-background-color)}.vxe-gantt-view--body-row.row--drag-move{transition:transform .5s ease}.vxe-gantt-view--body-row.row--drag-origin>.vxe-gantt-view--body-column{opacity:.3}.vxe-gantt-view--body-column .vxe-gantt-view-cell--row-resizable{position:absolute;left:0;bottom:-.4em;height:.8em;width:100%;text-align:center;z-index:1;cursor:row-resize}.vxe-gantt-view--body-row:last-child .vxe-gantt-view--body-column .vxe-gantt-view-cell--row-resizable{height:.4em;bottom:0}.vxe-gantt{font-size:var(--vxe-ui-font-size-default)}.vxe-gantt.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-gantt.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-gantt.size--mini{font-size:var(--vxe-ui-font-size-mini)}
|
|
1
|
+
@charset "UTF-8";.vxe-gantt-view--chart-task-wrapper{position:absolute;top:0;left:0;pointer-events:none}.vxe-gantt-view--chart-row{position:relative;width:100%;height:0}.vxe-gantt-view--chart-row.row--pending .vxe-gantt-view--chart-bar,.vxe-gantt-view--chart-row.row--pending .vxe-gantt-view--chart-subview-bar{color:var(--vxe-ui-font-disabled-color);opacity:.5;text-decoration:line-through}.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-bar,.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-custom-bar{border-radius:var(--vxe-ui-gantt-view-task-bar-border-radius)}.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-bar .vxe-gantt-view--chart-bar-content-wrapper,.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-bar .vxe-gantt-view--chart-custom-bar-content-wrapper,.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-custom-bar .vxe-gantt-view--chart-bar-content-wrapper,.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-custom-bar .vxe-gantt-view--chart-custom-bar-content-wrapper{border-radius:var(--vxe-ui-gantt-view-task-bar-border-radius)}.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-bar:hover::after,.vxe-gantt-view--chart-row.is--round>.vxe-gantt-view--chart-custom-bar:hover::after{border-radius:var(--vxe-ui-gantt-view-task-bar-border-radius)}.vxe-gantt-view--chart-subview-wrapper.is--round>.vxe-gantt-view--chart-subview-bar{border-radius:var(--vxe-ui-gantt-view-task-bar-border-radius)}.vxe-gantt-view--chart-subview-wrapper.is--round>.vxe-gantt-view--chart-subview-bar .vxe-gantt-view--chart-subview-bar-content-wrapper{border-radius:var(--vxe-ui-gantt-view-task-bar-border-radius)}.vxe-gantt-view--chart-subview-wrapper.is--round>.vxe-gantt-view--chart-subview-bar:hover::after{border-radius:var(--vxe-ui-gantt-view-task-bar-border-radius)}.vxe-gantt-view--chart-subview-wrapper.is--overview>.vxe-gantt-view--chart-subview-bar{color:#fff;background-color:var(--vxe-ui-gantt-view-task-bar-overview-background-color)}.vxe-gantt-view--chart-bar,.vxe-gantt-view--chart-custom-bar,.vxe-gantt-view--chart-subview-bar{display:flex;flex-direction:row;position:absolute;top:50%;left:0;transform:translateY(-50%);pointer-events:all}.vxe-gantt-view--chart-bar.is--default,.vxe-gantt-view--chart-custom-bar.is--default,.vxe-gantt-view--chart-subview-bar.is--default{color:#fff;background-color:var(--vxe-ui-gantt-view-task-bar-background-color)}.vxe-gantt-view--chart-bar-content-wrapper,.vxe-gantt-view--chart-custom-bar-content-wrapper,.vxe-gantt-view--chart-subview-bar-content-wrapper{width:100%;overflow:hidden}.vxe-gantt-view--chart-bar-content-wrapper,.vxe-gantt-view--chart-subview-bar-content-wrapper{width:100%;height:100%;display:flex;flex-direction:row;align-items:center}.vxe-gantt-view--chart-bar,.vxe-gantt-view--chart-subview-bar{align-items:center;height:var(--vxe-ui-gantt-view-chart-bar-height)}.vxe-gantt-view--chart-bar.is--default:hover::after,.vxe-gantt-view--chart-subview-bar.is--default:hover::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.1);pointer-events:none}.vxe-gantt-view--chart-bar.is--milestone,.vxe-gantt-view--chart-subview-bar.is--milestone{white-space:nowrap}.vxe-gantt-view--chart-progress{flex-shrink:0;width:0;height:100%;text-align:left;background-color:var(--vxe-ui-gantt-view-task-bar-completed-background-color);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-gantt-view--chart-content{position:absolute;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9em;padding:0 .6em}.vxe-gantt-view--chart-milestone-wrapper{display:flex;flex-direction:row;align-items:center}.vxe-gantt-view--chart-milestone-icon{flex-shrink:0;padding:0 .3em;color:var(--vxe-ui-font-primary-color)}.vxe-gantt-view--chart-milestone-icon.theme--primary{color:var(--vxe-ui-font-primary-color)}.vxe-gantt-view--chart-milestone-icon.theme--success{color:var(--vxe-ui-status-success-color)}.vxe-gantt-view--chart-milestone-icon.theme--info{color:var(--vxe-ui-status-info-color)}.vxe-gantt-view--chart-milestone-icon.theme--warning{color:var(--vxe-ui-status-warning-color)}.vxe-gantt-view--chart-milestone-icon.theme--danger{color:var(--vxe-ui-status-danger-color)}.vxe-gantt-view--chart-milestone-icon.theme--error{color:var(--vxe-ui-status-error-color)}.vxe-gantt-view--chart-milestone-icon i{display:inline-block}.vxe-gantt-view--chart-milestone-content{flex-grow:1}.vxe-gantt-view--chart-row.row--drag-move{transition:transform .5s ease}.vxe-gantt-view--chart-row.row--drag-origin{opacity:.3}.vxe-gantt{position:relative;display:flex;flex-direction:column}.vxe-gantt.is--loading:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:99;-webkit-user-select:none;-moz-user-select:none;user-select:none;background-color:var(--vxe-ui-loading-background-color)}.vxe-gantt.is--loading>.vxe-gantt-view .vxe-loading{background-color:transparent}.vxe-gantt.is--maximize{position:fixed;top:0;left:0;width:100%;height:100%;padding:.5em 1em;background-color:var(--vxe-ui-layout-background-color)}.vxe-gantt.is--split-drag{cursor:col-resize}.vxe-gantt.is--split-drag .vxe-gantt--table-wrapper::after,.vxe-gantt.is--split-drag .vxe-gantt--view-wrapper::after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;background:0 0;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-gantt .vxe-gantt--bottom-wrapper,.vxe-gantt .vxe-gantt--form-wrapper,.vxe-gantt .vxe-gantt--top-wrapper{position:relative}.vxe-gantt .vxe-gantt--gantt-container{position:relative;display:flex;flex-direction:row}.vxe-gantt .vxe-gantt--left-wrapper,.vxe-gantt .vxe-gantt--right-wrapper{flex-shrink:0;overflow:auto;outline:0}.vxe-gantt .vxe-gantt--table-wrapper,.vxe-gantt .vxe-gantt--view-wrapper{display:none;position:relative;flex-grow:1;overflow:hidden}.vxe-gantt .vxe-gantt--view-split-bar{flex-shrink:0;width:var(--vxe-ui-gantt-view-split-bar-width)}.vxe-gantt .vxe-gantt--view-split-bar.is--resize{cursor:col-resize}.vxe-gantt .vxe-gantt--view-split-bar-handle{background-color:var(--vxe-ui-gantt-view-split-bar-background-color)}.vxe-gantt .vxe-gantt--view-split-bar-handle:active,.vxe-gantt .vxe-gantt--view-split-bar-handle:hover{background-color:var(--vxe-ui-gantt-view-split-bar-hover-background-color)}.vxe-gantt.show--left .vxe-gantt--table-wrapper{display:block}.vxe-gantt.show--left.show--right .vxe-gantt--table-wrapper{flex-grow:unset;flex-shrink:0;width:var(--vxe-ui-gantt-view-table-default-width)}.vxe-gantt.show--right .vxe-gantt--view-wrapper{display:block}.vxe-gantt--layout-body-wrapper{display:flex;flex-direction:row;overflow:auto;flex-grow:1}.vxe-gantt--layout-body-content-wrapper{flex-grow:1;overflow:hidden}.vxe-gantt--layout-aside-left-wrapper,.vxe-gantt--layout-footer-wrapper,.vxe-gantt--layout-header-wrapper{flex-shrink:0;overflow:auto}.vxe-gantt--border-line{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;pointer-events:none;border:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--full .vxe-gantt-view--body-column,.vxe-gantt.border--full .vxe-gantt-view--footer-column,.vxe-gantt.border--full .vxe-gantt-view--header-column{background-image:linear-gradient(var(--vxe-ui-table-border-color),var(--vxe-ui-table-border-color)),linear-gradient(var(--vxe-ui-table-border-color),var(--vxe-ui-table-border-color));background-repeat:no-repeat;background-size:var(--vxe-ui-table-border-width) 100%,100% var(--vxe-ui-table-border-width);background-position:right top,right bottom}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--default .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-top-corner::before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;border-width:0;border-style:solid;border-color:var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-top-corner::before{border-bottom-width:var(--vxe-ui-table-border-width)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt.border--inner .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt.border--outer .vxe-gantt-view--scroll-y-bottom-corner{border-top:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--full .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--inner .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--outer .vxe-gantt-view--scroll-x-handle-appearance{position:absolute;left:0;width:100%;height:100%;z-index:1;pointer-events:none}.vxe-gantt.border--default.sx-pos--top .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--full.sx-pos--top .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--inner.sx-pos--top .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--outer.sx-pos--top .vxe-gantt-view--scroll-x-handle-appearance{top:0;border-bottom:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default.sx-pos--bottom .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--full.sx-pos--bottom .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--inner.sx-pos--bottom .vxe-gantt-view--scroll-x-handle-appearance,.vxe-gantt.border--outer.sx-pos--bottom .vxe-gantt-view--scroll-x-handle-appearance{bottom:0;height:calc(100% + var(--vxe-ui-table-border-width));border-top:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-top-corner::before{border-left-width:var(--vxe-ui-table-border-width);border-right-width:var(--vxe-ui-table-border-width)}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-bottom-corner::before{border-left-width:var(--vxe-ui-table-border-width);border-right-width:var(--vxe-ui-table-border-width)}.vxe-gantt.border--default.sy-pos--right .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--default.sy-pos--right .vxe-gantt-view--scroll-y-top-corner::before,.vxe-gantt.border--full.sy-pos--right .vxe-gantt-view--scroll-y-bottom-corner::before,.vxe-gantt.border--full.sy-pos--right .vxe-gantt-view--scroll-y-top-corner::before{width:calc(100% + 1px);left:-1px}.vxe-gantt.border--default .vxe-gantt-view--scroll-y-handle-appearance,.vxe-gantt.border--full .vxe-gantt-view--scroll-y-handle-appearance{position:absolute;top:0;width:100%;height:100%;z-index:1;pointer-events:none}.vxe-gantt.border--default.sy-pos--left .vxe-gantt-view--scroll-y-handle-appearance,.vxe-gantt.border--full.sy-pos--left .vxe-gantt-view--scroll-y-handle-appearance{left:0;border-right:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default.sy-pos--right .vxe-gantt-view--scroll-y-handle-appearance,.vxe-gantt.border--full.sy-pos--right .vxe-gantt-view--scroll-y-handle-appearance{right:0;width:calc(100% + var(--vxe-ui-table-border-width));border-left:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--default .vxe-gantt-view--body-column,.vxe-gantt.border--default .vxe-gantt-view--footer-column,.vxe-gantt.border--default .vxe-gantt-view--header-column,.vxe-gantt.border--inner .vxe-gantt-view--body-column,.vxe-gantt.border--inner .vxe-gantt-view--footer-column,.vxe-gantt.border--inner .vxe-gantt-view--header-column{background-image:linear-gradient(var(--vxe-ui-table-border-color),var(--vxe-ui-table-border-color));background-repeat:no-repeat;background-size:100% var(--vxe-ui-table-border-width);background-position:right bottom}.vxe-gantt.border--default .vxe-gantt-view--footer-wrapper,.vxe-gantt.border--full .vxe-gantt-view--footer-wrapper,.vxe-gantt.border--inner .vxe-gantt-view--footer-wrapper{border-top:var(--vxe-ui-table-border-width) solid var(--vxe-ui-table-border-color)}.vxe-gantt.border--inner .vxe-gantt--border-line{border-width:0 0 1px 0}.vxe-gantt.border--none .vxe-gantt--border-line{display:none}.vxe-gantt--view-split-bar{position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-gantt--view-split-bar-handle{position:absolute;top:0;left:0;width:100%;height:100%;z-index:3}.vxe-gantt--view-split-bar-btn-wrapper{display:flex;flex-direction:column;align-items:center;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:5;pointer-events:none}.vxe-gantt--view-split-bar-btn-wrapper>div{margin-top:1em}.vxe-gantt--view-split-bar-btn-wrapper>div:first-child{margin-top:0}.vxe-gantt--view-split-bar-left-btn,.vxe-gantt--view-split-bar-right-btn{display:flex;flex-direction:row;align-items:center;justify-content:center;height:var(--vxe-ui-gantt-view-split-bar-height);width:var(--vxe-ui-gantt-view-split-bar-width);color:var(--vxe-ui-layout-background-color);border-radius:var(--vxe-ui-base-border-radius);background-color:var(--vxe-ui-gantt-view-handle-background-color);border:1px solid var(--vxe-ui-input-border-color);pointer-events:all;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;transition:all .1s ease-in-out}.vxe-gantt--view-split-bar-left-btn:hover,.vxe-gantt--view-split-bar-right-btn:hover{color:#fff;background-color:var(--vxe-ui-font-primary-color)}.vxe-gantt--view-split-bar-left-btn:active,.vxe-gantt--view-split-bar-right-btn:active{transform:scale(.9)}.vxe-gantt--view-split-bar-left-btn i,.vxe-gantt--view-split-bar-right-btn i{font-size:.5em}.vxe-gantt--resizable-split-tip{display:none;position:absolute;top:0;left:0;width:1px;height:100%;z-index:7;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:col-resize}.vxe-gantt--resizable-split-tip:before{content:"";display:block;height:100%;background-color:var(--vxe-ui-table-resizable-drag-line-color)}.vxe-gantt--resizable-split-tip-number{position:absolute;top:0;left:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;pointer-events:none}.vxe-gantt--resizable-split-number-left,.vxe-gantt--resizable-split-number-right{position:absolute;padding:.25em .25em;font-size:12px;border-radius:var(--vxe-ui-border-radius);white-space:nowrap;color:#fff;background-color:var(--vxe-ui-table-resizable-drag-line-color)}.vxe-gantt--resizable-split-number-left{right:0}.vxe-gantt--resizable-split-number-right{left:1px}.vxe-gantt.is--loading>.vxe-gantt-view--scroll-x-virtual{visibility:hidden}.vxe-gantt.is--loading>.vxe-gantt-view--layout-wrapper>.vxe-gantt-view--scroll-y-virtual{visibility:hidden}.vxe-gantt .vxe-gantt-view--scroll-x-virtual{height:0}.vxe-gantt .vxe-gantt-view--scroll-y-virtual{width:0}.vxe-gantt .vxe-gantt-view--scroll-x-virtual,.vxe-gantt .vxe-gantt-view--scroll-y-virtual{visibility:hidden;position:relative;flex-shrink:0;z-index:7}.vxe-gantt .vxe-gantt-view--scroll-x-handle,.vxe-gantt .vxe-gantt-view--scroll-x-left-corner,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner,.vxe-gantt .vxe-gantt-view--scroll-x-wrapper,.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt .vxe-gantt-view--scroll-y-handle,.vxe-gantt .vxe-gantt-view--scroll-y-top-corner,.vxe-gantt .vxe-gantt-view--scroll-y-wrapper{position:absolute}.vxe-gantt .vxe-gantt-view--scroll-x-handle,.vxe-gantt .vxe-gantt-view--scroll-x-wrapper{width:100%;left:0;bottom:0}.vxe-gantt .vxe-gantt-view--scroll-x-handle{overflow-y:hidden;overflow-x:scroll;height:18px}.vxe-gantt .vxe-gantt-view--scroll-x-wrapper{height:100%}.vxe-gantt .vxe-gantt-view--scroll-y-handle,.vxe-gantt .vxe-gantt-view--scroll-y-wrapper{width:100%;height:100%;right:0;top:0}.vxe-gantt .vxe-gantt-view--scroll-y-handle{overflow-y:scroll;overflow-x:hidden;width:18px;height:100%}.vxe-gantt .vxe-gantt-view--scroll-x-space{height:1px}.vxe-gantt .vxe-gantt-view--scroll-y-space{width:1px}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner,.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt .vxe-gantt-view--scroll-y-top-corner{display:none;position:absolute}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner{bottom:0;width:0;height:100%}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner::before,.vxe-gantt .vxe-gantt-view--scroll-x-right-corner::before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;z-index:1;border-width:var(--vxe-ui-table-border-width);border-style:solid;border-color:var(--vxe-ui-table-border-color)}.vxe-gantt .vxe-gantt-view--scroll-x-left-corner{left:0}.vxe-gantt .vxe-gantt-view--scroll-x-right-corner{right:0}.vxe-gantt.sy-pos--right .vxe-gantt-view--scroll-x-right-corner{right:1px}.vxe-gantt.sy-pos--right .vxe-gantt-view--scroll-x-right-corner::before{border-right:0}.vxe-gantt.sx-pos--bottom .vxe-gantt-view--scroll-x-right-corner{bottom:1px}.vxe-gantt.sx-pos--bottom .vxe-gantt-view--scroll-x-right-corner::before{border-bottom:0}.vxe-gantt .vxe-gantt-view--scroll-y-top-corner{background-color:var(--vxe-ui-table-header-background-color)}.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner,.vxe-gantt .vxe-gantt-view--scroll-y-top-corner{top:0;right:0;width:100%;height:0}.vxe-gantt .vxe-gantt-view--scroll-y-bottom-corner{margin-top:-1px}.vxe-gantt-view--layout-wrapper{display:flex;flex-direction:row;background-color:var(--vxe-ui-layout-background-color)}.vxe-gantt-view--viewport-wrapper{position:relative;overflow:hidden;flex-grow:1}.vxe-gantt-view--render-vars{width:0;height:0;overflow:hidden}.vxe-gantt-view--column-info{width:var(--vxe-ui-gantt-view-default-cell-width)}.vxe-gantt-view{flex-grow:1;overflow:hidden}.vxe-gantt-view .vxe-body--x-space{width:100%;height:1px;margin-bottom:-1px}.vxe-gantt-view .vxe-body--y-space{width:0;float:left}.vxe-gantt-view--body-table,.vxe-gantt-view--header-table{border:0;border-spacing:0;border-collapse:separate;table-layout:fixed}.vxe-gantt-view--body-table col,.vxe-gantt-view--header-table col{width:var(--vxe-ui-gantt-view-default-cell-width)}.vxe-gantt-view--body-table{-webkit-user-select:none;-moz-user-select:none;user-select:none}.vxe-gantt-view--header-wrapper{background-color:var(--vxe-ui-table-header-background-color)}.vxe-gantt-view--footer-wrapper{margin-top:calc(var(--vxe-ui-table-border-width) * -1);background-color:var(--vxe-ui-table-footer-background-color)}.vxe-gantt-view--body-wrapper,.vxe-gantt-view--header-wrapper{overflow:hidden}.vxe-gantt-view--header-inner-wrapper{overflow-y:hidden;overflow-x:scroll}.vxe-gantt-view--body-inner-wrapper{overflow-y:scroll;overflow-x:scroll}.vxe-gantt-view--body-inner-wrapper,.vxe-gantt-view--header-inner-wrapper{position:relative;width:100%;height:100%;scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch}.vxe-gantt-view--body-inner-wrapper::-webkit-scrollbar,.vxe-gantt-view--header-inner-wrapper::-webkit-scrollbar{display:none}.vxe-gantt-view--header-column{text-align:center;font-size:1em;height:var(--vxe-ui-gantt-view-cell-height,var(--vxe-ui-table-row-line-height))}.vxe-gantt-view--header-column.is--now{color:var(--vxe-ui-font-primary-color)}.vxe-gantt-view--body-column.is--now::before{content:"";position:absolute;top:0;left:0;width:1px;height:100%;background-color:var(--vxe-ui-font-primary-color)}.vxe-gantt-view--body-column,.vxe-gantt-view--footer-column,.vxe-gantt-view--header-column{position:relative;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vxe-gantt-view--body-row.row--pending>.vxe-gantt-view--body-column::after{content:"";position:absolute;top:50%;left:0;width:100%;height:0;border-bottom:1px solid var(--vxe-ui-table-validate-error-color);z-index:1}.vxe-gantt-view--body-row.row--stripe{background-color:var(--vxe-ui-table-row-striped-background-color)}.vxe-gantt-view--body-row.row--radio{background-color:var(--vxe-ui-table-row-radio-checked-background-color)}.vxe-gantt-view--body-row.row--checked{background-color:var(--vxe-ui-table-row-checkbox-checked-background-color)}.vxe-gantt-view--body-row.row--current{background-color:var(--vxe-ui-table-row-current-background-color)}.vxe-gantt-view--body-row.row--hover{background-color:var(--vxe-ui-table-row-hover-background-color)}.vxe-gantt-view--body-row.row--hover.row--stripe{background-color:var(--vxe-ui-table-row-hover-striped-background-color)}.vxe-gantt-view--body-row.row--hover.row--radio{background-color:var(--vxe-ui-table-row-hover-radio-checked-background-color)}.vxe-gantt-view--body-row.row--hover.row--checked{background-color:var(--vxe-ui-table-row-hover-checkbox-checked-background-color)}.vxe-gantt-view--body-row.row--hover.row--current{background-color:var(--vxe-ui-table-row-hover-current-background-color)}.vxe-gantt-view--body-row.row--drag-move{transition:transform .5s ease}.vxe-gantt-view--body-row.row--drag-origin>.vxe-gantt-view--body-column{opacity:.3}.vxe-gantt-view--body-column .vxe-gantt-view-cell--row-resizable{position:absolute;left:0;bottom:-.4em;height:.8em;width:100%;text-align:center;z-index:1;cursor:row-resize}.vxe-gantt-view--body-row:last-child .vxe-gantt-view--body-column .vxe-gantt-view-cell--row-resizable{height:.4em;bottom:0}.vxe-gantt{font-size:var(--vxe-ui-font-size-default)}.vxe-gantt.size--medium{font-size:var(--vxe-ui-font-size-medium)}.vxe-gantt.size--small{font-size:var(--vxe-ui-font-size-small)}.vxe-gantt.size--mini{font-size:var(--vxe-ui-font-size-mini)}
|