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

vue-calendar-component 封裝多日期選擇組件的實例代碼

 更新時間:2020年12月04日 08:29:21   作者:這么近又那么遠  
這篇文章主要介紹了vue-calendar-component 封裝多日期選擇組件,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下

實現(xiàn)效果

安裝vue-calendar-component日歷組件

cnpm i vue-calendar-component --save //國內(nèi)鏡像

引入

import Calendar from "vue-calendar-component";
export default {
  components: { Calendar },
}

封裝

<template>
 <div class="x-f">
  <Calendar
   ref="Calendar"
   v-on:choseDay="clickDay"
   :style="{
    height: '4.4rem',
    width: '4rem',
    fontSize: '0.2rem !important',
   }"
  ></Calendar>
  <Calendar
   v-if="multiple"
   ref="Calendar2"
   v-on:choseDay="clickDay2"
   :style="{
    height: '4.4rem',
    width: '4rem',
    fontSize: '0.2rem !important',
   }"
  ></Calendar>
 </div>
</template>
<script>
import { formatDate } from "@/lib/date_fun.js";
import Calendar from "vue-calendar-component";
 
export default {
 components: { Calendar },
 props: {
  value: {
   //v-model雙向綁定
   type: String,
   default: () => {
    return "";
   },
  },
  // 是否多選
  multiple: {
   type: Boolean,
   default: () => {
    return true;
   },
  },
  // 兩個日期之間的間隔符
  separator: {
   type: String,
   default: () => {
    return "至";
   },
  },
 },
 data() {
  return {
   tap1: false, //日歷組件1是否點擊選中
   tap2: false, //日歷組件2是否點擊選中
   rqf: "",
   rqt: "",
  };
 },
 created() {
  //初始化設(shè)置日期選中
  this.$nextTick(() => {
   if (this.value.indexOf(this.separator) == -1) {
    this.$refs.Calendar.ChoseMonth(this.value);
   } else {
    this.$refs.Calendar.ChoseMonth(this.value.split(this.separator)[0]);
    this.$refs.Calendar2.ChoseMonth(this.value.split(this.separator)[1]);
   }
  });
 },
 watch: {
  value(date) {
   //監(jiān)聽整個日歷組件值,設(shè)置選中狀態(tài)
   this.$nextTick(() => {
    if (date.indexOf(this.separator) > -1) {
     this.$refs.Calendar.ChoseMonth(date.split(this.separator)[0]);
     this.$refs.Calendar2.ChoseMonth(date.split(this.separator)[1]);
    } else {
     this.$refs.Calendar.ChoseMonth(date);
    }
   });
  },
 },
 methods: {
  clickDay(date) {
   //日期1點擊事件
   this.tap1 = true;
   this.rqf = formatDate(date);
   this.comit();
  },
  clickDay2(date) {
   //日期2點擊事件
   this.tap2 = true;
   this.rqt = formatDate(date);
   this.comit();
  },
  comit() {
   //判斷是否多選全部點擊選中,或者單選點擊選中
   if (this.tap1 && (this.tap2 || !this.multiple)) {
    let mrq = "";
    if (this.multiple) mrq = this.rqf + this.separator + this.rqt;
    //多選賦值格式
    else mrq = this.rqf; //單選賦值格式
    this.$emit("input", mrq); //給v-model賦值;
    //賦值結(jié)束,重設(shè)點擊狀態(tài)標識
    this.tap1 = false;
    this.tap2 = false;
   }
  },
 },
};
</script>

css樣式

/* 日歷組件 */
.wh_content_all{
  background-color: #ffffff !important;
}
 
.wh_top_changge li{
  color: rgb(50, 50, 51) !important;
  font-size: 0.18rem !important;
}
 
.wh_jiantou1{
  width: 0.1rem !important;
  height: 0.1rem !important;
  border-top: 2px solid rgb(50, 50, 51) !important;
  border-left: 2px solid rgb(50, 50, 51) !important;
}
 
.wh_jiantou2{
  width: 0.1rem !important;
  height: 0.1rem !important;
  border-top: 2px solid rgb(50, 50, 51) !important;
  border-right: 2px solid rgb(50, 50, 51) !important;
}
 
.wh_top_tag{ 
  font-size: 0.16rem !important;
}
 
.wh_item_date{
   font-size: 0.2rem !important;
}
 
.wh_content_item,
.wh_content_item_tag{
  width: 14.285% !important;
  color: rgb(50, 50, 51) !important;
}
 
.wh_content_item .wh_isToday{
  background: transparent !important;
}
 
.wh_content_item .wh_chose_day{
  background: #ee0a24 !important;
  color: #fff !important;
}
 
.wh_content{
  padding: 0 0.1rem !important;
}
 
.wh_container{
  position: relative;
}
 
.wh_container::after{
  content: '';
  width: 1px;
  height: 100%;
  position: absolute;
  right: 0;
  top: 0;
  background: #dddddd;;
}

