最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

vue-week-picker实现支持按周切换的日历

来源:动视网 责编:小OO 时间:2020-11-27 21:54:35
文档

vue-week-picker实现支持按周切换的日历

本文实例为大家分享了vue-week-picker实现按周切换的日历的具体代码,供大家参考,具体内容如下:vue-week-picker。安装;npm install vue-week-picker --save-dev。DEMO 原生:线上DEMO 与element-ui结合使用:线上DEMO。功能 自适应式按周切换 与DatePicker日期选择器使用。结合Element-ui使用。效果;与vue-element结合组件,请转到链接。使用;
推荐度:
导读本文实例为大家分享了vue-week-picker实现按周切换的日历的具体代码,供大家参考,具体内容如下:vue-week-picker。安装;npm install vue-week-picker --save-dev。DEMO 原生:线上DEMO 与element-ui结合使用:线上DEMO。功能 自适应式按周切换 与DatePicker日期选择器使用。结合Element-ui使用。效果;与vue-element结合组件,请转到链接。使用;


本文实例为大家分享了vue-week-picker实现按周切换的日历的具体代码,供大家参考,具体内容如下

vue-week-picker

安装

npm install vue-week-picker --save-dev

DEMO

  • 原生:线上DEMO
  • 与element-ui结合使用:线上DEMO
  • 功能

  • 自适应式按周切换
  • 与DatePicker日期选择器使用
  • 结合Element-ui使用

    效果


    与vue-element结合组件,请转到链接

    使用

    <VueWeekPicker @dateValue="dateValue" />
    
    Or
    
    <vue-week-picker @dateValue="dateValue" />
    
    import VueWeekPicker from 'vue-week-picker';
    
    export default {
     components: {
     VueWeekPicker
     }
    }
    
    Or
    
    export default {
     components: {
     'vue-week-picker': VueWeekPicker
     }
    }

    代码

    <template>
     <div class="date">
     <el-row>
     <el-col :span="24">
     <div class="weeks">
     <!-- 日期 -->
     <ul class="days">
     <li @click="weekPre" class="prev-btn">
     <i class="fa fa-angle-left fa-icon" aria-hidden="true"></i>
     <span class="hidden-sm-and-down" style="margin-left: 5px;">上一周</span>
     </li>
     <li
     @click="pick(day, index)"
     v-for="(day, index) in days"
     :key="index"
     :class="{selected:index == tabIndex}"
     >
     <!--本月-->
     <span v-if="day.getMonth()+1 != currentMonth" class="other-month item-wrapper">
     <p>{{day | getWeekFormat}}</p>
     <span class="hidden-sm-and-down">{{ day | dateFormat }}</span>
     </span>
     <span v-else>
     <!--今天-->
     <span
     v-if="day.getFullYear() == new Date().getFullYear() && day.getMonth() == new Date().getMonth() && day.getDate() == new Date().getDate()"
     class="today-item"
     >今天</span>
     <span class="item-wrapper" v-else>
     <p>{{day | getWeekFormat}}</p>
     <span class="hidden-sm-and-down">{{ day | dateFormat }}</span>
     </span>
     </span>
     </li>
     <li @click="weekNext" class="next-btn">
     <span class="hidden-sm-and-down" style="margin-right: 5px;">下一周</span>
     <i class="fa fa-angle-right fa-icon" aria-hidden="true"></i>
     </li>
     <li>
     <span>
     <el-date-picker
     class="right-pick-btn"
     style="width: 100%"
     @change="pickDate"
     v-model="value1"
     type="date"
     placeholder="按日期查询"
     ></el-date-picker>
     </span>
     </li>
     </ul>
     </div>
     </el-col>
     </el-row>
     <el-row>
     <el-col :span="20" :offset="2" class="time-range">
     <span
     @click="pickTime(time, index)"
     v-for="(time, index) in times"
     :key="index"
     :class="{active:index == tabTimeIndex}"
     >{{time}}</span>
     </el-col>
     </el-row>
     </div>
    </template>
    <script>
    /* eslint-disable */
    import moment from "moment";
    export default {
     props: {
     dateValue: {
     type: String,
     default: moment(new Date()).format("YYYY-MM-DD")
     },
     timeValue: {
     type: String,
     default: "00:00"
     }
     },
     data() {
     return {
     currentYear: 1970, // 年份
     currentMonth: 1, // 月份
     currentDay: 1, // 日期
     currentWeek: 1, // 星期
     days: [],
     value1: "",
     tabIndex: null,
     tabTimeIndex: 0,
     times: [
     "00:00~06:00",
     "06:00~12:00",
     "12:00~18:00",
     "18:00~24:00",
     "今日节目"
     ]
     };
     },
     filters: {
     dateFormat(date) {
     return moment(date).format("YYYY-MM-DD");
     },
     getWeekFormat(date) {
     const weeksObj = {
     1: "周一",
     2: "周二",
     3: "周三",
     4: "周四",
     5: "周五",
     6: "周六",
     7: "周日"
     };
     let weekNumber = moment(date).isoWeekday();
     return weeksObj[weekNumber];
     }
     },
    
     mounted() {
     const index = _.findIndex(this.days, function(o) {
     // console.log('o: ', o.getDate());
     // console.log('new Date().getDate(): ', new Date().getDate());
     return o.getDate() === new Date().getDate();
     });
     console.log("index: ", index);
     this.tabIndex = index;
     },
    
     created() {
     this.initData(null);
     },
    
     methods: {
     formatDate(year, month, day) {
     const y = year;
     let m = month;
     if (m < 10) m = `0${m}`;
     let d = day;
     if (d < 10) d = `0${d}`;
     return `${y}-${m}-${d}`;
     },
     pickDate(date) {
     let newDate = moment(date).format("YYYY-MM-DD");
     this.$emit("dateValue", newDate);
     },
     initData(cur) {
     let date = "";
     if (cur) {
     date = new Date(cur);
     } else {
     date = new Date();
     }
     this.currentDay = date.getDate(); // 今日日期 几号
     this.currentYear = date.getFullYear(); // 当前年份
     this.currentMonth = date.getMonth() + 1; // 当前月份
     this.currentWeek = date.getDay(); // 1...6,0 // 星期几
     if (this.currentWeek === 0) {
     this.currentWeek = 7;
     }
     const str = this.formatDate(
     this.currentYear,
     this.currentMonth,
     this.currentDay
     ); // 今日日期 年-月-日
     this.days.length = 0;
     // 今天是周日,放在第一行第7个位置,前面6个 这里默认显示一周,如果需要显示一个月,则第二个循环为 i<= 35- this.currentWeek
     /* eslint-disabled */
     for (let i = this.currentWeek - 1; i >= 0; i -= 1) {
     const d = new Date(str);
     d.setDate(d.getDate() - i);
     // console.log(y:" + d.getDate())
     this.days.push(d);
     }
     for (let i = 1; i <= 7 - this.currentWeek; i += 1) {
     const d = new Date(str);
     d.setDate(d.getDate() + i);
     this.days.push(d);
     }
     },
    
     // 上个星期
     weekPre() {
     const d = this.days[0]; // 如果当期日期是7号或者小于7号
     d.setDate(d.getDate() - 7);
     this.initData(d);
     },
    
     // 下个星期
     weekNext() {
     const d = this.days[6]; // 如果当期日期是7号或者小于7号
     d.setDate(d.getDate() + 7);
     this.initData(d);
     },
    
     // 上一個月 传入当前年份和月份
     pickPre(year, month) {
     const d = new Date(this.formatDate(year, month, 1));
     d.setDate(0);
     this.initData(this.formatDate(d.getFullYear(), d.getMonth() + 1, 1));
     },
    
     // 下一個月 传入当前年份和月份
     pickNext(year, month) {
     const d = new Date(this.formatDate(year, month, 1));
     d.setDate(35);
     this.initData(this.formatDate(d.getFullYear(), d.getMonth() + 1, 1));
     },
    
     // 当前选择日期
     pick(date, index) {
     let newDate = moment(date).format("YYYY-MM-DD");
     this.$emit("dateValue", newDate);
     // console.log("index: ", index);
     this.tabIndex = index;
     // alert(
     // this.formatDate(date.getFullYear(), date.getMonth() + 1, date.getDate())
     // );
     },
     pickTime(time, index) {
     // console.log('time: ', time);
     let timeArr = [];
     timeArr.push(_.head(_.split(time, "~")));
     console.log("timeArr: ", timeArr);
     this.$emit("timeValue", _.join(timeArr), "");
     // console.log("index: ", index);
     this.tabTimeIndex = index;
     // alert(
     // this.formatDate(date.getFullYear(), date.getMonth() + 1, date.getDate())
     // );
     }
     }
    };
    </script>

    文档

    vue-week-picker实现支持按周切换的日历

    本文实例为大家分享了vue-week-picker实现按周切换的日历的具体代码,供大家参考,具体内容如下:vue-week-picker。安装;npm install vue-week-picker --save-dev。DEMO 原生:线上DEMO 与element-ui结合使用:线上DEMO。功能 自适应式按周切换 与DatePicker日期选择器使用。结合Element-ui使用。效果;与vue-element结合组件,请转到链接。使用;
    推荐度:
    • 热门焦点

    最新推荐

    猜你喜欢

    热门推荐

    专题
    Top