1# calendar 2 3 4日历组件,用于呈现日历界面。 5 6> **说明:** 7> 8> 从API Version 8 开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。 9 10## 子组件 11 12不支持。 13 14 15## 属性 16 17支持[通用属性](js-service-widget-common-attributes.md)外,还支持如下属性: 18 19| 名称 | 类型 | 默认值 | 必填 | 描述 | 20| -------------- | ------ | ----- | ---- | ---------------------------------------- | 21| date | string | 当前日期 | 否 | 当前页面选中的日期,默认是当前日期,格式为年-月-日,如"2019-11-22"。 | 22| cardcalendar | bool | false | 否 | 标识当前日历是否为卡片日历。 | 23| startdayofweek | int | 6 | 否 | 标识卡片显示的起始天,默认是星期天(取值范围:0-6)。 | 24| offdays | string | 5,6 | 否 | 标识卡片显示的休息日,默认是星期六、星期天(取值范围:0-6)。 | 25| calendardata | string | - | 是 | 卡片需要显示的月视图数据信息,包括5\*7或者6\*7格的日数据信息,格式为JSON字符串。"data"标签属性信息见**表1** calendardata的日属性。 | 26| showholiday | bool | true | 否 | 标识当前是否显示节假日信息。 | 27 28 **表1** calendardata的日属性 29 30| 名称 | 类型 | 描述 | 31| -------------- | ------ | --------------------------------------- | 32| index | int | 数据的索引,表示第几个日期。 | 33| day | int | 表示具体哪一天。 | 34| month | int | 表示月份。 | 35| year | int | 表示年份。 | 36| isFirstOfLuanr | bool | 表示是否是农历的第一天,在农历第一天的数据下绘制横线。 | 37| hasSchedule | bool | 表示是否有日程,在有日程的日期数据上绘制圆。 | 38| markLunarDay | bool | 表示节假日,农历数据会变成蓝色。 | 39| lunarDay | string | 农历日期。 | 40| lunarMonth | string | 农历月份。 | 41| dayMark | string | 表示工作日。<br>- “work”:工作日。<br>- “off”:休息日。 | 42| dayMarkValue | string | 表示具体需要显示的“班”、“休”信息。 | 43 44calendardata示例: 45 46``` 47{ 48"year":2021, 49"month":1, 50"data": [{ 51 "index": 0, 52 "lunarMonth": "十一", 53 "lunarDay": "十三", 54 "year": 2020, 55 "month ": 12, 56 "day": 27, 57 "dayMark": "work", 58 "dayMarkValue": "班", 59 "isFirstOfLunar": true, 60 "hasSchedule": true, 61 "markLunarDay": true 62 }, { 63 "index": 1, 64 "lunarMonth": "十一", 65 "lunarDay": "十四", 66 "year": 2020, 67 "month ": 12, 68 "day": 28, 69 "dayMark": "work", 70 "dayMarkValue": "班", 71 "isFirstOfLunar": true, 72 "hasSchedule": true, 73 "markLunarDay": true 74 }, { 75 "index": 2, 76 "lunarMonth": "十一", 77 "lunarDay": "十五", 78 "year": 2020, 79 "month ": 12, 80 "day": 29, 81 "dayMark": "work", 82 "dayMarkValue": "班", 83 "isFirstOfLunar": true, 84 "hasSchedule": true, 85 "markLunarDay": true 86 }, 87 ... 88 ] 89} 90``` 91 92 93 94## 样式 95 96| 名称 | 类型 | 默认值 | 必填 | 描述 | 97| ---------------- | ------------- | ---- | ---- | ------- | 98| background-color | <color> | - | 否 | 设置背景颜色。 | 99 100 101## 事件 102 103| 名称 | 参数 | 描述 | 104| -------------- | ------------ | --------------- | 105| selectedchange | changeEvent | 在点击日期和上下月跳转时触发。 | 106| requestdata | requestEvent | 请求日期时触发。 | 107 108 **表2** changeEvent 109 110| 名称 | 类型 | 描述 | 111| ------------ | ------ | ------ | 112| $event.day | string | 选择的日期。 | 113| $event.month | string | 选择的月份。 | 114| $event.year | string | 选择的年份。 | 115 116 **表3** requestEvent 117 118| 名称 | 类型 | 描述 | 119| ------------------- | ------ | -------- | 120| $event.month | string | 请求的月份。 | 121| $event.year | string | 请求的年份。 | 122| $event.currentYear | string | 当前显示的年份。 | 123| $event.currentMonth | string | 当前显示的月份。 | 124 125 126## 示例 127 128 129```html 130<!-- xxx.hml --> 131<div class="container"> 132 <calendar class="container_test" 133 cardcalendar="true" 134 onselectedchange="clickOneDay" 135 onrequestdata="messageEventData" 136 date="{{currentDate}}" 137 offdays="{{offDays}}" 138 showholiday="{{showHoliday}}" 139 startdayofweek="{{startDayOfWeek}}" 140 calendardata="{{calendarData}}"> 141 </calendar> 142</div> 143``` 144 145 146```css 147/* xxx.css */ 148.container { 149 flex-direction:column; 150 width: 100%; 151 height: 100%; 152 align-items:center; 153 padding-start: 4px; 154 padding-end: 4px; 155} 156.container_test { 157 background-color: white; 158} 159``` 160 161 162```json 163{ 164 "data": { 165 "currentDate": "", 166 "offDays": "", 167 "startDayOfWeek": 6, 168 "showHoliday": true, 169 "calendarData": "" 170 }, 171 "actions": { 172 "clickOneDay": { 173 "action": "router", 174 "bundleName": "com.example.calendar", 175 "abilityName": "com.example.calendar.MainAbility", 176 "params": { 177 "action": "click_month_view_event", 178 "day": "$event.day", 179 "month": "$event.month", 180 "year": "$event.year" 181 } 182 }, 183 "messageEventData": { 184 "action": "message", 185 "params": { 186 "month": "$event.month", 187 "year": "$event.year", 188 "currentMonth": "$event.currentMonth", 189 "currentYear": "$event.currentYear" 190 } 191 } 192 } 193} 194``` 195**4*4卡片** 196 197 198 199