转载:mint-ui 时间选择器Datetime Picker的用法,默认不是当前时间,有一节空白

(查看原文)

使用了mint-ui,里面的文档实在太简略了,有许多方法和配置都没有具体配置,要自己去摸索,实在是揪心。今天使用mint-ui的时间选择器时默认有一节留白,看着不是很舒服,而且默认的时间也是系统设置的开始时间。(类似下图)


解决方法是   把picker 的时间默认为当前时间(或者看需求定义成需求时间)

设置了 new Date()之后就正常了,默认当前时间居中显示,如果觉得年份太多,可以设置开始时间和结束时间,文档有写。

同时也看到了很多朋友提出了一些疑问,所以我把代码贴出来吧:

 


 
   
   
   
   
  1. <template>
  2. <div class="pickerDemo">
  3. <div class="showTime">
  4. <p class="timeDes">当前时间是:{ {this.selectedValue}} p>
  5. <div class="selectTime" @click="selectData">选择时间 div>
  6. div>
  7. <div class="pickerPop" @touchmove.prevent>
  8. <mt-datetime-picker
  9. lockScroll= "true"
  10. ref= "datePicker"
  11. v-model= "dateVal"
  12. class= "myPicker"
  13. type= "datetime"
  14. year-format= "{value}"
  15. month-format= "{value}"
  16. date-format= "{value}"
  17. hour-format= "{value}"
  18. minute-format= "{value}"
  19. second-format= "{value}"
  20. @ confirm= "dateConfirm()">
  21. mt-datetime-picker>
  22. div>
  23. div>
  24. template>
  25. <script>
  26. import Vue from 'vue'
  27. import {formatDateMin} from '@/assets/js/util/formatdate.js'
  28. import {DatetimePicker } from 'mint-ui'
  29. Vue.component(DatetimePicker.name, DatetimePicker)
  30. export default {
  31. name: 'pickerDemo',
  32. data () {
  33. return {
  34. dateVal: '', // 默认是当前日期
  35. selectedValue: ''
  36. }
  37. },
  38. components: {
  39. },
  40. created () {
  41. },
  42. mounted () {
  43. let that = this
  44. },
  45. methods: {
  46. selectData () { // 打开时间选择器
  47. // 如果已经选过日期,则再次打开时间选择器时,日期回显(不需要回显的话可以去掉 这个判断)
  48. if ( this.selectedValue) {
  49. this.dateVal = this.selectedValue
  50. } else {
  51. this.dateVal = new Date()
  52. }
  53. this.$refs[ 'datePicker'].open()
  54. },
  55. dateConfirm () { // 时间选择器确定按钮,并把时间转换成我们需要的时间格式
  56. this.selectedValue = formatDateMin( this.dateVal)
  57. }
  58. }
  59. }
  60. script>
  61. <style scoped lang="less">
  62. .pickerDemo{
  63. width: 100%;
  64. height: 18rem;
  65. background-color: #ccc;
  66. .showTime{
  67. display: flex;
  68. flex-direction: column;
  69. align-items: center;
  70. padding-top: 2rem;
  71. .timeDes{
  72. font-size: 0.4rem;
  73. color: red;
  74. }
  75. .selectTime{
  76. display: inline-block;
  77. width: 4rem;
  78. height: 1rem;
  79. line-height: 1rem;
  80. text-align: center;
  81. background-color: #ff776d;
  82. color: #fff;
  83. font-size: 0.24rem;
  84. border-radius: 8px;
  85. margin-top: 1rem;
  86. }
  87. }
  88. }
  89. .pickerPop{
  90. /deep/ .picker{
  91. .picker-toolbar{
  92. background-color: #eee;
  93. .mint-datetime-action{
  94. font-size: 0.26rem;
  95. color: #000!important;
  96. }
  97. }
  98. }
  99. }
  100. style>

年月日的选择器也是类似的,把picker的 type 换一下。

css里面重点说一下 时间选择器怎么改里面的ui样式:把 /deep/给加上,但改的样式也有限,看需求吧。

同时把那个时间转换 的util工具类我也帖出来吧。


 
   
   
   
   
  1. // 只有年月日
  2. export function formatDate (secs) {
  3. var t = new Date(secs)
  4. var year = t.getFullYear()
  5. var month = t.getMonth() + 1
  6. if (month < 10) { month = '0' + month }
  7. var date = t.getDate()
  8. if (date < 10) { date = '0' + date }
  9. var hour = t.getHours()
  10. if (hour < 10) { hour = '0' + hour }
  11. var minute = t.getMinutes()
  12. if (minute < 10) { minute = '0' + minute }
  13. var second = t.getSeconds()
  14. if (second < 10) { second = '0' + second }
  15. return year + '-' + month + '-' + date
  16. }
  17. // 年月日时分
  18. export function formatDateMin (secs) {
  19. var t = new Date(secs)
  20. var year = t.getFullYear()
  21. var month = t.getMonth() + 1
  22. if (month < 10) { month = '0' + month }
  23. var date = t.getDate()
  24. if (date < 10) { date = '0' + date }
  25. var hour = t.getHours()
  26. if (hour < 10) { hour = '0' + hour }
  27. var minute = t.getMinutes()
  28. if (minute < 10) { minute = '0' + minute }
  29. var second = t.getSeconds()
  30. if (second < 10) { second = '0' + second }
  31. return year + '-' + month + '-' + date + ' ' + hour + ':' + minute + ':' + second
  32. }

最终效果:日期可以回显。

你可能感兴趣的:(vue,mint,UI,时间选择,Datetime,Picker)