最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue+element?DatePicker實(shí)現(xiàn)日期選擇器封裝

 更新時間:2023年02月09日 08:18:02   作者:Wh1T3Zz  
Vue?Element?DatePicker是一款基于Vue.js的日期選擇控件,它提供了豐富的日期選擇功能,支持日期范圍選擇、日期格式化、自定義日期格式、快捷選擇等功能,極大地提高了用戶的體驗(yàn),是開發(fā)者必備的日期選擇控件。

前言

今天封裝了一個DatePicker日期選擇器,發(fā)現(xiàn)帶快捷選擇的不太好封裝,我需要在不同的地方快捷選擇不同的時間,并且快捷顯示的時間是從昨天開始,在網(wǎng)上找了一圈都沒找到便自己寫了一個記錄一下。

效果

在這里插入圖片描述

在這里插入圖片描述

今天是2022年1月3日,最近一周便是從昨天開始往前推一周

在這里插入圖片描述

我這里只有兩種顯示快捷選擇時間的樣式,可以根據(jù)具體需求無限加,達(dá)到我想要在不同的選擇器中顯示不同的快捷時間選擇的需求。

一、封裝組件

創(chuàng)建linechart

在這里插入圖片描述

linechart:

直接上代碼:

<!-- 
時間選擇器(帶快捷選擇)
time:時間(必傳)

time:{
  1:近七天,近三十天,近九十天
  2:近一天,近三天,近五天,近三十天
}
<template>
  <div class="line_charts">
        <el-date-picker
          v-model="timedata"
          type="daterange"
          unlink-panels
          :range-separator="$t('to')"
          :start-placeholder="$t('start_date')"
          :end-placeholder="$t('end_date')"
          :picker-options="pickerOptions"
        >
        </el-date-picker>
  </div>
</template>
<script>
export default {
  props:{
    time:{
      default(){
        return [];
      }
    }
  },
  data(){
    return{
      timedata:'',  //選擇時間數(shù)據(jù)
      pickerOptions:{ //快捷選擇時間數(shù)據(jù)
        shortcuts: []
      }, 
      shortcuts:'',
    }
  },
  methods:{
    getshortcuts(){ //快捷選擇時間事件
      if (this.time == 1) {
        this.pickerOptions.shortcuts = [
          {
            text: '最近七天',
            onClick(picker) {
              const end = new Date();
              const start = new Date();
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 7 - 3600 * 1000 * 24 * 1);
              end.setTime(end.getTime() - 3600 * 1000 * 24 * 1);
              console.log(picker);
              picker.$emit('pick', [start, end]);
            }
          }, {
            text: '最近一個月',
            onClick(picker) {
              const end = new Date();
              const start = new Date();
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30 - 3600 * 1000 * 24 * 1);
              end.setTime(end.getTime() - 3600 * 1000 * 24 * 1);
              picker.$emit('pick', [start, end]);
            }
          }, {
            text: '最近三個月',
            onClick(picker) {
              const end = new Date();
              const start = new Date();
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 90 - 3600 * 1000 * 24 * 1);
              end.setTime(end.getTime() - 3600 * 1000 * 24 * 1);
              picker.$emit('pick', [start, end]);
            }
          }
        ]
      }else{
        this.pickerOptions.shortcuts = [
          {
            text: '最近一天',
            onClick(picker) {
              const end = new Date();
              const start = new Date();
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 1 - 3600 * 1000 * 24 * 1);
              end.setTime(end.getTime() - 3600 * 1000 * 24 * 1);
              console.log(picker);
              picker.$emit('pick', [start, end]);
            }
          }, {
            text: '最近三天',
            onClick(picker) {
              const end = new Date();
              const start = new Date();
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 3 - 3600 * 1000 * 24 * 1);
              end.setTime(end.getTime() - 3600 * 1000 * 24 * 1);
              picker.$emit('pick', [start, end]);
            }
          }, {
            text: '最近五天',
            onClick(picker) {
              const end = new Date();
              const start = new Date();
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 5 - 3600 * 1000 * 24 * 1);
              end.setTime(end.getTime() - 3600 * 1000 * 24 * 1);
              picker.$emit('pick', [start, end]);
            }
          }, {
            text: '最近一個月',
            onClick(picker) {
              const end = new Date();
              const start = new Date();
              start.setTime(start.getTime() - 3600 * 1000 * 24 * 30 - 3600 * 1000 * 24 * 1);
              end.setTime(end.getTime() - 3600 * 1000 * 24 * 1);
              picker.$emit('pick', [start, end]);
            }
          }
        ]
      }
      
    }
  },
  mounted(){
    this.getshortcuts()
  }
}
</script>

