Commit 915055614b5f6ab4758eb2b322f962c1a6894548

Authored by 梁灏
1 parent d70cad45

TimePicker

TimePicker
Showing 1 changed file with 24 additions and 11 deletions   Show diff stats
src/components/date-picker/base/time-spinner.vue
@@ -156,20 +156,33 @@ @@ -156,20 +156,33 @@
156 this.$emit('on-change', data); 156 this.$emit('on-change', data);
157 157
158 const from = this.$els[type].scrollTop; 158 const from = this.$els[type].scrollTop;
159 -  
160 - let index = cell.text;  
161 - const Type = firstUpperCase(type);  
162 - const disabled = this[`disabled${Type}`];  
163 - if (disabled.length && this.hideDisabledOptions) {  
164 - let _count = 0;  
165 - disabled.forEach(item => item <= index ? _count++ : '');  
166 - index -= _count;  
167 - }  
168 -  
169 - const to = 24 * index; 159 + const to = 24 * this.getScrollIndex(type, cell.text);
170 scrollTop(this.$els[type], from, to, 500); 160 scrollTop(this.$els[type], from, to, 500);
171 } 161 }
  162 + },
  163 + getScrollIndex (type, index) {
  164 + const Type = firstUpperCase(type);
  165 + const disabled = this[`disabled${Type}`];
  166 + if (disabled.length && this.hideDisabledOptions) {
  167 + let _count = 0;
  168 + disabled.forEach(item => item <= index ? _count++ : '');
  169 + index -= _count;
  170 + }
  171 + return index;
  172 + },
  173 + updateScroll () {
  174 + const times = ['hours', 'minutes', 'seconds'];
  175 + times.forEach(type => this.$els[type].style.overflow = 'hidden');
  176 + this.$nextTick(() => {
  177 + times.forEach(type => {
  178 + this.$els[type].scrollTop = 24 * this.getScrollIndex(type, this[type]);
  179 + });
  180 + this.$nextTick(() => times.forEach(type => this.$els[type].style.overflow = 'auto'));
  181 + });
172 } 182 }
  183 + },
  184 + compiled () {
  185 + this.updateScroll();
173 } 186 }
174 }; 187 };
175 </script> 188 </script>
176 \ No newline at end of file 189 \ No newline at end of file