vxe-pc-ui 3.15.24 → 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 +63 -40
- package/es/date-panel/src/util.js +11 -1
- package/es/date-picker/src/date-picker.js +19 -12
- package/es/date-range-picker/src/date-range-picker.js +102 -19
- package/es/icon/style.css +1 -1
- package/es/style.css +1 -1
- package/es/style.min.css +1 -1
- package/es/ui/index.js +1 -1
- package/es/ui/src/log.js +1 -1
- package/lib/date-panel/src/date-panel.js +65 -40
- package/lib/date-panel/src/date-panel.min.js +1 -1
- package/lib/date-panel/src/util.js +14 -2
- package/lib/date-panel/src/util.min.js +1 -1
- package/lib/date-picker/src/date-picker.js +19 -12
- package/lib/date-picker/src/date-picker.min.js +1 -1
- package/lib/date-range-picker/src/date-range-picker.js +111 -18
- 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 +213 -73
- 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 +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 +65 -40
- package/packages/date-panel/src/util.ts +14 -2
- package/packages/date-picker/src/date-picker.ts +20 -12
- package/packages/date-range-picker/src/date-range-picker.ts +100 -19
- package/types/components/date-panel.d.ts +3 -1
- package/types/components/date-range-picker.d.ts +2 -2
- /package/es/icon/{iconfont.1783233735491.ttf → iconfont.1783247770465.ttf} +0 -0
- /package/es/icon/{iconfont.1783233735491.woff → iconfont.1783247770465.woff} +0 -0
- /package/es/icon/{iconfont.1783233735491.woff2 → iconfont.1783247770465.woff2} +0 -0
- /package/es/{iconfont.1783233735491.ttf → iconfont.1783247770465.ttf} +0 -0
- /package/es/{iconfont.1783233735491.woff → iconfont.1783247770465.woff} +0 -0
- /package/es/{iconfont.1783233735491.woff2 → iconfont.1783247770465.woff2} +0 -0
- /package/lib/icon/style/{iconfont.1783233735491.ttf → iconfont.1783247770465.ttf} +0 -0
- /package/lib/icon/style/{iconfont.1783233735491.woff → iconfont.1783247770465.woff} +0 -0
- /package/lib/icon/style/{iconfont.1783233735491.woff2 → iconfont.1783247770465.woff2} +0 -0
- /package/lib/{iconfont.1783233735491.ttf → iconfont.1783247770465.ttf} +0 -0
- /package/lib/{iconfont.1783233735491.woff → iconfont.1783247770465.woff} +0 -0
- /package/lib/{iconfont.1783233735491.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'
|
|
@@ -81,9 +83,9 @@ export default {
|
|
|
81
83
|
currentDate: null
|
|
82
84
|
};
|
|
83
85
|
const internalData = {
|
|
84
|
-
yearSize:
|
|
85
|
-
monthSize:
|
|
86
|
-
quarterSize:
|
|
86
|
+
yearSize: 16,
|
|
87
|
+
monthSize: 12,
|
|
88
|
+
quarterSize: 4,
|
|
87
89
|
hpTimeout: undefined
|
|
88
90
|
};
|
|
89
91
|
return {
|
|
@@ -92,17 +94,24 @@ export default {
|
|
|
92
94
|
internalData
|
|
93
95
|
};
|
|
94
96
|
},
|
|
95
|
-
computed: Object.assign(Object.assign({}, {}), {
|
|
97
|
+
computed: Object.assign(Object.assign({}, {}), { computeIsTimeType() {
|
|
96
98
|
const $xeDatePanel = this;
|
|
97
99
|
const props = $xeDatePanel;
|
|
98
100
|
const { type } = props;
|
|
99
|
-
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';
|
|
100
109
|
},
|
|
101
110
|
computeIsDatePanelType() {
|
|
102
111
|
const $xeDatePanel = this;
|
|
103
112
|
const props = $xeDatePanel;
|
|
104
|
-
const
|
|
105
|
-
return
|
|
113
|
+
const isTimeOrDateTimeType = $xeDatePanel.computeIsTimeOrDateTimeType;
|
|
114
|
+
return isTimeOrDateTimeType || ['date', 'week', 'month', 'quarter', 'year'].indexOf(props.type) > -1;
|
|
106
115
|
},
|
|
107
116
|
computeDateStartDate() {
|
|
108
117
|
const $xeDatePanel = this;
|
|
@@ -117,19 +126,25 @@ export default {
|
|
|
117
126
|
computeDateListValue() {
|
|
118
127
|
const $xeDatePanel = this;
|
|
119
128
|
const props = $xeDatePanel;
|
|
120
|
-
const { value: modelValue,
|
|
129
|
+
const { value: modelValue, valueFormat } = props;
|
|
121
130
|
const isDatePanelType = $xeDatePanel.computeIsDatePanelType;
|
|
122
131
|
const dateValueFormat = $xeDatePanel.computeDateValueFormat;
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
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);
|
|
128
144
|
}
|
|
129
|
-
return date;
|
|
130
145
|
});
|
|
131
146
|
}
|
|
132
|
-
return
|
|
147
|
+
return restList;
|
|
133
148
|
},
|
|
134
149
|
computeDateMultipleValue() {
|
|
135
150
|
const $xeDatePanel = this;
|
|
@@ -221,8 +236,8 @@ export default {
|
|
|
221
236
|
computeDateHMSTime() {
|
|
222
237
|
const $xeDatePanel = this;
|
|
223
238
|
const dateValue = $xeDatePanel.computeDateValue;
|
|
224
|
-
const
|
|
225
|
-
return dateValue &&
|
|
239
|
+
const isTimeOrDateTimeType = $xeDatePanel.computeIsTimeOrDateTimeType;
|
|
240
|
+
return dateValue && isTimeOrDateTimeType ? (dateValue.getHours() * 3600 + dateValue.getMinutes() * 60 + dateValue.getSeconds()) * 1000 : 0;
|
|
226
241
|
},
|
|
227
242
|
computeDateLabelFormat() {
|
|
228
243
|
const $xeDatePanel = this;
|
|
@@ -245,7 +260,7 @@ export default {
|
|
|
245
260
|
const currFullYear = currentDate.getFullYear();
|
|
246
261
|
const selectFullYear = selectMonth.getFullYear();
|
|
247
262
|
const startYearDate = new Date(selectFullYear - selectFullYear % yearSize, 0, 1);
|
|
248
|
-
for (let index =
|
|
263
|
+
for (let index = 0; index < yearSize; index++) {
|
|
249
264
|
const date = XEUtils.getWhatYear(startYearDate, index, 'first');
|
|
250
265
|
const itemFullYear = date.getFullYear();
|
|
251
266
|
years.push({
|
|
@@ -356,7 +371,7 @@ export default {
|
|
|
356
371
|
const currQuarter = getDateQuarter(currentDate);
|
|
357
372
|
const firstYear = XEUtils.getWhatYear(selectMonth, 0, 'first');
|
|
358
373
|
const selFullYear = firstYear.getFullYear();
|
|
359
|
-
for (let index =
|
|
374
|
+
for (let index = 0; index < quarterSize; index++) {
|
|
360
375
|
const date = XEUtils.getWhatQuarter(firstYear, index);
|
|
361
376
|
const itemFullYear = date.getFullYear();
|
|
362
377
|
const itemQuarter = getDateQuarter(date);
|
|
@@ -389,7 +404,7 @@ export default {
|
|
|
389
404
|
const currFullYear = currentDate.getFullYear();
|
|
390
405
|
const currMonth = currentDate.getMonth();
|
|
391
406
|
const selFullYear = XEUtils.getWhatYear(selectMonth, 0, 'first').getFullYear();
|
|
392
|
-
for (let index =
|
|
407
|
+
for (let index = 0; index < monthSize; index++) {
|
|
393
408
|
const date = XEUtils.getWhatYear(selectMonth, 0, index);
|
|
394
409
|
const itemFullYear = date.getFullYear();
|
|
395
410
|
const itemMonth = date.getMonth();
|
|
@@ -473,8 +488,8 @@ export default {
|
|
|
473
488
|
const timeOpts = $xeDatePanel.computeTimeOpts;
|
|
474
489
|
const { hours: hourOptions, hourDisabledMethod } = timeOpts;
|
|
475
490
|
const list = [];
|
|
476
|
-
const
|
|
477
|
-
if (
|
|
491
|
+
const isTimeOrDateTimeType = $xeDatePanel.computeIsTimeOrDateTimeType;
|
|
492
|
+
if (isTimeOrDateTimeType) {
|
|
478
493
|
if (hourOptions && hourOptions.length) {
|
|
479
494
|
hourOptions.forEach(item => {
|
|
480
495
|
if (XEUtils.isNumber(item) || XEUtils.isString(item)) {
|
|
@@ -513,8 +528,8 @@ export default {
|
|
|
513
528
|
const timeOpts = $xeDatePanel.computeTimeOpts;
|
|
514
529
|
const { minutes: minuteOptions, minuteDisabledMethod } = timeOpts;
|
|
515
530
|
const list = [];
|
|
516
|
-
const
|
|
517
|
-
if (
|
|
531
|
+
const isTimeOrDateTimeType = $xeDatePanel.computeIsTimeOrDateTimeType;
|
|
532
|
+
if (isTimeOrDateTimeType) {
|
|
518
533
|
if (minuteOptions && minuteOptions.length) {
|
|
519
534
|
minuteOptions.forEach(item => {
|
|
520
535
|
if (XEUtils.isNumber(item) || XEUtils.isString(item)) {
|
|
@@ -567,8 +582,8 @@ export default {
|
|
|
567
582
|
const timeOpts = $xeDatePanel.computeTimeOpts;
|
|
568
583
|
const { seconds: secondOptions, secondDisabledMethod } = timeOpts;
|
|
569
584
|
const list = [];
|
|
570
|
-
const
|
|
571
|
-
if (
|
|
585
|
+
const isTimeOrDateTimeType = $xeDatePanel.computeIsTimeOrDateTimeType;
|
|
586
|
+
if (isTimeOrDateTimeType) {
|
|
572
587
|
if (secondOptions && secondOptions.length) {
|
|
573
588
|
secondOptions.forEach(item => {
|
|
574
589
|
if (XEUtils.isNumber(item) || XEUtils.isString(item)) {
|
|
@@ -638,7 +653,7 @@ export default {
|
|
|
638
653
|
const props = $xeDatePanel;
|
|
639
654
|
const { type, multiple } = props;
|
|
640
655
|
if (type === 'time') {
|
|
641
|
-
return toStringTimeDate(XEUtils.isArray(value) ?
|
|
656
|
+
return toStringTimeDate(XEUtils.isArray(value) ? XEUtils.last(value) : value);
|
|
642
657
|
}
|
|
643
658
|
if (XEUtils.isArray(value)) {
|
|
644
659
|
return XEUtils.toStringDate(XEUtils.last(value), format);
|
|
@@ -813,14 +828,15 @@ export default {
|
|
|
813
828
|
const reactData = $xeDatePanel.reactData;
|
|
814
829
|
const { value: modelValue, multiple, valueSort } = props;
|
|
815
830
|
const { datetimePanelValue } = reactData;
|
|
816
|
-
const
|
|
831
|
+
const isTimeType = $xeDatePanel.computeIsTimeType;
|
|
832
|
+
const isTimeOrDateTimeType = $xeDatePanel.computeIsTimeOrDateTimeType;
|
|
817
833
|
const dateValueFormat = $xeDatePanel.computeDateValueFormat;
|
|
818
834
|
const firstDayOfWeek = $xeDatePanel.computeFirstDayOfWeek;
|
|
819
835
|
if (props.type === 'week') {
|
|
820
836
|
const sWeek = XEUtils.toNumber(props.selectDay);
|
|
821
837
|
date = XEUtils.getWhatWeek(date, 0, sWeek, firstDayOfWeek);
|
|
822
838
|
}
|
|
823
|
-
else if (
|
|
839
|
+
else if (isTimeOrDateTimeType) {
|
|
824
840
|
if (datetimePanelValue) {
|
|
825
841
|
date.setHours(datetimePanelValue.getHours());
|
|
826
842
|
date.setMinutes(datetimePanelValue.getMinutes());
|
|
@@ -829,10 +845,10 @@ export default {
|
|
|
829
845
|
}
|
|
830
846
|
const inpVal = XEUtils.toDateString(date, dateValueFormat, { firstDay: firstDayOfWeek });
|
|
831
847
|
$xeDatePanel.dateCheckMonth(date);
|
|
832
|
-
if (multiple) {
|
|
848
|
+
if (!isTimeType && multiple) {
|
|
833
849
|
const overCount = $xeDatePanel.computeOverCount;
|
|
834
850
|
// 如果为多选
|
|
835
|
-
if (
|
|
851
|
+
if (isTimeOrDateTimeType) {
|
|
836
852
|
// 如果是datetime特殊类型
|
|
837
853
|
const dateListValue = isReload ? [] : [...$xeDatePanel.computeDateListValue];
|
|
838
854
|
let datetimeRest = [];
|
|
@@ -1216,17 +1232,19 @@ export default {
|
|
|
1216
1232
|
const { multiple } = props;
|
|
1217
1233
|
const { datetimePanelValue } = reactData;
|
|
1218
1234
|
const dateValue = $xeDatePanel.computeDateValue;
|
|
1219
|
-
const
|
|
1220
|
-
|
|
1235
|
+
const isTimeType = $xeDatePanel.computeIsTimeType;
|
|
1236
|
+
const isTimeOrDateTimeType = $xeDatePanel.computeIsTimeOrDateTimeType;
|
|
1237
|
+
if (isTimeOrDateTimeType) {
|
|
1221
1238
|
const dateValueFormat = $xeDatePanel.computeDateValueFormat;
|
|
1222
|
-
if (multiple) {
|
|
1239
|
+
if (!isTimeType && multiple) {
|
|
1223
1240
|
// 如果为多选
|
|
1224
1241
|
const dateMultipleValue = $xeDatePanel.computeDateMultipleValue;
|
|
1225
|
-
|
|
1242
|
+
const dateListValue = $xeDatePanel.computeDateListValue;
|
|
1243
|
+
if (isTimeOrDateTimeType) {
|
|
1226
1244
|
// 如果是datetime特殊类型
|
|
1227
|
-
const
|
|
1245
|
+
const listVals = dateListValue.length ? [...dateListValue] : [];
|
|
1228
1246
|
const datetimeRest = [];
|
|
1229
|
-
|
|
1247
|
+
listVals.forEach(item => {
|
|
1230
1248
|
if (item) {
|
|
1231
1249
|
if (datetimePanelValue) {
|
|
1232
1250
|
item.setHours(datetimePanelValue.getHours());
|
|
@@ -1277,7 +1295,7 @@ export default {
|
|
|
1277
1295
|
const props = $xeDatePanel;
|
|
1278
1296
|
const reactData = $xeDatePanel.reactData;
|
|
1279
1297
|
const { type, defaultDate, defaultTime } = props;
|
|
1280
|
-
const
|
|
1298
|
+
const isTimeOrDateTimeType = $xeDatePanel.computeIsTimeOrDateTimeType;
|
|
1281
1299
|
const dateValue = $xeDatePanel.computeDateValue;
|
|
1282
1300
|
if (['year', 'quarter', 'month', 'week'].indexOf(type) > -1) {
|
|
1283
1301
|
reactData.datePanelType = type;
|
|
@@ -1305,7 +1323,7 @@ export default {
|
|
|
1305
1323
|
$xeDatePanel.dateNowHandle();
|
|
1306
1324
|
}
|
|
1307
1325
|
}
|
|
1308
|
-
if (
|
|
1326
|
+
if (isTimeOrDateTimeType) {
|
|
1309
1327
|
let dtPanelValue = reactData.datePanelValue;
|
|
1310
1328
|
if (!dtPanelValue) {
|
|
1311
1329
|
dtPanelValue = XEUtils.getWhatDay(Date.now(), 0, 'first');
|
|
@@ -1981,6 +1999,11 @@ export default {
|
|
|
1981
1999
|
},
|
|
1982
2000
|
created() {
|
|
1983
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
|
+
}
|
|
1984
2007
|
$xeDatePanel.initValue();
|
|
1985
2008
|
$xeDatePanel.dateOpenPanel();
|
|
1986
2009
|
},
|
|
@@ -78,7 +78,7 @@ export function parseDateValue(val, type, options) {
|
|
|
78
78
|
const { valueFormat } = options;
|
|
79
79
|
if (val) {
|
|
80
80
|
if (type === 'time') {
|
|
81
|
-
return toStringTimeDate(XEUtils.isArray(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));
|
|
@@ -259,6 +259,16 @@ export function checkDateInputFormat(numStr, formatKey) {
|
|
|
259
259
|
}
|
|
260
260
|
return numVal;
|
|
261
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
|
+
};
|
|
262
272
|
export const getPrevMonth = (date) => {
|
|
263
273
|
const currtYear = date.getFullYear();
|
|
264
274
|
const currMonth = date.getMonth();
|
|
@@ -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',
|
|
@@ -3,7 +3,7 @@ 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, getPrevMonth,
|
|
6
|
+
import { parseDateString, parseDateObj, getRangeDateByCode, handleValueFormat, hasTimestampValueType, hasDateValueType, parseDateValue, getNextMonth, getPrevMonth, getNextYear, getPrevYear } 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';
|
|
@@ -21,8 +21,8 @@ function createReactData() {
|
|
|
21
21
|
isActivated: false,
|
|
22
22
|
selectStValue: '',
|
|
23
23
|
selectEdValue: '',
|
|
24
|
-
paneStartVal:
|
|
25
|
-
paneEndVal:
|
|
24
|
+
paneStartVal: [],
|
|
25
|
+
paneEndVal: []
|
|
26
26
|
};
|
|
27
27
|
}
|
|
28
28
|
function createInternalData() {
|
|
@@ -260,11 +260,18 @@ export default {
|
|
|
260
260
|
const { startValue, endValue } = props;
|
|
261
261
|
return `${startValue || ''}${endValue || ''}`;
|
|
262
262
|
},
|
|
263
|
-
|
|
263
|
+
computeIsTimeType() {
|
|
264
264
|
const $xeDateRangePicker = this;
|
|
265
265
|
const props = $xeDateRangePicker;
|
|
266
266
|
const { type } = props;
|
|
267
|
-
return type === 'time'
|
|
267
|
+
return type === 'time';
|
|
268
|
+
},
|
|
269
|
+
computeIsTimeOrDateTimeType() {
|
|
270
|
+
const $xeDateRangePicker = this;
|
|
271
|
+
const props = $xeDateRangePicker;
|
|
272
|
+
const { type } = props;
|
|
273
|
+
const isTimeType = $xeDateRangePicker.computeIsTimeType;
|
|
274
|
+
return isTimeType || type === 'datetime';
|
|
268
275
|
},
|
|
269
276
|
computeIsDatePickerType() {
|
|
270
277
|
const $xeDateRangePicker = this;
|
|
@@ -469,7 +476,7 @@ export default {
|
|
|
469
476
|
const $xeDateRangePicker = this;
|
|
470
477
|
const props = $xeDateRangePicker;
|
|
471
478
|
const reactData = $xeDateRangePicker.reactData;
|
|
472
|
-
const { value: modelValue, startValue, endValue } = props;
|
|
479
|
+
const { value: modelValue, startValue, endValue, valueFormat } = props;
|
|
473
480
|
let restObj = {
|
|
474
481
|
sValue: '',
|
|
475
482
|
eValue: ''
|
|
@@ -490,8 +497,20 @@ export default {
|
|
|
490
497
|
restObj = $xeDateRangePicker.paraeUpdateModel();
|
|
491
498
|
}
|
|
492
499
|
}
|
|
493
|
-
|
|
494
|
-
|
|
500
|
+
let startRest = restObj.sValue;
|
|
501
|
+
let endRest = restObj.eValue;
|
|
502
|
+
if (valueFormat === 'timestamp') {
|
|
503
|
+
if (XEUtils.isString(startRest) && /^\d+$/.test(startRest)) {
|
|
504
|
+
startRest = Number(startRest);
|
|
505
|
+
}
|
|
506
|
+
if (XEUtils.isString(endRest) && /^\d+$/.test(endRest)) {
|
|
507
|
+
endRest = Number(endRest);
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
reactData.selectStValue = startRest;
|
|
511
|
+
reactData.selectEdValue = endRest;
|
|
512
|
+
reactData.paneEndVal = [startRest, endRest];
|
|
513
|
+
reactData.paneStartVal = [startRest, endRest];
|
|
495
514
|
},
|
|
496
515
|
triggerEvent(evnt) {
|
|
497
516
|
const $xeDateRangePicker = this;
|
|
@@ -686,12 +705,17 @@ export default {
|
|
|
686
705
|
},
|
|
687
706
|
confirmEvent(evnt) {
|
|
688
707
|
const $xeDateRangePicker = this;
|
|
708
|
+
const isTimeType = $xeDateRangePicker.computeIsTimeType;
|
|
689
709
|
const $startDatePanel = $xeDateRangePicker.$refs.refStartDatePanel;
|
|
690
710
|
const $endDatePanel = $xeDateRangePicker.$refs.refEndDatePanel;
|
|
691
711
|
if ($startDatePanel && $endDatePanel) {
|
|
692
712
|
const startValue = $startDatePanel.getModelValue();
|
|
693
713
|
const endValue = $endDatePanel.getModelValue();
|
|
694
|
-
if (
|
|
714
|
+
if (isTimeType) {
|
|
715
|
+
$startDatePanel.confirmByEvent(evnt);
|
|
716
|
+
$endDatePanel.confirmByEvent(evnt);
|
|
717
|
+
}
|
|
718
|
+
else if ((startValue && !endValue) || (!startValue && endValue)) {
|
|
695
719
|
$xeDateRangePicker.handleChange('', '', evnt);
|
|
696
720
|
}
|
|
697
721
|
else {
|
|
@@ -724,11 +748,16 @@ export default {
|
|
|
724
748
|
else {
|
|
725
749
|
startValue = currValue || XEUtils.last(paneVals);
|
|
726
750
|
}
|
|
727
|
-
reactData.paneEndVal = [startValue, endValue]
|
|
728
|
-
reactData.paneStartVal = [startValue, endValue]
|
|
751
|
+
reactData.paneEndVal = [startValue, endValue];
|
|
752
|
+
reactData.paneStartVal = [startValue, endValue];
|
|
729
753
|
$xeDateRangePicker.handleChange(startValue, endValue, $event);
|
|
730
754
|
$xeDateRangePicker.handleSelectClose();
|
|
731
|
-
if (
|
|
755
|
+
if (selectStatus) {
|
|
756
|
+
if (startValue && endValue) {
|
|
757
|
+
internalData.selectStatus = false;
|
|
758
|
+
}
|
|
759
|
+
}
|
|
760
|
+
else {
|
|
732
761
|
internalData.selectStatus = true;
|
|
733
762
|
}
|
|
734
763
|
$xeDateRangePicker.$nextTick(() => {
|
|
@@ -757,11 +786,16 @@ export default {
|
|
|
757
786
|
else {
|
|
758
787
|
endValue = currValue || XEUtils.last(paneVals);
|
|
759
788
|
}
|
|
760
|
-
reactData.paneEndVal = [startValue, endValue]
|
|
761
|
-
reactData.paneStartVal = [startValue, endValue]
|
|
789
|
+
reactData.paneEndVal = [startValue, endValue];
|
|
790
|
+
reactData.paneStartVal = [startValue, endValue];
|
|
762
791
|
$xeDateRangePicker.handleChange(startValue, endValue, $event);
|
|
763
792
|
$xeDateRangePicker.handleSelectClose();
|
|
764
|
-
if (
|
|
793
|
+
if (selectStatus) {
|
|
794
|
+
if (startValue && endValue) {
|
|
795
|
+
internalData.selectStatus = false;
|
|
796
|
+
}
|
|
797
|
+
}
|
|
798
|
+
else {
|
|
765
799
|
internalData.selectStatus = true;
|
|
766
800
|
}
|
|
767
801
|
$xeDateRangePicker.$nextTick(() => {
|
|
@@ -794,6 +828,20 @@ export default {
|
|
|
794
828
|
}
|
|
795
829
|
break;
|
|
796
830
|
}
|
|
831
|
+
case 'month':
|
|
832
|
+
case 'quarter': {
|
|
833
|
+
if (endYear <= startYear) {
|
|
834
|
+
$endDatePanel.setPanelDate(getNextYear(startPanelDate));
|
|
835
|
+
}
|
|
836
|
+
break;
|
|
837
|
+
}
|
|
838
|
+
case 'year': {
|
|
839
|
+
const yearList = $startDatePanel.computeYearList;
|
|
840
|
+
if (yearList.some((item) => XEUtils.isDateSame(item.date, endPanelDate, 'yyyy'))) {
|
|
841
|
+
$endDatePanel.setPanelDate(getNextYear(startPanelDate, yearList.length));
|
|
842
|
+
}
|
|
843
|
+
break;
|
|
844
|
+
}
|
|
797
845
|
}
|
|
798
846
|
},
|
|
799
847
|
startPanelDateBtnChangeEvent() {
|
|
@@ -819,6 +867,16 @@ export default {
|
|
|
819
867
|
$endDatePanel.setPanelDate(getNextMonth(startPanelDate));
|
|
820
868
|
break;
|
|
821
869
|
}
|
|
870
|
+
case 'month':
|
|
871
|
+
case 'quarter': {
|
|
872
|
+
$endDatePanel.setPanelDate(getNextYear(startPanelDate));
|
|
873
|
+
break;
|
|
874
|
+
}
|
|
875
|
+
case 'year': {
|
|
876
|
+
const yearList = $startDatePanel.computeYearList;
|
|
877
|
+
$endDatePanel.setPanelDate(getNextYear(startPanelDate, yearList.length));
|
|
878
|
+
break;
|
|
879
|
+
}
|
|
822
880
|
}
|
|
823
881
|
}
|
|
824
882
|
else {
|
|
@@ -851,6 +909,20 @@ export default {
|
|
|
851
909
|
}
|
|
852
910
|
break;
|
|
853
911
|
}
|
|
912
|
+
case 'month':
|
|
913
|
+
case 'quarter': {
|
|
914
|
+
if (startYear >= endYear) {
|
|
915
|
+
$startDatePanel.setPanelDate(getPrevYear(endPanelDate));
|
|
916
|
+
}
|
|
917
|
+
break;
|
|
918
|
+
}
|
|
919
|
+
case 'year': {
|
|
920
|
+
const yearList = $endDatePanel.computeYearList;
|
|
921
|
+
if (yearList.some((item) => XEUtils.isDateSame(item.date, startPanelDate, 'yyyy'))) {
|
|
922
|
+
$startDatePanel.setPanelDate(getPrevYear(endPanelDate, yearList.length));
|
|
923
|
+
}
|
|
924
|
+
break;
|
|
925
|
+
}
|
|
854
926
|
}
|
|
855
927
|
},
|
|
856
928
|
endPanelDateBtnChangeEvent() {
|
|
@@ -876,6 +948,16 @@ export default {
|
|
|
876
948
|
$startDatePanel.setPanelDate(getPrevMonth(endPanelDate));
|
|
877
949
|
break;
|
|
878
950
|
}
|
|
951
|
+
case 'month':
|
|
952
|
+
case 'quarter': {
|
|
953
|
+
$startDatePanel.setPanelDate(getPrevYear(endPanelDate));
|
|
954
|
+
break;
|
|
955
|
+
}
|
|
956
|
+
case 'year': {
|
|
957
|
+
const yearList = $endDatePanel.computeYearList;
|
|
958
|
+
$startDatePanel.setPanelDate(getPrevYear(endPanelDate, yearList.length));
|
|
959
|
+
break;
|
|
960
|
+
}
|
|
879
961
|
}
|
|
880
962
|
}
|
|
881
963
|
else {
|
|
@@ -1210,7 +1292,8 @@ export default {
|
|
|
1210
1292
|
const isClearable = $xeDateRangePicker.computeIsClearable;
|
|
1211
1293
|
const panelLabelObj = $xeDateRangePicker.computePanelLabelObj;
|
|
1212
1294
|
const shortcutList = $xeDateRangePicker.computeShortcutList;
|
|
1213
|
-
const
|
|
1295
|
+
const isTimeType = $xeDateRangePicker.computeIsTimeType;
|
|
1296
|
+
const isTimeOrDateTimeType = $xeDateRangePicker.computeIsTimeOrDateTimeType;
|
|
1214
1297
|
const defaultDates = $xeDateRangePicker.computeDefaultDates;
|
|
1215
1298
|
const defaultTimes = $xeDateRangePicker.computeDefaultTimes;
|
|
1216
1299
|
const timeOpts = $xeDateRangePicker.computeTimeOpts;
|
|
@@ -1226,7 +1309,7 @@ export default {
|
|
|
1226
1309
|
const [sdDate, edDate] = defaultDates;
|
|
1227
1310
|
const [sdTime, edTime] = defaultTimes;
|
|
1228
1311
|
const hasShortcutBtn = shortcutList.length > 0;
|
|
1229
|
-
const showConfirmBtn = (showConfirmButton === null ? (
|
|
1312
|
+
const showConfirmBtn = (showConfirmButton === null ? (isTimeOrDateTimeType || !autoClose) : showConfirmButton);
|
|
1230
1313
|
const showClearBtn = (showClearButton === null ? isClearable : showClearButton);
|
|
1231
1314
|
return h('div', {
|
|
1232
1315
|
ref: 'refInputPanel',
|
|
@@ -1280,7 +1363,7 @@ export default {
|
|
|
1280
1363
|
ref: 'refStartDatePanel',
|
|
1281
1364
|
props: {
|
|
1282
1365
|
value: paneStartVal,
|
|
1283
|
-
multiple:
|
|
1366
|
+
multiple: !isTimeType,
|
|
1284
1367
|
valueSort: true,
|
|
1285
1368
|
limitCount: 3,
|
|
1286
1369
|
defaultMode: 'first',
|
|
@@ -1311,7 +1394,7 @@ export default {
|
|
|
1311
1394
|
ref: 'refEndDatePanel',
|
|
1312
1395
|
props: {
|
|
1313
1396
|
value: paneEndVal,
|
|
1314
|
-
multiple:
|
|
1397
|
+
multiple: !isTimeType,
|
|
1315
1398
|
valueSort: true,
|
|
1316
1399
|
limitCount: 3,
|
|
1317
1400
|
defaultMode: 'last',
|