Skip to content

Calendar 日历 1.0.4

手机扫码预览
23:59

组件名:rice-calendar

用于选择日期或日期区间,支持单选,多选,区间选择。APP端使用draw api 实现,是一个高性能的组件。注:1.0.4版本开始支持

平台兼容性

uni-app x

AndroidiOS鸿蒙Next微信小程序h5

单个日期

默认为单个日期选择

html
<rice-calendar v-model:show="showSingle" @confirm="signleConfirm"></rice-calendar>

<script setup lang="ts">
  const signleConfirm=(value:string)=>{}
</script>

单个日期

默认为单个日期选择
如需选中默认日期,可传date 参数,modesingledate 格式为字符串
可以在 confirm 事件中获取到选中的日期,modesingle 时返回格式为字符串,modemultiplerange时为数组

html
<rice-calendar v-model:show="showSingle" @confirm="signleConfirm"></rice-calendar>

<script setup lang="ts">
  const signleConfirm=(value:string)=>{}
</script>

多个日期

modemultiple 可选多个日期,此时 date 应该传递数组格式

html
<rice-calendar v-model:show="showMultiple" mode="multiple" :date="dateMultiple"
			@confirm="multipleConfirm"></rice-calendar>

<script setup lang="ts">
  const dateMultiple = ref(["2025-9-02", '2025-09-12'])
  const multipleConfirm=(value:string[])=>{}
</script>

选择日期区间

moderange 可选日期区间,此时 date 应该传递数组格式,数组有两个日期,第一个日期为开始日期,第二个日期为结束日期

html
<rice-calendar v-model:show="showRange" mode="range" :date="dateRange" @confirm="rangeConfirm"></rice-calendar>

<script setup>
  const dateRange = ref<string[]>(["2025-9-03", "2025-9-20"])
  const rangeConfirm = (e : string[]) => {}
</script>

自定义颜色

通过 color 可以自定义主题颜色,包括选中状态和底部按钮的颜色

html

<rice-calendar v-model:show="showColor" color="#f56c6c" mode="range" :date="dateRange"></rice-calendar>

API

Props

属性名类型说明默认值
v-model:show/showBoolean是否显示-
modeString选择类型,可选值:single、multiple、rangesingle
dateString|String[]默认选中的时间,mode 为multiple或range时为数组,mode 为 single 为字符串,传空字符串为不选择-
switch-mode 1.0.5String切换模式,可选值:none、month、year-monthyear-month
min-dateString可选的最小日期,如 2025-01-01-
max-dateString可选的最大日期,如 2026-12-31-
lunarBoolean是否显示农历-
titleString日历标题-
show-titleBoolean是否显示标题-
colorString选中日期和底部按钮的颜色-
formatter(day : CalendarData) => CalendarData日期格式化函数 ,CalendarData 格式见下类型定义-
show-subtitle 1.0.5Boolean是否显示日历副标题(年月)-
show-confirm-btnBoolean是否显示底部的确认按钮-
confirm-textString确认按钮的文字,默认确认-
confirm-disabled-textString确认按钮处于禁用状态时的文字-
max-rangeNumber最大可选天数,mode 为 multiple 或 range 时有效-
range-promptString超出最大可选天数的提示文案 默认 为 最多选择xx天,mode 为 multiple 或 range 时有效-
show-range-promptBoolean超出最大可选天数时,是否显示提示文字,默认true,mode 为 multiple 或 range 时有效-
allow-same-dayBoolean是否允许日期范围的起止时间为同一天,mode = range时有效-
readonlyBoolean是否为只读状态-
first-day-of-weekNumber设置周起始日,1-7,1表示星期一,以此类推,7表示星期天1
use-popupBoolean是否以弹窗的形式展示日历,默认truetrue
close-on-click-overlayBoolean点击遮罩是否关闭true
safe-area-inset-bottomBoolean是否开启底部安全区-
z-indexNumberzIndex 层级999
closeable1.0.9Boolean是否显示关闭按钮级true
close-icon 1.0.9String关闭图标的name值级cross
close-on-click-close 1.0.9Boolean点击关闭按钮是否关闭popup级true
custom-styleObject自定义style-

Events

事件名说明回调参数
select 1.0.5点击并选中任意日期时触发(value:string
confirm日期选择完成后触发,若 show-confirm 为 true,则点击确认按钮后触发-
unselect当日历组件的 mode 为 multiple 时,取消选中日期时触发(value:string)
clickDisabledDate点击禁用的日期时触发(value:string)
overRange选择超出最多可选天数时触发-
clickClose1.0.9点击关闭按钮时触发-
open打开时触发-
close关闭时触发-
opened打开动画结束时触发-
closed关闭动画结束时触发-

类型定义

组件导出如下类型

ts

type CalendarData = {
	fullDate : string,
	year : number,
	month : number,
	date : number,
	day : number, //星期 1-7
	lunarInfo ?: LunarInfoType,
	isToday : boolean,
	text ?: string, //显示的文字,会替换 date 日期
	topInfo ?: string, // 顶部文案
	topInfoColor ?: string, //顶部文案颜色
	bottomInfo ?: string, //底部文案
	bottomInfoColor ?: string, //底部文案颜色
	disabled ?: boolean,
}

type CalendarFormatter = (day : CalendarData) => CalendarData
type CalendarMode = 'single' | 'multiple' | 'range'
type CalendarSwitchMode = 'month' | 'year-month' | 'none'

组件类型

ts
// 组件类型
const calendarRef = ref<RiceCalendarComponentPublicInstance | null>(null)