Pro 日期选择器

用于选择或输入日期(不含时刻)。需要同时选日期与时间请使用 DateTimePicker Pro;仅选时刻请使用 TimePicker Pro

组件选型

组件适用场景
DatePicker Pro(本文档)日 / 周 / 月 / 年、多选、各类日期范围
DateTimePicker Pro日期 + 时刻、日期时间范围
TimePicker Pro仅时刻、时刻范围
DatePickerPanel Pro无输入框,单独嵌入面板

通过 type 切换展示类型。Pro 版范围选择均为单面板 + 顶部 Tab(长滚动月历 / 年表),与经典 DatePicker 双面板不同。

WARNING

Pro 版面板通过虚拟滚动展示年/月列表,年份范围由 calendar-range 控制(默认当前年前后各 10 年)。若业务需要选择超出该范围的年份(如历史数据录入、出生日期),必须通过 calendar-range 显式指定 [startYear, endYear],否则超出范围的年份不可见也不可选。

单点选择

日期 date

默认 type="date"。可用 shortcuts 配置快捷项,disabledDate 禁用部分日期。

默认
带快捷选项
🎉 点击尾部
🎉 轻量化
禁用
禁用

禁用日期 disabled-date

通过 disabled-date 函数控制哪些日期不可选,函数接收 Date 参数,返回 true 表示禁用。

禁用今天之后的日期
禁用今天之前的日期
禁用周末

周、月、年、多个日期

type 可选 weekmonthyeardates 等。

多个日期
多个年
多个月

范围选择

以下类型的面板交互一致:无值时只能先选开始侧;选满开始、结束后形成范围;仅选开始未选结束就关闭时,输入框会恢复打开前状态。daterange 选完开始日期后会自动切到结束 Tab;详见各 demo 说明。

type说明
daterange日期范围
monthrange月份范围
yearrange年份范围

日期范围 daterange

单面板长滚动月历,Tab 切换开始/结束日期。选开始后开始框立即有值并自动进入结束侧;智能录入(默认开启)在开始日期录满后聚焦结束输入框。

默认
-
快捷选项
-
🎉 轻量化
-

月份范围 monthrange

单面板长滚动月历,Tab 切换开始/结束月份。

默认
-
快捷选项
-

年份范围 yearrange

单面板虚拟滚动年表,Tab 切换开始/结束年份。

默认
-
快捷选项
-

格式与绑定值

显示格式与 value-format

使用 format 指定输入框展示格式,使用 value-format 指定绑定值格式;不设置 value-format 时绑定值为 Date 对象。

Day.js 格式说明

格式输出描述
YY18两位数的年份
YYYY2018四位数的年份
M1-12月份,从 1 开始
MM01-12月份,两位数
MMMJan-Dec简写的月份名称
MMMMJanuary-December完整的月份名称
D1-31月份里的一天
DD01-31月份里的一天,两位数
d0-6一周中的一天,星期天是 0
ddSu-Sa最简写的一周中一天的名称
dddSun-Sat简写的一周中一天的名称
ddddSunday-Saturday一周中一天的名称
H0-23小时
HH00-23小时,两位数
h1-12小时, 12 小时制
hh01-12Hours, 12 小时制, 两位数
m0-59分钟
mm00-59分钟,两位数
s0-59
ss00-59秒 两位数
SSS000-999毫秒 三位数
Z+5:00UTC 的偏移量
ZZ+0500UTC 的偏移量,数字前面加上 0
AAM PM
aam pm

WARNING

请一定要注意传入参数的大小写是否正确

Date object
value-format
Timestamp

change 附带格式化字符串 emit-formatted-value

开启后,change 事件的第二个参数为格式化字符串;v-model 仍为 DateDate[](未设置 value-format 时)。

日期选择器
周选择器
时间选择器
范围选择器
-

打开时的默认日期 default-value

未选值时面板默认展示的日期;daterange 时作用于范围左侧(开始侧)。

设置默认值
日期范围
-

范围选中日期的默认时刻 default-time

仅对含时刻的范围类型生效(如 datetimerange,见 DateTimePicker Pro)。纯日期范围 daterange 一般无需配置。

-

自定义

前缀 / 后缀图标

  • 后缀:默认显示日历图标(TimePicker 为时钟图标);可用 suffix-icon 覆盖。有值且悬停时可清除时,清除按钮会暂时替换后缀图标。
  • 前缀:默认无图标;设置 prefix-icon 后显示自定义前缀。
set suffix-icon

pre

set suffix-icon

pre

-

单元格内容 default 插槽

自定义结构需与默认单元格一致,否则样式可能不一致。

单元格数据类型:

ts
interface DateCell {
  column: number
  customClass: string
  disabled: boolean
  end: boolean
  inRange: boolean
  row: number
  selected: Dayjs
  isCurrent: boolean
  isSelected: boolean
  start: boolean
  text: number
  timestamp: number
  date: Date
  dayjs: Dayjs
  type: 'normal' | 'today' | 'week' | 'next-month' | 'prev-month'
}

