vxe-pc-ui 3.15.22 → 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 +236 -134
- 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 +259 -142
- 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 +381 -192
- 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 +31 -4
- package/packages/date-picker/src/date-picker.ts +1 -1
- package/packages/date-range-picker/src/date-range-picker.ts +238 -134
- 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/types/ui/commands.d.ts +3 -3
- /package/es/icon/{iconfont.1783065884505.ttf → iconfont.1783233735491.ttf} +0 -0
- /package/es/icon/{iconfont.1783065884505.woff → iconfont.1783233735491.woff} +0 -0
- /package/es/icon/{iconfont.1783065884505.woff2 → iconfont.1783233735491.woff2} +0 -0
- /package/es/{iconfont.1783065884505.ttf → iconfont.1783233735491.ttf} +0 -0
- /package/es/{iconfont.1783065884505.woff → iconfont.1783233735491.woff} +0 -0
- /package/es/{iconfont.1783065884505.woff2 → iconfont.1783233735491.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1783065884505.ttf → iconfont.1783233735491.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1783065884505.woff → iconfont.1783233735491.woff} +0 -0
- /package/lib/icon/style/{iconfont.1783065884505.woff2 → iconfont.1783233735491.woff2} +0 -0
- /package/lib/{iconfont.1783065884505.ttf → iconfont.1783233735491.ttf} +0 -0
- /package/lib/{iconfont.1783065884505.woff → iconfont.1783233735491.woff} +0 -0
- /package/lib/{iconfont.1783065884505.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 } 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() {
|
|
@@ -399,8 +403,8 @@ export default {
|
|
|
399
403
|
getRangeValue(sValue, eValue) {
|
|
400
404
|
const $xeDateRangePicker = this;
|
|
401
405
|
const props = $xeDateRangePicker;
|
|
402
|
-
const { value: modelValue, valueType } = props;
|
|
403
|
-
let isArr = XEUtils.isArray(modelValue);
|
|
406
|
+
const { value: modelValue, valueType, valueFormat } = props;
|
|
407
|
+
let isArr = valueFormat === 'date' || XEUtils.isArray(modelValue);
|
|
404
408
|
if (valueType) {
|
|
405
409
|
switch (valueType) {
|
|
406
410
|
case 'array':
|
|
@@ -412,7 +416,7 @@ export default {
|
|
|
412
416
|
}
|
|
413
417
|
}
|
|
414
418
|
if (sValue || eValue) {
|
|
415
|
-
const rest = [sValue ||
|
|
419
|
+
const rest = [sValue || null, eValue || null];
|
|
416
420
|
if (isArr) {
|
|
417
421
|
return rest;
|
|
418
422
|
}
|
|
@@ -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;
|
|
@@ -502,16 +506,37 @@ export default {
|
|
|
502
506
|
const reactData = $xeDateRangePicker.reactData;
|
|
503
507
|
const $xeForm = $xeDateRangePicker.$xeForm;
|
|
504
508
|
const formItemInfo = $xeDateRangePicker.formItemInfo;
|
|
505
|
-
const { value: modelValue } = props;
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
509
|
+
const { type, value: modelValue, valueFormat } = props;
|
|
510
|
+
const dateValueFormat = $xeDateRangePicker.computeDateValueFormat;
|
|
511
|
+
let startRest = sValue;
|
|
512
|
+
let endRest = eValue;
|
|
513
|
+
if (hasTimestampValueType(valueFormat)) {
|
|
514
|
+
if (startRest) {
|
|
515
|
+
const dateVal = parseDateValue(startRest, type, { valueFormat: dateValueFormat });
|
|
516
|
+
startRest = dateVal ? dateVal.getTime() : null;
|
|
517
|
+
}
|
|
518
|
+
if (endRest) {
|
|
519
|
+
const dateVal = parseDateValue(endRest, type, { valueFormat: dateValueFormat });
|
|
520
|
+
endRest = dateVal ? dateVal.getTime() : null;
|
|
521
|
+
}
|
|
522
|
+
}
|
|
523
|
+
else if (hasDateValueType(valueFormat)) {
|
|
524
|
+
if (startRest) {
|
|
525
|
+
startRest = parseDateValue(startRest, type, { valueFormat: dateValueFormat });
|
|
526
|
+
}
|
|
527
|
+
if (endRest) {
|
|
528
|
+
endRest = parseDateValue(endRest, type, { valueFormat: dateValueFormat });
|
|
529
|
+
}
|
|
530
|
+
}
|
|
531
|
+
reactData.selectStValue = startRest;
|
|
532
|
+
reactData.selectEdValue = endRest;
|
|
533
|
+
const value = $xeDateRangePicker.getRangeValue(startRest, endRest);
|
|
534
|
+
const isFinish = (startRest && endRest) || (!startRest && !endRest);
|
|
535
|
+
$xeDateRangePicker.$emit('update:modelValue', value);
|
|
536
|
+
$xeDateRangePicker.$emit('update:startValue', startRest || '');
|
|
537
|
+
$xeDateRangePicker.$emit('update:endValue', endRest || '');
|
|
513
538
|
if (XEUtils.toValueString(modelValue) !== value) {
|
|
514
|
-
$xeDateRangePicker.dispatchEvent('change', { value, startValue:
|
|
539
|
+
$xeDateRangePicker.dispatchEvent('change', { value, startValue: startRest, endValue: endRest, isFinish }, evnt);
|
|
515
540
|
// 自动更新校验状态
|
|
516
541
|
if ($xeForm && formItemInfo) {
|
|
517
542
|
$xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value);
|
|
@@ -544,9 +569,9 @@ export default {
|
|
|
544
569
|
const reactData = $xeDateRangePicker.reactData;
|
|
545
570
|
const isDisabled = $xeDateRangePicker.computeIsDisabled;
|
|
546
571
|
if (!isDisabled) {
|
|
547
|
-
const {
|
|
548
|
-
const value = $xeDateRangePicker.getRangeValue(
|
|
549
|
-
$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);
|
|
550
575
|
}
|
|
551
576
|
},
|
|
552
577
|
hidePanel() {
|
|
@@ -587,8 +612,8 @@ export default {
|
|
|
587
612
|
panelCellClassName({ date }) {
|
|
588
613
|
const $xeDateRangePicker = this;
|
|
589
614
|
const reactData = $xeDateRangePicker.reactData;
|
|
590
|
-
const startValue = reactData.
|
|
591
|
-
const endValue = reactData.
|
|
615
|
+
const startValue = reactData.selectStValue;
|
|
616
|
+
const endValue = reactData.selectEdValue;
|
|
592
617
|
if (startValue && endValue) {
|
|
593
618
|
const currTime = date.getTime();
|
|
594
619
|
const startTime = XEUtils.toStringDate(startValue).getTime();
|
|
@@ -605,18 +630,18 @@ export default {
|
|
|
605
630
|
const reactData = $xeDateRangePicker.reactData;
|
|
606
631
|
const internalData = $xeDateRangePicker.internalData;
|
|
607
632
|
const { autoClose } = props;
|
|
608
|
-
const {
|
|
633
|
+
const { selectStValue, selectEdValue } = reactData;
|
|
609
634
|
const { selectStatus } = internalData;
|
|
610
635
|
const isDatePickerType = $xeDateRangePicker.computeIsDatePickerType;
|
|
611
636
|
if (autoClose) {
|
|
612
637
|
if (selectStatus && isDatePickerType) {
|
|
613
|
-
if (
|
|
638
|
+
if (selectStValue && selectEdValue) {
|
|
614
639
|
$xeDateRangePicker.hidePanel();
|
|
615
640
|
}
|
|
616
641
|
}
|
|
617
642
|
}
|
|
618
643
|
else {
|
|
619
|
-
if (
|
|
644
|
+
if (selectStValue && selectEdValue) {
|
|
620
645
|
internalData.selectStatus = false;
|
|
621
646
|
}
|
|
622
647
|
}
|
|
@@ -626,9 +651,9 @@ export default {
|
|
|
626
651
|
const reactData = $xeDateRangePicker.reactData;
|
|
627
652
|
const isDisabled = $xeDateRangePicker.computeIsDisabled;
|
|
628
653
|
if (!isDisabled) {
|
|
629
|
-
const {
|
|
630
|
-
const value = $xeDateRangePicker.getRangeValue(
|
|
631
|
-
$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);
|
|
632
657
|
}
|
|
633
658
|
},
|
|
634
659
|
blurEvent(evnt) {
|
|
@@ -636,16 +661,16 @@ export default {
|
|
|
636
661
|
const reactData = $xeDateRangePicker.reactData;
|
|
637
662
|
const $xeForm = $xeDateRangePicker.$xeForm;
|
|
638
663
|
const formItemInfo = $xeDateRangePicker.formItemInfo;
|
|
639
|
-
const {
|
|
664
|
+
const { selectStValue, selectEdValue } = reactData;
|
|
640
665
|
const inpImmediate = $xeDateRangePicker.computeInpImmediate;
|
|
641
666
|
const value = '';
|
|
642
667
|
if (!inpImmediate) {
|
|
643
|
-
$xeDateRangePicker.handleChange(
|
|
668
|
+
$xeDateRangePicker.handleChange(selectStValue, selectEdValue, evnt);
|
|
644
669
|
}
|
|
645
670
|
if (!reactData.visiblePanel) {
|
|
646
671
|
reactData.isActivated = false;
|
|
647
672
|
}
|
|
648
|
-
$xeDateRangePicker.dispatchEvent('blur', { value, startValue, endValue }, evnt);
|
|
673
|
+
$xeDateRangePicker.dispatchEvent('blur', { value, startValue: selectStValue, endValue: selectEdValue }, evnt);
|
|
649
674
|
// 自动更新校验状态
|
|
650
675
|
if ($xeForm && formItemInfo) {
|
|
651
676
|
$xeForm.triggerItemEvent(evnt, formItemInfo.itemConfig.field, value);
|
|
@@ -683,22 +708,31 @@ export default {
|
|
|
683
708
|
const reactData = $xeDateRangePicker.reactData;
|
|
684
709
|
const internalData = $xeDateRangePicker.internalData;
|
|
685
710
|
const { selectStatus } = internalData;
|
|
686
|
-
const { value, $event } = params;
|
|
687
|
-
const
|
|
688
|
-
|
|
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);
|
|
689
730
|
$xeDateRangePicker.handleSelectClose();
|
|
690
731
|
if (!selectStatus) {
|
|
691
732
|
internalData.selectStatus = true;
|
|
692
733
|
}
|
|
693
734
|
$xeDateRangePicker.$nextTick(() => {
|
|
694
|
-
|
|
695
|
-
const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
|
|
696
|
-
if ($startDatePanel && $endDatePanel) {
|
|
697
|
-
const startValue = $startDatePanel.getModelValue();
|
|
698
|
-
if (!endValue && startValue) {
|
|
699
|
-
$endDatePanel.setPanelDate(XEUtils.toStringDate(startValue));
|
|
700
|
-
}
|
|
701
|
-
}
|
|
735
|
+
$xeDateRangePicker.handleUpdateStartPanelDate();
|
|
702
736
|
});
|
|
703
737
|
},
|
|
704
738
|
endPanelChangeEvent(params) {
|
|
@@ -706,91 +740,147 @@ export default {
|
|
|
706
740
|
const reactData = $xeDateRangePicker.reactData;
|
|
707
741
|
const internalData = $xeDateRangePicker.internalData;
|
|
708
742
|
const { selectStatus } = internalData;
|
|
709
|
-
const { value, $event } = params;
|
|
710
|
-
const
|
|
711
|
-
|
|
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);
|
|
712
763
|
$xeDateRangePicker.handleSelectClose();
|
|
713
764
|
if (!selectStatus) {
|
|
714
765
|
internalData.selectStatus = true;
|
|
715
766
|
}
|
|
716
767
|
$xeDateRangePicker.$nextTick(() => {
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
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));
|
|
723
794
|
}
|
|
795
|
+
break;
|
|
724
796
|
}
|
|
725
|
-
}
|
|
797
|
+
}
|
|
726
798
|
},
|
|
727
|
-
startPanelDateBtnChangeEvent(
|
|
799
|
+
startPanelDateBtnChangeEvent() {
|
|
728
800
|
const $xeDateRangePicker = this;
|
|
729
801
|
const props = $xeDateRangePicker;
|
|
730
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();
|
|
731
814
|
if (linkedPanels) {
|
|
732
|
-
const { viewType } = params;
|
|
733
|
-
const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
|
|
734
|
-
const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
|
|
735
|
-
if (!$startDatePanel || !$endDatePanel) {
|
|
736
|
-
return;
|
|
737
|
-
}
|
|
738
|
-
const startPanelDate = $startDatePanel.getPanelDate();
|
|
739
|
-
if (!startPanelDate) {
|
|
740
|
-
return;
|
|
741
|
-
}
|
|
742
|
-
const endYear = startPanelDate.getFullYear();
|
|
743
|
-
const endMonth = startPanelDate.getMonth();
|
|
744
815
|
switch (viewType) {
|
|
745
816
|
case 'day':
|
|
746
817
|
case 'date':
|
|
747
818
|
case 'week': {
|
|
748
|
-
|
|
749
|
-
startPanelDate.setMonth(endMonth + 1);
|
|
750
|
-
}
|
|
751
|
-
else {
|
|
752
|
-
startPanelDate.setFullYear(endYear + 1);
|
|
753
|
-
startPanelDate.setMonth(0);
|
|
754
|
-
}
|
|
755
|
-
$endDatePanel.setPanelDate(startPanelDate);
|
|
819
|
+
$endDatePanel.setPanelDate(getNextMonth(startPanelDate));
|
|
756
820
|
break;
|
|
757
821
|
}
|
|
758
822
|
}
|
|
759
823
|
}
|
|
824
|
+
else {
|
|
825
|
+
$xeDateRangePicker.handleUpdateStartPanelDate();
|
|
826
|
+
}
|
|
760
827
|
},
|
|
761
|
-
|
|
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() {
|
|
762
857
|
const $xeDateRangePicker = this;
|
|
763
858
|
const props = $xeDateRangePicker;
|
|
764
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();
|
|
765
871
|
if (linkedPanels) {
|
|
766
|
-
const { viewType } = params;
|
|
767
|
-
const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
|
|
768
|
-
const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
|
|
769
|
-
if (!$startDatePanel || !$endDatePanel) {
|
|
770
|
-
return;
|
|
771
|
-
}
|
|
772
|
-
const endPanelDate = $endDatePanel.getPanelDate();
|
|
773
|
-
if (!endPanelDate) {
|
|
774
|
-
return;
|
|
775
|
-
}
|
|
776
|
-
const endYear = endPanelDate.getFullYear();
|
|
777
|
-
const endMonth = endPanelDate.getMonth();
|
|
778
872
|
switch (viewType) {
|
|
779
873
|
case 'day':
|
|
780
874
|
case 'date':
|
|
781
875
|
case 'week': {
|
|
782
|
-
|
|
783
|
-
endPanelDate.setMonth(endMonth - 1);
|
|
784
|
-
}
|
|
785
|
-
else {
|
|
786
|
-
endPanelDate.setFullYear(endYear - 1);
|
|
787
|
-
endPanelDate.setMonth(11);
|
|
788
|
-
}
|
|
789
|
-
$startDatePanel.setPanelDate(endPanelDate);
|
|
876
|
+
$startDatePanel.setPanelDate(getPrevMonth(endPanelDate));
|
|
790
877
|
break;
|
|
791
878
|
}
|
|
792
879
|
}
|
|
793
880
|
}
|
|
881
|
+
else {
|
|
882
|
+
$xeDateRangePicker.handleUpdateEndPanelDate();
|
|
883
|
+
}
|
|
794
884
|
},
|
|
795
885
|
// 全局事件
|
|
796
886
|
handleGlobalMousedownEvent(evnt) {
|
|
@@ -939,6 +1029,7 @@ export default {
|
|
|
939
1029
|
reactData.isAniVisible = true;
|
|
940
1030
|
setTimeout(() => {
|
|
941
1031
|
reactData.visiblePanel = true;
|
|
1032
|
+
$xeDateRangePicker.handleUpdateStartPanelDate();
|
|
942
1033
|
$xeDateRangePicker.updatePlacement();
|
|
943
1034
|
}, 10);
|
|
944
1035
|
$xeDateRangePicker.updateZindex();
|
|
@@ -981,8 +1072,8 @@ export default {
|
|
|
981
1072
|
const shortcutOpts = $xeDateRangePicker.computeShortcutOpts;
|
|
982
1073
|
const { autoClose } = shortcutOpts;
|
|
983
1074
|
const { code, clickMethod } = option;
|
|
984
|
-
let startValue = reactData.
|
|
985
|
-
let endValue = reactData.
|
|
1075
|
+
let startValue = reactData.selectStValue;
|
|
1076
|
+
let endValue = reactData.selectEdValue;
|
|
986
1077
|
let value = $xeDateRangePicker.getRangeValue(startValue, endValue);
|
|
987
1078
|
const shortcutParams = {
|
|
988
1079
|
$dateRangePicker: $xeDateRangePicker,
|
|
@@ -1042,8 +1133,8 @@ export default {
|
|
|
1042
1133
|
setModelValue(startValue, endValue) {
|
|
1043
1134
|
const $xeDateRangePicker = this;
|
|
1044
1135
|
const reactData = $xeDateRangePicker.reactData;
|
|
1045
|
-
reactData.
|
|
1046
|
-
reactData.
|
|
1136
|
+
reactData.selectStValue = startValue || '';
|
|
1137
|
+
reactData.selectEdValue = endValue || '';
|
|
1047
1138
|
const value = $xeDateRangePicker.getRangeValue(startValue, endValue);
|
|
1048
1139
|
$xeDateRangePicker.emitModel(value);
|
|
1049
1140
|
},
|
|
@@ -1111,8 +1202,8 @@ export default {
|
|
|
1111
1202
|
if (popupOpts.enabled === false) {
|
|
1112
1203
|
return renderEmptyElement($xeDateRangePicker);
|
|
1113
1204
|
}
|
|
1114
|
-
const { type, separator, autoClose, showConfirmButton, showClearButton } = props;
|
|
1115
|
-
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;
|
|
1116
1207
|
const vSize = $xeDateRangePicker.computeSize;
|
|
1117
1208
|
const btnTransfer = $xeDateRangePicker.computeBtnTransfer;
|
|
1118
1209
|
const shortcutOpts = $xeDateRangePicker.computeShortcutOpts;
|
|
@@ -1188,15 +1279,18 @@ export default {
|
|
|
1188
1279
|
h(VxeDatePanelComponent, {
|
|
1189
1280
|
ref: 'refStartDatePanel',
|
|
1190
1281
|
props: {
|
|
1191
|
-
value:
|
|
1282
|
+
value: paneStartVal,
|
|
1283
|
+
multiple: true,
|
|
1284
|
+
valueSort: true,
|
|
1285
|
+
limitCount: 3,
|
|
1286
|
+
defaultMode: 'first',
|
|
1192
1287
|
type: props.type,
|
|
1193
1288
|
className: props.className,
|
|
1194
1289
|
minDate: props.minDate,
|
|
1195
1290
|
maxDate: props.maxDate,
|
|
1196
|
-
endDate: endValue,
|
|
1197
1291
|
startDay: props.startDay,
|
|
1198
1292
|
labelFormat: props.labelFormat,
|
|
1199
|
-
valueFormat:
|
|
1293
|
+
valueFormat: valueFormat === 'date' || valueFormat === 'timestamp' ? '' : valueFormat,
|
|
1200
1294
|
timeFormat: props.timeFormat,
|
|
1201
1295
|
defaultDate: sdDate,
|
|
1202
1296
|
defaultTime: sdTime,
|
|
@@ -1216,15 +1310,18 @@ export default {
|
|
|
1216
1310
|
h(VxeDatePanelComponent, {
|
|
1217
1311
|
ref: 'refEndDatePanel',
|
|
1218
1312
|
props: {
|
|
1219
|
-
value:
|
|
1313
|
+
value: paneEndVal,
|
|
1314
|
+
multiple: true,
|
|
1315
|
+
valueSort: true,
|
|
1316
|
+
limitCount: 3,
|
|
1317
|
+
defaultMode: 'last',
|
|
1220
1318
|
type: props.type,
|
|
1221
1319
|
className: props.className,
|
|
1222
1320
|
minDate: props.minDate,
|
|
1223
1321
|
maxDate: props.maxDate,
|
|
1224
|
-
startDate: startValue,
|
|
1225
1322
|
startDay: props.startDay,
|
|
1226
1323
|
labelFormat: props.labelFormat,
|
|
1227
|
-
valueFormat:
|
|
1324
|
+
valueFormat: valueFormat === 'date' || valueFormat === 'timestamp' ? '' : valueFormat,
|
|
1228
1325
|
timeFormat: props.timeFormat,
|
|
1229
1326
|
defaultDate: edDate,
|
|
1230
1327
|
defaultTime: edTime,
|
|
@@ -1264,7 +1361,7 @@ export default {
|
|
|
1264
1361
|
? h(VxeButtonComponent, {
|
|
1265
1362
|
props: {
|
|
1266
1363
|
size: 'mini',
|
|
1267
|
-
disabled: !(
|
|
1364
|
+
disabled: !(selectStValue || selectEdValue),
|
|
1268
1365
|
content: getI18n('vxe.button.clear')
|
|
1269
1366
|
},
|
|
1270
1367
|
on: {
|
|
@@ -1333,13 +1430,13 @@ export default {
|
|
|
1333
1430
|
const slots = $xeDateRangePicker.$scopedSlots;
|
|
1334
1431
|
const reactData = $xeDateRangePicker.reactData;
|
|
1335
1432
|
const { suffixIcon } = props;
|
|
1336
|
-
const {
|
|
1433
|
+
const { selectStValue, selectEdValue } = reactData;
|
|
1337
1434
|
const suffixSlot = slots.suffix;
|
|
1338
1435
|
const isDisabled = $xeDateRangePicker.computeIsDisabled;
|
|
1339
1436
|
const isClearable = $xeDateRangePicker.computeIsClearable;
|
|
1340
1437
|
return h('div', {
|
|
1341
1438
|
class: ['vxe-date-range-picker--suffix', {
|
|
1342
|
-
'is--clear': isClearable && !isDisabled && (
|
|
1439
|
+
'is--clear': isClearable && !isDisabled && (selectStValue || selectEdValue)
|
|
1343
1440
|
}]
|
|
1344
1441
|
}, [
|
|
1345
1442
|
isClearable
|
|
@@ -1389,7 +1486,7 @@ export default {
|
|
|
1389
1486
|
const props = $xeDateRangePicker;
|
|
1390
1487
|
const reactData = $xeDateRangePicker.reactData;
|
|
1391
1488
|
const { className, type, name, autoComplete } = props;
|
|
1392
|
-
const {
|
|
1489
|
+
const { selectStValue, selectEdValue, visiblePanel, isActivated } = reactData;
|
|
1393
1490
|
const vSize = $xeDateRangePicker.computeSize;
|
|
1394
1491
|
const isDisabled = $xeDateRangePicker.computeIsDisabled;
|
|
1395
1492
|
const formReadonly = $xeDateRangePicker.computeFormReadonly;
|
|
@@ -1413,7 +1510,7 @@ export default {
|
|
|
1413
1510
|
'is--visible': visiblePanel,
|
|
1414
1511
|
'is--disabled': isDisabled,
|
|
1415
1512
|
'is--active': isActivated,
|
|
1416
|
-
'show--clear': isClearable && !isDisabled && (
|
|
1513
|
+
'show--clear': isClearable && !isDisabled && (selectStValue || selectEdValue)
|
|
1417
1514
|
}],
|
|
1418
1515
|
attrs: {
|
|
1419
1516
|
spellcheck: false
|
|
@@ -1465,6 +1562,7 @@ export default {
|
|
|
1465
1562
|
},
|
|
1466
1563
|
created() {
|
|
1467
1564
|
const $xeDateRangePicker = this;
|
|
1565
|
+
$xeDateRangePicker.internalData = createInternalData();
|
|
1468
1566
|
$xeDateRangePicker.updateModelValue(true);
|
|
1469
1567
|
globalEvents.on($xeDateRangePicker, 'mousewheel', $xeDateRangePicker.handleGlobalMousewheelEvent);
|
|
1470
1568
|
globalEvents.on($xeDateRangePicker, 'mousedown', $xeDateRangePicker.handleGlobalMousedownEvent);
|
|
@@ -1478,6 +1576,8 @@ export default {
|
|
|
1478
1576
|
},
|
|
1479
1577
|
beforeDestroy() {
|
|
1480
1578
|
const $xeDateRangePicker = this;
|
|
1579
|
+
const reactData = $xeDateRangePicker.reactData;
|
|
1580
|
+
const internalData = $xeDateRangePicker.internalData;
|
|
1481
1581
|
const panelElem = $xeDateRangePicker.$refs.refInputPanel;
|
|
1482
1582
|
if (panelElem && panelElem.parentNode) {
|
|
1483
1583
|
panelElem.parentNode.removeChild(panelElem);
|
|
@@ -1487,6 +1587,8 @@ export default {
|
|
|
1487
1587
|
globalEvents.off($xeDateRangePicker, 'mousedown');
|
|
1488
1588
|
globalEvents.off($xeDateRangePicker, 'blur');
|
|
1489
1589
|
globalEvents.off($xeDateRangePicker, 'resize');
|
|
1590
|
+
XEUtils.assign(reactData, createReactData());
|
|
1591
|
+
XEUtils.assign(internalData, createInternalData());
|
|
1490
1592
|
},
|
|
1491
1593
|
render(h) {
|
|
1492
1594
|
return this.renderVN(h);
|