From 2dbbd7dea6fd15611cc05db52fdcc2eab89e0cbe Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=A2=81=E7=81=8F?= <admin@aresn.com>
Date: Tue, 27 Dec 2016 17:16:11 +0800
Subject: [PATCH] update TimePicker

update TimePicker
---
 .../date-picker/base/time-spinner.vue           |  6 +++---
 src/components/date-picker/panel/time.vue       | 17 +++++++++++++----
 src/components/date-picker/picker.vue           | 11 ++++++++++-
 src/components/date-picker/util.js              |  8 ++++++++
 test/routers/date.vue                           | 11 ++++++++++-
 5 files changed, 44 insertions(+), 9 deletions(-)

diff --git a/src/components/date-picker/base/time-spinner.vue b/src/components/date-picker/base/time-spinner.vue
index 185f2b1a..c6ab25a1 100644
--- a/src/components/date-picker/base/time-spinner.vue
+++ b/src/components/date-picker/base/time-spinner.vue
@@ -27,15 +27,15 @@
         mixins: [Options],
         props: {
             hours: {
-                type: Number,
+                type: [Number, String],
                 default: 0
             },
             minutes: {
-                type: Number,
+                type: [Number, String],
                 default: 0
             },
             seconds: {
-                type: Number,
+                type: [Number, String],
                 default: 0
             },
             showSeconds: {
diff --git a/src/components/date-picker/panel/time.vue b/src/components/date-picker/panel/time.vue
index 1b1ad60a..1bfd0292 100644
--- a/src/components/date-picker/panel/time.vue
+++ b/src/components/date-picker/panel/time.vue
@@ -26,6 +26,8 @@
 
     import Mixin from './mixin';
 
+    import { initTimeDate } from '../util';
+
     const prefixCls = 'ivu-picker-panel';
     const timePrefixCls = 'ivu-time-picker';
 
@@ -37,11 +39,11 @@
                 prefixCls: prefixCls,
                 timePrefixCls: timePrefixCls,
                 format: 'HH:mm:ss',
-                date: new Date(),
+                date: initTimeDate(),
                 value: '',
-                hours: 0,
-                minutes: 0,
-                seconds: 0,
+                hours: '',
+                minutes: '',
+                seconds: '',
                 disabledHours: [],
                 disabledMinutes: [],
                 disabledSeconds: [],
@@ -68,6 +70,13 @@
             }
         },
         methods: {
+            handleClear() {
+                this.date = initTimeDate();
+                this.hours = '';
+                this.minutes = '';
+                this.seconds = '';
+                this.$emit('on-pick', '');
+            },
             handleChange (date, emit = true) {
                 if (date.hours !== undefined) {
                     this.date.setHours(date.hours);
diff --git a/src/components/date-picker/picker.vue b/src/components/date-picker/picker.vue
index caf25c09..50bb0aaf 100644
--- a/src/components/date-picker/picker.vue
+++ b/src/components/date-picker/picker.vue
@@ -30,7 +30,7 @@
     import Drop from '../../components/select/dropdown.vue';
     import clickoutside from '../../directives/clickoutside';
     import { oneOf } from '../../utils/assist';
-    import { formatDate, parseDate } from './util';
+    import { formatDate, parseDate, initTimeDate } from './util';
 
     const prefixCls = 'ivu-date-picker';
 
@@ -413,6 +413,15 @@
             value: {
                 immediate: true,
                 handler (val) {
+                    const type = this.type;
+                    if (type === 'time') {
+                        const parser = (
+                            TYPE_VALUE_RESOLVER_MAP[type] ||
+                            TYPE_VALUE_RESOLVER_MAP['default']
+                        ).parser;
+
+                        val = parser(val, this.format || DEFAULT_FORMATS[type]);
+                    }
                     this.internalValue = val;
                 }
             },
diff --git a/src/components/date-picker/util.js b/src/components/date-picker/util.js
index 29ee8d94..84b1fe93 100644
--- a/src/components/date-picker/util.js
+++ b/src/components/date-picker/util.js
@@ -74,4 +74,12 @@ export const nextMonth = function(src) {
     src.setFullYear(newYear);
 
     return new Date(src.getTime());
+};
+
+export const initTimeDate = function (time) {
+    const date = new Date();
+    date.setHours(0);
+    date.setMinutes(0);
+    date.setSeconds(0);
+    return date;
 };
\ No newline at end of file
diff --git a/test/routers/date.vue b/test/routers/date.vue
index 9b8c1432..f66ef313 100644
--- a/test/routers/date.vue
+++ b/test/routers/date.vue
@@ -12,12 +12,14 @@
             <date-picker type="daterange" placement="bottom-end" placeholder="选择日期" style="width: 200px"></date-picker>
         </i-col>
         <i-col span="12">
+            <span>123,{{value}},456</span>
             <time-picker
                 :value="value"
                 placeholder="选择时间"
                 format="HH:mm:ss"
                 :hide-disabled-options="false"
                 :disabled-hours="[1,2,5,10,11]"
+                @on-change="c"
                 style="width: 168px"></time-picker>
         </i-col>
     </row>
@@ -26,7 +28,14 @@
     export default {
         data () {
             return {
-                value: '2016-12-12 03:03:03'
+//                value: '2016-12-12 03:03:03'
+                value: '15:12:01'
+            }
+        },
+        methods: {
+            c (s) {
+                console.log(s)
+                this.value = s;
             }
         }
     }