更新记录

1.0.0(2026-02-11) 下载此版本

1.0.0 首发


平台兼容性

uni-app(3.7.2)

Vue2 Vue3 Chrome Safari app-vue app-nvue Android iOS 鸿蒙
- - - - - -
微信小程序 支付宝小程序 抖音小程序 百度小程序 快手小程序 京东小程序 鸿蒙元服务 QQ小程序 飞书小程序 小红书小程序 快应用-华为 快应用-联盟
- - - - - - - - - - - -

其他

多语言 暗黑模式 宽屏模式
× ×

dy-month 月份范围选择器

简介

dy-month 是一个用于选择月份范围的组件,特别适合需要在移动应用中让用户选择特定月份范围的场景。该组件支持双向绑定显示状态,并允许用户通过滑动选择开始和结束月份。

参数(Props)

名称 类型 默认值 描述
show Boolean false 是否显示组件,支持 v-model:show 双向绑定
start String '' 默认开始月份,格式 YYYY-MM,例如 "2025-10"
end String '' 默认结束月份,格式 YYYY-MM,例如 "2026-02"
minDate String '2000-01' 最小可选月份,格式 YYYY-MM,用于生成可选列表的起点
maxDate String '' 最大可选月份,格式 YYYY-MM,空则默认为当前月份
minCount Number 1 最少可选月份数,默认 1;不足时自动推另一端补足
maxCount Number Number.MAX_SAFE_INTEGER 最多可选月份数,默认 Number.MAX_SAFE_INTEGER;超出时自动收缩到上限
returnList Boolean false 是否在 confirm 事件中额外返回选择范围内的全部月份数组(YYYY-MM)

事件(Events)

名称 参数 描述
update:show(Boolean) 显示状态双向绑定事件 show 发生变化时触发
confirm({ start, end }, monthsList?) 选择完成回调 当用户点击确定按钮后触发;当 returnList=true 时第二个参数为月份数组

使用示例

基本用法

<template>
    <view class="content">

        <view class="demo-controls">
            <view class="range-input" @click="showPicker = true">
                <text class="range-value">{{ result || '开始月份 - 结束月份' }}</text>
                <!-- <view class="range-icon"><text class="icon-check">✓</text></view> -->
            </view>
        </view>
        <dy-month v-model:show="showPicker" :start="'2025-10'" :end="'2026-01'" :minDate="'2025-10'" :returnList="true" @confirm="onConfirm" />
        <view>{{ months }}</view>
    </view>
</template>

<script>
    import DyMonth from '../../components/dy-month/dy-month.vue'
    export default {
        components: { DyMonth },
        data() {
            return {
                title: 'dy-month Demo',
                showPicker: false,
                result: '',
                months: []
            }
        },
        onLoad() {

        },
        methods: {
            onConfirm({ start, end }, months) {
                this.result = `${start} - ${end}`
                this.months = months || []
            }
        }
    }
</script>

<style>
    .content {
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
    }

    .demo-controls{
        margin-top: 40rpx;
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 20rpx;
    }
    .range-input{
        width: 680rpx;
        min-height: 88rpx;
        padding: 16rpx 24rpx;
        border-radius: 24rpx;
        background-color: #fff;
        border: 1rpx solid #e5e5e5;
        box-shadow: 0 4rpx 16rpx rgba(0,0,0,0.04);
        display: flex;
        align-items: center;
    }
    .range-input:active{
        border-color: #007aff;
    }
    .range-value{
        font-size: 32rpx;
        color: #333;
        flex: 1;
        text-align: left;
    }
    .range-icon{
        width: 44rpx;
        height: 44rpx;
        border: 1rpx solid #dcdcdc;
        border-radius: 10rpx;
        display: flex;
        align-items: center;
        justify-content: center;
        background-color: #f9f9f9;
    }
    .icon-check{
        font-size: 30rpx;
        color: #007aff;
        line-height: 1;
    }
</style>

注意事项

  • maxDate 如果未指定,则会默认设置为当前月份。
  • minCountmaxCount 可以用来限制用户选择的最小和最大月份数量。如果用户选择的数量不符合这些限制,组件将自动调整选择范围以符合要求。
  • returnList 设置为 true 时,在确认选择时除了返回起始和结束月份外,还会返回整个选择范围内的所有月份。

隐私、权限声明

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

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

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

许可协议

MIT协议

暂无用户评论。