From 43bb065e69a699fd2fb033d0016a1531d1aabbd1 Mon Sep 17 00:00:00 2001 From: "cinwell.li" Date: Fri, 24 Mar 2017 15:44:23 +0800 Subject: [PATCH] DatePicker: fix format week, fixed #2774 (#3687) --- packages/date-picker/src/panel/date.vue | 10 ++-------- packages/date-picker/src/picker.vue | 15 +++++++++------ 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/packages/date-picker/src/panel/date.vue b/packages/date-picker/src/panel/date.vue index 9f42e1dcf..0df44236b 100644 --- a/packages/date-picker/src/panel/date.vue +++ b/packages/date-picker/src/panel/date.vue @@ -296,14 +296,8 @@ this.date.setMonth(value.getMonth()); this.date.setDate(value.getDate()); } else if (this.selectionMode === 'week') { - let date = formatDate(value.date, this.format || 'yyyywWW'); - const week = this.week = value.week; - - date = /WW/.test(date) - ? date.replace(/WW/, week < 10 ? '0' + week : week) - : date.replace(/W/, week); - - this.$emit('pick', date); + this.week = value.week; + this.$emit('pick', value.date); } this.resetDate(); diff --git a/packages/date-picker/src/picker.vue b/packages/date-picker/src/picker.vue index 9d4ce63ca..4ad88ecdb 100644 --- a/packages/date-picker/src/picker.vue +++ b/packages/date-picker/src/picker.vue @@ -49,6 +49,7 @@ const DEFAULT_FORMATS = { month: 'yyyy-MM', datetime: 'yyyy-MM-dd HH:mm:ss', time: 'HH:mm:ss', + week: 'yyyywWW', timerange: 'HH:mm:ss', daterange: 'yyyy-MM-dd', datetimerange: 'yyyy-MM-dd HH:mm:ss', @@ -105,12 +106,14 @@ const TYPE_VALUE_RESOLVER_MAP = { } }, week: { - formatter(value) { - if (value instanceof Date) { - const weekNumber = getWeekNumber(value); - return value.getFullYear() + 'w' + (weekNumber > 9 ? weekNumber : '0' + weekNumber); - } - return value; + formatter(value, format) { + let date = formatDate(value, format); + const week = getWeekNumber(value); + + date = /WW/.test(date) + ? date.replace(/WW/, week < 10 ? '0' + week : week) + : date.replace(/W/, week); + return date; }, parser(text) { const array = (text || '').split('w');