zoukankan      html  css  js  c++  java
  • Vue-ElementUI 自定义封装系列-改造DatePicker

    因为后台管理系统中经常会用到DatePicker 来作为常规查询条件中的时间范围,录入单据的创建时间范围,为了追加默认选项和一些常规配置例如:defalutTime来保证查询的时间范围是可以到指定日期之内的,快捷时间范围选项(一周内/一个月/三个月/半年/一年)等,为了将这些相关默认选项进行封装,将DatePicker组件进行默认封装,后续相关程序就可以大量减少代码。

    封装如下:

    <template>
      <el-date-picker
        v-model="timevalue1"
        :picker-options="pickerOptions"
        type="daterange"
        placeholder="选择日期时间"
        align="right"
        @change="changeTime"/>
    </template>
    
    <script>
    export default {
      name: 'd2DateTimePicker',
      model: {
        prop: 'timevalue',
        event: 'change'
      },
    
      props: {
        timevalue: {
          type: Array,
          required: true,
          default: () => {
            return []
          }
        }
    
      },
      data() {
        return {
          timevalue1: [new Date(), new Date(2021, 10, 11)],
          pickerOptions: {
            shortcuts: [{
              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])
              }
            }, {
              text: '最近三个月',
              onClick(picker) {
                const end = new Date()
                const start = new Date()
                start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)
                picker.$emit('pick', [start, end])
              }
            }]
          }
        }
      },
      watch: {
        timevalue: {
          immediate: true,
          // console.log(val, 'time')
          handler(val) {
            if (val.length > 0) {
              this.timevalue1 = val
            }
            this.$emit('change', val)
          }
    
        },
        timevalue1: {
          immediate: true,
          // console.log(val, 'time')
          handler(newVal) {
            this.$emit('change', newVal)
          }
    
        }
    
      },
      methods: {
        changeTime(val) {
          // var oval = this.moment(val).format('YYYY-MM-DD HH:mm:ss')
          // console.log(val)
          this.$emit('change', val)
        }
      }
    
    }
    </script>
    

      

    外部使用示例:

    <d2-date-time-picker v-model="searchDateRange" />
    import d2DateTimePicker from './d2DateTimePicker'
    
    
    export default {
      name: 'HelloWorld',
      components: {
        d2DateTimePicker
      },
      data() {
        return {
          searchDateRange: [],
        }
      },
    

      

  • 相关阅读:
    【spring配置】——spring整合Quartz定时器
    Dubbo服务集群,常见容错机制:failover ,failsafe,failfase ,failback,forking
    dubbo 配置文件详解
    Windows 下Nexus搭建Maven私服
    linux下配置java环境
    nexus-2.11.4-01-bundle.tar.gz 下载地址
    XShell 连接 vm虚拟机中的redhat Linux系统
    APIO 2017 游记
    洛谷 P3128 [USACO15DEC]最大流Max Flow
    洛谷 P1197 BZOJ 1015 [JSOI2008]星球大战 (ZOJ 3261 Connections in Galaxy War)
  • 原文地址:https://www.cnblogs.com/volts0302/p/15094936.html
Copyright © 2011-2022 走看看