Pro 日期选择器 ​

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

WARNING

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

单点选择 ​

日期 date ​

默认 type="date"。含自定义 shortcuts、内置 quick-choose(可配 quick-choose-position / show-quick-choose-label)、selecting-shortcuts、toggle-date 等。

默认
带快捷选项(自定义)
内置快捷(左侧)
内置快捷(右侧 + 辅助信息)
快捷下拉 selecting-shortcuts
选择日期
快捷切换 toggle-date
点击尾部
轻量化
禁用
禁用

禁用日期 disabled-date ​

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

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

周、月、年、季度、多个日期 ​

type 可选 week、month、year、quarter、dates 等。

周
多个日期
年
多个年
月
多个月
季度
多个季度

范围选择 ​

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

日期范围 daterange ​

单面板长滚动月历,Tab 切换开始/结束日期。含内置 quick-choose、输入框左右快捷切换 toggle-range-date、快捷下拉 selecting-shortcuts 等。

默认
-
快捷选项
-
内置快捷 quick-choose
-
快捷切换 toggle-range-date
-
快捷下拉 selecting-shortcuts
选择日期
-

月份 / 季度 / 年份范围 ​

monthrange / quarterrange / yearrange(单面板长滚动,Tab 切换起止)

月份范围 monthrange
-
季度范围 quarterrange
-
年份范围 yearrange
-

格式与绑定值 ​

显示格式与 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 仍为 Date 或 Date[](未设置 value-format 时)。

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

打开时的默认日期 default-value ​

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

设置默认值
日期范围
-

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

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

-

自定义 ​

前缀 / 后缀图标 ​

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

pre

set suffix-icon

pre

-

单元格内容 ​

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

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 ​

属性 ​

参数说明类型默认值
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 / datetimerange)string—
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 / datetimerange)Function—
disabled-minutes禁用分钟(datetime / datetimerange)Function—
disabled-seconds禁用秒(datetime / datetimerange)Function—
shortcuts快捷选项array[]
cell-class-name单元格自定义类名Function—
arrow-control时间列是否使用箭头切换(含时刻的类型)booleanfalse
show-week-number是否显示周数booleanfalse
show-footer是否显示面板页脚booleantrue
show-confirm是否显示确定按钮booleantrue
show-now是否显示「此刻」按钮(含时刻的类型)booleantrue
server-time 1.3.4开启后,点击「此刻」调用 window.$w.getSysTime() 获取服务器时间;未开启时使用本地时间booleanfalse
quick-choose 1.3.4启用内置快捷选项booleanfalse
quick-choose-position 1.3.4快捷选项位置enumleft
show-quick-choose-label 1.3.4是否显示快捷选项辅助信息(范围选择器始终不显示)booleanfalse
selecting-shortcuts 1.3.4快捷选项下拉:单点走 w-input #prepend,范围外挂左侧(仅 date / datetime / daterange / datetimerange);需同时开启 quick-choose 或提供非空 shortcuts;面板侧仅收起快捷列表,自定义 #sidebar 仍保留booleanfalse
shortcut-default-time 1.3.4内置快捷选项启用时,使用 default-time 中的时刻booleanfalse
toggle-date 1.3.4单点快捷切换:走 w-input #prepend / #append(仅 date / month / year / datetime)booleanfalse
toggle-range-date 1.3.4范围选择器输入框两侧显示快捷切换箭头booleanfalse
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仅点击后缀图标时打开面板booleanfalse
plain朴素样式booleanfalse
emit-formatted-valuechange 是否返回格式化字符串booleanfalse

经典版有、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
toggle-date 1.3.4点击单点快捷切换箭头时触发Function
toggle-range-date 1.3.4点击范围快捷切换箭头时触发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

类型声明 ​

显示类型声明
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 版权所有