• <el-date-picker> 设置默认yyyy-MM-dd以及限制规则


    <el-date-picker v-model="rangeValue" type="daterange" value-format="yyyy-MM-dd" unlink-panels

    range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :clearable="false" editable="false" :picker-options="pickerOptions" />

    控制日期不能输入且为必填项

    如果初始化显示时间

    created() {

            let end = new Date()

            end = formateTimestamp(end.getTime())

            const endTime = end.split(' ')

            let start = new Date()

            start = formateTimestamp(start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)

            const startTime = start.split(' ')

            this.rangeValue = [startTime[0], endTime[0]]

    }

    // 将时间戳格式化
    export function formateTimestamp(time) {
      if (typeof (time) === 'undefined') {
        return ''
      }
      var oDate = new Date(time)
      var oYear = oDate.getFullYear()
      var oMonth = oDate.getMonth() + 1
      var oDay = oDate.getDate()
      var oHour = oDate.getHours()
      var oMin = oDate.getMinutes()
      var oSen = oDate.getSeconds()
      var oTime = oYear + '-' + getzf(oMonth) + '-' + getzf(oDay) + ' ' + getzf(oHour) + ':' + getzf(oMin) + ':' + getzf(oSen) // 最后拼接时间
      return oTime
    }

    // 补0操作,当时间数据小于10的时候,给该数据前面加一个0
    function getzf(num) {
      if (parseInt(num) < 10) {
        num = '0' + num
      }
      return num
    }

    快捷键

    pickerOptions: {

            shortcuts: [{

                    text: '最近三天',

                    onClick(picker) {

                            const end = new Date()

                            const start = new Date()

                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 3

                            picker.$emit('pick', [start, end])

                    }

            }, {

                    text: '最近一周',

                    onClick(picker) {

                            const end = new Date()

                            const start = new Date()

                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7

                            picker.$emit('pick', [start, end])

                    }

            }, {

                    text: '最近一个月',

                    onClick(picker) {

                            const end = new Date()

                            const start = new Date()

                            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30

                            picker.$emit('pick', [start, end])

                    }

            }]

    }

    // 只能选择31天的范围

    pickerRangeOptions: {

           onPick: ({ maxDate, minDate }) => {

                    this.cuttentTime = minDate.getTime()

                    if (maxDate) {

                            this.cuttentTime = ''

                    }

            },

            disabledDate: (time) => {

                    if (this.cuttentTime !== '') {

                            const one = 30 *24 * 3600 * 1000

                            const minTime = this.cuttentTime - one

                            const maxTime = this.cuttentTime + one

                            return time.getTime() < minTime || time.getTime() > maxTime

                    }

            }

    }

    // 不能跨月,且不是按天数

    // 只能选择一个月的范围

    pickerTrueOptions: {

           onPick: ({ maxDate, minDate }) => {

                    this.selectedDate = minDate.getTime()

                    if (maxDate) {

                            this.selectedDate= ''

                    }

            },

            disabledDate: (time) => {

                    cosnt self = this

                    if (self.selectedDate) {

                            const startDay = (new Date(self.selectedDate).getDate() - 1) * 24 * 3600 * 1000 

                            const endDay = (new Date(new Date(self.selectedDate).getFullYear(), new Date(self.selectedDate).getMonth() + 1, 0)

                            const minTime = self.selectedDate - startDay

                            const maxTime = self.selectedDate - endDay

                            return time.getTime() < minTime || time.getTime() > maxTime

                    }

            }

    }

  • 相关阅读:
    A. Short Sort
    文件包含学习笔记总结
    vue 前端 问题整理
    CSP-J 2022年8月第一轮模拟赛 1
    SpringSecurity Oauth2系列 - 02 自定义 SpringBoot Starter 远程访问受限资源
    【JavaWeb】案例 1:记录网站的登录成功人数
    算法:数组
    CA周记 2022年的第一课 - Rust
    树莓派——9、IO操控代码编程
    一文带你了解.NET能做什么?
  • 原文地址:https://blog.csdn.net/huangjinsheng1988/article/details/126851805