vue-calendar-component日历组件报错Clock is not defined解决
作者:瑞瑞_
这篇文章主要为大家介绍了vue-calendar-component日历组件报错Clock is not defined解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
下载日历组件
npm i vue-calendar-component --save
在文件中引入插件运行后插件报错 Clock is not defined
解决方法
如下:
- 1.在node_modules目录中找到vue-calendar-component,将src文件单独拿出,重新封装成组件
- 2.将index.js文件中后三行代码注释掉就可以成功展示了
- 3.运行后展示和ui设计不一样,修改了calendar.vue中css代码,添加了回到今日功能,具体代码如下
calendar.vue代码
<style scoped> @media screen and (min-width: 460px) { .wh_item_date:hover { background: rgb(217, 236, 255); border-radius: 100px; color: rgb(102, 177, 255); cursor: pointer; } } * { margin: 0; padding: 0; } .wh_container { max-width: 280px; margin: auto; } li { list-style-type: none; } .wh_top_changge { display: flex; width: 50%; margin-left: 43%; margin: auto; } .wh_top_changge li { cursor: pointer; display: flex; color: #666; font-size: 15px; flex: 1; justify-content: center; align-items: center; height: 47px; } .wh_top_changge .wh_content_li { cursor: auto; flex: 3; font-family: Helvetica; } .wh_content_all { font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Helvetica Neue", STHeiti, "Microsoft Yahei", Tahoma, Simsun, sans-serif; background-color: #fff; width: 100%; overflow: hidden; padding-bottom: 8px; border-radius: 8px; } .wh_content { display: flex; flex-wrap: wrap; padding: 0 3% 0 3%; width: 100%; } .wh_content:first-child .wh_content_item_tag, .wh_content:first-child .wh_content_item { color: #ddd; font-size: 16px; } .wh_content_item, wh_content_item_tag { font-size: 15px; width: 13.4%; text-align: center; color: #303133; position: relative; } .wh_content_item { height: 40px; } .wh_top_tag { width: 40px; height: 40px; line-height: 40px; margin: auto; display: flex; justify-content: center; align-items: center; color: #409EFF; border-top: 1px solid rgba(227, 227, 227, 0.6); border-bottom: 1px solid rgba(227, 227, 227, 0.6); } .wh_item_date { width: 40px; height: 40px; line-height: 40px; margin: auto; display: flex; justify-content: center; align-items: center; } .wh_jiantou1 { border-top: 2px solid #909399; border-left: 2px solid #909399; width: 7px; height: 7px; transform: rotate(-45deg); } .wh_jiantou1:active, .wh_jiantou2:active { border-color: #ddd; } .wh_jiantou2 { border-top: 2px solid #909399; border-right: 2px solid #909399; width: 7px; height: 7px; transform: rotate(45deg); } .wh_content_item > .wh_isMark { margin: auto; border-radius: 100px; background: blue; z-index: 2; } .wh_content_item .wh_other_dayhide { color: #bfbfbf; } .wh_content_item .wh_want_dayhide { color: #bfbfbf; } .wh_content_item .wh_isToday { /*border: solid 1px #52a9f3;*/ color: #52a9f3; border-radius: 100px; } .wh_content_item .wh_chose_day { background: #409EFF; color: #fff; border-radius: 100px; } .backToTody{ margin-left: 20px; color: #409EFF; cursor: pointer; } </style> <template> <section class="wh_container"> <div class="wh_content_all"> <div class="wh_top_changge"> <li @click="PreMonth(myDate,false)"> <div class="wh_jiantou1"></div> </li> <li class="wh_content_li">{{dateTop}}</li> <li @click="NextMonth(myDate,false)"> <div class="wh_jiantou2"></div> </li> </div> <div class="wh_content"> <div class="wh_content_item" v-for="tag in textTop"> <div class="wh_top_tag">{{tag}}</div> </div> </div> <div class="wh_content"> <div class="wh_content_item" v-for="(item,index) in list" @click="clickDay(item,index)"> <div class="wh_item_date" v-bind:class="[{ wh_isMark: item.isMark},{wh_other_dayhide:item.otherMonth!=='nowMonth'},{wh_want_dayhide:item.dayHide},{wh_isToday:item.isToday},{wh_chose_day:item.chooseDay},setClass(item)]" >{{item.id}}</div> </div> </div> <div class="backToTody" @click="ChoseMonth(getDate(new Date()).fullDate)">回到今天</div> </div> </section> </template> <script> import timeUtil from "./calendar"; export default { name: 'Calendar', data() { return { myDate: [], list: [], historyChose: [], dateTop: "" }; }, props: { markDate: { type: Array, default: () => [] }, markDateMore: { type: Array, default: () => [] }, textTop: { type: Array, default: () => ["一", "二", "三", "四", "五", "六", "日"] }, sundayStart: { type: Boolean, default: () => false }, agoDayHide: { type: String, default: `0` }, futureDayHide: { type: String, default: `2554387200` } }, created() { this.intStart(); this.myDate = new Date(); }, methods: { /** * 时间转换 */ getDate(date, AddDayCount = 0) { if (!date) { date = new Date() } if (typeof date !== 'object') { date = date.replace(/-/g, '/') } const dd = new Date(date) dd.setDate(dd.getDate() + AddDayCount) // 获取AddDayCount天后的日期 const y = dd.getFullYear() const m = dd.getMonth() + 1 < 10 ? '0' + (dd.getMonth() + 1) : dd.getMonth() + 1 // 获取当前月份的日期,不足10补0 const d = dd.getDate() < 10 ? '0' + dd.getDate() : dd.getDate() // 获取当前几号,不足10补0 return { fullDate: y + '/' + m + '/' + d, year: y, month: m, date: d, day: dd.getDay() } }, intStart() { timeUtil.sundayStart = this.sundayStart; }, setClass(data) { let obj = {}; obj[data.markClassName] = data.markClassName; return obj; }, clickDay: function(item, index) { if (item.otherMonth === "nowMonth" && !item.dayHide) { this.getList(this.myDate, item.date); } if (item.otherMonth !== "nowMonth") { item.otherMonth === "preMonth" ? this.PreMonth(item.date) : this.NextMonth(item.date); } }, ChoseMonth: function(date, isChosedDay = true) { date = timeUtil.dateFormat(date); this.myDate = new Date(date); this.$emit("changeMonth", timeUtil.dateFormat(this.myDate)); if (isChosedDay) { this.getList(this.myDate, date, isChosedDay); } else { this.getList(this.myDate); } }, PreMonth: function(date, isChosedDay = true) { date = timeUtil.dateFormat(date); this.myDate = timeUtil.getOtherMonth(this.myDate, "preMonth"); this.$emit("changeMonth", timeUtil.dateFormat(this.myDate)); if (isChosedDay) { this.getList(this.myDate, date, isChosedDay); } else { this.getList(this.myDate); } }, NextMonth: function(date, isChosedDay = true) { date = timeUtil.dateFormat(date); this.myDate = timeUtil.getOtherMonth(this.myDate, "nextMonth"); this.$emit("changeMonth", timeUtil.dateFormat(this.myDate)); if (isChosedDay) { this.getList(this.myDate, date, isChosedDay); } else { this.getList(this.myDate); } }, forMatArgs: function() { let markDate = this.markDate; let markDateMore = this.markDateMore; markDate = markDate.map(k => { return timeUtil.dateFormat(k); }); markDateMore = markDateMore.map(k => { k.date = timeUtil.dateFormat(k.date); return k; }); return [markDate, markDateMore]; }, getList: function(date, chooseDay, isChosedDay = true) { const [markDate, markDateMore] = this.forMatArgs(); this.dateTop = `${date.getFullYear()}年${date.getMonth() + 1}月`; let arr = timeUtil.getMonthList(this.myDate); for (let i = 0; i < arr.length; i++) { let markClassName = ""; let k = arr[i]; k.chooseDay = false; const nowTime = k.date; const t = new Date(nowTime).getTime() / 1000; //看每一天的class for (const c of markDateMore) { if (c.date === nowTime) { markClassName = c.className || ""; } } //标记选中某些天 设置class k.markClassName = markClassName; k.isMark = markDate.indexOf(nowTime) > -1; //无法选中某天 k.dayHide = t < this.agoDayHide || t > this.futureDayHide; if (k.isToday) { this.$emit("isToday", nowTime); } let flag = !k.dayHide && k.otherMonth === "nowMonth"; if (chooseDay && chooseDay === nowTime && flag) { this.$emit("choseDay", nowTime); this.historyChose.push(nowTime); k.chooseDay = true; } else if ( this.historyChose[this.historyChose.length - 1] === nowTime && !chooseDay && flag ) { k.chooseDay = true; } } this.list = arr; } }, mounted() { this.getList(this.myDate); }, watch: { markDate: { handler(val, oldVal) { this.getList(this.myDate); }, deep: true }, markDateMore: { handler(val, oldVal) { this.getList(this.myDate); }, deep: true }, agoDayHide: { handler(val, oldVal) { this.getList(this.myDate); }, deep: true }, futureDayHide: { handler(val, oldVal) { this.getList(this.myDate); }, deep: true }, sundayStart: { handler(val, oldVal) { this.intStart(); this.getList(this.myDate); }, deep: true } } }; </script>
页面中使用
<Calendar ref="Calendar" v-on:choseDay="clickDay" v-on:changeMonth="changeDate" v-on:isToday="clickToday"> </Calendar> import Calendar from '../../components/calendar/calendar.vue' components: { Calendar }, mounted() { this.$refs.Calendar.ChoseMonth('2023-11-27') }, methods: { clickDay(data) { //选中某天 console.log(111,data); }, changeDate(data) { //左右点击切换月份 console.log(222, data); }, clickToday(data) { // 跳到了本月 console.log(333, data); // this.$refs.Calendar.ChoseMonth('2023-11-27') } }
最终展示效果
以上就是vue-calendar-component日历组件报错Clock is not defined解决的详细内容,更多关于vue日历组件报错解决的资料请关注脚本之家其它相关文章!