zoukankan      html  css  js  c++  java
  • 二次封装element的日期组件

     https://blog.csdn.net/weixin_42565137/article/details/90482500

    二次封装elment-ui的时间日期组件

    <template>
      <el-date-picker
        v-model = "timeValue"
        @change = "changeTimeValue"
        :value-format = "valueFormat"
        range-separator = "至"
        start-placeholder = "开始日期"
        end-placeholder = "结束日期"
        :type = "tiemType"
        :picker-options="pickerOptions"
        :clearable = "clearable">
      </el-date-picker>
    </template>
    
    <script>
    import utils from '../utils/utils'
    
    export default {
      data() {
        return {
          timeValue: [],
          tiemType: 'datetimerange',
          valueFormat: 'yyyy-MM-dd HH:mm:ss',
          // 快捷选项
          pickerOptions: {
            shortcuts: [{
              text: '最近一周',
              onClick(picker) {
                const end = new Date(new Date().setHours(23, 59, 59, 0))
                const start = new Date(new Date().setHours(0, 0, 0, 0))
                start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)
                picker.$emit('pick', [start, end])
              },
            }, {
              text: '最近一个月',
              onClick(picker) {
                const end = new Date(new Date().setHours(23, 59, 59, 0))
                const start = new Date(new Date().setHours(0, 0, 0, 0))
                start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)
                picker.$emit('pick', [start, end])
              },
            }, {
              text: '最近三个月',
              onClick(picker) {
                const end = new Date(new Date().setHours(23, 59, 59, 0))
                const start = new Date(new Date().setHours(0, 0, 0, 0))
                start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
                picker.$emit('pick', [start, end])
              },
            }],
          },
        }
      },
      props: {
        // 是否可清除
        clearable: {
          type: Boolean,
        },
        // 是否显示默认时间
        showDefaultTime: {
          tyep: Boolean,
        },
        // 默认时间
        defaultTime: {
          type: Array,
        },
        // 时间控件类型
        type: {
          type: String,
        },
      },
      mounted() {
        this.tiemType = this.type || this.tiemType
        if (this.type === 'daterange') {
          // this.valueFormat = 'yyyy-MM-dd'
        }
        console.log(this.$store.state.hour)
        console.log(this.$store.state.minute)
        this.setDefaultTime()
      },
      methods: {
        // 改变时间
        changeTimeValue(val) {
          if (this.type === 'daterange') {
            val[1] = val[1].replace('00:00:00', '23:59:59')
          }
          this.$emit('timeVal', val || [])
        },
    
        // 设置默认时间
        setDefaultTime() {
          const { hour, minute } = this.$store.state
          if (this.showDefaultTime === false) {
            this.$emit('timeVal', [])
            this.timeValue = []
          } else if (this.type === 'daterange') {
            const startTime = new Date(new Date().setHours(0, 0, 0, 0) - 24 * 3600 * 1000)
            const endTime = new Date(new Date().setHours(23, 59, 59, 0))
            const startTimeStr = utils.formatDateTime(startTime)
            const endTimeStr = utils.formatDateTime(endTime)
            if (this.defaultTime) {
              this.timeValue = this.defaultTime
              this.$emit('timeVal', [
                utils.formatDateTime(this.defaultTime[0]),
                utils.formatDateTime(this.defaultTime[1]),
              ])
            } else {
              this.timeValue = [startTimeStr, endTimeStr]
              this.$emit('timeVal', [startTimeStr, endTimeStr])
            }
          } else {
            const startTime = new Date(new Date().setHours(hour, minute, 0, 0) - 24 * 3600 * 1000)
            const endTime = new Date(new Date().setHours(hour, minute, 0, 0))
            const startTimeStr = utils.formatDateTime(startTime)
            const endTimeStr = utils.formatDateTime(endTime)
            if (this.defaultTime) {
              this.timeValue = this.defaultTime
              this.$emit('timeVal', [
                utils.formatDateTime(this.defaultTime[0]),
                utils.formatDateTime(this.defaultTime[1]),
              ])
            } else {
              this.timeValue = [startTimeStr, endTimeStr]
              this.$emit('timeVal', [startTimeStr, endTimeStr])
            }
          }
        },
    
      },
    }
    </script>
    
    <style lang="less">
      .el-picker-panel__footer {
        button:nth-child(1) {
          display: none;
        }
      }
    </style>

    实际在父组件直接调用子组件设置默认时间方法就可以实现数据刷新

        reset() {
          this.$refs.datePicker.setDefaultTime()
          // this.formData2.time = [];
          // this.$set(this.formData2, 'time', [`${this.startTime}`, `${this.endTime}`]);
          // console.log(this.formData2.time);
          // [this.searchParams.beginTimeStr, this.searchParams.endTimeStr] = this.formData2.time
        },
        // 获取时间
        getTimeVal(e) {
          // console.log(e);
          [this.searchParams.beginTimeStr, this.searchParams.endTimeStr] = e
          // if (this.timeStatus === 'first') {
          //   this.startTime = this.searchParams.beginTimeStr
          //   this.endTime = this.searchParams.endTimeStr
          //   this.timeStatus = 'second'
          // }
        },
  • 相关阅读:
    78. Subsets java solutions
    77. Combinations java solutions
    236. Lowest Common Ancestor of a Binary Tree java solutions
    86. Partition List java solutions
    39. Combination Sum java solutions
    129. Sum Root to Leaf Numbers java solutions
    杭电1004
    杭电1003
    杭电1002
    杭电1001
  • 原文地址:https://www.cnblogs.com/jane-panyiyun/p/13564596.html
Copyright © 2011-2022 走看看