二、頁面中使用

workBench:

<template>
  <div class="workbench">
	  <linechart 
	   :time=1
	   ></linechart>
  </div>
</template>

<script>
	import linechart from './visualization/linechart.vue'
	export default {
	  components:{
	    linechart
	  },
	}
</script>

總結(jié)

我這里是通過父組件傳入的time去區(qū)分我想要哪種快捷選擇的時間

:time=1

子組件也就是封裝的組件(linechart),進(jìn)行接收父組件傳入的time并進(jìn)行渲染 主要邏輯是:

  1. 接收time,
  2. 通過mounted周期函數(shù)去執(zhí)行g(shù)etshortcuts()函數(shù)
  3. 判斷需要哪種類型的快捷選擇時間進(jìn)行對應(yīng)渲染

我這里的話起止時間都是減了一天的(因?yàn)槲沂切枰獜淖蛱扉_始計算)

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

需要從今天開始計算的話直接(三十天為例)

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

其他的話在Element的官方文檔上都有介紹就不過多說明了。

到此這篇關(guān)于vue+element DatePicker實(shí)現(xiàn)日期選擇器封裝的文章就介紹到這了,更多相關(guān)vue+element DatePicker日期選擇器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue數(shù)據(jù)回顯表單無法編輯的解決方案

    Vue數(shù)據(jù)回顯表單無法編輯的解決方案

    這篇文章主要介紹了Vue數(shù)據(jù)回顯表單無法編輯的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • Vue中this.$emit和this.$on的使用

    Vue中this.$emit和this.$on的使用

    這篇文章主要介紹了Vue中this.$emit和this.$on的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • vue3獲取元素并且修改元素樣式的實(shí)戰(zhàn)操作

    vue3獲取元素并且修改元素樣式的實(shí)戰(zhàn)操作

    ref作為在vue里面我們獲取元素最常用的一個api,在vue3迎來改造,下面這篇文章主要給大家介紹了關(guān)于vue3獲取元素并且修改元素樣式的相關(guān)資料,需要的朋友可以參考下
    2023-04-04
  • Vue input輸入框回車以后自動刷新頁面(直播程序)

    Vue input輸入框回車以后自動刷新頁面(直播程序)

    這篇文章主要介紹了直播程序,Vue input輸入框回車以后自動刷新頁面,適用場景是在輸入框輸入字符并按下回車鍵搜索時,刷新頁面,需要的朋友參考下實(shí)現(xiàn)代碼
    2023-01-01
  • Avue和Element-UI動態(tài)三級表頭的實(shí)現(xiàn)

    Avue和Element-UI動態(tài)三級表頭的實(shí)現(xiàn)

    本文主要介紹了Avue和Element-UI動態(tài)三級表頭的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 解決安裝arco-design-pro-vue失敗問題

    解決安裝arco-design-pro-vue失敗問題

    這篇文章主要為大家介紹了解決安裝arco-design-pro-vue失敗的問題方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • Vue3中ref和reactive的基本使用及區(qū)別詳析

    Vue3中ref和reactive的基本使用及區(qū)別詳析

    這篇文章主要給大家介紹了關(guān)于Vue3中ref和reactive的基本使用及區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Vue混入使用和選項(xiàng)合并詳解

    Vue混入使用和選項(xiàng)合并詳解

    這篇文章主要介紹了Vue混入使用和選項(xiàng)合并,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-10-10
  • 淺談webpack編譯vue項(xiàng)目生成的代碼探索

    淺談webpack編譯vue項(xiàng)目生成的代碼探索

    本篇文章主要介紹了淺談webpack編譯vue項(xiàng)目生成的代碼探索,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • 詳解Nuxt內(nèi)導(dǎo)航欄的兩種實(shí)現(xiàn)方式

    詳解Nuxt內(nèi)導(dǎo)航欄的兩種實(shí)現(xiàn)方式

    這篇文章主要介紹了詳解Nuxt內(nèi)導(dǎo)航欄的兩種實(shí)現(xiàn)方式,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04

最新評論

卢龙县| 望谟县| 丹巴县| 孟村| 崇明县| 沙坪坝区| 威宁| 东辽县| 武定县| 舒兰市| 通州市| 清苑县| 南雄市| 宁波市| 沛县| 蓬安县| 旌德县| 德保县| 承德县| 海口市| 若羌县| 星子县| 奎屯市| 基隆市| 长治市| 陆丰市| 宕昌县| 读书| 旺苍县| 景泰县| 南城县| 化隆| 塔河县| 宿迁市| 山西省| 普格县| 偃师市| 西青区| 莱阳市| 保亭| 肃宁县|