更新记录

1.0.0(2026-10-13) 下载此版本

  • 首次发布
  • 内置 7 个快捷项:今天、昨天、近一周、近一月、近三月、近半年、近一年,可通过 quick-ranges 配置显示 / 隐藏、修改文案、追加自定义天数;一个快捷项都不配置时,快捷区与「自定义」按钮整体隐藏,面板下方直接就是日期滚轮
  • 「近一月 / 近三月 / 近半年 / 近一年」按自然月计算(如今天 10-13,近三月为 07-14 ~ 10-13)
  • 自定义时在同一个面板中通过左右两组日期滚轮一次性选择开始与结束日期,分隔符固定居中
  • 新增 theme-color 参数,可自定义「确定」按钮与选中快捷项(文字 + 浅色背景)的颜色
  • 左右两组滚轮完全独立,拖动任意一侧都不会影响另一侧;若结束日期早于开始日期,点「确定」时弹窗提示且不提交,面板保留方便修改
  • 修复:H5 端校验提示被选择面板遮挡的问题,提示弹窗改为组件内置实现,层级始终高于面板
  • 新增 error-text 参数,用于自定义结束日期小于开始日期时的提示文案
  • 自动保证开始日期不大于结束日期,自动处理大小月天数
  • 支持 v-model 双向绑定、change/cancel/open 事件、默认插槽自定义触发器

平台兼容性

uni-app(3.8.5)

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

qw24-date-range 日期区间选择器

一个开箱即用的 uni-app 日期区间选择器:默认提供「今天 / 昨天 / 近一周 / 近一月 / 近三月 / 近半年 / 近一年」7 个快捷项(可配置显示哪些、隐藏、改文案、追加自定义天数),自定义时在同一个面板里用左右两组日期滚轮一次性选择开始与结束日期。

平台兼容性

平台 支持情况
App(vue2 / vue3) 支持
H5 支持
微信 / 支付宝 / 抖音 / 百度 / 快手 / 京东 / QQ / 飞书小程序 支持
App-nvue 不支持
鸿蒙 / 快应用 未验证

最低版本要求:HBuilderX 3.6.0(vue2 / vue3 项目均可),组件本身只依赖 picker-view、插槽、计算属性等基础能力,无任何第三方依赖。

  • HBuilderX 3.2.0+ 才支持 vue3 项目;
  • HBuilderX 3.5.0+ 支持 pages_init.json,导入插件时会自动提示合并示例页路由,低于该版本需自己把示例页加到 pages.json;
  • HBuilderX 4.71+ 使用新版平台兼容性规范(√ / x / -),插件市场的兼容性展示更准确,建议用 4.71+ 导入与发布;
  • 该插件不支持 uni-app x(uvue),uni-app x 平台未声明支持。

安装

  1. 在插件市场本插件详情页点击「使用 HBuilderX 导入插件」,选择你的项目;
  2. 或把 qw24-date-range 目录直接复制到项目的 uni_modules 目录下;
  3. 示例页面 uni_modules/qw24-date-range/pages/date-range/date-range.vue 可直接运行查看效果(首次导入时会提示合并页面路由)。

组件符合 easycom 规范,无需 import,直接使用标签 <qw24-date-range> 即可。

如果标签不渲染、点击没有反应,说明编译期没有扫描到这个 easycom 组件(新拷贝进项目的 uni_modules 目录需要重新扫描一次),此时:

  • 停止运行后重新运行项目,或重启 HBuilderX 后再运行;
  • 也可以显式引入组件(组件无法解析时的兜底方案):
import QwDateRange from '@/uni_modules/qw24-date-range/components/qw24-date-range/qw24-date-range.vue';

export default {
    components: { QwDateRange }
};
<qw-date-range v-model="range" @change="handleChange" />

基本用法

<template>
    <view>
        <qw24-date-range v-model="range" @change="handleChange" />
    </view>
</template>

<script>
    export default {
        data() {
            return {
                range: { start: '2026-01-01', end: '2026-10-13' }
            };
        },
        methods: {
            handleChange(e) {
                // 点击「近一周」:e = { start: '2026-10-07', end: '2026-10-13', days: 7, quickIndex: 2, quickKey: 'week', quickLabel: '近一周' }
                console.log(e);
            }
        };
    };
</script>

v-model 的值为对象 { start, end }(也兼容 ['2026-01-01', '2026-10-13'] 数组);vue2 项目同样使用 v-model,组件内部已兼容 value + input。

快捷区间

默认显示下面 7 项,顺序即展示顺序,结束日期都是今天:

key 默认文案 区间规则(以今天 2026-10-13 为例)
today 今天 2026-10-13 ~ 2026-10-13
yesterday 昨天 2026-10-12 ~ 2026-10-12
week 近一周 2026-10-07 ~ 2026-10-13(今天往前推 6 天,共 7 天)
month 近一月 2026-09-14 ~ 2026-10-13(今天往前推 1 个自然月的次日起)
quarter 近三月 2026-07-14 ~ 2026-10-13(今天往前推 3 个自然月的次日起)
halfYear 近半年 2026-04-14 ~ 2026-10-13(今天往前推 6 个自然月的次日起)
year 近一年 2025-10-14 ~ 2026-10-13(今天往前推 12 个自然月的次日起)

另外还有一个内置可选项(不在默认列表里,需要时自己加上即可):halfMonth —— 近半月,今天往前推 14 天。

通过 quick-ranges 控制显示哪些项、是否改文案、是否追加自定义天数:

<!-- 只显示近一周、近一月 -->
<qw24-date-range v-model="range" :quick-ranges="['week', 'month']" />

<!-- 改文案 / 隐藏某一项 / 追加自定义天数 -->
<qw24-date-range v-model="range" :quick-ranges="customRanges" />

<!-- 一个快捷项都不要,面板里直接就是日期滚轮选择 -->
<qw24-date-range v-model="range" :quick-ranges="[]" />
customRanges: [
    'today',
    { key: 'week', label: '近7天' },   // 改文案
    { key: 'month', visible: false },   // 隐藏「近一月」
    'quarter',
    { days: 10, label: '近10天' }       // 完全自定义天数
]
  • 数组里写哪些项就显示哪些项,不写哪一项就是不显示哪一项;
  • 当 quick-ranges 为空数组或不包含任何有效项时,整个快捷区都不显示,「自定义」按钮也一并隐藏,面板下方直接就是日期滚轮;
  • 有快捷项时,「自定义」按钮会追加在最后(文案可用 custom-text 修改)。

属性

属性 类型 默认值 说明
v-model / value Object | Array null 当前区间,{ start, end } 或 [start, end],支持 YYYY-MM-DD 字符串、时间戳、Date
quick-ranges Array ['today','yesterday','week','month','quarter','halfYear','year'] 快捷项配置,元素可为内置 key 字符串、{ key, label, visible } 或 { days, label }
title String 选择时间 面板标题
placeholder String 请选择日期区间 未选择时的占位文案(默认触发器)
format String YYYY-MM-DD 回填值的格式,支持 YYYY MM DD、YYYY/MM/DD 等
separator-text String 至 开始与结束日期之间的分隔符
custom-text String 自定义 「自定义」按钮的文案
theme-color String #2979ff 主题色,作用于「确定」按钮文字和选中的快捷项(文字 + 浅色背景)
error-text String 结束日期不能小于开始日期 结束日期早于开始日期时,点「确定」弹出的提示文案
year-range Array [10, 1] 滚轮可选年份范围:[往前年数, 往后年数]
auto-close-on-quick Boolean true 点击快捷项后是否立即确定并关闭面板
close-on-click-mask Boolean true 点击遮罩是否关闭面板
disabled Boolean false 是否禁用

事件

事件名 说明 回调参数
change 点击「确定」或快捷项后触发 { start, end, days, quickIndex, quickKey, quickLabel }
cancel 点击「取消」或遮罩关闭时触发 -
open 面板打开时触发 -

方法

通过 ref 调用:

方法名 说明
open() 打开面板
closePanel() 关闭面板
handleConfirm() 直接提交当前选择

Slots

名称 说明
default 自定义触发器内容,不填则使用组件自带的输入框样式
<qw24-date-range v-model="range">
    <view class="my-trigger">统计周期:{{ range ? range.start + ' ~ ' + range.end : '未选择' }}</view>
</qw24-date-range>

说明

  • 主题色通过 theme-color 配置(默认 #2979ff),作用于「确定」按钮文字和选中的快捷项(文字 + 10% 透明度的同色背景),例如 theme-color="#ff6b35"、theme-color="#22c55e";支持 #RRGGBB 与 #RGB,传其他颜色值时会直接用于文字色。
  • 面板上半部分是快捷项(没有快捷项时整块隐藏),下半部分是左右两组滚轮:左边选开始日期,右边选结束日期,中间的分隔符固定居中。
  • 左右两组滚轮完全独立,拖动任何一侧都不会影响另一侧,可以自由选择日期;大小月天数自动处理。
  • 若结束日期早于开始日期,点「确定」时会弹出组件内置的提示弹窗(层级在面板之上,H5 端也不会被遮挡,文案可用 error-text 配置),面板不会关闭、不会提交,方便直接在滚轮上修改。
  • 若当前 v-model 的值不匹配任何快捷项,打开面板时会高亮「自定义」。
  • 组件不依赖任何第三方插件,样式可自行覆盖(类名前缀统一为 drp-)。

隐私、权限声明

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

无

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

插件不采集任何数据

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

无

许可协议

MIT协议