antdv 时间组件(RangePicker) 分钟只显示 00 和30

{
      label: '',
      field: 'trainingDate',
      component: 'RangePicker',
      componentProps: {
      format: 'YYYY-MM-DD HH:mm:00',
          valueFormat: 'YYYY-MM-DD HH:mm:00',
          minuteStep: 30,
          showTime: true,
      },
      required: true,
    },

 设置好后,会发现一个问题!在时间控件中选择一个日期,会自动出现 当前的分钟数,只有去点击 分钟,才会确定是 00 或 30

 这对懒人用户来说 相当不友好!!!

解决办法: 用 onChange事件 改变 时间控件的值,用 render 函数 渲染 时间组件的值

需要引入

import { h } from 'vue'
import { RangePicker } from 'ant-design-vue'
import dayjs from 'dayjs'

 

{
      label: '',
      field: 'trainingDate',
      component: 'RangePicker',
      render: ({ model, field }) => {
        return h(RangePicker, {
          format: 'YYYY-MM-DD HH:mm:00',
          valueFormat: 'YYYY-MM-DD HH:mm:00',
          minuteStep: 30,
          showTime: true,

          value: model[field],
          onChange: (value, timeString) => {
            let str = ''
            // 如果分钟数小于30,则将分钟数置为0,否则分钟数置为30
            if (new Date(value[0]).getMinutes() < 30) {
              str = 'YYYY-MM-DD HH:00:00'
            } else {
              str = 'YYYY-MM-DD HH:30:00'
            }
            timeString[0] = dayjs(value[0]).format(str)
            // 如果分钟数小于30,则将分钟数置为0,否则分钟数置为30
            if (new Date(value[1]).getMinutes() < 30) {
              str = 'YYYY-MM-DD HH:00:00'
            } else {
              str = 'YYYY-MM-DD HH:30:00'
            }
            timeString[1] = dayjs(value[1]).format(str)

            model[field] = timeString
          },
        })
      },
      required: true,
    },

 

posted @ 2024-05-30 17:16  岁月记忆  阅读(189)  评论(0编辑  收藏  举报