vxe-pc-ui 3.15.23 → 3.15.25
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 +96 -53
- package/es/date-panel/src/util.js +40 -3
- package/es/date-picker/src/date-picker.js +20 -13
- package/es/date-range-picker/src/date-range-picker.js +296 -132
- 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 +110 -54
- package/lib/date-panel/src/date-panel.min.js +1 -1
- package/lib/date-panel/src/util.js +43 -5
- package/lib/date-panel/src/util.min.js +1 -1
- package/lib/date-picker/src/date-picker.js +20 -13
- package/lib/date-picker/src/date-picker.min.js +1 -1
- package/lib/date-range-picker/src/date-range-picker.js +318 -139
- 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 +538 -240
- 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 +102 -54
- package/packages/date-panel/src/util.ts +42 -3
- package/packages/date-picker/src/date-picker.ts +21 -13
- package/packages/date-range-picker/src/date-range-picker.ts +296 -131
- package/packages/tooltip/src/tooltip.ts +41 -20
- package/types/components/date-panel.d.ts +18 -3
- 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.1783247770465.ttf} +0 -0
- /package/es/icon/{iconfont.1783073807010.woff → iconfont.1783247770465.woff} +0 -0
- /package/es/icon/{iconfont.1783073807010.woff2 → iconfont.1783247770465.woff2} +0 -0
- /package/es/{iconfont.1783073807010.ttf → iconfont.1783247770465.ttf} +0 -0
- /package/es/{iconfont.1783073807010.woff → iconfont.1783247770465.woff} +0 -0
- /package/es/{iconfont.1783073807010.woff2 → iconfont.1783247770465.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1783073807010.ttf → iconfont.1783247770465.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1783073807010.woff → iconfont.1783247770465.woff} +0 -0
- /package/lib/icon/style/{iconfont.1783073807010.woff2 → iconfont.1783247770465.woff2} +0 -0
- /package/lib/{iconfont.1783073807010.ttf → iconfont.1783247770465.ttf} +0 -0
- /package/lib/{iconfont.1783073807010.woff → iconfont.1783247770465.woff} +0 -0
- /package/lib/{iconfont.1783073807010.woff2 → iconfont.1783247770465.woff2} +0 -0
|
@@ -2,6 +2,8 @@ import { defineVxeComponent } from '../../ui/src/comp';
|
|
|
2
2
|
import XEUtils from 'xe-utils';
|
|
3
3
|
import { getConfig, getI18n, createEvent, globalMixins, renderEmptyElement } from '../../ui';
|
|
4
4
|
import { toStringTimeDate, getDateQuarter, parseDateValue, parseDateObj, handleValueFormat, hasDateValueType, hasTimestampValueType } from './util';
|
|
5
|
+
import { createComponentLog } from '../../ui/src/log';
|
|
6
|
+
const { errLog } = createComponentLog('date-panel');
|
|
5
7
|
export default {
|
|
6
8
|
name: 'VxeDatePanel',
|
|
7
9
|
mixins: [
|
|
@@ -12,7 +14,7 @@ export default {
|
|
|
12
14
|
event: 'modelValue'
|
|
13
15
|
},
|
|
14
16
|
props: {
|
|
15
|
-
value: [String, Number, Date],
|
|
17
|
+
value: [String, Number, Date, Array],
|
|
16
18
|
type: {
|
|
17
19
|
type: String,
|
|
18
20
|
default: 'date'
|
|
@@ -37,6 +39,7 @@ export default {
|
|
|
37
39
|
type: [String, Number, Date],
|
|
38
40
|
default: () => getConfig().datePanel.endDate
|
|
39
41
|
},
|
|
42
|
+
defaultMode: String,
|
|
40
43
|
defaultDate: [String, Number, Date],
|
|
41
44
|
defaultTime: [String, Number, Date],
|
|
42
45
|
minDate: [String, Number, Date],
|
|
@@ -48,6 +51,7 @@ export default {
|
|
|
48
51
|
labelFormat: String,
|
|
49
52
|
valueFormat: String,
|
|
50
53
|
timeFormat: String,
|
|
54
|
+
valueSort: Boolean,
|
|
51
55
|
festivalMethod: {
|
|
52
56
|
type: Function,
|
|
53
57
|
default: () => getConfig().datePanel.festivalMethod
|
|
@@ -79,9 +83,9 @@ export default {
|
|
|
79
83
|
currentDate: null
|
|
80
84
|
};
|
|
81
85
|
const internalData = {
|
|
82
|
-
yearSize:
|
|
83
|
-
monthSize:
|
|
84
|
-
quarterSize:
|
|
86
|
+
yearSize: 16,
|
|
87
|
+
monthSize: 12,
|
|
88
|
+
quarterSize: 4,
|
|
85
89
|
hpTimeout: undefined
|
|
86
90
|
};
|
|
87
91
|
return {
|
|
@@ -90,17 +94,24 @@ export default {
|
|
|
90
94
|
internalData
|
|
91
95
|
};
|
|
92
96
|
},
|
|
93
|
-
computed: Object.assign(Object.assign({}, {}), {
|
|
97
|
+
computed: Object.assign(Object.assign({}, {}), { computeIsTimeType() {
|
|
94
98
|
const $xeDatePanel = this;
|
|
95
99
|
const props = $xeDatePanel;
|
|
96
100
|
const { type } = props;
|
|
97
|
-
return type === 'time'
|
|
101
|
+
return type === 'time';
|
|
102
|
+
},
|
|
103
|
+
computeIsTimeOrDateTimeType() {
|
|
104
|
+
const $xeDatePanel = this;
|
|
105
|
+
const props = $xeDatePanel;
|
|
106
|
+
const { type } = props;
|
|
107
|
+
const isTimeType = $xeDatePanel.computeIsTimeType;
|
|
108
|
+
return isTimeType || type === 'datetime';
|
|
98
109
|
},
|
|
99
110
|
computeIsDatePanelType() {
|
|
100
111
|
const $xeDatePanel = this;
|
|
101
112
|
const props = $xeDatePanel;
|
|
102
|
-
const
|
|
103
|
-
return
|
|
113
|
+
const isTimeOrDateTimeType = $xeDatePanel.computeIsTimeOrDateTimeType;
|
|
114
|
+
return isTimeOrDateTimeType || ['date', 'week', 'month', 'quarter', 'year'].indexOf(props.type) > -1;
|
|
104
115
|
},
|
|
105
116
|
computeDateStartDate() {
|
|
106
117
|
const $xeDatePanel = this;
|
|
@@ -115,19 +126,25 @@ export default {
|
|
|
115
126
|
computeDateListValue() {
|
|
116
127
|
const $xeDatePanel = this;
|
|
117
128
|
const props = $xeDatePanel;
|
|
118
|
-
const { value: modelValue,
|
|
129
|
+
const { value: modelValue, valueFormat } = props;
|
|
119
130
|
const isDatePanelType = $xeDatePanel.computeIsDatePanelType;
|
|
120
131
|
const dateValueFormat = $xeDatePanel.computeDateValueFormat;
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
132
|
+
const restList = [];
|
|
133
|
+
if (modelValue && isDatePanelType) {
|
|
134
|
+
(XEUtils.isArray(modelValue) ? modelValue : XEUtils.toValueString(modelValue).split(',')).forEach(val => {
|
|
135
|
+
let strVal = val;
|
|
136
|
+
if (val) {
|
|
137
|
+
if (valueFormat === 'timestamp') {
|
|
138
|
+
if (XEUtils.isString(val) && /^\d+$/.test(val)) {
|
|
139
|
+
strVal = Number(strVal);
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
const date = $xeDatePanel.parseDate(strVal, dateValueFormat);
|
|
143
|
+
restList.push(date);
|
|
126
144
|
}
|
|
127
|
-
return date;
|
|
128
145
|
});
|
|
129
146
|
}
|
|
130
|
-
return
|
|
147
|
+
return restList;
|
|
131
148
|
},
|
|
132
149
|
computeDateMultipleValue() {
|
|
133
150
|
const $xeDatePanel = this;
|
|
@@ -171,12 +188,14 @@ export default {
|
|
|
171
188
|
computeDateValue() {
|
|
172
189
|
const $xeDatePanel = this;
|
|
173
190
|
const props = $xeDatePanel;
|
|
174
|
-
const { value: modelValue } = props;
|
|
191
|
+
const { value: modelValue, defaultMode } = props;
|
|
175
192
|
const isDatePanelType = $xeDatePanel.computeIsDatePanelType;
|
|
176
193
|
const dateValueFormat = $xeDatePanel.computeDateValueFormat;
|
|
177
194
|
let val = null;
|
|
178
195
|
if (modelValue && isDatePanelType) {
|
|
179
|
-
const
|
|
196
|
+
const vals = XEUtils.isString(modelValue) ? modelValue.split(',') : modelValue;
|
|
197
|
+
const currVal = defaultMode === 'last' ? XEUtils.last(vals) : XEUtils.first(vals);
|
|
198
|
+
const date = $xeDatePanel.parseDate(currVal, dateValueFormat);
|
|
180
199
|
if (XEUtils.isValidDate(date)) {
|
|
181
200
|
val = date;
|
|
182
201
|
}
|
|
@@ -217,8 +236,8 @@ export default {
|
|
|
217
236
|
computeDateHMSTime() {
|
|
218
237
|
const $xeDatePanel = this;
|
|
219
238
|
const dateValue = $xeDatePanel.computeDateValue;
|
|
220
|
-
const
|
|
221
|
-
return dateValue &&
|
|
239
|
+
const isTimeOrDateTimeType = $xeDatePanel.computeIsTimeOrDateTimeType;
|
|
240
|
+
return dateValue && isTimeOrDateTimeType ? (dateValue.getHours() * 3600 + dateValue.getMinutes() * 60 + dateValue.getSeconds()) * 1000 : 0;
|
|
222
241
|
},
|
|
223
242
|
computeDateLabelFormat() {
|
|
224
243
|
const $xeDatePanel = this;
|
|
@@ -241,7 +260,7 @@ export default {
|
|
|
241
260
|
const currFullYear = currentDate.getFullYear();
|
|
242
261
|
const selectFullYear = selectMonth.getFullYear();
|
|
243
262
|
const startYearDate = new Date(selectFullYear - selectFullYear % yearSize, 0, 1);
|
|
244
|
-
for (let index =
|
|
263
|
+
for (let index = 0; index < yearSize; index++) {
|
|
245
264
|
const date = XEUtils.getWhatYear(startYearDate, index, 'first');
|
|
246
265
|
const itemFullYear = date.getFullYear();
|
|
247
266
|
years.push({
|
|
@@ -352,7 +371,7 @@ export default {
|
|
|
352
371
|
const currQuarter = getDateQuarter(currentDate);
|
|
353
372
|
const firstYear = XEUtils.getWhatYear(selectMonth, 0, 'first');
|
|
354
373
|
const selFullYear = firstYear.getFullYear();
|
|
355
|
-
for (let index =
|
|
374
|
+
for (let index = 0; index < quarterSize; index++) {
|
|
356
375
|
const date = XEUtils.getWhatQuarter(firstYear, index);
|
|
357
376
|
const itemFullYear = date.getFullYear();
|
|
358
377
|
const itemQuarter = getDateQuarter(date);
|
|
@@ -385,7 +404,7 @@ export default {
|
|
|
385
404
|
const currFullYear = currentDate.getFullYear();
|
|
386
405
|
const currMonth = currentDate.getMonth();
|
|
387
406
|
const selFullYear = XEUtils.getWhatYear(selectMonth, 0, 'first').getFullYear();
|
|
388
|
-
for (let index =
|
|
407
|
+
for (let index = 0; index < monthSize; index++) {
|
|
389
408
|
const date = XEUtils.getWhatYear(selectMonth, 0, index);
|
|
390
409
|
const itemFullYear = date.getFullYear();
|
|
391
410
|
const itemMonth = date.getMonth();
|
|
@@ -469,8 +488,8 @@ export default {
|
|
|
469
488
|
const timeOpts = $xeDatePanel.computeTimeOpts;
|
|
470
489
|
const { hours: hourOptions, hourDisabledMethod } = timeOpts;
|
|
471
490
|
const list = [];
|
|
472
|
-
const
|
|
473
|
-
if (
|
|
491
|
+
const isTimeOrDateTimeType = $xeDatePanel.computeIsTimeOrDateTimeType;
|
|
492
|
+
if (isTimeOrDateTimeType) {
|
|
474
493
|
if (hourOptions && hourOptions.length) {
|
|
475
494
|
hourOptions.forEach(item => {
|
|
476
495
|
if (XEUtils.isNumber(item) || XEUtils.isString(item)) {
|
|
@@ -509,8 +528,8 @@ export default {
|
|
|
509
528
|
const timeOpts = $xeDatePanel.computeTimeOpts;
|
|
510
529
|
const { minutes: minuteOptions, minuteDisabledMethod } = timeOpts;
|
|
511
530
|
const list = [];
|
|
512
|
-
const
|
|
513
|
-
if (
|
|
531
|
+
const isTimeOrDateTimeType = $xeDatePanel.computeIsTimeOrDateTimeType;
|
|
532
|
+
if (isTimeOrDateTimeType) {
|
|
514
533
|
if (minuteOptions && minuteOptions.length) {
|
|
515
534
|
minuteOptions.forEach(item => {
|
|
516
535
|
if (XEUtils.isNumber(item) || XEUtils.isString(item)) {
|
|
@@ -563,8 +582,8 @@ export default {
|
|
|
563
582
|
const timeOpts = $xeDatePanel.computeTimeOpts;
|
|
564
583
|
const { seconds: secondOptions, secondDisabledMethod } = timeOpts;
|
|
565
584
|
const list = [];
|
|
566
|
-
const
|
|
567
|
-
if (
|
|
585
|
+
const isTimeOrDateTimeType = $xeDatePanel.computeIsTimeOrDateTimeType;
|
|
586
|
+
if (isTimeOrDateTimeType) {
|
|
568
587
|
if (secondOptions && secondOptions.length) {
|
|
569
588
|
secondOptions.forEach(item => {
|
|
570
589
|
if (XEUtils.isNumber(item) || XEUtils.isString(item)) {
|
|
@@ -634,10 +653,10 @@ export default {
|
|
|
634
653
|
const props = $xeDatePanel;
|
|
635
654
|
const { type, multiple } = props;
|
|
636
655
|
if (type === 'time') {
|
|
637
|
-
return toStringTimeDate(value);
|
|
656
|
+
return toStringTimeDate(XEUtils.isArray(value) ? XEUtils.last(value) : value);
|
|
638
657
|
}
|
|
639
658
|
if (XEUtils.isArray(value)) {
|
|
640
|
-
return XEUtils.toStringDate(value
|
|
659
|
+
return XEUtils.toStringDate(XEUtils.last(value), format);
|
|
641
660
|
}
|
|
642
661
|
if (XEUtils.isString(value)) {
|
|
643
662
|
return XEUtils.toStringDate(multiple ? XEUtils.last(value.split(',')) : value, format);
|
|
@@ -708,7 +727,7 @@ export default {
|
|
|
708
727
|
$xeDatePanel.handleChange('', { type: 'check' });
|
|
709
728
|
}
|
|
710
729
|
},
|
|
711
|
-
handleChange(value, evnt) {
|
|
730
|
+
handleChange(value, evnt, params) {
|
|
712
731
|
const $xeDatePanel = this;
|
|
713
732
|
const props = $xeDatePanel;
|
|
714
733
|
const reactData = $xeDatePanel.reactData;
|
|
@@ -720,20 +739,20 @@ export default {
|
|
|
720
739
|
const timeNum = dateVal ? dateVal.getTime() : null;
|
|
721
740
|
$xeDatePanel.emitModel(timeNum);
|
|
722
741
|
if (modelValue !== timeNum) {
|
|
723
|
-
$xeDatePanel.dispatchEvent('change', { value: timeNum }, evnt);
|
|
742
|
+
$xeDatePanel.dispatchEvent('change', { value: timeNum, currValue: params ? params.currValue : '' }, evnt);
|
|
724
743
|
}
|
|
725
744
|
}
|
|
726
745
|
else if (hasDateValueType(valueFormat)) {
|
|
727
746
|
const dateVal = parseDateValue(value, type, { valueFormat: dateValueFormat });
|
|
728
747
|
$xeDatePanel.emitModel(dateVal);
|
|
729
748
|
if (modelValue && dateVal ? XEUtils.toStringDate(modelValue).getTime() !== dateVal.getTime() : modelValue !== dateVal) {
|
|
730
|
-
$xeDatePanel.dispatchEvent('change', { value: dateVal }, evnt);
|
|
749
|
+
$xeDatePanel.dispatchEvent('change', { value: dateVal, currValue: params ? params.currValue : '' }, evnt);
|
|
731
750
|
}
|
|
732
751
|
}
|
|
733
752
|
else {
|
|
734
753
|
$xeDatePanel.emitModel(value);
|
|
735
754
|
if (XEUtils.toValueString(modelValue) !== value) {
|
|
736
|
-
$xeDatePanel.dispatchEvent('change', { value }, evnt);
|
|
755
|
+
$xeDatePanel.dispatchEvent('change', { value, currValue: params ? params.currValue : '' }, evnt);
|
|
737
756
|
}
|
|
738
757
|
}
|
|
739
758
|
},
|
|
@@ -807,16 +826,17 @@ export default {
|
|
|
807
826
|
const $xeDatePanel = this;
|
|
808
827
|
const props = $xeDatePanel;
|
|
809
828
|
const reactData = $xeDatePanel.reactData;
|
|
810
|
-
const { value: modelValue, multiple } = props;
|
|
829
|
+
const { value: modelValue, multiple, valueSort } = props;
|
|
811
830
|
const { datetimePanelValue } = reactData;
|
|
812
|
-
const
|
|
831
|
+
const isTimeType = $xeDatePanel.computeIsTimeType;
|
|
832
|
+
const isTimeOrDateTimeType = $xeDatePanel.computeIsTimeOrDateTimeType;
|
|
813
833
|
const dateValueFormat = $xeDatePanel.computeDateValueFormat;
|
|
814
834
|
const firstDayOfWeek = $xeDatePanel.computeFirstDayOfWeek;
|
|
815
835
|
if (props.type === 'week') {
|
|
816
836
|
const sWeek = XEUtils.toNumber(props.selectDay);
|
|
817
837
|
date = XEUtils.getWhatWeek(date, 0, sWeek, firstDayOfWeek);
|
|
818
838
|
}
|
|
819
|
-
else if (
|
|
839
|
+
else if (isTimeOrDateTimeType) {
|
|
820
840
|
if (datetimePanelValue) {
|
|
821
841
|
date.setHours(datetimePanelValue.getHours());
|
|
822
842
|
date.setMinutes(datetimePanelValue.getMinutes());
|
|
@@ -825,13 +845,13 @@ export default {
|
|
|
825
845
|
}
|
|
826
846
|
const inpVal = XEUtils.toDateString(date, dateValueFormat, { firstDay: firstDayOfWeek });
|
|
827
847
|
$xeDatePanel.dateCheckMonth(date);
|
|
828
|
-
if (multiple) {
|
|
848
|
+
if (!isTimeType && multiple) {
|
|
829
849
|
const overCount = $xeDatePanel.computeOverCount;
|
|
830
850
|
// 如果为多选
|
|
831
|
-
if (
|
|
851
|
+
if (isTimeOrDateTimeType) {
|
|
832
852
|
// 如果是datetime特殊类型
|
|
833
853
|
const dateListValue = isReload ? [] : [...$xeDatePanel.computeDateListValue];
|
|
834
|
-
|
|
854
|
+
let datetimeRest = [];
|
|
835
855
|
const eqIndex = XEUtils.findIndexOf(dateListValue, val => XEUtils.isDateSame(date, val, 'yyyyMMdd'));
|
|
836
856
|
if (eqIndex === -1) {
|
|
837
857
|
if (overCount) {
|
|
@@ -853,27 +873,37 @@ export default {
|
|
|
853
873
|
datetimeRest.push(item);
|
|
854
874
|
}
|
|
855
875
|
});
|
|
856
|
-
|
|
876
|
+
// 排序
|
|
877
|
+
if (valueSort) {
|
|
878
|
+
datetimeRest = datetimeRest.sort((a, b) => a.getTime() - b.getTime());
|
|
879
|
+
}
|
|
880
|
+
$xeDatePanel.handleChange(datetimeRest.map(date => XEUtils.toDateString(date, dateValueFormat)).join(','), { type: 'update' }, { currValue: inpVal });
|
|
857
881
|
}
|
|
858
882
|
else {
|
|
859
883
|
const dateMultipleValue = isReload ? [] : $xeDatePanel.computeDateMultipleValue;
|
|
884
|
+
let dateRest = [];
|
|
860
885
|
// 如果是日期类型
|
|
861
886
|
if (dateMultipleValue.some(val => XEUtils.isEqual(val, inpVal))) {
|
|
862
|
-
|
|
887
|
+
dateRest = dateMultipleValue.filter(val => !XEUtils.isEqual(val, inpVal));
|
|
863
888
|
}
|
|
864
889
|
else {
|
|
865
890
|
if (overCount) {
|
|
866
891
|
// 如果超出最大多选数量
|
|
867
892
|
return;
|
|
868
893
|
}
|
|
869
|
-
|
|
894
|
+
dateRest = dateMultipleValue.concat([inpVal]);
|
|
870
895
|
}
|
|
896
|
+
// 排序
|
|
897
|
+
if (valueSort) {
|
|
898
|
+
dateRest = dateRest.sort();
|
|
899
|
+
}
|
|
900
|
+
$xeDatePanel.handleChange(dateRest.join(','), { type: 'update' }, { currValue: inpVal });
|
|
871
901
|
}
|
|
872
902
|
}
|
|
873
903
|
else {
|
|
874
904
|
// 如果为单选
|
|
875
905
|
if (!XEUtils.isEqual(modelValue, inpVal)) {
|
|
876
|
-
$xeDatePanel.handleChange(inpVal, { type: 'update' });
|
|
906
|
+
$xeDatePanel.handleChange(inpVal, { type: 'update' }, { currValue: inpVal });
|
|
877
907
|
}
|
|
878
908
|
}
|
|
879
909
|
},
|
|
@@ -1202,17 +1232,19 @@ export default {
|
|
|
1202
1232
|
const { multiple } = props;
|
|
1203
1233
|
const { datetimePanelValue } = reactData;
|
|
1204
1234
|
const dateValue = $xeDatePanel.computeDateValue;
|
|
1205
|
-
const
|
|
1206
|
-
|
|
1235
|
+
const isTimeType = $xeDatePanel.computeIsTimeType;
|
|
1236
|
+
const isTimeOrDateTimeType = $xeDatePanel.computeIsTimeOrDateTimeType;
|
|
1237
|
+
if (isTimeOrDateTimeType) {
|
|
1207
1238
|
const dateValueFormat = $xeDatePanel.computeDateValueFormat;
|
|
1208
|
-
if (multiple) {
|
|
1239
|
+
if (!isTimeType && multiple) {
|
|
1209
1240
|
// 如果为多选
|
|
1210
1241
|
const dateMultipleValue = $xeDatePanel.computeDateMultipleValue;
|
|
1211
|
-
|
|
1242
|
+
const dateListValue = $xeDatePanel.computeDateListValue;
|
|
1243
|
+
if (isTimeOrDateTimeType) {
|
|
1212
1244
|
// 如果是datetime特殊类型
|
|
1213
|
-
const
|
|
1245
|
+
const listVals = dateListValue.length ? [...dateListValue] : [];
|
|
1214
1246
|
const datetimeRest = [];
|
|
1215
|
-
|
|
1247
|
+
listVals.forEach(item => {
|
|
1216
1248
|
if (item) {
|
|
1217
1249
|
if (datetimePanelValue) {
|
|
1218
1250
|
item.setHours(datetimePanelValue.getHours());
|
|
@@ -1263,7 +1295,7 @@ export default {
|
|
|
1263
1295
|
const props = $xeDatePanel;
|
|
1264
1296
|
const reactData = $xeDatePanel.reactData;
|
|
1265
1297
|
const { type, defaultDate, defaultTime } = props;
|
|
1266
|
-
const
|
|
1298
|
+
const isTimeOrDateTimeType = $xeDatePanel.computeIsTimeOrDateTimeType;
|
|
1267
1299
|
const dateValue = $xeDatePanel.computeDateValue;
|
|
1268
1300
|
if (['year', 'quarter', 'month', 'week'].indexOf(type) > -1) {
|
|
1269
1301
|
reactData.datePanelType = type;
|
|
@@ -1291,7 +1323,7 @@ export default {
|
|
|
1291
1323
|
$xeDatePanel.dateNowHandle();
|
|
1292
1324
|
}
|
|
1293
1325
|
}
|
|
1294
|
-
if (
|
|
1326
|
+
if (isTimeOrDateTimeType) {
|
|
1295
1327
|
let dtPanelValue = reactData.datePanelValue;
|
|
1296
1328
|
if (!dtPanelValue) {
|
|
1297
1329
|
dtPanelValue = XEUtils.getWhatDay(Date.now(), 0, 'first');
|
|
@@ -1318,6 +1350,12 @@ export default {
|
|
|
1318
1350
|
const reactData = $xeDatePanel.reactData;
|
|
1319
1351
|
return reactData.inputValue;
|
|
1320
1352
|
},
|
|
1353
|
+
getViewType() {
|
|
1354
|
+
const $xeDatePanel = this;
|
|
1355
|
+
const reactData = $xeDatePanel.reactData;
|
|
1356
|
+
const { datePanelType } = reactData;
|
|
1357
|
+
return datePanelType;
|
|
1358
|
+
},
|
|
1321
1359
|
setPanelDate(date) {
|
|
1322
1360
|
const $xeDatePanel = this;
|
|
1323
1361
|
if (date) {
|
|
@@ -1961,6 +1999,11 @@ export default {
|
|
|
1961
1999
|
},
|
|
1962
2000
|
created() {
|
|
1963
2001
|
const $xeDatePanel = this;
|
|
2002
|
+
const props = $xeDatePanel;
|
|
2003
|
+
const { type, multiple } = props;
|
|
2004
|
+
if (multiple && type === 'time') {
|
|
2005
|
+
errLog('vxe.error.notSupportProp', [`type=${type}`, 'multiple=true', 'multiple=false']);
|
|
2006
|
+
}
|
|
1964
2007
|
$xeDatePanel.initValue();
|
|
1965
2008
|
$xeDatePanel.dateOpenPanel();
|
|
1966
2009
|
},
|
|
@@ -74,11 +74,11 @@ export function getDateQuarter(date) {
|
|
|
74
74
|
}
|
|
75
75
|
return 4;
|
|
76
76
|
}
|
|
77
|
-
export
|
|
77
|
+
export function parseDateValue(val, type, options) {
|
|
78
78
|
const { valueFormat } = options;
|
|
79
79
|
if (val) {
|
|
80
80
|
if (type === 'time') {
|
|
81
|
-
return toStringTimeDate(val);
|
|
81
|
+
return toStringTimeDate(XEUtils.isArray(val) ? XEUtils.last(val) : val);
|
|
82
82
|
}
|
|
83
83
|
if (XEUtils.isNumber(val) || /^[0-9]{10,15}$/.test(`${val}`)) {
|
|
84
84
|
return new Date(Number(val));
|
|
@@ -86,10 +86,13 @@ export const parseDateValue = (val, type, options) => {
|
|
|
86
86
|
if (XEUtils.isString(val)) {
|
|
87
87
|
return XEUtils.toStringDate(XEUtils.last(val.split(',')), valueFormat);
|
|
88
88
|
}
|
|
89
|
+
if (XEUtils.isArray(val)) {
|
|
90
|
+
return XEUtils.toStringDate(XEUtils.last(val), valueFormat);
|
|
91
|
+
}
|
|
89
92
|
return XEUtils.toStringDate(val, valueFormat);
|
|
90
93
|
}
|
|
91
94
|
return null;
|
|
92
|
-
}
|
|
95
|
+
}
|
|
93
96
|
export function parseDateString(val, type, options) {
|
|
94
97
|
const dValue = parseDateValue(val, type, options);
|
|
95
98
|
return dValue ? XEUtils.toDateString(dValue, options.valueFormat) : '';
|
|
@@ -256,3 +259,37 @@ export function checkDateInputFormat(numStr, formatKey) {
|
|
|
256
259
|
}
|
|
257
260
|
return numVal;
|
|
258
261
|
}
|
|
262
|
+
export const getPrevYear = (date, size = 1) => {
|
|
263
|
+
const currtYear = date.getFullYear();
|
|
264
|
+
date.setFullYear(currtYear - size);
|
|
265
|
+
return date;
|
|
266
|
+
};
|
|
267
|
+
export const getNextYear = (date, size = 1) => {
|
|
268
|
+
const currtYear = date.getFullYear();
|
|
269
|
+
date.setFullYear(currtYear + size);
|
|
270
|
+
return date;
|
|
271
|
+
};
|
|
272
|
+
export const getPrevMonth = (date) => {
|
|
273
|
+
const currtYear = date.getFullYear();
|
|
274
|
+
const currMonth = date.getMonth();
|
|
275
|
+
if (currMonth) {
|
|
276
|
+
date.setMonth(currMonth - 1);
|
|
277
|
+
}
|
|
278
|
+
else {
|
|
279
|
+
date.setFullYear(currtYear - 1);
|
|
280
|
+
date.setMonth(11);
|
|
281
|
+
}
|
|
282
|
+
return date;
|
|
283
|
+
};
|
|
284
|
+
export const getNextMonth = (date) => {
|
|
285
|
+
const currtYear = date.getFullYear();
|
|
286
|
+
const currMonth = date.getMonth();
|
|
287
|
+
if (currMonth < 11) {
|
|
288
|
+
date.setMonth(currMonth + 1);
|
|
289
|
+
}
|
|
290
|
+
else {
|
|
291
|
+
date.setFullYear(currtYear + 1);
|
|
292
|
+
date.setMonth(0);
|
|
293
|
+
}
|
|
294
|
+
return date;
|
|
295
|
+
};
|
|
@@ -48,7 +48,7 @@ export default {
|
|
|
48
48
|
event: 'modelValue'
|
|
49
49
|
},
|
|
50
50
|
props: {
|
|
51
|
-
value: [String, Number, Date],
|
|
51
|
+
value: [String, Number, Date, Array],
|
|
52
52
|
immediate: {
|
|
53
53
|
type: Boolean,
|
|
54
54
|
default: true
|
|
@@ -229,17 +229,24 @@ export default {
|
|
|
229
229
|
}
|
|
230
230
|
return disabled;
|
|
231
231
|
},
|
|
232
|
-
|
|
232
|
+
computeIsTimeType() {
|
|
233
233
|
const $xeDatePicker = this;
|
|
234
234
|
const props = $xeDatePicker;
|
|
235
235
|
const { type } = props;
|
|
236
|
-
return type === 'time'
|
|
236
|
+
return type === 'time';
|
|
237
|
+
},
|
|
238
|
+
computeIsTimeOrDateTimeType() {
|
|
239
|
+
const $xeDatePicker = this;
|
|
240
|
+
const props = $xeDatePicker;
|
|
241
|
+
const { type } = props;
|
|
242
|
+
const isTimeType = $xeDatePicker.computeIsTimeType;
|
|
243
|
+
return isTimeType || type === 'datetime';
|
|
237
244
|
},
|
|
238
245
|
computeIsDatePickerType() {
|
|
239
246
|
const $xeDatePicker = this;
|
|
240
247
|
const props = $xeDatePicker;
|
|
241
|
-
const
|
|
242
|
-
return
|
|
248
|
+
const isTimeOrDateTimeType = $xeDatePicker.computeIsTimeOrDateTimeType;
|
|
249
|
+
return isTimeOrDateTimeType || ['date', 'week', 'month', 'quarter', 'year'].indexOf(props.type) > -1;
|
|
243
250
|
},
|
|
244
251
|
computeIsClearable() {
|
|
245
252
|
const $xeDatePicker = this;
|
|
@@ -249,8 +256,8 @@ export default {
|
|
|
249
256
|
computeIsDatePanelType() {
|
|
250
257
|
const $xeDatePicker = this;
|
|
251
258
|
const props = $xeDatePicker;
|
|
252
|
-
const
|
|
253
|
-
return
|
|
259
|
+
const isTimeOrDateTimeType = $xeDatePicker.computeIsTimeOrDateTimeType;
|
|
260
|
+
return isTimeOrDateTimeType || ['date', 'week', 'month', 'quarter', 'year'].indexOf(props.type) > -1;
|
|
254
261
|
},
|
|
255
262
|
computeDateListValue() {
|
|
256
263
|
const $xeDatePicker = this;
|
|
@@ -541,7 +548,7 @@ export default {
|
|
|
541
548
|
const $xeDatePicker = this;
|
|
542
549
|
const props = $xeDatePicker;
|
|
543
550
|
const { value: modelValue, multiple } = props;
|
|
544
|
-
const
|
|
551
|
+
const isTimeOrDateTimeType = $xeDatePicker.computeIsTimeOrDateTimeType;
|
|
545
552
|
const dateValueFormat = $xeDatePicker.computeDateValueFormat;
|
|
546
553
|
const firstDayOfWeek = $xeDatePicker.computeFirstDayOfWeek;
|
|
547
554
|
if (props.type === 'week') {
|
|
@@ -552,7 +559,7 @@ export default {
|
|
|
552
559
|
if (multiple) {
|
|
553
560
|
const overCount = $xeDatePicker.computeOverCount;
|
|
554
561
|
// 如果为多选
|
|
555
|
-
if (
|
|
562
|
+
if (isTimeOrDateTimeType) {
|
|
556
563
|
// 如果是datetime特殊类型
|
|
557
564
|
const dateListValue = isReload ? [] : [...$xeDatePicker.computeDateListValue];
|
|
558
565
|
const datetimeRest = [];
|
|
@@ -1143,9 +1150,9 @@ export default {
|
|
|
1143
1150
|
const props = $xeDatePicker;
|
|
1144
1151
|
const { multiple, autoClose } = props;
|
|
1145
1152
|
const { value, $event } = params;
|
|
1146
|
-
const
|
|
1153
|
+
const isTimeOrDateTimeType = $xeDatePicker.computeIsTimeOrDateTimeType;
|
|
1147
1154
|
$xeDatePicker.handleChange(value, $event);
|
|
1148
|
-
if (!multiple && !
|
|
1155
|
+
if (!multiple && !isTimeOrDateTimeType) {
|
|
1149
1156
|
if (autoClose) {
|
|
1150
1157
|
$xeDatePicker.hidePanel();
|
|
1151
1158
|
}
|
|
@@ -1472,7 +1479,7 @@ export default {
|
|
|
1472
1479
|
const btnTransfer = $xeDatePicker.computeBtnTransfer;
|
|
1473
1480
|
const shortcutOpts = $xeDatePicker.computeShortcutOpts;
|
|
1474
1481
|
const isClearable = $xeDatePicker.computeIsClearable;
|
|
1475
|
-
const
|
|
1482
|
+
const isTimeOrDateTimeType = $xeDatePicker.computeIsTimeOrDateTimeType;
|
|
1476
1483
|
const shortcutList = $xeDatePicker.computeShortcutList;
|
|
1477
1484
|
const timeOpts = $xeDatePicker.computeTimeOpts;
|
|
1478
1485
|
const dateStartDate = $xeDatePicker.computeDateStartDate;
|
|
@@ -1486,7 +1493,7 @@ export default {
|
|
|
1486
1493
|
const rightSlot = slots.right;
|
|
1487
1494
|
const ppClassName = popupOpts.className;
|
|
1488
1495
|
const hasShortcutBtn = shortcutList.length > 0;
|
|
1489
|
-
const showConfirmBtn = (showConfirmButton === null ? (
|
|
1496
|
+
const showConfirmBtn = (showConfirmButton === null ? (isTimeOrDateTimeType || multiple) : showConfirmButton);
|
|
1490
1497
|
const showClearBtn = (showClearButton === null ? (isClearable && showConfirmBtn && type !== 'time') : showClearButton);
|
|
1491
1498
|
return h('div', {
|
|
1492
1499
|
ref: 'refInputPanel',
|