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 可选 week、month、year、dates 等。
范围选择
以下类型的面板交互一致:无值时只能先选开始侧;选满开始、结束后形成范围;仅选开始未选结束就关闭时,输入框会恢复打开前状态。daterange 选完开始日期后会自动切到结束 Tab;详见各 demo 说明。
type | 说明 |
|---|---|
daterange | 日期范围 |
monthrange | 月份范围 |
yearrange | 年份范围 |
日期范围 daterange
单面板长滚动月历,Tab 切换开始/结束日期。选开始后开始框立即有值并自动进入结束侧;智能录入(默认开启)在开始日期录满后聚焦结束输入框。
月份范围 monthrange
单面板长滚动月历,Tab 切换开始/结束月份。
年份范围 yearrange
单面板虚拟滚动年表,Tab 切换开始/结束年份。
格式与绑定值
显示格式与 value-format
使用 format 指定输入框展示格式,使用 value-format 指定绑定值格式;不设置 value-format 时绑定值为 Date 对象。
| 格式 | 输出 | 描述 |
|---|---|---|
YY | 18 | 两位数的年份 |
YYYY | 2018 | 四位数的年份 |
M | 1-12 | 月份,从 1 开始 |
MM | 01-12 | 月份,两位数 |
MMM | Jan-Dec | 简写的月份名称 |
MMMM | January-December | 完整的月份名称 |
D | 1-31 | 月份里的一天 |
DD | 01-31 | 月份里的一天,两位数 |
d | 0-6 | 一周中的一天,星期天是 0 |
dd | Su-Sa | 最简写的一周中一天的名称 |
ddd | Sun-Sat | 简写的一周中一天的名称 |
dddd | Sunday-Saturday | 一周中一天的名称 |
H | 0-23 | 小时 |
HH | 00-23 | 小时,两位数 |
h | 1-12 | 小时, 12 小时制 |
hh | 01-12 | Hours, 12 小时制, 两位数 |
m | 0-59 | 分钟 |
mm | 00-59 | 分钟,两位数 |
s | 0-59 | 秒 |
ss | 00-59 | 秒 两位数 |
SSS | 000-999 | 毫秒 三位数 |
Z | +5:00 | UTC 的偏移量 |
ZZ | +0500 | UTC 的偏移量,数字前面加上 0 |
A | AM PM | |
a | am pm |
WARNING
请一定要注意传入参数的大小写是否正确
change 附带格式化字符串 emit-formatted-value
开启后,change 事件的第二个参数为格式化字符串;v-model 仍为 Date 或 Date[](未设置 value-format 时)。
打开时的默认日期 default-value
未选值时面板默认展示的日期;daterange 时作用于范围左侧(开始侧)。
范围选中日期的默认时刻 default-time
仅对含时刻的范围类型生效(如 datetimerange,见 DateTimePicker Pro)。纯日期范围 daterange 一般无需配置。
自定义
前缀 / 后缀图标
- 后缀:默认显示日历图标(
TimePicker为时钟图标);可用suffix-icon覆盖。有值且悬停时可清除时,清除按钮会暂时替换后缀图标。 - 前缀:默认无图标;设置
prefix-icon后显示自定义前缀。
pre
pre
-单元格内容 default 插槽
自定义结构需与默认单元格一致,否则样式可能不一致。
单元格数据类型:
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 | 绑定值,如果它是数组,长度应该是 2 | number / string / Date / array | '' | |
| type | 显示类型 | enum | date | |
| readonly | 只读 | boolean | false | |
| disabled | 禁用 | boolean | false | |
| size | 输入框尺寸 | enum | — | |
| editable | 文本框可输入 | boolean | true | |
| clearable | 是否显示清除按钮 | boolean | true | |
| placeholder | 非范围选择时的占位内容 | string | '' | |
| start-placeholder | 范围选择时开始日期的占位内容 | string | — | |
| end-placeholder | 范围选择时结束日期的占位内容 | string | — | |
| format | 输入框显示格式 | 参见 格式与绑定值 | YYYY-MM-DD(按 type) | |
| value-format | 绑定值格式;不指定则为 Date | 参见 格式与绑定值 | — | |
| date-format | 面板内日期展示格式 | string | — | |
| time-format | 面板内时间展示格式(datetime / datetimerange) | string | — | |
| default-value | 打开面板时默认展示的日期 | object | — | |
| default-time | 范围选中日期使用的当日内时刻(datetimerange 等) | object | — | |
| range-separator | 范围分隔符 | string | - | |
| calendar-range | Pro 面板年份窗口 [startYear, endYear] | array | 当前年 ±10 | |
| persistent | Pro 关闭后是否保留下拉 DOM;默认销毁以优化性能 | boolean | false | |
| manual-input | Pro 是否启用智能分块手动录入 | boolean | true | |
| automatic-dropdown | 聚焦输入框时是否自动展开面板 | boolean | true | |
| prefix-icon | 自定义前缀图标;未设置时不显示 | string / object | — | |
| suffix-icon | 自定义后缀图标;未设置时默认为日历/时钟图标 | string / object | — | |
| clear-icon | 自定义清除图标 | string / object | CircleCloseFilled | |
| disabled-date | 判断日期是否禁用 | Function | — | |
| disabled-hours | 禁用小时(datetime / datetimerange) | Function | — | |
| disabled-minutes | 禁用分钟(datetime / datetimerange) | Function | — | |
| disabled-seconds | 禁用秒(datetime / datetimerange) | Function | — | |
| shortcuts | 快捷选项 | array | [] | |
| cell-class-name | 单元格自定义类名 | Function | — | |
| arrow-control | 时间列是否使用箭头切换(含时刻的类型) | boolean | false | |
| show-week-number | 是否显示周数 | boolean | false | |
| show-footer | 是否显示面板页脚 | boolean | true | |
| show-confirm | 是否显示确定按钮 | boolean | true | |
| show-now | 是否显示「此刻」按钮(含时刻的类型) | boolean | true | |
| popper-class | 下拉层类名 | string | — | |
| popper-style | 下拉层样式 | object | — | |
| popper-options | popper.js 配置 | object | {} | |
| teleported | 是否使用 teleport;为 true 时下拉层挂载到 append-to 指定位置 | boolean | true | |
| append-to | 下拉层挂载到哪个 DOM 元素 | string | — | |
| placement | 下拉层位置 | Placement | bottom-start | |
| fallback-placements | 下拉层备选位置 | array | 见 popper 默认 | |
| id | 原生 id | string / array | — | |
| name | 原生 name | string / array | — | |
| tabindex | 输入框 tabindex | string / number | 0 | |
| aria-label | 无障碍标签 | string | — | |
| validate-event | 是否触发表单校验 | boolean | true | |
| empty-values | 空值配置,见 Config Provider | array | — | |
| value-on-clear | 清空时的值,见 Config Provider | string / number / boolean / Function | — | |
| trigger-suffix | 仅点击后缀图标时打开面板 | boolean | false | V0.0.8 |
| plain | 朴素样式 | boolean | false | V0.0.8 |
| emit-formatted-value | change 是否返回格式化字符串 | boolean | false | V0.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-icon、suffix-icon。
| 名称 | 说明 |
|---|---|
| default | 自定义单元格内容 |
| range-separator | 自定义范围分割符内容 |
| sidebar | 侧边栏快捷选项区域 |
暴露
| 方法名 | 说明 | 类型 |
|---|---|---|
| focus | 使组件获取焦点 | Function |
| blur | 使组件失去焦点 | Function |
| handleOpen | 打开日期选择器弹窗 | Function |
| handleClose | 关闭日期选择器弹窗 | Function |
类型声明
显示类型声明
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 版权所有

