• 二次封装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'
          // }
        },
  • 相关阅读:
    Android获取手机内存和sd卡相关信息
    总结(创建快捷方式等)
    正则是个好东西
    Android自定义AlertDialog
    Eclipse生成author等注释
    day18 io多路复用
    json 模块
    re 模块
    random 模块
    hashlib 模块
  • 原文地址:https://www.cnblogs.com/jane-panyiyun/p/13564596.html
Copyright © 2020-2023  润新知