@@ -84,13 +84,13 @@ defineExpose({ selectedDate, mode })
< div v-loading = "loading" class="calendar-grid" :class="{ 'week-grid': mode === 'week' }" >
< button v-for = "date in dates" :key="date" type="button" class="calendar-day"
: class = "{ selected: selectedDate === date, outside: mode === 'month' && date.slice(0, 7) !== selectedDate.slice(0, 7) }"
: aria -label = " ` $ { date } , $ { ( grouped.get ( date ) | | [ ] ) .length } 项安排 ` " : aria -pressed = " selectedDate = = = date " @click ="select(date)" >
: title = "`${date},共 ${(grouped.get(date) || []).length} 条安排`" : aria -label = " ` $ { date } , $ { ( grouped.get ( date ) | | [ ] ) .length } 项安排 ` " : aria -pressed = " selectedDate = = = date " @click ="select(date)" >
< span class = "day-number" > { { mode === 'week' ? ` ${ Number ( date . slice ( 5 , 7 ) ) } 月 ` : '' } } { { Number ( date . slice ( 8 ) ) } } < / span >
< span class = "day-events" >
< span v-for = "event in (grouped.get(date) || []).slice(0, mode === 'month' ? 3 : 12 )" :key="event.key" class="event-chip" :class="event.type" :title="`${event.time} ${event.title}`" >
< span v-for = "event in (grouped.get(date) || []).slice(0, 3 )" :key="event.key" class="event-chip" :class="event.type" :title="`${event.time} ${event.title} · 当天共 ${(grouped.get(date) || []).length} 条安排 `" >
{{ event.title }} < small v-if = "mode === 'week'" > {{ event.time }} < / small >
< / span >
< span v-if = "(grouped.get(date) || []).length > (mode === 'month' ? 3 : 12) " class="event-more" > 另 有 {{ ( grouped.get ( date ) | | [ ] ) .length - ( mode = = = ' month ' ? 3 : 12 ) }} 项 < / span >
< span v-if = "(grouped.get(date) || []).length > 3 " class="event-more" > 还 有 {{ ( grouped.get ( date ) | | [ ] ) .length - 3 }} 条 < / span >
< / span >
< / button >
< / div >
@@ -131,19 +131,21 @@ defineExpose({ selectedDate, mode })
. weekdays , . calendar - grid { display : grid ; grid - template - columns : repeat ( 7 , minmax ( 0 , 1 fr ) ) ; }
. weekdays { text - align : center ; color : # 8491 a5 ; background : # f8faff ; padding : 12 px 14 px ; font - size : 13 px ; }
. calendar - grid { gap : 7 px ; padding : 12 px ; background : # fbfcff ; }
. calendar - day { display : flex ; flex - direction : column ; align - items : stretch ; justify - content : flex - start ; min - height : 100 px ; padding : 8 px ; border : 1 px solid # e5eaf2 ; border - radius : 8 px ; background : # fff ; text - align : left ; cursor : pointer ; color : inherit ; font : inherit ; overflow : hidden ; }
. calendar - day { display : flex ; flex - direction : column ; align - items : stretch ; justify - content : flex - start ; height : 128 px ; min - width : 0 ; padding : 8 px ; border : 1 px solid # e5eaf2 ; border - radius : 8 px ; background : # fff ; text - align : left ; cursor : pointer ; color : inherit ; font : inherit ; overflow : hidden ; }
. calendar - day . outside { background : # f7f8fa ; color : # 98 a2b3 ; }
. calendar - day : hover { border - color : # bac8ed ; background : # f8faff ; }
. calendar - day . selected { border - color : # 617 ce9 ; background : # f5f7ff ; }
. calendar - day : focus - visible , . nav - button : focus - visible , . view - toggle button : focus - visible { outline : 2 px solid # 4167 d8 ; outline - offset : 2 px ; }
. day - number { display : block ; font - size : 12 px ; font - weight : 600 ; }
. day - events { display : flex ; flex - direction : column ; gap : 4 px ; margin - top : 6 px ; }
. event - chip { display : block ; padding : 4 px 6 px ; border - radius : 4 px ; overflow : hidden ; text - overflow : ellipsis ; white - space : nowrap ; font - size : 12 px ; }
. day - events { display : flex ; flex - direction : column ; gap : 3 px ; margin - top : 6 px ; }
. event - chip { display : block ; padding : 3 px 6 px ; line - height : 16 px ; border - radius : 4 px ; overflow : hidden ; text - overflow : ellipsis ; white - space : nowrap ; font - size : 12 px ; }
. arrival { -- event - bg : # edf3ff ; -- event - fg : # 3765 d4 ; }
. delivery { -- event - bg : # e8f8f1 ; -- event - fg : # 18845 f ; }
. event - chip , . event - type { background : var ( -- event - bg ) ; color : var ( -- event - fg ) ; }
. event - chip small { display : block ; margin - top : 4 px ; }
. event - chip small { display : block ; margin - top : 2 px ; font - size : 11 px ; opacity : .8 ; }
. event - more { padding : 1 px 6 px ; line - height : 16 px ; }
. event - more , . empty - day { color : # 667085 ; font - size : 12 px ; }
. week - grid . calendar - day { min - height : 350 px ; align - content : start ; }
. week - grid . calendar - day { height : 220 px ; }
. calendar - detail { align - self : start ; }
. calendar - detail > header { padding : 18 px ; border - bottom : 1 px solid # edf0f6 ; }
. calendar - detail > header > strong { font - size : 17 px ; }