Blame view

src/components/date-picker/panel/time.vue 4.04 KB
9d844d53   梁灏   fixed Layout bug
1
2
3
  <template>
      <div :class="[prefixCls + '-body-wrapper']">
          <div :class="[prefixCls + '-body']">
a8571a5f   梁灏   update DateTimePi...
4
              <div :class="[timePrefixCls + '-header']" v-if="showDate">{{ visibleDate }}</div>
9d844d53   梁灏   fixed Layout bug
5
6
              <div :class="[prefixCls + '-content']">
                  <time-spinner
531cd165   梁灏   support DatePicke...
7
                      ref="timeSpinner"
9d844d53   梁灏   fixed Layout bug
8
9
10
11
                      :show-seconds="showSeconds"
                      :hours="hours"
                      :minutes="minutes"
                      :seconds="seconds"
36628aca   梁灏   update TimePicker
12
13
14
15
                      :disabled-hours="disabledHours"
                      :disabled-minutes="disabledMinutes"
                      :disabled-seconds="disabledSeconds"
                      :hide-disabled-options="hideDisabledOptions"
9d844d53   梁灏   fixed Layout bug
16
17
18
19
                      @on-change="handleChange"
                      @on-pick-click="handlePickClick"></time-spinner>
              </div>
              <Confirm
d596b9e4   梁灏   update TimePicker
20
                  v-if="confirm"
9d844d53   梁灏   fixed Layout bug
21
22
23
24
25
26
27
28
29
30
                  @on-pick-clear="handlePickClear"
                  @on-pick-success="handlePickSuccess"></Confirm>
          </div>
      </div>
  </template>
  <script>
      import TimeSpinner from '../base/time-spinner.vue';
      import Confirm from '../base/confirm.vue';
  
      import Mixin from './mixin';
4ab11811   梁灏   some component su...
31
      import Locale from '../../../mixins/locale';
9d844d53   梁灏   fixed Layout bug
32
  
2dbbd7de   梁灏   update TimePicker
33
34
      import { initTimeDate } from '../util';
  
9d844d53   梁灏   fixed Layout bug
35
36
37
38
      const prefixCls = 'ivu-picker-panel';
      const timePrefixCls = 'ivu-time-picker';
  
      export default {
21dad188   梁灏   prevent dispatch ...
39
          name: 'TimePicker',
4ab11811   梁灏   some component su...
40
          mixins: [ Mixin, Locale ],
9d844d53   梁灏   fixed Layout bug
41
          components: { TimeSpinner, Confirm },
9d844d53   梁灏   fixed Layout bug
42
43
44
45
          data () {
              return {
                  prefixCls: prefixCls,
                  timePrefixCls: timePrefixCls,
36931442   梁灏   update DateTimePi...
46
47
                  date: initTimeDate(),
                  value: '',
a2a78c38   梁灏   update DateTimePi...
48
                  showDate: false,
36931442   梁灏   update DateTimePi...
49
                  format: 'HH:mm:ss',
2dbbd7de   梁灏   update TimePicker
50
51
52
                  hours: '',
                  minutes: '',
                  seconds: '',
c1abaed9   梁灏   update TimePicker
53
54
55
                  disabledHours: [],
                  disabledMinutes: [],
                  disabledSeconds: [],
d596b9e4   梁灏   update TimePicker
56
57
                  hideDisabledOptions: false,
                  confirm: false
9d844d53   梁灏   fixed Layout bug
58
59
60
61
62
              };
          },
          computed: {
              showSeconds () {
                  return (this.format || '').indexOf('ss') !== -1;
a8571a5f   梁灏   update DateTimePi...
63
64
65
              },
              visibleDate () {
                  const date = this.date;
4ab11811   梁灏   some component su...
66
67
68
69
                  const month = date.getMonth() + 1;
                  const tYear = this.t('i.datepicker.year');
                  const tMonth = this.t(`i.datepicker.month${month}`);
                  return `${date.getFullYear()}${tYear} ${tMonth}`;
9d844d53   梁灏   fixed Layout bug
70
71
72
73
74
75
76
              }
          },
          watch: {
              value (newVal) {
                  if (!newVal) return;
                  newVal = new Date(newVal);
                  if (!isNaN(newVal)) {
603e437b   梁灏   update TimePicker
77
                      this.date = newVal;
9d844d53   梁灏   fixed Layout bug
78
                      this.handleChange({
c1abaed9   梁灏   update TimePicker
79
80
81
                          hours: newVal.getHours(),
                          minutes: newVal.getMinutes(),
                          seconds: newVal.getSeconds()
603e437b   梁灏   update TimePicker
82
                      }, false);
9d844d53   梁灏   fixed Layout bug
83
84
85
86
                  }
              }
          },
          methods: {
2dbbd7de   梁灏   update TimePicker
87
88
89
90
91
              handleClear() {
                  this.date = initTimeDate();
                  this.hours = '';
                  this.minutes = '';
                  this.seconds = '';
2dbbd7de   梁灏   update TimePicker
92
              },
603e437b   梁灏   update TimePicker
93
              handleChange (date, emit = true) {
9d844d53   梁灏   fixed Layout bug
94
95
96
97
98
99
100
101
102
103
104
105
                  if (date.hours !== undefined) {
                      this.date.setHours(date.hours);
                      this.hours = this.date.getHours();
                  }
                  if (date.minutes !== undefined) {
                      this.date.setMinutes(date.minutes);
                      this.minutes = this.date.getMinutes();
                  }
                  if (date.seconds !== undefined) {
                      this.date.setSeconds(date.seconds);
                      this.seconds = this.date.getSeconds();
                  }
603e437b   梁灏   update TimePicker
106
                  if (emit) this.$emit('on-pick', this.date, true);
5cc9b892   梁灏   update DateTimePi...
107
108
109
              },
              updateScroll () {
                  this.$refs.timeSpinner.updateScroll();
9d844d53   梁灏   fixed Layout bug
110
              }
a2a78c38   梁灏   update DateTimePi...
111
          },
531cd165   梁灏   support DatePicke...
112
          mounted () {
a2a78c38   梁灏   update DateTimePi...
113
              if (this.$parent && this.$parent.$options.name === 'DatePicker') this.showDate = true;
9d844d53   梁灏   fixed Layout bug
114
115
116
          }
      };
  </script>