From 7fc299a5e547f14daf6cc88810bf97f426c5bda6 Mon Sep 17 00:00:00 2001 From: mengxiong10 <15623530290@163.com> Date: Wed, 18 Nov 2020 15:38:41 +0800 Subject: [PATCH] feat: add prop `getYearPanel` (#526) --- src/calendar/calendar-panel.js | 4 ++++ src/calendar/table-year.vue | 20 +++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/src/calendar/calendar-panel.js b/src/calendar/calendar-panel.js index 42bd3734..9448bf18 100644 --- a/src/calendar/calendar-panel.js +++ b/src/calendar/calendar-panel.js @@ -49,6 +49,9 @@ export default { type: Boolean, default: undefined, }, + getYearPanel: { + type: Function, + }, titleFormat: { type: String, default: 'YYYY-MM-DD', @@ -226,6 +229,7 @@ export default { diff --git a/src/calendar/table-year.vue b/src/calendar/table-year.vue index 8756b153..99096bd9 100644 --- a/src/calendar/table-year.vue +++ b/src/calendar/table-year.vue @@ -49,15 +49,17 @@ export default { type: Function, default: () => [], }, + getYearPanel: { + type: Function, + }, }, computed: { years() { - const firstYear = Math.floor(this.calendar.getFullYear() / 10) * 10; - const years = []; - for (let i = 0; i < 10; i++) { - years.push(firstYear + i); + const calendar = new Date(this.calendar); + if (typeof this.getYearPanel === 'function') { + return this.getYearPanel(calendar); } - return chunk(years, 2); + return this.getYears(calendar); }, firstYear() { return this.years[0][0]; @@ -68,6 +70,14 @@ export default { }, }, methods: { + getYears(calendar) { + const firstYear = Math.floor(calendar.getFullYear() / 10) * 10; + const years = []; + for (let i = 0; i < 10; i++) { + years.push(firstYear + i); + } + return chunk(years, 2); + }, getNextCalendar(diffYear) { const year = this.calendar.getFullYear(); const month = this.calendar.getMonth();