年月日列表分成三个组件,点击headaer中间的按钮可以在年月日三个组件中切换,根据年月日的不同back和next两个按钮功能也分别变成控制月份+1或者-1,控制年份+1或者-1,控制年份+12或者-12,
第二个功能的实现也离不开v-model,不过更重要的是正则表达式,通过这个正则表达式可以吧符合格式的日期筛选出来,然后通过v-bind传递给子组件,子组件监听数值变化然后更新日历
keyUp() {
if(this.startShow && this.startCalendarStatus.dateShow && this.startDateMessage.date) {
let y = this.startDateMessage.year
let m = this.startDateMessage.mouth
let d = this.startDateMessage.date
this.startDateMessage.date -= 7
if(this.startDateMessage.date < 1) {
this.startDateMessage.mouth--
if(this.startDateMessage.year%400 == 0 || (!(this.startDateMessage.year%100 == 0) && this.startDateMessage.year%4 == 0)) {
this.startDateMessage.date = this.mouthLeap[this.startDateMessage.mouth - 1] + this.startDateMessage.date
}else {
this.startDateMessage.date = this.mouthNormel[this.startDateMessage.mouth - 1] + this.startDateMessage.date
}
}
if(this.startDateMessage.mouth < 1) {
//如果月份年份同时变化,则需要把因为月份变化而变化的日期变成没有变化的日期,从新计算
this.startDateMessage.date = d
this.startDateMessage.year--
this.startDateMessage.mouth = 12
this.startDateMessage.date -= 7
if(this.startDateMessage.year%400 == 0 || (!(this.startDateMessage.year%100 == 0) && this.startDateMessage.year%4 == 0)) {
this.startDateMessage.date = this.mouthLeap[this.startDateMessage.mouth - 1] + this.startDateMessage.date
}else {
this.startDateMessage.date = this.mouthNormel[this.startDateMessage.mouth - 1] + this.startDateMessage.date
}
}
this.startDateMessage = {
year: this.startDateMessage.year,
mouth: this.startDateMessage.mouth,
date: this.startDateMessage.date
}
}else if(this.endShow && this.endCalendarStatus.dateShow && this.endDateMessage.date) {
let y = this.endDateMessage.year
let m = this.endDateMessage.mouth
let d = this.endDateMessage.date
this.endDateMessage.date -= 7
if(this.endDateMessage.date < 1) {
this.endDateMessage.mouth--
if(this.endDateMessage.year%400 == 0 || (!(this.endDateMessage.year%100 == 0) && this.endDateMessage.year%4 == 0)) {
this.endDateMessage.date = this.mouthLeap[this.endDateMessage.mouth - 1] + this.endDateMessage.date
}else {
this.endDateMessage.date = this.mouthNormel[this.endDateMessage.mouth - 1] + this.endDateMessage.date
}
}
if(this.endDateMessage.mouth < 1) {
//如果月份年份同时变化,则需要把因为月份变化而变化的日期变成没有变化的日期,从新计算
this.endDateMessage.date = d
this.endDateMessage.year--
this.endDateMessage.mouth = 12
this.endDateMessage.date -= 7
if(this.endDateMessage.year%400 == 0 || (!(this.endDateMessage.year%100 == 0) && this.endDateMessage.year%4 == 0)) {
this.endDateMessage.date = this.mouthLeap[this.endDateMessage.mouth - 1] + this.endDateMessage.date
}else {
this.endDateMessage.date = this.mouthNormel[this.endDateMessage.mouth - 1] + this.endDateMessage.date
}
}
if(this.startDate?(this.$store.getters.fullDateNum(this.endDateMessage.year , this.endDateMessage.mouth , this.endDateMessage.date) >= this.startDate):true) {
this.endDateMessage = {
year: this.endDateMessage.year,
mouth: this.endDateMessage.mouth,
date: this.endDateMessage.date
}
}else {
this.endDateMessage = {
year: y,
mouth: m,
date: d
}
}
}
if(this.startShow && this.startCalendarStatus.mouthShow && this.startDateMessage.date) {
let y = this.startDateMessage.year
let m = this.startDateMessage.mouth
let d = this.startDateMessage.date
this.startDateMessage.mouth -= 4
if(this.startDateMessage.mouth < 1) {
this.startDateMessage.year--
this.startDateMessage.mouth = 12 - (4 - m)
}
this.startDateMessage = {
year: this.startDateMessage.year,
mouth: this.startDateMessage.mouth,
date: this.startDateMessage.date
}
}else if(this.endShow && this.endCalendarStatus.mouthShow && this.endDateMessage.date) {
let y = this.endDateMessage.year
let m = this.endDateMessage.mouth
let d = this.endDateMessage.date
this.endDateMessage.mouth -= 4
if(this.endDateMessage.mouth < 1) {
this.endDateMessage.year--
this.endDateMessage.mouth = 12 - (4 - m)
}
if(this.startDate?(this.$store.getters.fullDateNum(this.endDateMessage.year , this.endDateMessage.mouth , this.endDateMessage.date) >= this.startDate):true) {
this.endDateMessage = {
year: this.endDateMessage.year,
mouth: this.endDateMessage.mouth,
date: this.endDateMessage.date
}
}else {
this.endDateMessage = {
year: y,
mouth: m,
date: d,
}
}
}
if(this.startShow && this.startCalendarStatus.yearShow && this.startDateMessage.date) {
let y = this.startDateMessage.year
let m = this.startDateMessage.mouth
let d = this.startDateMessage.date
this.startDateMessage.year -= 4
this.startDateMessage = {
year: this.startDateMessage.year,
mouth: this.startDateMessage.mouth,
date: this.startDateMessage.date
}
}else if(this.endShow && this.endCalendarStatus.yearShow && this.endDateMessage.date) {
let y = this.endDateMessage.year
let m = this.endDateMessage.mouth
let d = this.endDateMessage.date
this.endDateMessage.year -= 4
if(this.startDate?(this.$store.getters.fullDateNum(this.endDateMessage.year , this.endDateMessage.mouth , this.endDateMessage.date) >= this.startDate):true) {
this.endDateMessage = {
year: this.endDateMessage.year,
mouth: this.endDateMessage.mouth,
date: this.endDateMessage.date
}
}else {
this.endDateMessage = {
year: y,
mouth: m,
date: d,
}
}
}
},
评论