DatePicker 组件

1.7.0 新增

日期选择器,可用于日期选择,选择粒度的灵活配置,如年月日、时分秒、年月日时分秒、年月等。

注: 由于此组件基于 create-api 实现,所以在使用之前,请确保自己了解过 create-api

示例

  • 基本用法

通过 - createDatePicker 创建一个组件实例,配置 min、max 设定选择的日期范围,还可以通过 value 设置当前选择的日期。

  1. <cube-button @click="showDatePicker">Date Picker</cube-button>
  1. export default {
  2. methods: {
  3. showDatePicker() {
  4. if (!this.datePicker) {
  5. this.datePicker = this.- createDatePicker({
  6. title: 'Date Picker',
  7. min: new Date(2008, 7, 8),
  8. max: new Date(2020, 9, 20),
  9. value: new Date(),
  10. onSelect: this.selectHandle,
  11. onCancel: this.cancelHandle
  12. })
  13. }
  14.  
  15. this.datePicker.show()
  16. },
  17. selectHandle(date, selectedVal, selectedText) {
  18. this.- createDialog({
  19. type: 'warn',
  20. content: `Selected Item:
    - date: - {date}
    - value: - {selectedVal.join(', ')}
    - text: - {selectedText.join(' ')}`,
  21. icon: 'cubeic-alert'
  22. }).show()
  23. },
  24. cancelHandle() {
  25. this.- createToast({
  26. type: 'correct',
  27. txt: 'Picker canceled',
  28. time: 1000
  29. }).show()
  30. }
  31. }
  32. }
  • 列的配置

DatePicker 有一个非常灵活的能力,就是可以配置列,总共是年、月、日、时、分、秒六种的列,你可以通过 startColumn 和 columnCount 来配置起始列和列数,比如默认的”年月日“选择,是从“年”开始的“三列”,而时分秒,则是从“时”开始的“三列”。

  1. <cube-button @click="showTimePicker">Time Picker</cube-button>
  1. export default {
  2. methods: {
  3. showTimePicker() {
  4. if (!this.timePicker) {
  5. this.timePicker = this.- createDatePicker({
  6. title: 'Time Picker',
  7. min: [8, 0, 0],
  8. max: [20, 59, 59],
  9. value: new Date(),
  10. startColumn: 'hour',
  11. onSelect: this.selectHandle,
  12. onCancel: this.cancelHandle
  13. })
  14. }
  15.  
  16. this.timePicker.show()
  17. },
  18. selectHandle(date, selectedVal, selectedText) {
  19. this.- createDialog({
  20. type: 'warn',
  21. content: `Selected Item:
    - date: - {date}
    - value: - {selectedVal.join(', ')}
    - text: - {selectedText.join(' ')}`,
  22. icon: 'cubeic-alert'
  23. }).show()
  24. },
  25. cancelHandle() {
  26. this.- createToast({
  27. type: 'correct',
  28. txt: 'Picker canceled',
  29. time: 1000
  30. }).show()
  31. }
  32. }
  33. }
  • 年月日时分秒选择器

同理,如果想要年月日时分秒选择器,则是以“年”开始的六列。

  1. <cube-button @click="showDateTimePicker">Date Time Picker</cube-button>
  1. export default {
  2. methods: {
  3. showDateTimePicker() {
  4. if (!this.dateTimePicker) {
  5. this.dateTimePicker = this.- createDatePicker({
  6. title: 'Date Time Picker',
  7. min: new Date(2008, 7, 8, 8, 0, 0),
  8. max: new Date(2020, 9, 20, 20, 59, 59),
  9. value: new Date(),
  10. columnCount: 6,
  11. onSelect: this.selectHandle,
  12. onCancel: this.cancelHandle
  13. })
  14. }
  15.  
  16. this.dateTimePicker.show()
  17. },
  18. selectHandle(date, selectedVal, selectedText) {
  19. this.- createDialog({
  20. type: 'warn',
  21. content: `Selected Item:
    - date: - {date}
    - value: - {selectedVal.join(', ')}
    - text: - {selectedText.join(' ')}`,
  22. icon: 'cubeic-alert'
  23. }).show()
  24. },
  25. cancelHandle() {
  26. this.- createToast({
  27. type: 'correct',
  28. txt: 'Picker canceled',
  29. time: 1000
  30. }).show()
  31. }
  32. }
  33. }
  • 日期格式

