更新记录

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

注意事项

  1. 日期统一为 YYYY-MM-DD
  2. 范围模式需选齐开始、结束两端后,才能点击确定。
  3. 未传 minDate / maxDate 时,由 yearBeforeyearAftermonthRange 共同决定可查看与可选范围。
  4. allowBeforeTodayfalse 时,今天之前的日期不可选(仍可能看到对应月份格子)。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。