Skip to content

DateRangePicker 日期区间选择器

基于 Element Plus ElDatePickerPanel 二次封装的日期区间选择器,支持自定义预设区间、学期入口、双语切换。

依赖

使用本组件需要安装 peerDependencies:

bash
npm install element-plus dayjs

基础用法

当前值:[ "2026-01-01", "2026-03-31" ]
vue
<script setup>
import { ref } from 'vue'
const range = ref(['2026-01-01', '2026-03-31'])
const presets = [
  { key: 'last7',  label: '近 7 天',  mode: 'preset' },
  { key: 'last30', label: '近 30 天', mode: 'preset' },
  { key: 'this-month', label: '本月', mode: 'preset' }
]
</script>

<template>
  <MDateRangePicker
    v-model="range"
    :presets="presets"
    start-placeholder="开始日期"
    end-placeholder="结束日期"
    separator="至"
  />
</template>

学期入口

通过 show-semester-action 显示自定义入口按钮,点击触发 semester-click 事件,用于跳转到学期设置等场景。

vue
<template>
  <MDateRangePicker
    v-model="range"
    semester-action-text="学期设置"
    :show-semester-action="true"
    @semester-click="openSemesterModal"
  />
</template>

英文界面

vue
<template>
  <MDateRangePicker
    v-model="range"
    locale="en"
    start-placeholder="Start date"
    end-placeholder="End date"
    separator="~"
  />
</template>

Props 属性

属性名类型默认值说明
modelValuestring[] | null-[startDate, endDate](v-model)
presetsDateRangePreset[][]预设区间列表
disabledDate(date: Date) => boolean-禁用日期判定函数
semesterActionTextstring'Semester Settings'自定义入口文案
showSemesterActionbooleantrue是否显示学期入口
startPlaceholderstring'Start date'开始日期占位符
endPlaceholderstring'End date'结束日期占位符
separatorstring'~'起止日期分隔符
locale'zh' | 'en''zh'Element Plus 语言

Events 事件

事件名参数说明
update:modelValue[start, end]区间确认时触发
change[start, end]同上
semester-click-点击学期入口时触发

Slots 插槽

插槽名作用域说明
sidebar{ presets, activePresetKey, selectPreset, semesterActionText, emitSemesterClick }完全自定义侧边栏

Released under the MIT License.