DatePicker 时间选择器

Scan me!

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

引入

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

代码演示

日期选择

2013/9/9 - 2020/9/9

DatePicker 日期选择器 - 图2

  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. :min-date="minDate"
  7. :max-date="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()

DatePicker 日期选择器 - 图3

        <template>
  <div class="md-example-child md-example-child-date-picker md-example-child-date-picker-2">
    <md-date-picker
      ref="datePicker"
      type="datetime"
      :min-date="currentDate"
      is-view
    ></md-date-picker>
  </div>
</template>

<script>
import {DatePicker, Dialog} from 'mand-mobile'

export default {
  name: 'date-picker-demo',
  components: {
    [DatePicker.name]: DatePicker,
  },
  data() {
    return {
      currentDate: new Date(),
      minDate: new Date('2018/8/30 11:30'),
    }
  },
  mounted() {
    window.triggerDatePicker0 = () => {
      Dialog.alert({
        content: this.$refs.datePicker.getFormatDate(),
      })
    }
  },
}

</script>

      

时间选择

DatePicker 日期选择器 - 图4

        <template>
  <div class="md-example-child md-example-child-date-picker md-example-child-date-picker-1">
    <md-date-picker
      type="time"
      :unit-text="['', '', '', '\'', '\'\'']"
      :minute-step="1"
      is-view
    ></md-date-picker>
  </div>
</template>

<script>
import {DatePicker} from 'mand-mobile'

export default {
  name: 'date-picker-demo',
  components: {
    [DatePicker.name]: DatePicker,
  },
}

</script>
      

自定义类型和选项文案值

DatePicker 日期选择器 - 图5

        <template>
  <div class="md-example-child md-example-child-date-picker md-example-child-date-picker-3">
    <md-field>
      <md-field-item
        name="name"
        title="出险时间"
        arrow="arrow-right"
        align="right"
        :content="datePickerValue"
        @click.native="isDatePickerShow = true">
      </md-field-item>
    </md-field>
    <md-date-picker
      ref="datePicker"
      v-model="isDatePickerShow"
      type="custom"
      title="选择出险时间"
      large-radius
      :text-render="textRender"
      :custom-types="['yyyy', 'MM','dd', 'hh', 'mm']"
      :default-date="currentDate"
      @change="onDatePickerChange"
      @confirm="onDatePickerConfirm"
    ></md-date-picker>
  </div>
</template>

<script>
import {DatePicker, Field, FieldItem} from 'mand-mobile'

export default {
  name: 'date-picker-demo',
  components: {
    [DatePicker.name]: DatePicker,
    [Field.name]: Field,
    [FieldItem.name]: FieldItem,
  },
  data() {
    return {
      currentDate: new Date(),
      isDatePickerShow: false,
      datePickerValue: '',
    }
  },
  methods: {
    textRender() {
      const args = Array.prototype.slice.call(arguments)
      const typeFormat = args[0] // 类型
      // const column0Value = args[1] // 第1列选中值
      // const column1Value = args[2] // 第2列选中值
      const column2Value = args[3] // 第3列选中值
      if (typeFormat === 'dd') {
        return `*${column2Value}日`
      }
    },
    onDatePickerChange(columnIndex, itemIndex, value) {
      console.log(
        `[Mand Mobile] DatePicker Change\ncolumnIndex: ${columnIndex},\nitemIndex:${itemIndex},\nvalue: ${JSON.stringify(
          value,
        )}`,
      )
    },
    onDatePickerConfirm(columnsValue) {
      console.log(`[Mand Mobile] DatePicker Confirm\nvalue: ${JSON.stringify(columnsValue)}`)
      this.datePickerValue = this.$refs.datePicker.getFormatDate('yyyy/MM/dd hh:mm')
    },
  },
}

</script>
      

API

DatePicker Props

属性说明类型默认值备注
type日期选择类型Stringdatedate, time, datetime, custom
custom-types自定义类型包含的日期元素, [yyyy, MM, dd, hh, mm]Array-仅用于type为custom
min-date最小可选日期(时间)Date--
max-date最大可选日期(时间)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今天使用&可占位日期数字,如&(今天)
line-height选择器选项行高Number45单位px
is-view是否内嵌在页面内展示, 否则以弹层形式Booleanfalse-
title选择器标题String--
describe选择器描述String--
ok-text选择器确认文案String确认-
cancel-text选择器取消文案String取消-
large-radius 2.4.0+选择器标题栏大圆角模式Booleanfalse-
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

const columnData = [
  // 年
  [
    {
      text: '2017年', // 日期元素展示文案
      value: 2017, // 日期元素数字
      typeFormat: 'yyyy' // 日期元素类型 yyyy, MM, dd, hh, mm, HalfDay
    }
  ],
  // 月, 日,时, 分
  [
    //..,
  ],
  // 上午/下午
  [
    {
      text: '上午',
      value: 0,
      typeFormat: 'HalfDay'
    }, {
      text: '下午',
      value: 1,
      typeFormat: 'HalfDay'
    }
  ]
]
  • textRender

  export default {
    // ...
    methods: {
      textRender() {
        const args = Array.prototype.slice.call(arguments)
        const typeFormat = args[0] // 类型
        const column0Value = args[1] // 第1列选中值
        const column1Value = args[2] // 第2列选中值
        const column2Value = args[3] // 第2列选中值
      },
    }
    // ...
  }