DatePicker 时间选择器

Scan me!

选择日期或者时间,支持年/月/日/时/分和按照范围选择

引入

  1. import { DatePicker } from 'mand-mobile'
  2. Vue.component(DatePicker.name, DatePicker)

代码演示

日期选择

2013/9/9 - 2020/9/9
  1. <template>
  2. <div class="md-example-child md-example-child-date-picker md-example-child-date-picker-0">
  3. <md-date-picker
  4. ref="datePicker"
  5. today-text="今天"
  6. :minDate="minDate"
  7. :maxDate="maxDate"
  8. :default-date="currentDate"
  9. is-view
  10. @initialed="onDatePickerInitialed"
  11. ></md-date-picker>
  12. </div>
  13. </template>
  14. <script>
  15. import {DatePicker} from 'mand-mobile'
  16. export default {
  17. name: 'date-picker-demo',
  18. components: {
  19. [DatePicker.name]: DatePicker,
  20. },
  21. data() {
  22. return {
  23. minDate: new Date('2013/9/9'),
  24. maxDate: new Date('2020/9/9'),
  25. currentDate: new Date(),
  26. }
  27. },
  28. methods: {
  29. onDatePickerInitialed() {
  30. console.log(`[Mand Mobile] DatePicker getFormatDate: ${this.$refs.datePicker.getFormatDate('yyyy/MM/dd')}`)
  31. },
  32. },
  33. }
  34. </script>
  35.  

日期时间选择 getFormatDate()

  1. <template>
  2. <div class="md-example-child md-example-child-date-picker md-example-child-date-picker-2">
  3. <md-date-picker
  4. ref="datePicker"
  5. type="datetime"
  6. :default-date="currentDate"
  7. is-twelve-hours
  8. is-view
  9. ></md-date-picker>
  10. </div>
  11. </template>
  12. <script>
  13. import {DatePicker, Dialog} from 'mand-mobile'
  14. export default {
  15. name: 'date-picker-demo',
  16. components: {
  17. [DatePicker.name]: DatePicker,
  18. },
  19. data() {
  20. return {
  21. currentDate: new Date(),
  22. }
  23. },
  24. mounted() {
  25. window.triggerDatePicker0 = () => {
  26. Dialog.alert({
  27. content: this.$refs.datePicker.getFormatDate(),
  28. })
  29. }
  30. },
  31. }
  32. </script>
  33.  

时间选择

  1. <template>
  2. <div class="md-example-child md-example-child-date-picker md-example-child-date-picker-1">
  3. <md-date-picker
  4. type="time"
  5. :unit-text="['', '', '', 'h', 'm']"
  6. :half-day-text="['AM', 'PM']"
  7. :minute-step="30"
  8. is-twelve-hours
  9. is-view
  10. ></md-date-picker>
  11. </div>
  12. </template>
  13. <script>
  14. import {DatePicker} from 'mand-mobile'
  15. export default {
  16. name: 'date-picker-demo',
  17. components: {
  18. [DatePicker.name]: DatePicker,
  19. },
  20. }
  21. </script>

自定义类型和选项文案值

  1. <template>
  2. <div class="md-example-child md-example-child-date-picker md-example-child-date-picker-3">
  3. <md-field>
  4. <md-field-item
  5. name="name"
  6. title="出险时间"
  7. arrow="arrow-right"
  8. align="right"
  9. :value="datePickerValue"
  10. @click.native="isDatePickerShow = true">
  11. </md-field-item>
  12. </md-field>
  13. <md-date-picker
  14. ref="datePicker"
  15. v-model="isDatePickerShow"
  16. type="custom"
  17. today-text="&(今天)"
  18. title="选择出险时间"
  19. is-twelve-hours
  20. :text-render="textRender"
  21. :custom-types="['yyyy', 'MM','dd', 'hh', 'mm']"
  22. :default-date="currentDate"
  23. @change="onDatePickerChange"
  24. @confirm="onDatePickerConfirm"
  25. ></md-date-picker>
  26. </div>
  27. </template>
  28. <script>
  29. import {DatePicker, Field, FieldItem} from 'mand-mobile'
  30. export default {
  31. name: 'date-picker-demo',
  32. components: {
  33. [DatePicker.name]: DatePicker,
  34. [Field.name]: Field,
  35. [FieldItem.name]: FieldItem,
  36. },
  37. data() {
  38. return {
  39. currentDate: new Date(),
  40. isDatePickerShow: false,
  41. datePickerValue: '',
  42. }
  43. },
  44. methods: {
  45. textRender() {
  46. const args = Array.prototype.slice.call(arguments)
  47. const typeFormat = args[0] // 类型
  48. const column0Value = args[1] // 第1列选中值
  49. const column1Value = args[2] // 第2列选中值
  50. const column2Value = args[3] // 第3列选中值
  51. if (typeFormat === 'dd') {
  52. return `${column0Value}/${column1Value}/${column2Value}`
  53. }
  54. },
  55. onDatePickerChange(columnIndex, itemIndex, value) {
  56. console.log(
  57. `[Mand Mobile] DatePicker Change\ncolumnIndex: ${columnIndex},\nitemIndex:${itemIndex},\nvalue: ${JSON.stringify(
  58. value,
  59. )}`,
  60. )
  61. },
  62. onDatePickerConfirm(columnsValue) {
  63. console.log(`[Mand Mobile] DatePicker Confirm\nvalue: ${JSON.stringify(columnsValue)}`)
  64. this.datePickerValue = this.$refs.datePicker.getFormatDate('yyyy/MM/dd hh:mm')
  65. },
  66. },
  67. }
  68. </script>