国际化

由于 WinDesign Next 的默认语言为中文,如果你需要设置其它的语言,请参考国际化文档。

要注意的是:日期相关的文字(月份,每一周的第一天等等)也都是通过国际化来配置的。

API

属性

参数说明类型默认值Version
model-value / v-model绑定值,如果它是数组,长度应该是 2number / string / Date / array''
type显示类型enumdate
readonly只读booleanfalse
disabled禁用booleanfalse
size输入框尺寸enum
editable文本框可输入booleantrue
clearable是否显示清除按钮booleantrue
placeholder非范围选择时的占位内容string''
start-placeholder范围选择时开始日期的占位内容string
end-placeholder范围选择时结束日期的占位内容string
format输入框显示格式参见 格式与绑定值YYYY-MM-DD(按 type)
value-format绑定值格式;不指定则为 Date参见 格式与绑定值
date-format面板内日期展示格式string
time-format面板内时间展示格式(datetime / datetimerangestring
default-value打开面板时默认展示的日期object
default-time范围选中日期使用的当日内时刻(datetimerange 等)object
range-separator范围分隔符string-
calendar-rangePro 面板年份窗口 [startYear, endYear]array当前年 ±10
persistentPro 关闭后是否保留下拉 DOM;默认销毁以优化性能booleanfalse
manual-inputPro 是否启用智能分块手动录入booleantrue
automatic-dropdown聚焦输入框时是否自动展开面板booleantrue
prefix-icon自定义前缀图标;未设置时不显示string / object
suffix-icon自定义后缀图标;未设置时默认为日历/时钟图标string / object
clear-icon自定义清除图标string / objectCircleCloseFilled
disabled-date判断日期是否禁用Function
disabled-hours禁用小时(datetime / datetimerangeFunction
disabled-minutes禁用分钟(datetime / datetimerangeFunction
disabled-seconds禁用秒(datetime / datetimerangeFunction
shortcuts快捷选项array[]
cell-class-name单元格自定义类名Function
arrow-control时间列是否使用箭头切换(含时刻的类型)booleanfalse
show-week-number是否显示周数booleanfalse
show-footer是否显示面板页脚booleantrue
show-confirm是否显示确定按钮booleantrue
show-now是否显示「此刻」按钮(含时刻的类型)booleantrue
popper-class下拉层类名string
popper-style下拉层样式object
popper-optionspopper.js 配置object{}
teleported是否使用 teleport;为 true 时下拉层挂载到 append-to 指定位置booleantrue
append-to下拉层挂载到哪个 DOM 元素string
placement下拉层位置Placementbottom-start
fallback-placements下拉层备选位置array见 popper 默认
id原生 idstring / array
name原生 namestring / array
tabindex输入框 tabindexstring / number0
aria-label无障碍标签string
validate-event是否触发表单校验booleantrue
empty-values空值配置,见 Config Providerarray
value-on-clear清空时的值,见 Config Providerstring / number / boolean / Function
trigger-suffix仅点击后缀图标时打开面板booleanfalseV0.0.8
plain朴素样式booleanfalseV0.0.8
emit-formatted-valuechange 是否返回格式化字符串booleanfalseV0.0.8

经典版有、Pro 版无需使用的属性

属性说明
unlink-panels经典范围双面板联动;Pro 均为单面板 + Tab,无此属性
single-panel传入无效,Pro 范围布局已固定为单面板
prev-month / next-month 等插槽面板导航插槽,Pro 不支持,见下方插槽

事件

事件名说明类型
change用户确认选定的值时触发Function
blur在组件 Input 失去焦点时触发Function
focus在组件 Input 获得焦点时触发Function
clear可清空的模式下用户点击清空按钮时触发Function
calendar-change在日历所选日期更改时触发Function
panel-change当日期面板改变时触发。Function
visible-change当 DatePicker Pro 的下拉列表出现/消失时触发Function

插槽

Pro 版不支持经典版 prev-month / next-month / prev-year / next-year 面板导航插槽;面板导航使用内置图标。输入框图标请用 prefix-iconsuffix-icon

名称说明
default自定义单元格内容
range-separator自定义范围分割符内容
sidebar侧边栏快捷选项区域

暴露

方法名说明类型
focus使组件获取焦点Function
blur使组件失去焦点Function
handleOpen打开日期选择器弹窗Function
handleClose关闭日期选择器弹窗Function

类型声明

显示类型声明
ts
import type { Options as PopperOptions } from '@popperjs/core'

type TimeLikeType = 'datetime' | 'datetimerange'

type Placement =
  | 'top'
  | 'top-start'
  | 'top-end'
  | 'bottom'
  | 'bottom-start'
  | 'bottom-end'
  | 'left'
  | 'left-start'
  | 'left-end'
  | 'right'
  | 'right-start'
  | 'right-end'

Copyright 2025 Winning Health 版权所有