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