vxe-pc-ui 3.15.23 → 3.15.24
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/date-panel/src/date-panel.js +34 -14
- package/es/date-panel/src/util.js +30 -3
- package/es/date-picker/src/date-picker.js +1 -1
- package/es/date-range-picker/src/date-range-picker.js +205 -124
- package/es/icon/style.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/tooltip/src/tooltip.js +34 -21
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/lib/date-panel/src/date-panel.js +46 -15
- package/lib/date-panel/src/date-panel.min.js +1 -1
- package/lib/date-panel/src/util.js +31 -5
- package/lib/date-panel/src/util.min.js +1 -1
- package/lib/date-picker/src/date-picker.js +1 -1
- package/lib/date-picker/src/date-picker.min.js +1 -1
- package/lib/date-range-picker/src/date-range-picker.js +217 -131
- package/lib/date-range-picker/src/date-range-picker.min.js +1 -1
- package/lib/icon/style/style.css +1 -1
- package/lib/icon/style/style.min.css +1 -1
- package/lib/index.umd.js +339 -181
- package/lib/index.umd.min.js +1 -1
- package/lib/style.css +1 -1
- package/lib/style.min.css +1 -1
- package/lib/tooltip/src/tooltip.js +36 -21
- package/lib/tooltip/src/tooltip.min.js +1 -1
- package/lib/ui/index.js +1 -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/package.json +1 -1
- package/packages/date-panel/src/date-panel.ts +38 -15
- package/packages/date-panel/src/util.ts +30 -3
- package/packages/date-picker/src/date-picker.ts +1 -1
- package/packages/date-range-picker/src/date-range-picker.ts +207 -123
- package/packages/tooltip/src/tooltip.ts +41 -20
- package/types/components/date-panel.d.ts +15 -2
- package/types/components/date-range-picker.d.ts +5 -3
- package/types/components/tooltip.d.ts +1 -1
- /package/es/icon/{iconfont.1783073807010.ttf → iconfont.1783233735491.ttf} +0 -0
- /package/es/icon/{iconfont.1783073807010.woff → iconfont.1783233735491.woff} +0 -0
- /package/es/icon/{iconfont.1783073807010.woff2 → iconfont.1783233735491.woff2} +0 -0
- /package/es/{iconfont.1783073807010.ttf → iconfont.1783233735491.ttf} +0 -0
- /package/es/{iconfont.1783073807010.woff → iconfont.1783233735491.woff} +0 -0
- /package/es/{iconfont.1783073807010.woff2 → iconfont.1783233735491.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1783073807010.ttf → iconfont.1783233735491.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1783073807010.woff → iconfont.1783233735491.woff} +0 -0
- /package/lib/icon/style/{iconfont.1783073807010.woff2 → iconfont.1783233735491.woff2} +0 -0
- /package/lib/{iconfont.1783073807010.ttf → iconfont.1783233735491.ttf} +0 -0
- /package/lib/{iconfont.1783073807010.woff → iconfont.1783233735491.woff} +0 -0
- /package/lib/{iconfont.1783073807010.woff2 → iconfont.1783233735491.woff2} +0 -0
|
@@ -3,13 +3,34 @@ import XEUtils from 'xe-utils';
|
|
|
3
3
|
import { getConfig, getIcon, getI18n, commands, globalEvents, createEvent, GLOBAL_EVENT_KEYS, globalMixins, renderEmptyElement } from '../../ui';
|
|
4
4
|
import { getFuncText, getLastZIndex, nextZIndex, isEnableConf } from '../../ui/src/utils';
|
|
5
5
|
import { updatePanelPlacement, getEventTargetNode } from '../../ui/src/dom';
|
|
6
|
-
import { parseDateString, parseDateObj, getRangeDateByCode, handleValueFormat, hasTimestampValueType, hasDateValueType, parseDateValue } from '../../date-panel/src/util';
|
|
6
|
+
import { parseDateString, parseDateObj, getRangeDateByCode, handleValueFormat, hasTimestampValueType, hasDateValueType, parseDateValue, getPrevMonth, getNextMonth } from '../../date-panel/src/util';
|
|
7
7
|
import { getSlotVNs } from '../../ui/src/vn';
|
|
8
8
|
import { createComponentLog } from '../../ui/src/log';
|
|
9
9
|
import VxeDatePanelComponent from '../../date-panel/src/date-panel';
|
|
10
10
|
import VxeButtonComponent from '../../button/src/button';
|
|
11
11
|
import VxeButtonGroupComponent from '../../button/src/button-group';
|
|
12
12
|
const { errLog } = createComponentLog('date-range-picker');
|
|
13
|
+
function createReactData() {
|
|
14
|
+
return {
|
|
15
|
+
initialized: false,
|
|
16
|
+
panelIndex: 0,
|
|
17
|
+
visiblePanel: false,
|
|
18
|
+
isAniVisible: false,
|
|
19
|
+
panelStyle: {},
|
|
20
|
+
panelPlacement: '',
|
|
21
|
+
isActivated: false,
|
|
22
|
+
selectStValue: '',
|
|
23
|
+
selectEdValue: '',
|
|
24
|
+
paneStartVal: '',
|
|
25
|
+
paneEndVal: ''
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function createInternalData() {
|
|
29
|
+
return {
|
|
30
|
+
// selectStatus: false
|
|
31
|
+
// hpTimeout: undefined
|
|
32
|
+
};
|
|
33
|
+
}
|
|
13
34
|
export default {
|
|
14
35
|
name: 'VxeDateRangePicker',
|
|
15
36
|
mixins: [
|
|
@@ -150,26 +171,9 @@ export default {
|
|
|
150
171
|
},
|
|
151
172
|
data() {
|
|
152
173
|
const xID = XEUtils.uniqueId();
|
|
153
|
-
const reactData =
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
visiblePanel: false,
|
|
157
|
-
isAniVisible: false,
|
|
158
|
-
panelStyle: {},
|
|
159
|
-
panelPlacement: '',
|
|
160
|
-
isActivated: false,
|
|
161
|
-
startValue: '',
|
|
162
|
-
endValue: ''
|
|
163
|
-
};
|
|
164
|
-
const internalData = {
|
|
165
|
-
// selectStatus: false
|
|
166
|
-
// hpTimeout: undefined
|
|
167
|
-
};
|
|
168
|
-
return {
|
|
169
|
-
xID,
|
|
170
|
-
reactData,
|
|
171
|
-
internalData
|
|
172
|
-
};
|
|
174
|
+
const reactData = createReactData();
|
|
175
|
+
return Object.assign(Object.assign({}, {}), { xID,
|
|
176
|
+
reactData });
|
|
173
177
|
},
|
|
174
178
|
computed: Object.assign(Object.assign({}, {}), { computeBtnTransfer() {
|
|
175
179
|
const $xeDateRangePicker = this;
|
|
@@ -340,8 +344,8 @@ export default {
|
|
|
340
344
|
computePanelLabelObj() {
|
|
341
345
|
const $xeDateRangePicker = this;
|
|
342
346
|
const reactData = $xeDateRangePicker.reactData;
|
|
343
|
-
const {
|
|
344
|
-
const vals =
|
|
347
|
+
const { selectStValue, selectEdValue } = reactData;
|
|
348
|
+
const vals = selectStValue || selectEdValue ? [selectStValue || '', selectEdValue || ''] : [];
|
|
345
349
|
return $xeDateRangePicker.formatRangeLabel(vals);
|
|
346
350
|
},
|
|
347
351
|
computeInputLabel() {
|
|
@@ -486,15 +490,15 @@ export default {
|
|
|
486
490
|
restObj = $xeDateRangePicker.paraeUpdateModel();
|
|
487
491
|
}
|
|
488
492
|
}
|
|
489
|
-
reactData.
|
|
490
|
-
reactData.
|
|
493
|
+
reactData.selectStValue = restObj.sValue;
|
|
494
|
+
reactData.selectEdValue = restObj.eValue;
|
|
491
495
|
},
|
|
492
496
|
triggerEvent(evnt) {
|
|
493
497
|
const $xeDateRangePicker = this;
|
|
494
498
|
const reactData = $xeDateRangePicker.reactData;
|
|
495
|
-
const {
|
|
496
|
-
const value = $xeDateRangePicker.getRangeValue(
|
|
497
|
-
$xeDateRangePicker.dispatchEvent(evnt.type, { value, startValue, endValue }, evnt);
|
|
499
|
+
const { selectStValue, selectEdValue } = reactData;
|
|
500
|
+
const value = $xeDateRangePicker.getRangeValue(selectStValue, selectEdValue);
|
|
501
|
+
$xeDateRangePicker.dispatchEvent(evnt.type, { value, startValue: selectStValue, endValue: selectEdValue }, evnt);
|
|
498
502
|
},
|
|
499
503
|
handleChange(sValue, eValue, evnt) {
|
|
500
504
|
const $xeDateRangePicker = this;
|
|
@@ -524,8 +528,8 @@ export default {
|
|
|
524
528
|
endRest = parseDateValue(endRest, type, { valueFormat: dateValueFormat });
|
|
525
529
|
}
|
|
526
530
|
}
|
|
527
|
-
reactData.
|
|
528
|
-
reactData.
|
|
531
|
+
reactData.selectStValue = startRest;
|
|
532
|
+
reactData.selectEdValue = endRest;
|
|
529
533
|
const value = $xeDateRangePicker.getRangeValue(startRest, endRest);
|
|
530
534
|
const isFinish = (startRest && endRest) || (!startRest && !endRest);
|
|
531
535
|
$xeDateRangePicker.$emit('update:modelValue', value);
|
|
@@ -565,9 +569,9 @@ export default {
|
|
|
565
569
|
const reactData = $xeDateRangePicker.reactData;
|
|
566
570
|
const isDisabled = $xeDateRangePicker.computeIsDisabled;
|
|
567
571
|
if (!isDisabled) {
|
|
568
|
-
const {
|
|
569
|
-
const value = $xeDateRangePicker.getRangeValue(
|
|
570
|
-
$xeDateRangePicker.dispatchEvent('prefix-click', { value, startValue, endValue }, evnt);
|
|
572
|
+
const { selectStValue, selectEdValue } = reactData;
|
|
573
|
+
const value = $xeDateRangePicker.getRangeValue(selectStValue, selectEdValue);
|
|
574
|
+
$xeDateRangePicker.dispatchEvent('prefix-click', { value, startValue: selectStValue, endValue: selectEdValue }, evnt);
|
|
571
575
|
}
|
|
572
576
|
},
|
|
573
577
|
hidePanel() {
|
|
@@ -608,8 +612,8 @@ export default {
|
|
|
608
612
|
panelCellClassName({ date }) {
|
|
609
613
|
const $xeDateRangePicker = this;
|
|
610
614
|
const reactData = $xeDateRangePicker.reactData;
|
|
611
|
-
const startValue = reactData.
|
|
612
|
-
const endValue = reactData.
|
|
615
|
+
const startValue = reactData.selectStValue;
|
|
616
|
+
const endValue = reactData.selectEdValue;
|
|
613
617
|
if (startValue && endValue) {
|
|
614
618
|
const currTime = date.getTime();
|
|
615
619
|
const startTime = XEUtils.toStringDate(startValue).getTime();
|
|
@@ -626,18 +630,18 @@ export default {
|
|
|
626
630
|
const reactData = $xeDateRangePicker.reactData;
|
|
627
631
|
const internalData = $xeDateRangePicker.internalData;
|
|
628
632
|
const { autoClose } = props;
|
|
629
|
-
const {
|
|
633
|
+
const { selectStValue, selectEdValue } = reactData;
|
|
630
634
|
const { selectStatus } = internalData;
|
|
631
635
|
const isDatePickerType = $xeDateRangePicker.computeIsDatePickerType;
|
|
632
636
|
if (autoClose) {
|
|
633
637
|
if (selectStatus && isDatePickerType) {
|
|
634
|
-
if (
|
|
638
|
+
if (selectStValue && selectEdValue) {
|
|
635
639
|
$xeDateRangePicker.hidePanel();
|
|
636
640
|
}
|
|
637
641
|
}
|
|
638
642
|
}
|
|
639
643
|
else {
|
|
640
|
-
if (
|
|
644
|
+
if (selectStValue && selectEdValue) {
|
|
641
645
|
internalData.selectStatus = false;
|
|
642
646
|
}
|
|
643
647
|
}
|
|
@@ -647,9 +651,9 @@ export default {
|
|
|
647
651
|
const reactData = $xeDateRangePicker.reactData;
|
|
648
652
|
const isDisabled = $xeDateRangePicker.computeIsDisabled;
|
|
649
653
|
if (!isDisabled) {
|
|
650
|
-
const {
|
|
651
|
-
const value = $xeDateRangePicker.getRangeValue(
|
|
652
|
-
$xeDateRangePicker.dispatchEvent('suffix-click', { value, startValue, endValue }, evnt);
|
|
654
|
+
const { selectStValue, selectEdValue } = reactData;
|
|
655
|
+
const value = $xeDateRangePicker.getRangeValue(selectStValue, selectEdValue);
|
|
656
|
+
$xeDateRangePicker.dispatchEvent('suffix-click', { value, startValue: selectStValue, endValue: selectEdValue }, evnt);
|
|
653
657
|
}
|
|
654
658
|
},
|
|
655
659
|
blurEvent(evnt) {
|
|
@@ -657,16 +661,16 @@ export default {
|
|
|
657
661
|
const reactData = $xeDateRangePicker.reactData;
|
|
658
662
|
const $xeForm = $xeDateRangePicker.$xeForm;
|
|
659
663
|
const formItemInfo = $xeDateRangePicker.formItemInfo;
|
|
660
|
-
const {
|
|
664
|
+
const { selectStValue, selectEdValue } = reactData;
|
|
661
665
|
const inpImmediate = $xeDateRangePicker.computeInpImmediate;
|
|
662
666
|
const value = '';
|
|
663
667
|
if (!inpImmediate) {
|
|
664
|
-
$xeDateRangePicker.handleChange(
|
|
668
|
+
$xeDateRangePicker.handleChange(selectStValue, selectEdValue, evnt);
|
|
665
669
|
}
|
|
666
670
|
if (!reactData.visiblePanel) {
|
|
667
671
|
reactData.isActivated = false;
|
|
668
672
|
}
|
|
669
|
-
$xeDateRangePicker.dispatchEvent('blur', { value, startValue, endValue }, evnt);
|
|
673
|
+
$xeDateRangePicker.dispatchEvent('blur', { value, startValue: selectStValue, endValue: selectEdValue }, evnt);
|
|
670
674
|
// 自动更新校验状态
|
|
671
675
|
if ($xeForm && formItemInfo) {
|
|
672
676
|
$xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value);
|
|
@@ -704,22 +708,31 @@ export default {
|
|
|
704
708
|
const reactData = $xeDateRangePicker.reactData;
|
|
705
709
|
const internalData = $xeDateRangePicker.internalData;
|
|
706
710
|
const { selectStatus } = internalData;
|
|
707
|
-
const { value, $event } = params;
|
|
708
|
-
const
|
|
709
|
-
|
|
711
|
+
const { value, currValue, $event } = params;
|
|
712
|
+
const paneVals = value ? (XEUtils.isString(value) ? value.split(',') : [value]) : [];
|
|
713
|
+
let startValue = '';
|
|
714
|
+
let endValue = '';
|
|
715
|
+
if (selectStatus) {
|
|
716
|
+
startValue = paneVals[0];
|
|
717
|
+
if (paneVals[1]) {
|
|
718
|
+
endValue = paneVals[1];
|
|
719
|
+
}
|
|
720
|
+
else {
|
|
721
|
+
endValue = reactData.selectEdValue;
|
|
722
|
+
}
|
|
723
|
+
}
|
|
724
|
+
else {
|
|
725
|
+
startValue = currValue || XEUtils.last(paneVals);
|
|
726
|
+
}
|
|
727
|
+
reactData.paneEndVal = [startValue, endValue].join(',');
|
|
728
|
+
reactData.paneStartVal = [startValue, endValue].join(',');
|
|
729
|
+
$xeDateRangePicker.handleChange(startValue, endValue, $event);
|
|
710
730
|
$xeDateRangePicker.handleSelectClose();
|
|
711
731
|
if (!selectStatus) {
|
|
712
732
|
internalData.selectStatus = true;
|
|
713
733
|
}
|
|
714
734
|
$xeDateRangePicker.$nextTick(() => {
|
|
715
|
-
|
|
716
|
-
const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
|
|
717
|
-
if ($startDatePanel && $endDatePanel) {
|
|
718
|
-
const startValue = $startDatePanel.getModelValue();
|
|
719
|
-
if (!endValue && startValue) {
|
|
720
|
-
$endDatePanel.setPanelDate(XEUtils.toStringDate(startValue));
|
|
721
|
-
}
|
|
722
|
-
}
|
|
735
|
+
$xeDateRangePicker.handleUpdateStartPanelDate();
|
|
723
736
|
});
|
|
724
737
|
},
|
|
725
738
|
endPanelChangeEvent(params) {
|
|
@@ -727,91 +740,147 @@ export default {
|
|
|
727
740
|
const reactData = $xeDateRangePicker.reactData;
|
|
728
741
|
const internalData = $xeDateRangePicker.internalData;
|
|
729
742
|
const { selectStatus } = internalData;
|
|
730
|
-
const { value, $event } = params;
|
|
731
|
-
const
|
|
732
|
-
|
|
743
|
+
const { value, currValue, $event } = params;
|
|
744
|
+
const paneVals = value ? (XEUtils.isString(value) ? value.split(',') : [value]) : [];
|
|
745
|
+
let startValue = '';
|
|
746
|
+
let endValue = '';
|
|
747
|
+
if (selectStatus) {
|
|
748
|
+
endValue = paneVals[0];
|
|
749
|
+
if (paneVals[1]) {
|
|
750
|
+
startValue = paneVals[0];
|
|
751
|
+
endValue = paneVals[1];
|
|
752
|
+
}
|
|
753
|
+
else {
|
|
754
|
+
startValue = reactData.selectStValue;
|
|
755
|
+
}
|
|
756
|
+
}
|
|
757
|
+
else {
|
|
758
|
+
endValue = currValue || XEUtils.last(paneVals);
|
|
759
|
+
}
|
|
760
|
+
reactData.paneEndVal = [startValue, endValue].join(',');
|
|
761
|
+
reactData.paneStartVal = [startValue, endValue].join(',');
|
|
762
|
+
$xeDateRangePicker.handleChange(startValue, endValue, $event);
|
|
733
763
|
$xeDateRangePicker.handleSelectClose();
|
|
734
764
|
if (!selectStatus) {
|
|
735
765
|
internalData.selectStatus = true;
|
|
736
766
|
}
|
|
737
767
|
$xeDateRangePicker.$nextTick(() => {
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
768
|
+
$xeDateRangePicker.handleUpdateEndPanelDate();
|
|
769
|
+
});
|
|
770
|
+
},
|
|
771
|
+
handleUpdateStartPanelDate() {
|
|
772
|
+
const $xeDateRangePicker = this;
|
|
773
|
+
const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
|
|
774
|
+
const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
|
|
775
|
+
if (!$startDatePanel || !$endDatePanel) {
|
|
776
|
+
return;
|
|
777
|
+
}
|
|
778
|
+
const startPanelDate = $startDatePanel.getPanelDate();
|
|
779
|
+
const endPanelDate = $endDatePanel.getPanelDate();
|
|
780
|
+
if (!startPanelDate || !endPanelDate) {
|
|
781
|
+
return;
|
|
782
|
+
}
|
|
783
|
+
const viewType = $startDatePanel.getViewType();
|
|
784
|
+
const startYear = startPanelDate.getFullYear();
|
|
785
|
+
const startMonth = startPanelDate.getMonth();
|
|
786
|
+
const endYear = endPanelDate.getFullYear();
|
|
787
|
+
const endMonth = endPanelDate.getMonth();
|
|
788
|
+
switch (viewType) {
|
|
789
|
+
case 'day':
|
|
790
|
+
case 'date':
|
|
791
|
+
case 'week': {
|
|
792
|
+
if (endYear <= startYear && endMonth <= startMonth) {
|
|
793
|
+
$endDatePanel.setPanelDate(getNextMonth(startPanelDate));
|
|
744
794
|
}
|
|
795
|
+
break;
|
|
745
796
|
}
|
|
746
|
-
}
|
|
797
|
+
}
|
|
747
798
|
},
|
|
748
|
-
startPanelDateBtnChangeEvent(
|
|
799
|
+
startPanelDateBtnChangeEvent() {
|
|
749
800
|
const $xeDateRangePicker = this;
|
|
750
801
|
const props = $xeDateRangePicker;
|
|
751
802
|
const { linkedPanels } = props;
|
|
803
|
+
const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
|
|
804
|
+
const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
|
|
805
|
+
if (!$startDatePanel || !$endDatePanel) {
|
|
806
|
+
return;
|
|
807
|
+
}
|
|
808
|
+
const startPanelDate = $startDatePanel.getPanelDate();
|
|
809
|
+
const endPanelDate = $endDatePanel.getPanelDate();
|
|
810
|
+
if (!startPanelDate || !endPanelDate) {
|
|
811
|
+
return;
|
|
812
|
+
}
|
|
813
|
+
const viewType = $startDatePanel.getViewType();
|
|
752
814
|
if (linkedPanels) {
|
|
753
|
-
const { viewType } = params;
|
|
754
|
-
const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
|
|
755
|
-
const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
|
|
756
|
-
if (!$startDatePanel || !$endDatePanel) {
|
|
757
|
-
return;
|
|
758
|
-
}
|
|
759
|
-
const startPanelDate = $startDatePanel.getPanelDate();
|
|
760
|
-
if (!startPanelDate) {
|
|
761
|
-
return;
|
|
762
|
-
}
|
|
763
|
-
const endYear = startPanelDate.getFullYear();
|
|
764
|
-
const endMonth = startPanelDate.getMonth();
|
|
765
815
|
switch (viewType) {
|
|
766
816
|
case 'day':
|
|
767
817
|
case 'date':
|
|
768
818
|
case 'week': {
|
|
769
|
-
|
|
770
|
-
startPanelDate.setMonth(endMonth + 1);
|
|
771
|
-
}
|
|
772
|
-
else {
|
|
773
|
-
startPanelDate.setFullYear(endYear + 1);
|
|
774
|
-
startPanelDate.setMonth(0);
|
|
775
|
-
}
|
|
776
|
-
$endDatePanel.setPanelDate(startPanelDate);
|
|
819
|
+
$endDatePanel.setPanelDate(getNextMonth(startPanelDate));
|
|
777
820
|
break;
|
|
778
821
|
}
|
|
779
822
|
}
|
|
780
823
|
}
|
|
824
|
+
else {
|
|
825
|
+
$xeDateRangePicker.handleUpdateStartPanelDate();
|
|
826
|
+
}
|
|
781
827
|
},
|
|
782
|
-
|
|
828
|
+
handleUpdateEndPanelDate() {
|
|
829
|
+
const $xeDateRangePicker = this;
|
|
830
|
+
const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
|
|
831
|
+
const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
|
|
832
|
+
if (!$startDatePanel || !$endDatePanel) {
|
|
833
|
+
return;
|
|
834
|
+
}
|
|
835
|
+
const startPanelDate = $startDatePanel.getPanelDate();
|
|
836
|
+
const endPanelDate = $endDatePanel.getPanelDate();
|
|
837
|
+
if (!startPanelDate || !endPanelDate) {
|
|
838
|
+
return;
|
|
839
|
+
}
|
|
840
|
+
const viewType = $endDatePanel.getViewType();
|
|
841
|
+
const startYear = startPanelDate.getFullYear();
|
|
842
|
+
const startMonth = startPanelDate.getMonth();
|
|
843
|
+
const endYear = endPanelDate.getFullYear();
|
|
844
|
+
const endMonth = endPanelDate.getMonth();
|
|
845
|
+
switch (viewType) {
|
|
846
|
+
case 'day':
|
|
847
|
+
case 'date':
|
|
848
|
+
case 'week': {
|
|
849
|
+
if (startYear >= endYear && startMonth >= endMonth) {
|
|
850
|
+
$startDatePanel.setPanelDate(getPrevMonth(endPanelDate));
|
|
851
|
+
}
|
|
852
|
+
break;
|
|
853
|
+
}
|
|
854
|
+
}
|
|
855
|
+
},
|
|
856
|
+
endPanelDateBtnChangeEvent() {
|
|
783
857
|
const $xeDateRangePicker = this;
|
|
784
858
|
const props = $xeDateRangePicker;
|
|
785
859
|
const { linkedPanels } = props;
|
|
860
|
+
const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
|
|
861
|
+
const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
|
|
862
|
+
if (!$startDatePanel || !$endDatePanel) {
|
|
863
|
+
return;
|
|
864
|
+
}
|
|
865
|
+
const startPanelDate = $startDatePanel.getPanelDate();
|
|
866
|
+
const endPanelDate = $endDatePanel.getPanelDate();
|
|
867
|
+
if (!startPanelDate || !endPanelDate) {
|
|
868
|
+
return;
|
|
869
|
+
}
|
|
870
|
+
const viewType = $endDatePanel.getViewType();
|
|
786
871
|
if (linkedPanels) {
|
|
787
|
-
const { viewType } = params;
|
|
788
|
-
const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
|
|
789
|
-
const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
|
|
790
|
-
if (!$startDatePanel || !$endDatePanel) {
|
|
791
|
-
return;
|
|
792
|
-
}
|
|
793
|
-
const endPanelDate = $endDatePanel.getPanelDate();
|
|
794
|
-
if (!endPanelDate) {
|
|
795
|
-
return;
|
|
796
|
-
}
|
|
797
|
-
const endYear = endPanelDate.getFullYear();
|
|
798
|
-
const endMonth = endPanelDate.getMonth();
|
|
799
872
|
switch (viewType) {
|
|
800
873
|
case 'day':
|
|
801
874
|
case 'date':
|
|
802
875
|
case 'week': {
|
|
803
|
-
|
|
804
|
-
endPanelDate.setMonth(endMonth - 1);
|
|
805
|
-
}
|
|
806
|
-
else {
|
|
807
|
-
endPanelDate.setFullYear(endYear - 1);
|
|
808
|
-
endPanelDate.setMonth(11);
|
|
809
|
-
}
|
|
810
|
-
$startDatePanel.setPanelDate(endPanelDate);
|
|
876
|
+
$startDatePanel.setPanelDate(getPrevMonth(endPanelDate));
|
|
811
877
|
break;
|
|
812
878
|
}
|
|
813
879
|
}
|
|
814
880
|
}
|
|
881
|
+
else {
|
|
882
|
+
$xeDateRangePicker.handleUpdateEndPanelDate();
|
|
883
|
+
}
|
|
815
884
|
},
|
|
816
885
|
// 全局事件
|
|
817
886
|
handleGlobalMousedownEvent(evnt) {
|
|
@@ -960,6 +1029,7 @@ export default {
|
|
|
960
1029
|
reactData.isAniVisible = true;
|
|
961
1030
|
setTimeout(() => {
|
|
962
1031
|
reactData.visiblePanel = true;
|
|
1032
|
+
$xeDateRangePicker.handleUpdateStartPanelDate();
|
|
963
1033
|
$xeDateRangePicker.updatePlacement();
|
|
964
1034
|
}, 10);
|
|
965
1035
|
$xeDateRangePicker.updateZindex();
|
|
@@ -1002,8 +1072,8 @@ export default {
|
|
|
1002
1072
|
const shortcutOpts = $xeDateRangePicker.computeShortcutOpts;
|
|
1003
1073
|
const { autoClose } = shortcutOpts;
|
|
1004
1074
|
const { code, clickMethod } = option;
|
|
1005
|
-
let startValue = reactData.
|
|
1006
|
-
let endValue = reactData.
|
|
1075
|
+
let startValue = reactData.selectStValue;
|
|
1076
|
+
let endValue = reactData.selectEdValue;
|
|
1007
1077
|
let value = $xeDateRangePicker.getRangeValue(startValue, endValue);
|
|
1008
1078
|
const shortcutParams = {
|
|
1009
1079
|
$dateRangePicker: $xeDateRangePicker,
|
|
@@ -1063,8 +1133,8 @@ export default {
|
|
|
1063
1133
|
setModelValue(startValue, endValue) {
|
|
1064
1134
|
const $xeDateRangePicker = this;
|
|
1065
1135
|
const reactData = $xeDateRangePicker.reactData;
|
|
1066
|
-
reactData.
|
|
1067
|
-
reactData.
|
|
1136
|
+
reactData.selectStValue = startValue || '';
|
|
1137
|
+
reactData.selectEdValue = endValue || '';
|
|
1068
1138
|
const value = $xeDateRangePicker.getRangeValue(startValue, endValue);
|
|
1069
1139
|
$xeDateRangePicker.emitModel(value);
|
|
1070
1140
|
},
|
|
@@ -1132,8 +1202,8 @@ export default {
|
|
|
1132
1202
|
if (popupOpts.enabled === false) {
|
|
1133
1203
|
return renderEmptyElement($xeDateRangePicker);
|
|
1134
1204
|
}
|
|
1135
|
-
const { type, separator, autoClose, showConfirmButton, showClearButton } = props;
|
|
1136
|
-
const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle,
|
|
1205
|
+
const { type, separator, autoClose, valueFormat, showConfirmButton, showClearButton } = props;
|
|
1206
|
+
const { initialized, isAniVisible, visiblePanel, panelPlacement, panelStyle, selectStValue, selectEdValue, paneStartVal, paneEndVal } = reactData;
|
|
1137
1207
|
const vSize = $xeDateRangePicker.computeSize;
|
|
1138
1208
|
const btnTransfer = $xeDateRangePicker.computeBtnTransfer;
|
|
1139
1209
|
const shortcutOpts = $xeDateRangePicker.computeShortcutOpts;
|
|
@@ -1209,15 +1279,18 @@ export default {
|
|
|
1209
1279
|
h(VxeDatePanelComponent, {
|
|
1210
1280
|
ref: 'refStartDatePanel',
|
|
1211
1281
|
props: {
|
|
1212
|
-
value:
|
|
1282
|
+
value: paneStartVal,
|
|
1283
|
+
multiple: true,
|
|
1284
|
+
valueSort: true,
|
|
1285
|
+
limitCount: 3,
|
|
1286
|
+
defaultMode: 'first',
|
|
1213
1287
|
type: props.type,
|
|
1214
1288
|
className: props.className,
|
|
1215
1289
|
minDate: props.minDate,
|
|
1216
1290
|
maxDate: props.maxDate,
|
|
1217
|
-
endDate: endValue,
|
|
1218
1291
|
startDay: props.startDay,
|
|
1219
1292
|
labelFormat: props.labelFormat,
|
|
1220
|
-
valueFormat:
|
|
1293
|
+
valueFormat: valueFormat === 'date' || valueFormat === 'timestamp' ? '' : valueFormat,
|
|
1221
1294
|
timeFormat: props.timeFormat,
|
|
1222
1295
|
defaultDate: sdDate,
|
|
1223
1296
|
defaultTime: sdTime,
|
|
@@ -1237,15 +1310,18 @@ export default {
|
|
|
1237
1310
|
h(VxeDatePanelComponent, {
|
|
1238
1311
|
ref: 'refEndDatePanel',
|
|
1239
1312
|
props: {
|
|
1240
|
-
value:
|
|
1313
|
+
value: paneEndVal,
|
|
1314
|
+
multiple: true,
|
|
1315
|
+
valueSort: true,
|
|
1316
|
+
limitCount: 3,
|
|
1317
|
+
defaultMode: 'last',
|
|
1241
1318
|
type: props.type,
|
|
1242
1319
|
className: props.className,
|
|
1243
1320
|
minDate: props.minDate,
|
|
1244
1321
|
maxDate: props.maxDate,
|
|
1245
|
-
startDate: startValue,
|
|
1246
1322
|
startDay: props.startDay,
|
|
1247
1323
|
labelFormat: props.labelFormat,
|
|
1248
|
-
valueFormat:
|
|
1324
|
+
valueFormat: valueFormat === 'date' || valueFormat === 'timestamp' ? '' : valueFormat,
|
|
1249
1325
|
timeFormat: props.timeFormat,
|
|
1250
1326
|
defaultDate: edDate,
|
|
1251
1327
|
defaultTime: edTime,
|
|
@@ -1285,7 +1361,7 @@ export default {
|
|
|
1285
1361
|
? h(VxeButtonComponent, {
|
|
1286
1362
|
props: {
|
|
1287
1363
|
size: 'mini',
|
|
1288
|
-
disabled: !(
|
|
1364
|
+
disabled: !(selectStValue || selectEdValue),
|
|
1289
1365
|
content: getI18n('vxe.button.clear')
|
|
1290
1366
|
},
|
|
1291
1367
|
on: {
|
|
@@ -1354,13 +1430,13 @@ export default {
|
|
|
1354
1430
|
const slots = $xeDateRangePicker.$scopedSlots;
|
|
1355
1431
|
const reactData = $xeDateRangePicker.reactData;
|
|
1356
1432
|
const { suffixIcon } = props;
|
|
1357
|
-
const {
|
|
1433
|
+
const { selectStValue, selectEdValue } = reactData;
|
|
1358
1434
|
const suffixSlot = slots.suffix;
|
|
1359
1435
|
const isDisabled = $xeDateRangePicker.computeIsDisabled;
|
|
1360
1436
|
const isClearable = $xeDateRangePicker.computeIsClearable;
|
|
1361
1437
|
return h('div', {
|
|
1362
1438
|
class: ['vxe-date-range-picker--suffix', {
|
|
1363
|
-
'is--clear': isClearable && !isDisabled && (
|
|
1439
|
+
'is--clear': isClearable && !isDisabled && (selectStValue || selectEdValue)
|
|
1364
1440
|
}]
|
|
1365
1441
|
}, [
|
|
1366
1442
|
isClearable
|
|
@@ -1410,7 +1486,7 @@ export default {
|
|
|
1410
1486
|
const props = $xeDateRangePicker;
|
|
1411
1487
|
const reactData = $xeDateRangePicker.reactData;
|
|
1412
1488
|
const { className, type, name, autoComplete } = props;
|
|
1413
|
-
const {
|
|
1489
|
+
const { selectStValue, selectEdValue, visiblePanel, isActivated } = reactData;
|
|
1414
1490
|
const vSize = $xeDateRangePicker.computeSize;
|
|
1415
1491
|
const isDisabled = $xeDateRangePicker.computeIsDisabled;
|
|
1416
1492
|
const formReadonly = $xeDateRangePicker.computeFormReadonly;
|
|
@@ -1434,7 +1510,7 @@ export default {
|
|
|
1434
1510
|
'is--visible': visiblePanel,
|
|
1435
1511
|
'is--disabled': isDisabled,
|
|
1436
1512
|
'is--active': isActivated,
|
|
1437
|
-
'show--clear': isClearable && !isDisabled && (
|
|
1513
|
+
'show--clear': isClearable && !isDisabled && (selectStValue || selectEdValue)
|
|
1438
1514
|
}],
|
|
1439
1515
|
attrs: {
|
|
1440
1516
|
spellcheck: false
|
|
@@ -1486,6 +1562,7 @@ export default {
|
|
|
1486
1562
|
},
|
|
1487
1563
|
created() {
|
|
1488
1564
|
const $xeDateRangePicker = this;
|
|
1565
|
+
$xeDateRangePicker.internalData = createInternalData();
|
|
1489
1566
|
$xeDateRangePicker.updateModelValue(true);
|
|
1490
1567
|
globalEvents.on($xeDateRangePicker, 'mousewheel', $xeDateRangePicker.handleGlobalMousewheelEvent);
|
|
1491
1568
|
globalEvents.on($xeDateRangePicker, 'mousedown', $xeDateRangePicker.handleGlobalMousedownEvent);
|
|
@@ -1499,6 +1576,8 @@ export default {
|
|
|
1499
1576
|
},
|
|
1500
1577
|
beforeDestroy() {
|
|
1501
1578
|
const $xeDateRangePicker = this;
|
|
1579
|
+
const reactData = $xeDateRangePicker.reactData;
|
|
1580
|
+
const internalData = $xeDateRangePicker.internalData;
|
|
1502
1581
|
const panelElem = $xeDateRangePicker.$refs.refInputPanel;
|
|
1503
1582
|
if (panelElem && panelElem.parentNode) {
|
|
1504
1583
|
panelElem.parentNode.removeChild(panelElem);
|
|
@@ -1508,6 +1587,8 @@ export default {
|
|
|
1508
1587
|
globalEvents.off($xeDateRangePicker, 'mousedown');
|
|
1509
1588
|
globalEvents.off($xeDateRangePicker, 'blur');
|
|
1510
1589
|
globalEvents.off($xeDateRangePicker, 'resize');
|
|
1590
|
+
XEUtils.assign(reactData, createReactData());
|
|
1591
|
+
XEUtils.assign(internalData, createInternalData());
|
|
1511
1592
|
},
|
|
1512
1593
|
render(h) {
|
|
1513
1594
|
return this.renderVN(h);
|