Commit b8509c593a7ab3a04c5ed926e2ad825fd4c4f311
1 parent
7f9ea0dc
update Time
Showing
1 changed file
with
56 additions
and
2 deletions
Show diff stats
src/components/time/time.vue
| 1 | 1 | <template> |
| 2 | - <span>time</span> | |
| 2 | + <span :class="classes" @click="handleClick">time</span> | |
| 3 | 3 | </template> |
| 4 | 4 | <script> |
| 5 | - export default { | |
| 5 | + import { oneOf } from '../../utils/assist'; | |
| 6 | + | |
| 7 | + const prefixCls = 'ivu-time'; | |
| 6 | 8 | |
| 9 | + export default { | |
| 10 | + name: 'Time', | |
| 11 | + props: { | |
| 12 | + time: { | |
| 13 | + type: [String, Number, Date], | |
| 14 | + required: true | |
| 15 | + }, | |
| 16 | + type: { | |
| 17 | + type: String, | |
| 18 | + validator (value) { | |
| 19 | + return oneOf(value, ['relative', 'date', 'datetime']); | |
| 20 | + }, | |
| 21 | + default: 'relative' | |
| 22 | + }, | |
| 23 | + hash: { | |
| 24 | + type: String, | |
| 25 | + default: '' | |
| 26 | + }, | |
| 27 | + interval: { | |
| 28 | + type: Number, | |
| 29 | + default: 60 | |
| 30 | + } | |
| 31 | + }, | |
| 32 | + data () { | |
| 33 | + return { | |
| 34 | + date: '' | |
| 35 | + }; | |
| 36 | + }, | |
| 37 | + computed: { | |
| 38 | + classes () { | |
| 39 | + return [ | |
| 40 | + `${prefixCls}`, | |
| 41 | + { | |
| 42 | + [`${prefixCls}-with-hash`]: this.hash | |
| 43 | + } | |
| 44 | + ]; | |
| 45 | + } | |
| 46 | + }, | |
| 47 | + methods: { | |
| 48 | + handleClick () { | |
| 49 | + if (this.hash !== '') window.location.hash = this.hash; | |
| 50 | + } | |
| 51 | + }, | |
| 52 | + mounted () { | |
| 53 | + this.setTime(); | |
| 54 | + this.timer = setInterval(() => { | |
| 55 | + this.setTime(); | |
| 56 | + }, 1000 * this.interval); | |
| 57 | + }, | |
| 58 | + beforeDestroy () { | |
| 59 | + if (this.timer) clearInterval(this.timer); | |
| 60 | + } | |
| 7 | 61 | }; |
| 8 | 62 | </script> |
| 9 | 63 | \ No newline at end of file | ... | ... |