docs_vue2/one/docs/components/date-picker.md
2020-09-22 11:06:13 +08:00

7.9 KiB
Raw Blame History

DatePicker 日期选择

示例

单日选择

默认情况下,在下拉浮层中单击日期可以选中一个日期。可以配置 clearable 属性来允许清除已选值,用 placeholder 属性来配置未选择时的占位文本。

日期范围选择

配置 range 属性时,可以在下拉浮层中选择一个日期范围。

设置快捷选项

选择日期范围时,可以通过配置 shortcuts 属性来提供快捷选项。

API

属性

名称 类型 默认值 描述
type string 'date' 日历的类型,可用值为 'date'/'month'/'year',分别对应日期/月/年视图。
range boolean false 是否选择日期范围。
selected `Date Array` -
today Date new Date() 「今天」的日期。
week-start number calendar.weekStart 一周的起始。可进行全局配置
fill-month boolean true 当只有一个面板时,是否要在当前月份面板显示非本月日期。
date-class `string Array Object
disabled-date function(Date, Date=): boolean= () => false 用于自定义指定日期是否禁用。第一个参数为需要判断是否禁用的日期。当处于范围选择过程中且已经选择了一个日期,会作为第二个参数传入。
clearable boolean false 已选值是否可以清除。
placeholder string range ? datepicker.rangePlaceholder : datepicker.placeholder 未选择时的占位文本。可进行全局配置
format `string function(Date): string=` 'yyyy-MM-dd'/'yyyy-MM'/'yyyy'
parse function(string): Date= - 自定义将输入字符串解析为 Date 对象的函数。
shortcuts Array<Object> datepicker.shortcuts [^shortcuts]
disabled boolean= false 是否为禁用状态。
readonly boolean= false 是否为只读状态。

^^^selected :::badges v-model :::

已选日期(范围)的值,根据 range 属性值的不同,数据格式不同。

+++类型详情

range 类型
false Date
true [Date, Date]
+++
^^^

^^^shortcuts 在选择范围时,可以定制的浮层中的快捷选择项列表,格式为 Array<{label, from, to}>。可进行全局配置

+++字段详情

名称 类型 描述
label string 快捷选项的文本。
from 开始时间计算方式,见下方快捷选项偏移量数据格式描述。
to 结束时间计算方式,见下方快捷选项偏移量数据格式描述。
+++ ^^^

快捷选项偏移量数据格式

shortcuts 列表项中的 fromto 字段格式相同,分别用来设置开始结束日期的计算方式。格式为 number|Object,默认值为 0

  • 类型为 number 时,表示以「今天」为基准,偏移指定天数,比如 -1 等价于 { startOf: 'day', days: -1 },即「昨天」;

  • 类型为 Object 时,支持的格式为:{startOf: string=, days: number=, weeks: number=, months: number=, }

    +++字段详情

    名称 类型 默认值 描述
    startOf string= 'day' 起始日期基准,支持的值有 'day'/'week'/'month'/'quarter'/'year'
    day number= - 偏移的天数。
    week number= - 偏移的周数。
    month number= - 偏移的月数。
    quarter number= - 偏移的季度数。
    year number= - 偏移的年数。

计算方式是先根据 startOf 设置基准,然后根据其它字段进行偏移量的叠加。

可以根据下面的例子,结合 label 理解计算方式。掌握以后,就可以非常快速地对快捷选项进行设置了。

[
  {
    label: '上个月',
    // 本月第一天往前算一个月,即上月第一天
    from: {
      startOf: 'month',
      month: -1
    },
    // 本月第一天往前算一天,即上月最后一天
    to: {
      startOf: 'month',
      days: -1
    }
  },
  {
    label: '本月',
    // 本月第一天
    from: {
      startOf: 'month'
    },
    // 今天
    to: 0
  },
  {
    label: '本周',
    // 本周第一天days 为 0 是可以省略的
    from: {
      startOf: 'week',
      days: 0
    },
    // 今天
    to: 0
  },
  {
    label: '最近7天',
    // 往前算 6 天
    from: -6,
    // 到今天
    to: 0
  },
  {
    label: '今天',
    to: 0
  }
]

插槽

名称 描述
date [^scoped-slot-date]

^^^scoped-slot-date 浮层中日历的单日单元格内的区域,可用来定制每一天对应区域的内容。

默认内容:对应日期的 date

+++作用域参数

名称 类型 描述
year number 完整年份。
month number 月份数,0 表示一月。
date number 月份内的日期。
+++
^^^

事件

名称 描述
select [^event-select]
selectstart 选择日期范围时,选择完起始日期时触发,回调参数 (picking: Date),表示已选的起始项日期。
selectprogress [^event-selectprogress]

^^^event-select :::badges v-model :::

选择修改后触发,回调参数为 (selected)。数据类型和 selected 属性一致。 ^^^

^^^event-selectprogress 选择日期范围时,在已经选择开始日期后,通过鼠标或键盘交互标记到的结束日期变更时触发。回调参数为 (picking),表示当前标记的日期范围,类型取决于 multiple 属性的值。

+++参数详请

multiple 类型
false [Date, Date]
true Array<[Date, Date]>
+++
^^^

全局配置

配置项 类型 默认值 描述
datepicker.shortcuts Array [] 快捷选项配置。
datepicker.placeholder string @@datepicker.selectDate 选择单日时,未选择状态的占位文本。
datepicker.monthPlaceholder string @@datepicker.selectMonth 选择月份时,未选择状态的占位文本。
datepicker.yearPlaceholder string @@datepicker.selectYear 选择年时,未选择状态的占位文本。
datepicker.rangePlaceholder string @@datepicker.selectRange 选择日期范围时,未选择状态的占位文本。
datepicker.monthRangePlaceholder string @@datepicker.selectMonthRange 选择月份范围时,未选择状态的占位文本。
datepicker.yearRangePlaceholder string @@datepicker.selectYearRange 选择年份范围时,未选择状态的占位文本。

:::tip @@ 开头的值表示引用多语言配置中的相应字段。 :::

图标

名称 描述
calendar 日历。
clear 清除内容。