API

DatePicker Props

属性说明类型默认值备注
type日期选择类型Stringdatedate, time, datetime, custom
custom-types自定义类型包含的日期元素, [yyyy, MM, dd, hh, mm]Array-仅用于type为custom
minDate最小可选日期Date--
maxDate最大可选日期Date--
default-date初始选中日期Date--
minute-step分钟数递增步长Number1-
unit-text元素单位展示文案设置Array['年', '月', '日', '时', '分']复杂逻辑使用text-render
text-render自定义选项展示文案方法Function(typeFormat, column0Value, column1Value, …): String-如果使用text-renderunit-text无效, 示例见附录
today-text今天展示文案设置String今天使用&可占位日期数字,如&(今天)
half-day-text上下午展示文案设置Array['上午', '下午']-
is-twelve-hours是否为12时制Booleanfalse-
is-view是否内嵌在页面内展示, 否则以弹层形式Booleanfalse-
title选择器标题String--
ok-text选择器确认文案String确认-
cancel-text选择器取消文案String取消-
mask-closable点击蒙层是否可关闭弹出层Booleantrue-

DatePicker Methods

getFormatDate(format): dateStr

获取特定格式的日期时间字符串(format中的日期元素需在列数据中存在),需在initialed事件触发之后或异步调用

参数说明类型默认
format格式Stringyyyy-MM-dd hh:mm

返回

属性说明类型
dateStr日期时间字符串String

列表项值属性介绍见附录

getColumnValue(index): activeItemValue

获取某列当前选中项的值,需在initialed事件触发之后或异步调用

参数说明类型
index列索引Number

返回

属性说明类型
activeItemValue选中项的值Object: {text, value, typeFormat}
getColumnValues(): columnsValue

获取所有列选中项的值,需在initialed事件触发之后或异步调用

返回

属性说明类型
columnsValue所有列选中项的值Array<{text, value, typeFormat}>
getColumnIndex(index): activeItemIndex

获取某列当前选中项的索引值,需在initialed事件触发之后或异步调用

参数说明类型
index列索引Number

返回

属性说明类型
activeItemIndex选中项的索引值Number
getColumnIndexs(): columnsIndex

获取所有列选中项的索引值,需在initialed事件触发之后或异步调用

返回

属性说明类型
columnsIndex所有列选中项的索引值Array

DatePicker Events

@initialed()

选择器数据初始化完成事件

@change(columnIndex, itemIndex, value)

选择器选中项更改事件

参数说明类型
columnIndex更改列的索引值Number
itemIndex更改列选中项的索引值Number
value更改列选中项的的值Object: {text, value, typeFormat}
@confirm(columnsValue)

选择器确认选择事件(仅is-viewfalse

参数说明类型
columnsValue所有列选中项的值Array<{text, value, typeFormat}>

附录

  • columnData
  1. const columnData = [
  2. // 年
  3. [
  4. {
  5. text: '2017年', // 日期元素展示文案
  6. value: 2017, // 日期元素数字
  7. typeFormat: 'yyyy' // 日期元素类型 yyyy, MM, dd, hh, mm, HalfDay
  8. }
  9. ],
  10. // 月, 日,时, 分
  11. [
  12. //..,
  13. ],
  14. // 上午/下午
  15. [
  16. {
  17. text: '上午',
  18. value: 0,
  19. typeFormat: 'HalfDay'
  20. }, {
  21. text: '下午',
  22. value: 1,
  23. typeFormat: 'HalfDay'
  24. }
  25. ]
  26. ]
  • textRender
  1. export default {
  2. // ...
  3. methods: {
  4. textRender() {
  5. const args = Array.prototype.slice.call(arguments)
  6. const typeFormat = args[0] // 类型
  7. const column0Value = args[1] // 第1列选中值
  8. const column1Value = args[2] // 第2列选中值
  9. const column2Value = args[3] // 第2列选中值
  10. },
  11. }
  12. // ...
  13. }