你还可以通过 format 属性配置日期格式。

  1. <cube-button @click="showFormatPicker">Use format</cube-button>
  1. export default {
  2. methods: {
  3. showFormatPicker() {
  4. if (!this.formatPicker) {
  5. this.formatPicker = this.- createDatePicker({
  6. title: 'Use format',
  7. min: new Date(2008, 7, 8),
  8. max: new Date(2020, 9, 20),
  9. value: new Date(),
  10. format: {
  11. year: 'YY年',
  12. month: 'MM月',
  13. date: '第 D 日'
  14. },
  15. onSelect: this.selectHandle,
  16. onCancel: this.cancelHandle
  17. })
  18. }
  19.  
  20. this.formatPicker.show()
  21. },
  22. selectHandle(date, selectedVal, selectedText) {
  23. this.- createDialog({
  24. type: 'warn',
  25. content: `Selected Item:
    - date: - {date}
    - value: - {selectedVal.join(', ')}
    - text: - {selectedText.join(' ')}`,
  26. icon: 'cubeic-alert'
  27. }).show()
  28. },
  29. cancelHandle() {
  30. this.- createToast({
  31. type: 'correct',
  32. txt: 'Picker canceled',
  33. time: 1000
  34. }).show()
  35. }
  36. }
  37. }
  • updateProps

通过- updateProps方法,可以修改用 createAPI 创建的组件实例的属性。比如 DatePicker中,我们可以修改 value 属性的值改变当前选择的日期。

  1. <cube-button @click="showUpdatePropsPicker">Use - updateProps</cube-button>
  1. export default {
  2. methods: {
  3. showUpdatePropsPicker() {
  4. if (!this.updatePropsPicker) {
  5. this.updatePropsPicker = this.- createDatePicker({
  6. title: 'Use - updateProps',
  7. min: new Date(2008, 7, 8),
  8. max: new Date(2020, 9, 20),
  9. value: new Date(),
  10. onSelect: this.selectHandle,
  11. onCancel: this.cancelHandle
  12. })
  13. }
  14.  
  15. this.updatePropsPicker.show()
  16. setTimeout(() => {
  17. this.updatePropsPicker.- updateProps({
  18. title: 'updated',
  19. value: new Date(2010, 9, 1)
  20. })
  21. }, 1000)
  22. },
  23. selectHandle(date, selectedVal, selectedText) {
  24. this.- createDialog({
  25. type: 'warn',
  26. content: `Selected Item:
    - date: - {date}
    - value: - {selectedVal.join(', ')}
    - text: - {selectedText.join(' ')}`,
  27. icon: 'cubeic-alert'
  28. }).show()
  29. },
  30. cancelHandle() {
  31. this.- createToast({
  32. type: 'correct',
  33. txt: 'Picker canceled',
  34. time: 1000
  35. }).show()
  36. }
  37. }
  38. }

Props 配置

参数 说明 类型 可选值 默认值 示例
min 可选范围的最小值 Date, Array - new Date(2010, 1, 1) new Date(2008, 7, 8)
max 可选范围的最大值 Date, Array - new Date(2020, 12, 31) new Date(2020, 9, 20)
value 当前选择的日期 Date, Array - 可选范围的最小值 new Date()
startColumn 起始列 String year/month/date/hour/minute/second year hour
columnCount 列数 Number - 3 6
format1.8.0+ 日期格式 Object - { year: 'YYYY', month: 'M', date: 'D', hour: 'hh', minute: 'mm', second: 'ss' } { year: 'YY年', month: 'MM月', date: '第 D 日' }
title 标题 String - '' '时间选择'
subtitle1.8.1 副标题 String - '' -
cancelTxt 取消按钮文案 String - '取消' '返回'
confirmTxt 确定按钮文案 String - '确定' '选择'
swipeTime 快速滑动选择器滚轮时,惯性滚动动画的时长,单位:ms Number - 2500 -
visible1.8.1 显示状态,是否可见。v-model绑定值 Boolean true/false false -
maskClosable1.9.6 点击蒙层是否隐藏 Boolean true/false true
  • format 子配置项
参数 说明 类型 默认值 示例
year 年的格式,YYYY 代表完整年份,YY 仅年份后两位 String YYYY YY年
month 月的格式,M 不补 0,MM 补 0 String M MM月
date 日的格式,D 不补 0,DD 补 0 String D 第 D 日
hour 时的格式,h 不补 0,hh 补 0 String hh h点
month 分的格式,m 不补 0,mm 补 0 String mm mm分
month 秒的格式,s 不补 0,ss 补 0 String ss ss秒

事件

事件名 说明 参数1 参数2 参数3
select 点击确认按钮触发此事件 date: 当前选中日期,Date 类型 selectedVal: 当前选中项每一列的值,Array 类型 selectedText: 当前选中项每一列的文案,Array 类型
cancel 点击取消按钮触发此事件 - -
change 滚轴滚动后触发此事件 index: 当前滚动列次序,Number 类型 selectedIndex: 当前列选中项的索引,Number 类型

实例方法

方法名 说明
show 显示
hide 隐藏

原文:

https://didi.github.io/cube-ui/#/zh-CN/docs/date-picker