vant 日历+时分秒选择器

<!-- 时间 -->

<template>

  <div>

    <van-field v-if="!recordTime"

               readonly

               clickable

               required

               is-link

               name="calendar"

               :value="value"

               label="回溯时间"

               @click="showCalendar = true" />

    <van-field v-else

               readonly

               clickable

               required

               is-link

               name="calendar"

               :value="recordTime"

               label="回溯时间"

               @click="showCalendar = true" />

    <van-calendar v-model="showCalendar"

                  @confirm="onCalendarConfirm"

                  @select="showPicker = true"

                  :minDate="minDate">

    </van-calendar>

    <van-popup v-model="showPicker"

               round

               position="bottom">

      <van-picker ref="picker"

                  show-toolbar

                  :columns="columns"

                  @confirm="onPickerChange"

                  swipe-duration="500"

                  visible-item-count="5">

      </van-picker>

    </van-popup>

  </div>

</template>

<script>

export default {

  name: 'Calender',

  props: {

    recordTime: {

      type: String,

      default: ''

    }

  },

  data () {

    return {

      showCalendar: false,

      showPicker: false,

      Time: '',

      dayTime: '',

      minDate: new Date(1960, 0, 0),

      columns: [

        {

          values: ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23'],

          defaultIndex: 0

        },

        {

          values: ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59'],

          defaultIndex: 0

        },

        {

          values: ['00', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24', '25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35', '36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46', '47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57', '58', '59'],

          defaultIndex: 0

        }

      ]

    }

  },

  mounted () {

  },

  methods: {

    onCalendarConfirm (date) {

      if (!this.Time) {

        if (date.getMonth() < 8) {

          if (date.getDate() < 10) {

            this.value = `${date.getFullYear()}-0${date.getMonth() + 1}-0${date.getDate()}  00:00:00`;

          } else {

            this.value = `${date.getFullYear()}-0${date.getMonth() + 1}-${date.getDate()}  00:00:00`;

          }

        } else {

          if (date.getDate() < 10) {

            this.value = `${date.getFullYear()}-${date.getMonth() + 1}-0${date.getDate()}  00:00:00`;

          } else {

            this.value = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}  00:00:00`;

          }

        }

      } else {

        if (date.getMonth() < 9) {

          if (date.getDate() < 10) {

            this.value = `${date.getFullYear()}-0${date.getMonth() + 1}-0${date.getDate()}  ${this.Time}`;

          } else {

            this.value = `${date.getFullYear()}-0${date.getMonth() + 1}-${date.getDate()}  ${this.Time}`;

          }

        } else {

          if (date.getDate() < 10) {

            this.value = `${date.getFullYear()}-${date.getMonth() + 1}-0${date.getDate()}  ${this.Time}`;

          } else {

            this.value = `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}  ${this.Time}`;

          }

        }

      }

      this.showCalendar = false

      this.recordTime = this.value;

      console.log(this.value, '时间')

    },

    onPickerChange (el) {

      this.Time = `${el[0]}:${el[1]}:${el[2]}`

      this.showPicker = false

    }

  }

}

</script>

<style scoped>

</style>

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值