更新记录
1.0.1(2026-08-12) 下载此版本
2026.08.12 更新
平台兼容性
uni-app(4.0)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
calendar-popup 日历弹窗选择器
底部弹出式日历组件,支持单日选择与日期范围选择,适配 App、H5、各家小程序。
安装
将插件导入到 uni-app 项目后,目录为:
uni_modules/calendar-popup/
符合 easycom 规范,无需 import / 注册,页面中直接使用即可。
基础用法
单选日期
<template>
<view>
<view @click="show = true">{{ date || '请选择日期' }}</view>
<calendar-popup
:show.sync="show"
v-model="date"
title="选择日期"
:monthRange="3"
:yearBefore="0"
:yearAfter="0"
:allowBeforeToday="false"
@confirm="onConfirm"
/>
</view>
</template>
<script>
export default {
data() {
return {
show: false,
date: '' // 选中后为 YYYY-MM-DD
}
},
methods: {
onConfirm(val) {
console.log(val) // '2026-08-12'
}
}
}
</script>
范围选择(如入住 / 离店)
<template>
<view>
<view @click="show = true">
{{ dateRange.length === 2 ? dateRange.join(' 至 ') : '请选择日期范围' }}
</view>
<calendar-popup
:show.sync="show"
v-model="dateRange"
mode="range"
title="选择日期范围"
:monthRange="3"
:yearBefore="1"
:yearAfter="0"
:allowBeforeToday="false"
startLabel="入住"
endLabel="离店"
@confirm="onConfirm"
/>
</view>
</template>
<script>
export default {
data() {
return {
show: false,
dateRange: [] // 选中后为 [start, end],格式均为 YYYY-MM-DD
}
},
methods: {
onConfirm(val) {
console.log(val) // { start: '2026-08-12', end: '2026-08-15' }
}
}
}
</script>
Props
| 属性 | 类型 | 默认值 | 说明 |
|---|---|---|---|
| show | Boolean | false |
是否显示弹窗,配合 .sync 使用 |
| value / v-model | String / Array | '' |
选中值。单选为 YYYY-MM-DD;范围为 [start, end] |
| mode | String | single |
single 单日 / range 区间 |
| title | String | 选择日期 |
顶部标题 |
| color | String | #1A7F64 |
主题色(确定按钮、选中态等) |
| minDate | String | '' |
最小可选/可查看日期 YYYY-MM-DD,优先于 yearBefore |
| maxDate | String | '' |
最大可选/可查看日期 YYYY-MM-DD,优先于 yearAfter / monthRange |
| yearBefore | Number | 10 |
相对当前年往前可跨年数;<=0 时只能从当月 1 号起查看 |
| yearAfter | Number | 10 |
相对当前年往后可跨年数;与 monthRange 同时存在时取更严上限 |
| monthRange | Number | 0 |
从今天起往后可跨月数;0 表示不按月限制 |
| allowBeforeToday | Boolean | true |
是否允许选择今天之前的日期 |
| confirmText | String | 确定 |
确认按钮文案 |
| cancelText | String | 取消 |
取消按钮文案 |
| startLabel | String | 开始 |
范围模式底部开始侧标签 |
| endLabel | String | 结束 |
范围模式底部结束侧标签 |
| closeOnClickOverlay | Boolean | true |
点击遮罩是否关闭 |
Events
| 事件名 | 说明 | 回调参数 |
|---|---|---|
| confirm | 点击确定 | 单选:YYYY-MM-DD;范围:{ start, end } |
| cancel | 点击取消 | — |
| select | 点击某一天(未点确定前) | 单选:日期字符串;范围:{ start, end } |
| input | v-model 同步(Vue2) | 与 value 同结构 |
| update:show | 关闭时同步 show |
false |
注意事项
- 日期统一为
YYYY-MM-DD。 - 范围模式需选齐开始、结束两端后,才能点击确定。
- 未传
minDate/maxDate时,由yearBefore、yearAfter、monthRange共同决定可查看与可选范围。 allowBeforeToday为false时,今天之前的日期不可选(仍可能看到对应月份格子)。

收藏人数:
下载插件并导入HBuilderX
赞赏(0)
下载 13
赞赏 0
下载 12501006
赞赏 1940
赞赏
京公网安备:11010802035340号