Page({
doSometing() {
const calendar = this.selectComponent('#calendar').calendar
calendar.jump({year:2018, month:6, date:6);
}
})
约定
默认以下文档中的 calendar
均指向了日历组件
# 预设功能
提示 👇
预设功能为一系列插件集合(plugins/preset/index.js),无需单独引入
# 跳转至指定日期
// 月视图
// 默认跳转至今天
calendar.jump()
// 跳转至某日
calendar
.jump({
year: 2019,
month: 10,
date: 6
})
.then()
// 周视图
// 默认跳转至今天
calendar.weekModeJump() // 跳转至某日
calendar
.weekModeJump({
year: 2019,
month: 10,
date: 6
})
.then()
# 获取当前选择的日期
const options = {
lunar: true // 在配置showLunar为false, 但需返回农历信息时使用该选项,使用此配置需引用农历插件
}
const selectedDay = calendar.getSelectedDates(options)
// => { year: 2019, month: 12, day: 1}
# 获取日历当前年月
const ym = calendar.getCurrentYM()
// => { year: 2019, month: 12}
# 取消选中日期
// 取消指定选中日期
const dates = [
{
year: 2020,
month: 3,
date: 2
}
]
calendar.cancelSelectedDates(dates)
// 取消所有选中
calendar.cancelSelectedDates()
# 设置选中多个日期
提示 👇
该方法仅在多选模式下可用,初始化日历时请配置 multi。参数为数组,不传参则默认全选当前月份所有日期
const toSet = [
{
year: 2019,
month: 3,
date: 15
},
{
year: 2019,
month: 3,
date: 18
}
]
calendar.setSelectedDates(toSet)
# 获取当前日历面板日期
const options = {
lunar: true // 在配置showLunar为false, 但需返回农历信息。足以次配置需要引入 农历插件
}
const dates = calendar.getCalendarDates(options)
# 设置日历配置
提示 👇
setCalendarConfig() 不会立即重新渲染日历数据,只会对部分基础配置(如 theme, multi 等)并且是在下一次渲染时生效
calendar.setCalendarConfig({
theme: 'elegant',
...
});
# 获取日历配置
const conf = calendar.getCalendarConfig()
# 设置指定日期样式
该方法只会对日期生效。
组件样式隔离采用了 apply-shared
方案,此模式下页面样式会影响组件样式,使用时需注意页面样式对日历组件样式的覆盖。
// 页面 js 文件
const toSet = [
{
year: 2019,
month: 11,
date: 19,
class: 'orange-date other-class' // 页面定义的 class,多个 class 由空格隔开
}
]
calendar.setDateStyle(toSet)
.orange-date {
background-color: #e8e8e8;
}
.orange-data .default_normal-date {
color: #333;
}
# plugins/todo.js
# 待办事项
# 设置待办事项
// 待办事项中若有 todoText 字段,则会在待办日期下面显示指定文字,如自定义节日等。
calendar.setTodos({
// 待办点标记设置
pos: 'bottom', // 待办点标记位置 ['top', 'bottom']
dotColor: 'purple', // 待办点标记颜色
circle: true, // 待办圆圈标记设置(如圆圈标记已签到日期),该设置与点标记设置互斥
showLabelAlways: true, // 点击时是否显示待办事项(圆点/文字),在 circle 为 true 及当日历配置 showLunar 为 true 时,此配置失效
dates: [
{
year: 2018,
month: 1,
date: 1,
todoText: '待办',
color: '#f40' // 单独定义代办颜色 (标记点、文字)
},
{
year: 2018,
month: 5,
date: 15
}
]
})
# 删除待办事项
calendar.deleteTodos([
{
year: 2018,
month: 5,
date: 12
}
])
# 清空待办事项
calendar.clearTodos()
# 获取所有代办日期
calendar.getTodos(options)
# plugins/selectable.js
# 指定可选日期区域
calendar.enableArea(['2018-11-12', '2018-11-30'])
# 指定特定可选日期
提示 👇
若已使用 enableArea() ,则会表现为追加
calendar.enableDates(['2018-11-12', '2018-12-3', '2019-1-3'])
# 禁用指定日期
calendar.disableDates(['2018-11-12'])
# plugins/week.js
# 周月视图切换
默认值为 'month'
提示 👇
因周视图模式特殊性,该模式下会隐藏年月切换操作栏
// 切换为周视图
calendar.switchView('week').then(() => {})
// 切换为月视图
calendar.switchView().then(() => {})
// 或者
calendar.switchView('month').then(() => {})
# plugins/time-range.js
# 日期范围选择
提示 👇
只支持单个连续时间段,调用此方法默认打开 chooseAreaMode
配置,非连续性日期选择请调用 setSelectedDates()
// 当连续时间为单天时
calendar.chooseDateArea(['2020-10-12'])
// 连续时间段
calendar.chooseDateArea(['2020-10-20', '2020-10-30'])
# plugins/holidays/index.js
提示 👇
节假日数据来源:国务院办公厅_政府信息公开专栏,目前仅支持了 2020年份
的数据,其他数据可按需自行补充 /plugins/holidays/holidays-map.js
# 节假日
# 获取日历面板当前年份节假日信息
calendar.getHolidaysOfCurrentYear()
# 获取指定年份节假日信息
提示 👇
指定年份节假日信息需自行扩展才可查询到
const year = 2020
calendar.getHolidaysOfYear(year)
# plugins/solarLunar.js
# 获取指定日期农历信息
const lunar = calendar.convertSolarLunar({
year: 2020,
month: 8,
date: 30
})
// 或日期字符串
const lunar = calendar.convertSolarLunar('2020-8-30')