頁面調(diào)用

<template>
  <div class="form-item mt20 x-f">
    <span class="form-label">日期</span>
    <van-popover v-model="showPopover" placement="bottom-end">
     <mCalendar v-model="rq" :multiple="multiple" :separator="separator"/>      
     <template #reference>
       <span class="form-input" @click="showPopover = !showPopover">{{ rq}}</span>
      </template>
     </van-popover>
   </div>
</template>
<script>
  import mCalendar from "@/components/mCalendar.vue";
  import { getNowDate } from '@/lib/date_fun.js'
  
  export default {
    components: { mCalendar },
    data () {
      return {
       showPopover:false,
       rq: getNowDate(),
       multiple: false, //日期是否多選
       separator: '至' //兩個日期之間的間隔符
      }
    },
    watch:{
      //日期放生變化是隱藏日歷Popover
      rq(){
       this.showPopover = false;
      }
    }
  }
</script>

寫的不完善,有待優(yōu)化

到此這篇關(guān)于vue-calendar-component 封裝多日期選擇組件的文章就介紹到這了,更多相關(guān)vue-calendar-component 日期選擇組件內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue移動端下拉刷新組件的使用教程

    Vue移動端下拉刷新組件的使用教程

    這篇文章主要介紹了Vue移動端下拉刷新組件的使用教程,每一次我在使用vant組件庫里面list組件和下拉刷新連在一起用的時候都會出現(xiàn)下拉刷新和列表下滑局部滾動的沖突,這就很難受,這篇文章將解決它
    2023-04-04
  • vue使用keep-alive后從部分頁面進入不緩存示例詳解

    vue使用keep-alive后從部分頁面進入不緩存示例詳解

    這篇文章主要給大家介紹了關(guān)于vue使用keep-alive后從部分頁面進入不緩存的相關(guān)資料,文中通過實例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2023-03-03
  • vue項目打包之后背景樣式丟失的解決方案

    vue項目打包之后背景樣式丟失的解決方案

    今天小編就為大家分享一篇關(guān)于vue項目打包之后背景樣式丟失的解決方案,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • vuejs中父子組件之間通信方法實例詳解

    vuejs中父子組件之間通信方法實例詳解

    這篇文章主要介紹了vuejs中父子組件之間通信方法,結(jié)合實例形式詳細分析了vue.js父組件向子組件傳遞消息以及子組件向父組件傳遞消息具體操作實現(xiàn)技巧,需要的朋友可以參考下
    2020-01-01
  • Vue項目啟動報錯解決方法大全

    Vue項目啟動報錯解決方法大全

    這篇文章主要給大家介紹了關(guān)于Vue項目啟動報錯解決方法的相關(guān)資料,文中通過圖文將解決的過程介紹的非常詳細,對大家學(xué)習(xí)或者使用vue具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • vue 實現(xiàn)通過vuex 存儲值 在不同界面使用

    vue 實現(xiàn)通過vuex 存儲值 在不同界面使用

    今天小編就為大家分享一篇vue 實現(xiàn)通過vuex 存儲值 在不同界面使用,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • VUE Elemen-ui之穿梭框使用方法詳解

    VUE Elemen-ui之穿梭框使用方法詳解

    這篇文章主要為大家詳細介紹了VUE Elemen-ui之穿梭框使用方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-09-09
  • vue解決跨域問題(推薦)

    vue解決跨域問題(推薦)

    這篇文章主要介紹了vue解決跨域問題,本文通過實例圖文相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • vue3基于elementplus 簡單實現(xiàn)表格二次封裝過程

    vue3基于elementplus 簡單實現(xiàn)表格二次封裝過程

    公司渲染表格數(shù)據(jù)時需要將空數(shù)據(jù)顯示‘-’,并且對于每一列數(shù)據(jù)的顯示也有一定的要求,基于這個需求對element-plus簡單進行了二次封裝,這篇文章主要介紹了vue3基于elementplus 簡單實現(xiàn)表格二次封裝過程,需要的朋友可以參考下
    2024-05-05
  • vue3?elementPlus?table實現(xiàn)列寬可拖拽功能

    vue3?elementPlus?table實現(xiàn)列寬可拖拽功能

    這篇文章主要介紹了vue3?elementPlus?table實現(xiàn)列寬可拖拽功能,本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08

最新評論

大埔区| 凤翔县| 安乡县| 麻江县| 扶绥县| 镇远县| 隆安县| 河间市| 马边| 凭祥市| 那坡县| 富裕县| 沙湾县| 札达县| 壶关县| 利辛县| 正镶白旗| 司法| SHOW| 古蔺县| 广丰县| 红原县| 荥阳市| 阳朔县| 新疆| 中阳县| 鲁甸县| 西昌市| 施甸县| 西华县| 工布江达县| 清流县| 乐山市| 浦县| 西昌市| 沐川县| 大邑县| 吴川市| 安康市| 东宁县| 黔江区|