本文实例为大家分享了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>
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
华山资源网 Design By www.eoogi.com
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
华山资源网 Design By www.eoogi.com
暂无评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
2024年11月14日
2024年11月14日
- 林强.1992-春风少年兄【魔岩】【WAV+CUE】
- 世界顶级汽车音响试音王《金色的草原》24K金碟[低速原抓WAV+CUE][1G]
- 周深 /Faouzia《解密 电影原声带》[320K/MP3][39.32MB]
- 周深 /Faouzia《解密 电影原声带》[FLAC/分轨][199.46MB]
- 英雄联盟s14亚军队伍是哪支 英雄联盟s14亚军队伍介绍
- 英雄联盟s14夺冠队伍是哪支 英雄联盟s14夺冠队SKT T1队伍介绍
- faker三冠王是哪几个赛季 faker三冠王赛季介绍
- 岩贵-音乐磁场(AI调音)2CD[WAV]
- 童丽《千愁记旧情》HQII头版限量编号2024[低速原抓WAV+CUE]
- 瑞鸣十五周年纪念3[HQCD限量编号头版][低速原抓WAV+CUE]
- 任天堂专利展示新VR外设:或会随同NS继任机型推出
- 博主制作“Switch 2”模型 与现有掌机对比
- 网友热议IGN为《马路RPG》打5分:要是多元化就能9分了
- 群星《从21世纪安全撤离 电影原声音乐专辑》[320K/MP3][191.19MB]
- 群星《从21世纪安全撤离 电影原声音乐专辑》[FLAC/分轨][592.38MB]