@@ -118,7 +118,7 @@ export default defineComponent({
118
118
119
119
setup ( props , { emit, slots } ) {
120
120
const calendarRef = ref < CalendarDateInstance > ( ) ;
121
- const checkedDate = ref < CalendarDateType > ( {
121
+ const checkedDate = ref < CalendarDateType | CalendarDateType [ ] > ( {
122
122
year : new Date ( ) . getFullYear ( ) ,
123
123
month : new Date ( ) . getMonth ( ) ,
124
124
day : new Date ( ) . getDate ( ) ,
@@ -178,6 +178,12 @@ export default defineComponent({
178
178
if ( ! defaultDatetime || Array . isArray ( defaultDatetime ) ) {
179
179
defaultDatetime = nowDatetime ;
180
180
}
181
+
182
+ console . log (
183
+ 'limitDateRange(defaultDatetime)' ,
184
+ limitDateRange ( defaultDatetime )
185
+ ) ;
186
+ console . log ( 'defaultDatetime' , defaultDatetime ) ;
181
187
return limitDateRange ( defaultDatetime ) ;
182
188
} ;
183
189
@@ -245,48 +251,56 @@ export default defineComponent({
245
251
calendarRef . value ?. changeWeekView ( { isNext : true } ) ;
246
252
} ;
247
253
248
- const dateChange = ( date : CalendarDateType ) => {
249
- date . hours = checkedDate . value . hours ;
250
- date . minutes = checkedDate . value . minutes ;
251
- checkedDate . value = date ;
254
+ const dateChange = ( date : CalendarDateType [ ] ) => {
255
+ if ( props . selectType === 'single' ) {
256
+ checkedDate . value = {
257
+ ...checkedDate . value ,
258
+ ...date [ 0 ] ,
259
+ } ;
260
+ }
252
261
} ;
253
262
254
- const dateClick = ( date : CalendarDateType , type ?: CalendarPanelType ) => {
255
- date . hours = checkedDate . value . hours ;
256
- date . minutes = checkedDate . value . minutes ;
257
- checkedDate . value = date ;
263
+ const dateClick = ( date : CalendarDateType [ ] , type ?: CalendarPanelType ) => {
264
+ if ( props . selectType === 'single' ) {
265
+ checkedDate . value = {
266
+ ...checkedDate . value ,
267
+ ...date [ 0 ] ,
268
+ } as CalendarDateType ;
258
269
259
- let fDate : EmitDateType = new Date (
260
- `${ checkedDate . value . year } /${ checkedDate . value . month + 1 } /${
261
- checkedDate . value . day
262
- } ${ checkedDate . value . hours } :${ checkedDate . value . minutes } `
263
- ) ;
264
- if ( props . format ) {
265
- fDate = formatDate ( fDate , props . format , props . lang ) ;
266
- }
270
+ let fDate : EmitDateType = new Date (
271
+ `${ checkedDate . value . year } /${ checkedDate . value . month + 1 } /${
272
+ checkedDate . value . day
273
+ } ${ checkedDate . value . hours } :${ checkedDate . value . minutes } `
274
+ ) ;
275
+ if ( props . format ) {
276
+ fDate = formatDate ( fDate , props . format , props . lang ) ;
277
+ }
267
278
268
- // 控制点击之后进入下一选择面板
269
- if ( type ) {
270
- switch ( type ) {
271
- case 'yearRange' :
272
- yearMonthType . value = 'year' ;
273
- break ;
274
- case 'year' :
275
- yearMonthType . value = 'month' ;
276
- break ;
277
- case 'month' :
278
- currDateTime . value = new Date ( fDate ) ;
279
- yearMonthType . value = 'date' ;
280
- break ;
279
+ // 控制点击之后进入下一选择面板
280
+ if ( type ) {
281
+ switch ( type ) {
282
+ case 'yearRange' :
283
+ yearMonthType . value = 'year' ;
284
+ break ;
285
+ case 'year' :
286
+ yearMonthType . value = 'month' ;
287
+ break ;
288
+ case 'month' :
289
+ currDateTime . value = new Date ( fDate ) ;
290
+ yearMonthType . value = 'date' ;
291
+ break ;
292
+ }
293
+
294
+ emit ( 'calendarTypeChange' , yearMonthType . value ) ;
281
295
}
282
296
283
- emit ( 'calendarTypeChange ' , yearMonthType . value ) ;
297
+ emit ( 'click ' , fDate ) ;
284
298
}
285
-
286
- emit ( 'click' , fDate ) ;
287
299
} ;
288
300
289
301
const timeChange = ( date : CalendarDateType ) => {
302
+ if ( Array . isArray ( checkedDate . value ) ) return ;
303
+
290
304
date . year = checkedDate . value . year ;
291
305
date . month = checkedDate . value . month ;
292
306
date . day = checkedDate . value . day ;
@@ -299,6 +313,8 @@ export default defineComponent({
299
313
300
314
// 确认选择时间
301
315
const confirm = ( ) => {
316
+ if ( Array . isArray ( checkedDate . value ) ) return ;
317
+
302
318
let date : EmitDateType = new Date (
303
319
`${ checkedDate . value . year } /${ checkedDate . value . month + 1 } /${
304
320
checkedDate . value . day
@@ -396,6 +412,8 @@ export default defineComponent({
396
412
watch (
397
413
checkedDate ,
398
414
( ) => {
415
+ if ( Array . isArray ( checkedDate . value ) ) return ;
416
+
399
417
let date : EmitDateType = new Date (
400
418
`${ checkedDate . value . year } /${ checkedDate . value . month + 1 } /${
401
419
checkedDate . value . day
@@ -476,6 +494,8 @@ export default defineComponent({
476
494
} ;
477
495
478
496
const renderAction = ( ) => {
497
+ if ( Array . isArray ( checkedDate . value ) ) return ;
498
+
479
499
if ( props . showAction ) {
480
500
return (
481
501
< div
@@ -503,16 +523,21 @@ export default defineComponent({
503
523
} `}
504
524
onClick = { showCalendar }
505
525
>
506
- { formatDatetime (
507
- `${ checkedDate . value . year } /${
508
- checkedDate . value . month + 1
509
- } /${ checkedDate . value . day } `,
510
- languageUtil [ props . lang ] . DEFAULT_DATE_FORMAT
511
- ) }
526
+ { props . selectType === 'single'
527
+ ? formatDatetime (
528
+ `${ checkedDate . value . year } /${
529
+ checkedDate . value . month + 1
530
+ } /${ checkedDate . value . day } `,
531
+ languageUtil [ props . lang ] . DEFAULT_DATE_FORMAT
532
+ )
533
+ : `${ checkedDate . value . year } 年${
534
+ checkedDate . value . month + 1
535
+ } 月`}
512
536
</ span >
513
537
) : null }
514
538
515
- { props . pickerType !== 'date' ? (
539
+ { props . pickerType !== 'date' &&
540
+ props . selectType === 'single' ? (
516
541
< span
517
542
class = { `calendar_title_date_time ${
518
543
! isShowCalendar . value
@@ -591,6 +616,8 @@ export default defineComponent({
591
616
) ;
592
617
593
618
const renderTimePicker = ( ) => {
619
+ if ( Array . isArray ( checkedDate . value ) ) return ;
620
+
594
621
if ( props . pickerType === 'datetime' || props . pickerType === 'time' ) {
595
622
return (
596
623
< CalendarTime
@@ -604,28 +631,32 @@ export default defineComponent({
604
631
}
605
632
} ;
606
633
607
- const renderYearMonthPicker = ( ) => (
608
- < CalendarYearMonth
609
- calendarContentHeight = { calendarContentHeight . value }
610
- calendarDate = { checkedDate . value }
611
- type = { yearMonthType . value }
612
- onTouchstart = { touchStart }
613
- onTouchmove = { touchMove }
614
- onTouchend = { touchEnd }
615
- onSlidechange = { slideChange }
616
- onClick = { dateClick }
617
- { ...pick ( props , [
618
- 'minDate' ,
619
- 'maxDate' ,
620
- 'disabledDate' ,
621
- 'lang' ,
622
- 'disabledScroll' ,
623
- 'checkedDayClassName' ,
624
- 'notCurrentMonthDayClassName' ,
625
- 'disabledClassName' ,
626
- ] ) }
627
- />
628
- ) ;
634
+ const renderYearMonthPicker = ( ) => {
635
+ if ( Array . isArray ( checkedDate . value ) ) return ;
636
+
637
+ return (
638
+ < CalendarYearMonth
639
+ calendarContentHeight = { calendarContentHeight . value }
640
+ calendarDate = { checkedDate . value }
641
+ type = { yearMonthType . value }
642
+ onTouchstart = { touchStart }
643
+ onTouchmove = { touchMove }
644
+ onTouchend = { touchEnd }
645
+ onSlidechange = { slideChange }
646
+ onClick = { dateClick }
647
+ { ...pick ( props , [
648
+ 'minDate' ,
649
+ 'maxDate' ,
650
+ 'disabledDate' ,
651
+ 'lang' ,
652
+ 'disabledScroll' ,
653
+ 'checkedDayClassName' ,
654
+ 'notCurrentMonthDayClassName' ,
655
+ 'disabledClassName' ,
656
+ ] ) }
657
+ />
658
+ ) ;
659
+ } ;
629
660
630
661
const renderCtrlImg = ( ) => {
631
662
let confirmEle : any = (
0 commit comments