From cc3ec5f28057587ac8c9ccb619998f97c97afcd9 Mon Sep 17 00:00:00 2001 From: mengxiong10 <15623530290@163.com> Date: Tue, 21 Sep 2021 09:42:09 +0800 Subject: [PATCH] refactor: optimized code --- src/calendar/table-date.vue | 31 +++++++++++++++++++++---------- src/calendar/table-month.vue | 19 +++++++++++-------- src/calendar/table-year.vue | 19 +++++++++++-------- src/date-picker.js | 17 +++++++++-------- src/util/date.js | 9 ++++++++- 5 files changed, 60 insertions(+), 35 deletions(-) diff --git a/src/calendar/table-date.vue b/src/calendar/table-date.vue index 615843c..4c85b06 100644 --- a/src/calendar/table-date.vue +++ b/src/calendar/table-date.vue @@ -63,7 +63,7 @@ import { getWeek, format } from 'date-format-parse'; import IconButton from './icon-button'; import { chunk } from '../util/base'; -import { createDate, getCalendar } from '../util/date'; +import { getCalendar, setMonth, setYear } from '../util/date'; import { getLocale } from '../locale'; export default { @@ -141,22 +141,33 @@ export default { }, }, methods: { - getNextCalendar(diffMonth) { - const year = this.calendar.getFullYear(); - const month = this.calendar.getMonth(); - return createDate(year, month + diffMonth); - }, handleIconLeftClick() { - this.$emit('changecalendar', this.getNextCalendar(-1), 'last-month'); + this.$emit( + 'changecalendar', + setMonth(this.calendar, v => v - 1), + 'last-month' + ); }, handleIconRightClick() { - this.$emit('changecalendar', this.getNextCalendar(1), 'next-month'); + this.$emit( + 'changecalendar', + setMonth(this.calendar, v => v + 1), + 'next-month' + ); }, handleIconDoubleLeftClick() { - this.$emit('changecalendar', this.getNextCalendar(-12), 'last-year'); + this.$emit( + 'changecalendar', + setYear(this.calendar, v => v - 1), + 'last-year' + ); }, handleIconDoubleRightClick() { - this.$emit('changecalendar', this.getNextCalendar(12), 'next-year'); + this.$emit( + 'changecalendar', + setYear(this.calendar, v => v + 1), + 'next-year' + ); }, handlePanelChange(panel) { this.$emit('changepanel', panel); diff --git a/src/calendar/table-month.vue b/src/calendar/table-month.vue index 412b3db..238b5fd 100644 --- a/src/calendar/table-month.vue +++ b/src/calendar/table-month.vue @@ -35,7 +35,7 @@ import { chunk } from '../util/base'; import IconButton from './icon-button'; import { getLocale } from '../locale'; -import { createDate } from '../util/date'; +import { setYear } from '../util/date'; export default { name: 'TableMonth', @@ -72,16 +72,19 @@ export default { }, }, methods: { - getNextCalendar(diffYear) { - const year = this.calendar.getFullYear(); - const month = this.calendar.getMonth(); - return createDate(year + diffYear, month); - }, handleIconDoubleLeftClick() { - this.$emit('changecalendar', this.getNextCalendar(-1), 'last-year'); + this.$emit( + 'changecalendar', + setYear(this.calendar, v => v - 1), + 'last-year' + ); }, handleIconDoubleRightClick() { - this.$emit('changecalendar', this.getNextCalendar(1), 'next-year'); + this.$emit( + 'changecalendar', + setYear(this.calendar, v => v + 1), + 'next-year' + ); }, handlePanelChange() { this.$emit('changepanel', 'year'); diff --git a/src/calendar/table-year.vue b/src/calendar/table-year.vue index 12dafd3..056ed90 100644 --- a/src/calendar/table-year.vue +++ b/src/calendar/table-year.vue @@ -30,7 +30,7 @@