vxe-gantt 4.1.5 → 4.1.7
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/index.js +3 -0
- package/es/gantt/src/emits.js +7 -1
- package/es/gantt/src/gantt-body.js +2 -5
- package/es/gantt/src/gantt-chart.js +64 -35
- package/es/gantt/src/gantt-view.js +23 -10
- package/es/gantt/src/gantt.js +66 -5
- package/es/gantt/src/static.js +22 -0
- package/es/gantt/src/table-emits.js +4 -0
- package/es/gantt/src/util.js +9 -0
- package/es/gantt/style.css +2 -2
- 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 +6 -13
- package/es/ui/src/depend.js +14 -0
- package/es/ui/src/log.js +1 -1
- package/es/vxe-gantt/style.css +2 -2
- package/es/vxe-gantt/style.min.css +1 -1
- package/lib/gantt/index.js +18 -0
- package/lib/gantt/index.min.js +1 -1
- package/lib/gantt/src/emits.js +1 -1
- package/lib/gantt/src/emits.min.js +1 -1
- package/lib/gantt/src/gantt-body.js +2 -5
- package/lib/gantt/src/gantt-body.min.js +1 -1
- package/lib/gantt/src/gantt-chart.js +44 -21
- package/lib/gantt/src/gantt-chart.min.js +1 -1
- package/lib/gantt/src/gantt-view.js +19 -9
- package/lib/gantt/src/gantt-view.min.js +1 -1
- package/lib/gantt/src/gantt.js +88 -5
- package/lib/gantt/src/gantt.min.js +1 -1
- package/lib/gantt/src/static.js +28 -0
- package/lib/gantt/src/static.min.js +1 -0
- 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 +12 -0
- package/lib/gantt/src/util.min.js +1 -1
- package/lib/gantt/style/style.css +2 -2
- package/lib/gantt/style/style.min.css +1 -1
- package/lib/index.umd.js +226 -69
- 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 +6 -13
- package/lib/ui/index.min.js +1 -1
- package/lib/ui/src/depend.js +19 -0
- package/lib/ui/src/depend.min.js +1 -0
- package/lib/ui/src/log.js +1 -1
- package/lib/ui/src/log.min.js +1 -1
- package/lib/vxe-gantt/style/style.css +2 -2
- package/lib/vxe-gantt/style/style.min.css +1 -1
- package/package.json +3 -7
- package/packages/gantt/index.ts +4 -0
- package/packages/gantt/src/emits.ts +7 -1
- package/packages/gantt/src/gantt-body.ts +2 -5
- package/packages/gantt/src/gantt-chart.ts +65 -36
- package/packages/gantt/src/gantt-view.ts +25 -10
- package/packages/gantt/src/gantt.ts +74 -6
- package/packages/gantt/src/static.ts +21 -0
- package/packages/gantt/src/table-emits.ts +5 -0
- package/packages/gantt/src/util.ts +12 -0
- package/packages/ui/index.ts +5 -12
- package/packages/ui/src/depend.ts +14 -0
- package/styles/components/gantt-module/gantt-chart.scss +3 -2
- package/styles/components/gantt.scss +0 -1
- package/styles/theme/base.scss +2 -0
package/es/gantt/index.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { VxeUI } from '@vxe-ui/core';
|
|
2
|
+
import { checkDependVersion } from '../ui/src/depend';
|
|
2
3
|
import VxeGanttComponent from './src/gantt';
|
|
3
4
|
export const VxeGantt = Object.assign({}, VxeGanttComponent, {
|
|
4
5
|
install(app) {
|
|
6
|
+
checkDependVersion();
|
|
5
7
|
app.component(VxeGanttComponent.name, VxeGanttComponent);
|
|
6
8
|
}
|
|
7
9
|
});
|
|
@@ -9,5 +11,6 @@ if (VxeUI.dynamicApp) {
|
|
|
9
11
|
VxeUI.dynamicApp.use(VxeGantt);
|
|
10
12
|
}
|
|
11
13
|
VxeUI.component(VxeGanttComponent);
|
|
14
|
+
export * from './src/static';
|
|
12
15
|
export const Gantt = VxeGantt;
|
|
13
16
|
export default VxeGantt;
|
package/es/gantt/src/emits.js
CHANGED
|
@@ -8,5 +8,11 @@ export const ganttEmits = [
|
|
|
8
8
|
'task-bar-click',
|
|
9
9
|
'task-bar-dblclick',
|
|
10
10
|
'task-view-cell-click',
|
|
11
|
-
'task-view-cell-dblclick'
|
|
11
|
+
'task-view-cell-dblclick',
|
|
12
|
+
'task-move-start',
|
|
13
|
+
'task-move-drag',
|
|
14
|
+
'task-move-end',
|
|
15
|
+
'task-resize-start',
|
|
16
|
+
'task-resize-drag',
|
|
17
|
+
'task-resize-end'
|
|
12
18
|
];
|
|
@@ -39,9 +39,7 @@ export default defineVxeComponent({
|
|
|
39
39
|
const { cellClassName, cellStyle } = viewStyle || {};
|
|
40
40
|
const todayValue = showNowLine && scaleItem ? todayDateMaps[scaleItem.type] : null;
|
|
41
41
|
const rowRest = fullAllDataRowIdData[rowid] || {};
|
|
42
|
-
const
|
|
43
|
-
const isRsHeight = resizeHeight > 0;
|
|
44
|
-
const cellHeight = getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight);
|
|
42
|
+
const cellHeight = resizeHeightFlag ? getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight) : 0;
|
|
45
43
|
const tdVNs = [];
|
|
46
44
|
if (isAllRowDrag && rowOpts.resizable) {
|
|
47
45
|
const cellParams = {
|
|
@@ -92,8 +90,7 @@ export default defineVxeComponent({
|
|
|
92
90
|
class: [
|
|
93
91
|
'vxe-gantt-view--body-column',
|
|
94
92
|
{
|
|
95
|
-
'is--now': showNowLine && todayValue === field
|
|
96
|
-
'col--rs-height': isRsHeight
|
|
93
|
+
'is--now': showNowLine && todayValue === field
|
|
97
94
|
},
|
|
98
95
|
getClass(cellClassName, ctParams)
|
|
99
96
|
],
|
|
@@ -3,7 +3,7 @@ import { defineVxeComponent } from '../../ui/src/comp';
|
|
|
3
3
|
import { VxeUI } from '@vxe-ui/core';
|
|
4
4
|
import XEUtils from 'xe-utils';
|
|
5
5
|
import { getCellRestHeight } from './util';
|
|
6
|
-
import { getStringValue } from '../../ui/src/utils';
|
|
6
|
+
import { getStringValue, isEnableConf } from '../../ui/src/utils';
|
|
7
7
|
const { renderEmptyElement } = VxeUI;
|
|
8
8
|
const sourceType = 'gantt';
|
|
9
9
|
const viewType = 'chart';
|
|
@@ -13,9 +13,11 @@ export default defineVxeComponent({
|
|
|
13
13
|
const $xeGantt = inject('$xeGantt', {});
|
|
14
14
|
const $xeGanttView = inject('$xeGanttView', {});
|
|
15
15
|
const { internalData: ganttInternalData } = $xeGantt;
|
|
16
|
-
const { reactData, internalData } = $xeGanttView;
|
|
17
|
-
const { computeProgressField, computeTitleField, computeTaskBarOpts, computeScaleUnit } = $xeGantt.getComputeMaps();
|
|
16
|
+
const { reactData: ganttViewReactData, internalData: ganttViewInternalData } = $xeGanttView;
|
|
17
|
+
const { computeProgressField, computeTitleField, computeTaskBarOpts, computeScaleUnit, computeTaskLinkOpts } = $xeGantt.getComputeMaps();
|
|
18
18
|
const refElem = ref();
|
|
19
|
+
const refTaskWrapperElem = ref();
|
|
20
|
+
const reflineWrapperElem = ref();
|
|
19
21
|
const renderTaskBar = ($xeTable, row, rowid, rowIndex, $rowIndex, _rowIndex) => {
|
|
20
22
|
const tableProps = $xeTable.props;
|
|
21
23
|
const { treeConfig } = tableProps;
|
|
@@ -34,14 +36,12 @@ export default defineVxeComponent({
|
|
|
34
36
|
const taskBarOpts = computeTaskBarOpts.value;
|
|
35
37
|
const scaleUnit = computeScaleUnit.value;
|
|
36
38
|
const barParams = { $gantt: $xeGantt, row, scaleType: scaleUnit };
|
|
37
|
-
const { showProgress, showContent, contentMethod, barStyle,
|
|
39
|
+
const { showProgress, showContent, contentMethod, barStyle, move, showTooltip } = taskBarOpts;
|
|
38
40
|
const isBarRowStyle = XEUtils.isFunction(barStyle);
|
|
39
41
|
const barStyObj = (barStyle ? (isBarRowStyle ? barStyle(barParams) : barStyle) : {}) || {};
|
|
40
42
|
const { round } = barStyObj;
|
|
41
43
|
const rowRest = fullAllDataRowIdData[rowid] || {};
|
|
42
|
-
const
|
|
43
|
-
const isRsHeight = resizeHeight > 0;
|
|
44
|
-
const cellHeight = getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight);
|
|
44
|
+
const cellHeight = resizeHeightFlag ? getCellRestHeight(rowRest, cellOpts, rowOpts, defaultRowHeight) : 0;
|
|
45
45
|
let title = getStringValue(XEUtils.get(row, titleField));
|
|
46
46
|
const progressValue = showProgress ? Math.min(100, Math.max(0, XEUtils.toNumber(XEUtils.get(row, progressField)))) : 0;
|
|
47
47
|
const vbStyle = {};
|
|
@@ -106,8 +106,7 @@ export default defineVxeComponent({
|
|
|
106
106
|
rowid,
|
|
107
107
|
class: ['vxe-gantt-view--chart-row', {
|
|
108
108
|
'is--round': round,
|
|
109
|
-
'is--
|
|
110
|
-
'col--rs-height': isRsHeight
|
|
109
|
+
'is--move': move
|
|
111
110
|
}],
|
|
112
111
|
style: {
|
|
113
112
|
height: `${cellHeight}px`
|
|
@@ -116,24 +115,37 @@ export default defineVxeComponent({
|
|
|
116
115
|
$xeGantt.handleTaskBarContextmenuEvent(evnt, ctParams);
|
|
117
116
|
}
|
|
118
117
|
}, [
|
|
119
|
-
h('div', Object.assign({ class: taskBarSlot ? 'vxe-gantt-view--chart-custom-bar' : 'vxe-gantt-view--chart-bar', style: vbStyle, rowid }, ons),
|
|
120
|
-
? $xeGantt.
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
118
|
+
h('div', Object.assign({ class: taskBarSlot ? 'vxe-gantt-view--chart-custom-bar' : 'vxe-gantt-view--chart-bar', style: vbStyle, rowid }, ons), $xeGantt.renderGanttTaskBarContent
|
|
119
|
+
? $xeGantt.renderGanttTaskBarContent(ctParams, {
|
|
120
|
+
title,
|
|
121
|
+
vbStyle,
|
|
122
|
+
vpStyle
|
|
123
|
+
})
|
|
124
|
+
: (taskBarSlot
|
|
125
|
+
? [
|
|
126
|
+
h('div', {
|
|
127
|
+
key: 'cbc',
|
|
128
|
+
class: 'vxe-gantt-view--chart-custom-bar-content'
|
|
129
|
+
}, $xeGantt.callSlot(taskBarSlot, barParams))
|
|
130
|
+
]
|
|
131
|
+
: [
|
|
132
|
+
showProgress
|
|
133
|
+
? h('div', {
|
|
134
|
+
key: 'vcp',
|
|
135
|
+
class: 'vxe-gantt-view--chart-progress',
|
|
136
|
+
style: vpStyle
|
|
137
|
+
})
|
|
138
|
+
: renderEmptyElement($xeGantt),
|
|
139
|
+
showContent
|
|
140
|
+
? h('div', {
|
|
141
|
+
key: 'vcc',
|
|
142
|
+
class: 'vxe-gantt-view--chart-content'
|
|
143
|
+
}, title)
|
|
144
|
+
: renderEmptyElement($xeGantt)
|
|
145
|
+
]))
|
|
134
146
|
]);
|
|
135
147
|
};
|
|
136
|
-
const
|
|
148
|
+
const renderTaskRows = ($xeTable, tableData) => {
|
|
137
149
|
const tableProps = $xeTable.props;
|
|
138
150
|
const { treeConfig } = tableProps;
|
|
139
151
|
const tableReactData = $xeTable.reactData;
|
|
@@ -144,10 +156,10 @@ export default defineVxeComponent({
|
|
|
144
156
|
const treeOpts = computeTreeOpts.value;
|
|
145
157
|
const { transform } = treeOpts;
|
|
146
158
|
const childrenField = treeOpts.children || treeOpts.childrenField;
|
|
147
|
-
const { scrollYLoad } =
|
|
159
|
+
const { scrollYLoad } = ganttViewReactData;
|
|
148
160
|
const trVNs = [];
|
|
149
161
|
tableData.forEach((row, $rowIndex) => {
|
|
150
|
-
const rowid = $xeTable
|
|
162
|
+
const rowid = $xeTable.getRowid(row);
|
|
151
163
|
const rowRest = fullAllDataRowIdData[rowid] || {};
|
|
152
164
|
let rowIndex = $rowIndex;
|
|
153
165
|
let _rowIndex = -1;
|
|
@@ -164,28 +176,45 @@ export default defineVxeComponent({
|
|
|
164
176
|
}
|
|
165
177
|
// 如果是树形表格
|
|
166
178
|
if (isExpandTree) {
|
|
167
|
-
trVNs.push(...
|
|
179
|
+
trVNs.push(...renderTaskRows($xeTable, rowChildren));
|
|
168
180
|
}
|
|
169
181
|
});
|
|
170
182
|
return trVNs;
|
|
171
183
|
};
|
|
172
184
|
const renderVN = () => {
|
|
173
|
-
const $xeTable =
|
|
174
|
-
const { tableData } =
|
|
185
|
+
const $xeTable = ganttViewInternalData.xeTable;
|
|
186
|
+
const { tableData } = ganttViewReactData;
|
|
187
|
+
const taskLinkOpts = computeTaskLinkOpts.value;
|
|
188
|
+
const { showArrow } = taskLinkOpts;
|
|
175
189
|
return h('div', {
|
|
176
190
|
ref: refElem,
|
|
177
191
|
class: 'vxe-gantt-view--chart-wrapper'
|
|
178
|
-
},
|
|
192
|
+
}, [
|
|
193
|
+
$xeGantt.renderGanttTaskLines
|
|
194
|
+
? h('div', {
|
|
195
|
+
ref: reflineWrapperElem,
|
|
196
|
+
class: ['vxe-gantt-view--chart-line-wrapper', {
|
|
197
|
+
'show-arrow': showArrow
|
|
198
|
+
}]
|
|
199
|
+
}, $xeTable && isEnableConf(taskLinkOpts) ? $xeGantt.renderGanttTaskLines() : [])
|
|
200
|
+
: renderEmptyElement($xeGantt),
|
|
201
|
+
h('div', {
|
|
202
|
+
ref: refTaskWrapperElem,
|
|
203
|
+
class: 'vxe-gantt-view--chart-task-wrapper'
|
|
204
|
+
}, $xeTable ? renderTaskRows($xeTable, tableData) : [])
|
|
205
|
+
]);
|
|
179
206
|
};
|
|
180
207
|
onMounted(() => {
|
|
181
|
-
const { elemStore } =
|
|
208
|
+
const { elemStore } = ganttViewInternalData;
|
|
182
209
|
const prefix = 'main-chart-';
|
|
183
|
-
elemStore[`${prefix}wrapper`] =
|
|
210
|
+
elemStore[`${prefix}task-wrapper`] = refTaskWrapperElem;
|
|
211
|
+
elemStore[`${prefix}line-wrapper`] = reflineWrapperElem;
|
|
184
212
|
});
|
|
185
213
|
onUnmounted(() => {
|
|
186
|
-
const { elemStore } =
|
|
214
|
+
const { elemStore } = ganttViewInternalData;
|
|
187
215
|
const prefix = 'main-chart-';
|
|
188
|
-
elemStore[`${prefix}wrapper`] = null;
|
|
216
|
+
elemStore[`${prefix}task-wrapper`] = null;
|
|
217
|
+
elemStore[`${prefix}line-wrapper`] = null;
|
|
189
218
|
});
|
|
190
219
|
return renderVN;
|
|
191
220
|
}
|
|
@@ -2,7 +2,7 @@ import { h, ref, reactive, nextTick, inject, watch, provide, computed, onMounted
|
|
|
2
2
|
import { defineVxeComponent } from '../../ui/src/comp';
|
|
3
3
|
import { setScrollTop, setScrollLeft, removeClass, addClass } from '../../ui/src/dom';
|
|
4
4
|
import { VxeUI } from '@vxe-ui/core';
|
|
5
|
-
import { getRefElem, getStandardGapTime } from './util';
|
|
5
|
+
import { getRefElem, getStandardGapTime, getTaskBarLeft, getTaskBarWidth } from './util';
|
|
6
6
|
import XEUtils from 'xe-utils';
|
|
7
7
|
import GanttViewHeaderComponent from './gantt-header';
|
|
8
8
|
import GanttViewBodyComponent from './gantt-body';
|
|
@@ -86,7 +86,7 @@ export default defineVxeComponent({
|
|
|
86
86
|
tableData: [],
|
|
87
87
|
tableColumn: [],
|
|
88
88
|
headerGroups: [],
|
|
89
|
-
viewCellWidth:
|
|
89
|
+
viewCellWidth: 40
|
|
90
90
|
});
|
|
91
91
|
const internalData = createInternalData();
|
|
92
92
|
const refMaps = {
|
|
@@ -704,12 +704,12 @@ export default defineVxeComponent({
|
|
|
704
704
|
reactData.overflowX = overflowX;
|
|
705
705
|
}
|
|
706
706
|
};
|
|
707
|
-
const
|
|
707
|
+
const updateTaskChart = () => {
|
|
708
708
|
const { dragBarRow } = ganttInternalData;
|
|
709
709
|
const { viewCellWidth } = reactData;
|
|
710
710
|
const { elemStore, chartMaps } = internalData;
|
|
711
711
|
const $xeTable = internalData.xeTable;
|
|
712
|
-
const chartWrapper = getRefElem(elemStore['main-chart-wrapper']);
|
|
712
|
+
const chartWrapper = getRefElem(elemStore['main-chart-task-wrapper']);
|
|
713
713
|
if (chartWrapper && $xeTable) {
|
|
714
714
|
XEUtils.arrayEach(chartWrapper.children, (rowEl) => {
|
|
715
715
|
const barEl = rowEl.children[0];
|
|
@@ -720,9 +720,9 @@ export default defineVxeComponent({
|
|
|
720
720
|
if (dragBarRow && $xeTable.getRowid(dragBarRow) === rowid) {
|
|
721
721
|
return;
|
|
722
722
|
}
|
|
723
|
-
const
|
|
724
|
-
barEl.style.left = `${
|
|
725
|
-
barEl.style.width = `${
|
|
723
|
+
const chartRest = rowid ? chartMaps[rowid] : null;
|
|
724
|
+
barEl.style.left = `${getTaskBarLeft(chartRest, viewCellWidth)}px`;
|
|
725
|
+
barEl.style.width = `${getTaskBarWidth(chartRest, viewCellWidth)}px`;
|
|
726
726
|
});
|
|
727
727
|
}
|
|
728
728
|
return nextTick();
|
|
@@ -735,6 +735,9 @@ export default defineVxeComponent({
|
|
|
735
735
|
if (!el) {
|
|
736
736
|
return;
|
|
737
737
|
}
|
|
738
|
+
if (!$xeGantt) {
|
|
739
|
+
return;
|
|
740
|
+
}
|
|
738
741
|
const scrollbarOpts = computeScrollbarOpts.value;
|
|
739
742
|
const scrollbarXToTop = computeScrollbarXToTop.value;
|
|
740
743
|
const scrollbarYToLeft = computeScrollbarYToLeft.value;
|
|
@@ -834,7 +837,10 @@ export default defineVxeComponent({
|
|
|
834
837
|
bodyTableElem.style.width = `${vmTableWidth}px`;
|
|
835
838
|
}
|
|
836
839
|
reactData.scrollXWidth = viewTableWidth;
|
|
837
|
-
return
|
|
840
|
+
return Promise.all([
|
|
841
|
+
updateTaskChart(),
|
|
842
|
+
$xeGantt.handleUpdateTaskLink ? $xeGantt.handleUpdateTaskLink($xeGanttView) : null
|
|
843
|
+
]);
|
|
838
844
|
};
|
|
839
845
|
const handleRecalculateStyle = () => {
|
|
840
846
|
const el = refElem.value;
|
|
@@ -842,9 +848,11 @@ export default defineVxeComponent({
|
|
|
842
848
|
if (!el || !el.clientWidth) {
|
|
843
849
|
return nextTick();
|
|
844
850
|
}
|
|
851
|
+
if (!$xeGantt) {
|
|
852
|
+
return nextTick();
|
|
853
|
+
}
|
|
845
854
|
calcScrollbar();
|
|
846
855
|
updateStyle();
|
|
847
|
-
updateChart();
|
|
848
856
|
return computeScrollLoad();
|
|
849
857
|
};
|
|
850
858
|
const handleLazyRecalculate = () => {
|
|
@@ -1016,7 +1024,7 @@ export default defineVxeComponent({
|
|
|
1016
1024
|
}
|
|
1017
1025
|
ySpaceHeight = maxYHeight;
|
|
1018
1026
|
}
|
|
1019
|
-
const bodyChartWrapperElem = getRefElem(elemStore['main-chart-wrapper']);
|
|
1027
|
+
const bodyChartWrapperElem = getRefElem(elemStore['main-chart-task-wrapper']);
|
|
1020
1028
|
if (bodyTableElem) {
|
|
1021
1029
|
bodyTableElem.style.transform = `translate(${reactData.scrollXLeft || 0}px, ${scrollYTop}px)`;
|
|
1022
1030
|
}
|
|
@@ -1031,6 +1039,11 @@ export default defineVxeComponent({
|
|
|
1031
1039
|
if (scrollYSpaceEl) {
|
|
1032
1040
|
scrollYSpaceEl.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
|
|
1033
1041
|
}
|
|
1042
|
+
const lineWrapper = getRefElem(elemStore['main-chart-line-wrapper']);
|
|
1043
|
+
const svgElem = lineWrapper ? lineWrapper.firstElementChild : null;
|
|
1044
|
+
if (svgElem) {
|
|
1045
|
+
svgElem.style.height = ySpaceHeight ? `${ySpaceHeight}px` : '';
|
|
1046
|
+
}
|
|
1034
1047
|
reactData.scrollYTop = scrollYTop;
|
|
1035
1048
|
reactData.scrollYHeight = scrollYHeight;
|
|
1036
1049
|
reactData.isScrollYBig = isScrollYBig;
|
package/es/gantt/src/gantt.js
CHANGED
|
@@ -5,6 +5,7 @@ import { getLastZIndex, nextZIndex, isEnableConf, formatText } from '../../ui/sr
|
|
|
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';
|
|
8
|
+
import { getTaskLinkKey } from './util';
|
|
8
9
|
import { ganttEmits } from './emits';
|
|
9
10
|
import { tableEmits } from './table-emits';
|
|
10
11
|
import { warnLog, errLog } from '../../ui/src/log';
|
|
@@ -17,6 +18,9 @@ const tableComponentMethodKeys = ['clearAll', 'syncData', 'updateData', 'loadDat
|
|
|
17
18
|
const defaultLayouts = [['Form'], ['Toolbar', 'Top', 'Gantt', 'Bottom', 'Pager']];
|
|
18
19
|
function createInternalData() {
|
|
19
20
|
return {
|
|
21
|
+
linkFromConfMaps: {},
|
|
22
|
+
linkFromKeyMaps: {},
|
|
23
|
+
linkUniqueMaps: {},
|
|
20
24
|
uFoot: false,
|
|
21
25
|
resizeTableWidth: 0
|
|
22
26
|
// barTipTimeout: null
|
|
@@ -40,7 +44,7 @@ function getViewTypeLevel(type) {
|
|
|
40
44
|
export default defineVxeComponent({
|
|
41
45
|
name: 'VxeGantt',
|
|
42
46
|
mixins: [],
|
|
43
|
-
props: Object.assign(Object.assign({}, tableProps), { columns: Array, pagerConfig: Object, proxyConfig: Object, toolbarConfig: Object, formConfig: Object, zoomConfig: Object, layouts: Array, taskConfig: Object, taskViewScaleConfig: Object, taskViewConfig: Object, taskBarConfig: Object, taskBarTooltipConfig: Object, taskSplitConfig: Object, taskBarResizeConfig: Object,
|
|
47
|
+
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, taskBarTooltipConfig: Object, taskSplitConfig: Object, taskBarResizeConfig: Object, taskBarMoveConfig: Object, size: {
|
|
44
48
|
type: String,
|
|
45
49
|
default: () => getConfig().gantt.size || getConfig().size
|
|
46
50
|
} }),
|
|
@@ -60,6 +64,7 @@ export default defineVxeComponent({
|
|
|
60
64
|
tableLoading: false,
|
|
61
65
|
proxyInited: false,
|
|
62
66
|
isZMax: false,
|
|
67
|
+
tableLinks: [],
|
|
63
68
|
tableData: [],
|
|
64
69
|
filterData: [],
|
|
65
70
|
formData: {},
|
|
@@ -79,7 +84,9 @@ export default defineVxeComponent({
|
|
|
79
84
|
content: '',
|
|
80
85
|
visible: false,
|
|
81
86
|
params: null
|
|
82
|
-
}
|
|
87
|
+
},
|
|
88
|
+
linkList: [],
|
|
89
|
+
upLinkFlag: 0
|
|
83
90
|
});
|
|
84
91
|
const internalData = createInternalData();
|
|
85
92
|
const refElem = ref();
|
|
@@ -156,8 +163,8 @@ export default defineVxeComponent({
|
|
|
156
163
|
const computeTaskBarOpts = computed(() => {
|
|
157
164
|
return Object.assign({}, getConfig().gantt.taskBarConfig, props.taskBarConfig);
|
|
158
165
|
});
|
|
159
|
-
const
|
|
160
|
-
return Object.assign({}, getConfig().gantt.
|
|
166
|
+
const computeTaskBarMoveOpts = computed(() => {
|
|
167
|
+
return Object.assign({}, getConfig().gantt.taskBarMoveConfig, props.taskBarMoveConfig);
|
|
161
168
|
});
|
|
162
169
|
const computeTaskBarResizeOpts = computed(() => {
|
|
163
170
|
return Object.assign({}, getConfig().gantt.taskBarResizeConfig, props.taskBarResizeConfig);
|
|
@@ -168,6 +175,9 @@ export default defineVxeComponent({
|
|
|
168
175
|
const computeTaskBarTooltipOpts = computed(() => {
|
|
169
176
|
return Object.assign({}, getConfig().gantt.taskBarTooltipConfig, props.taskBarTooltipConfig);
|
|
170
177
|
});
|
|
178
|
+
const computeTaskLinkOpts = computed(() => {
|
|
179
|
+
return Object.assign({}, getConfig().gantt.taskLinkConfig, props.taskLinkConfig);
|
|
180
|
+
});
|
|
171
181
|
const computeScaleUnit = computed(() => {
|
|
172
182
|
const minScale = computeMinScale.value;
|
|
173
183
|
return minScale ? minScale.type : 'date';
|
|
@@ -395,10 +405,11 @@ export default defineVxeComponent({
|
|
|
395
405
|
computeTaskViewScaleOpts,
|
|
396
406
|
computeTaskViewOpts,
|
|
397
407
|
computeTaskBarOpts,
|
|
398
|
-
|
|
408
|
+
computeTaskBarMoveOpts,
|
|
399
409
|
computeTaskBarResizeOpts,
|
|
400
410
|
computeTaskSplitOpts,
|
|
401
411
|
computeTaskBarTooltipOpts,
|
|
412
|
+
computeTaskLinkOpts,
|
|
402
413
|
computeTaskViewScales,
|
|
403
414
|
computeScaleUnit,
|
|
404
415
|
computeMinScale,
|
|
@@ -797,6 +808,42 @@ export default defineVxeComponent({
|
|
|
797
808
|
const handleSplitRightViewEvent = () => {
|
|
798
809
|
reactData.showRightView = !reactData.showRightView;
|
|
799
810
|
};
|
|
811
|
+
const handleTableLinks = () => {
|
|
812
|
+
const { linkList } = reactData;
|
|
813
|
+
reactData.tableLinks = linkList.slice(0);
|
|
814
|
+
};
|
|
815
|
+
const handleTaskAddLink = (item, linkConfs, fromConfMaps, fromKeyMaps, uniqueMaps) => {
|
|
816
|
+
if (item) {
|
|
817
|
+
const { type, from, to, lineStatus, lineColor, lineTyle, lineWidth, showArrow } = item;
|
|
818
|
+
const tlKey = getTaskLinkKey(from, to);
|
|
819
|
+
if (from && to && !uniqueMaps[tlKey]) {
|
|
820
|
+
let confs = fromConfMaps[from];
|
|
821
|
+
if (!confs) {
|
|
822
|
+
confs = fromConfMaps[from] = [];
|
|
823
|
+
}
|
|
824
|
+
const confObj = { type, from, to, lineStatus, lineColor, lineTyle, lineWidth, showArrow };
|
|
825
|
+
confs.push(confObj);
|
|
826
|
+
linkConfs.push(confObj);
|
|
827
|
+
fromKeyMaps[from] = confObj;
|
|
828
|
+
uniqueMaps[tlKey] = confObj;
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
};
|
|
832
|
+
const handleTaskUpdateLinks = (links) => {
|
|
833
|
+
const linkConfs = [];
|
|
834
|
+
const fromConfMaps = {};
|
|
835
|
+
const fromKeyMaps = {};
|
|
836
|
+
const uniqueMaps = {};
|
|
837
|
+
XEUtils.each(links || [], item => {
|
|
838
|
+
handleTaskAddLink(item, linkConfs, fromConfMaps, fromKeyMaps, uniqueMaps);
|
|
839
|
+
});
|
|
840
|
+
reactData.linkList = linkConfs;
|
|
841
|
+
internalData.linkFromConfMaps = fromConfMaps;
|
|
842
|
+
internalData.linkFromKeyMaps = fromKeyMaps;
|
|
843
|
+
internalData.linkUniqueMaps = uniqueMaps;
|
|
844
|
+
$xeGantt.handleTableLinks();
|
|
845
|
+
return nextTick();
|
|
846
|
+
};
|
|
800
847
|
const tableCompEvents = {};
|
|
801
848
|
tableEmits.forEach(name => {
|
|
802
849
|
const type = XEUtils.camelCase(`on-${name}`);
|
|
@@ -1686,6 +1733,9 @@ export default defineVxeComponent({
|
|
|
1686
1733
|
$xeGantt.closeTaskBarTooltip();
|
|
1687
1734
|
}
|
|
1688
1735
|
},
|
|
1736
|
+
handleTableLinks,
|
|
1737
|
+
handleTaskAddLink,
|
|
1738
|
+
handleTaskUpdateLinks,
|
|
1689
1739
|
handleTaskHeaderContextmenuEvent(evnt, params) {
|
|
1690
1740
|
const $xeTable = refTable.value;
|
|
1691
1741
|
if ($xeTable) {
|
|
@@ -2229,9 +2279,20 @@ export default defineVxeComponent({
|
|
|
2229
2279
|
}
|
|
2230
2280
|
}
|
|
2231
2281
|
});
|
|
2282
|
+
if (props.links) {
|
|
2283
|
+
$xeGantt.handleTaskUpdateLinks(props.links);
|
|
2284
|
+
}
|
|
2232
2285
|
handleTaskScaleConfig();
|
|
2233
2286
|
initPages();
|
|
2234
2287
|
onMounted(() => {
|
|
2288
|
+
if (!$xeGantt.handleUpdateTaskLink) {
|
|
2289
|
+
if (props.links) {
|
|
2290
|
+
warnLog('vxe.error.notProp', ['links']);
|
|
2291
|
+
}
|
|
2292
|
+
if (props.taskLinkConfig) {
|
|
2293
|
+
warnLog('vxe.error.notProp', ['task-link-config']);
|
|
2294
|
+
}
|
|
2295
|
+
}
|
|
2235
2296
|
nextTick(() => {
|
|
2236
2297
|
const { columns } = props;
|
|
2237
2298
|
const proxyOpts = computeProxyOpts.value;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 依赖线枚举类型
|
|
3
|
+
*/
|
|
4
|
+
export var VxeGanttDependencyType;
|
|
5
|
+
(function (VxeGanttDependencyType) {
|
|
6
|
+
/**
|
|
7
|
+
* 结束后才开始,表示一个任务必须在另一个任务开始之前完成
|
|
8
|
+
*/
|
|
9
|
+
VxeGanttDependencyType[VxeGanttDependencyType["FinishToStart"] = 0] = "FinishToStart";
|
|
10
|
+
/**
|
|
11
|
+
* 开始到结束,表示从某个过程的开始到结束的整个过程
|
|
12
|
+
*/
|
|
13
|
+
VxeGanttDependencyType[VxeGanttDependencyType["StartToFinish"] = 1] = "StartToFinish";
|
|
14
|
+
/**
|
|
15
|
+
* 开始后才开始,表示一个活动结束了,另一个活动才能开始,它们之间按先后顺序进行
|
|
16
|
+
*/
|
|
17
|
+
VxeGanttDependencyType[VxeGanttDependencyType["StartToStart"] = 2] = "StartToStart";
|
|
18
|
+
/**
|
|
19
|
+
* 完成到完成,表示一个任务必须在另一个任务完成之后才能完成
|
|
20
|
+
*/
|
|
21
|
+
VxeGanttDependencyType[VxeGanttDependencyType["FinishToFinish"] = 3] = "FinishToFinish";
|
|
22
|
+
})(VxeGanttDependencyType || (VxeGanttDependencyType = {}));
|
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
export const tableEmits = [
|
|
2
|
+
'ready',
|
|
3
|
+
'init-rendered',
|
|
4
|
+
'data-rendered',
|
|
2
5
|
'update:data',
|
|
3
6
|
'keydown-start',
|
|
4
7
|
'keydown',
|
|
@@ -6,6 +9,7 @@ export const tableEmits = [
|
|
|
6
9
|
'paste',
|
|
7
10
|
'copy',
|
|
8
11
|
'cut',
|
|
12
|
+
'context-menu',
|
|
9
13
|
'columns-change',
|
|
10
14
|
'data-change',
|
|
11
15
|
'footer-data-change',
|
package/es/gantt/src/util.js
CHANGED
|
@@ -27,3 +27,12 @@ export function getStandardGapTime(type) {
|
|
|
27
27
|
}
|
|
28
28
|
return 1000 * 60 * 60 * 24;
|
|
29
29
|
}
|
|
30
|
+
export function getTaskBarLeft(chartRest, viewCellWidth) {
|
|
31
|
+
return chartRest ? viewCellWidth * chartRest.oLeftSize : 0;
|
|
32
|
+
}
|
|
33
|
+
export function getTaskBarWidth(chartRest, viewCellWidth) {
|
|
34
|
+
return Math.max(1, chartRest ? (Math.floor(viewCellWidth * chartRest.oWidthSize) - 1) : 0);
|
|
35
|
+
}
|
|
36
|
+
export function getTaskLinkKey(from, to) {
|
|
37
|
+
return `${from}_${to}`;
|
|
38
|
+
}
|
package/es/gantt/style.css
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
@charset "UTF-8";
|
|
2
|
-
.vxe-gantt-view--chart-wrapper {
|
|
2
|
+
.vxe-gantt-view--chart-task-wrapper {
|
|
3
3
|
position: absolute;
|
|
4
4
|
top: 0;
|
|
5
5
|
left: 0;
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
.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 {
|
|
18
18
|
border-radius: var(--vxe-ui-gantt-view-task-bar-border-radius);
|
|
19
19
|
}
|
|
20
|
-
.vxe-gantt-view--chart-row.is--
|
|
20
|
+
.vxe-gantt-view--chart-row.is--move > .vxe-gantt-view--chart-bar, .vxe-gantt-view--chart-row.is--move > .vxe-gantt-view--chart-custom-bar {
|
|
21
21
|
-webkit-user-select: none;
|
|
22
22
|
-moz-user-select: none;
|
|
23
23
|
user-select: none;
|
package/es/gantt/style.min.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
@charset "UTF-8";.vxe-gantt-view--chart-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.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: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-row.is--drag>.vxe-gantt-view--chart-bar,.vxe-gantt-view--chart-row.is--drag>.vxe-gantt-view--chart-custom-bar{-webkit-user-select:none;-moz-user-select:none;user-select:none}.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%);color:#fff;background-color:var(--vxe-ui-gantt-view-task-bar-background-color);overflow:hidden;pointer-events:all}.vxe-gantt-view--chart-bar{align-items:center;height:var(--vxe-ui-gantt-view-chart-bar-height)}.vxe-gantt-view--chart-bar: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-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-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--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.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: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-row.is--move>.vxe-gantt-view--chart-bar,.vxe-gantt-view--chart-row.is--move>.vxe-gantt-view--chart-custom-bar{-webkit-user-select:none;-moz-user-select:none;user-select:none}.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%);color:#fff;background-color:var(--vxe-ui-gantt-view-task-bar-background-color);overflow:hidden;pointer-events:all}.vxe-gantt-view--chart-bar{align-items:center;height:var(--vxe-ui-gantt-view-chart-bar-height)}.vxe-gantt-view--chart-bar: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-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-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--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)}
|