update the master branch to the latest
This commit is contained in:
parent
67d534df27
commit
23a0ba9831
611 changed files with 122648 additions and 0 deletions
99
src/components/time/time.vue
Normal file
99
src/components/time/time.vue
Normal file
|
@ -0,0 +1,99 @@
|
|||
<template>
|
||||
<span :class="classes" @click="handleClick">{{ date }}</span>
|
||||
</template>
|
||||
<script>
|
||||
import Vue from 'vue';
|
||||
const isServer = Vue.prototype.$isServer;
|
||||
import { oneOf } from '../../utils/assist';
|
||||
import Locale from '../../mixins/locale';
|
||||
import Time from './time';
|
||||
|
||||
const prefixCls = 'ivu-time';
|
||||
|
||||
export default {
|
||||
name: 'Time',
|
||||
mixins: [Locale],
|
||||
props: {
|
||||
time: {
|
||||
type: [Number, Date, String],
|
||||
required: true
|
||||
},
|
||||
type: {
|
||||
type: String,
|
||||
validator (value) {
|
||||
return oneOf(value, ['relative', 'date', 'datetime']);
|
||||
},
|
||||
default: 'relative'
|
||||
},
|
||||
hash: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
interval: {
|
||||
type: Number,
|
||||
default: 60
|
||||
}
|
||||
},
|
||||
data () {
|
||||
return {
|
||||
date: ''
|
||||
};
|
||||
},
|
||||
computed: {
|
||||
classes () {
|
||||
return [
|
||||
`${prefixCls}`,
|
||||
{
|
||||
[`${prefixCls}-with-hash`]: this.hash
|
||||
}
|
||||
];
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleClick () {
|
||||
if (this.hash !== '') window.location.hash = this.hash;
|
||||
},
|
||||
setTime () {
|
||||
const type = typeof this.time;
|
||||
let time;
|
||||
|
||||
if (type === 'number') {
|
||||
const timestamp = this.time.toString().length > 10 ? this.time : this.time * 1000;
|
||||
time = (new Date(timestamp)).getTime();
|
||||
} else if (type === 'object') {
|
||||
time = this.time.getTime();
|
||||
} else if (type === 'string') {
|
||||
time = (new Date(this.time)).getTime();
|
||||
}
|
||||
|
||||
if (this.type === 'relative') {
|
||||
this.date = Time(time, this.t);
|
||||
} else {
|
||||
const date = new Date(this.time);
|
||||
const year = date.getFullYear();
|
||||
const month = (date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1);
|
||||
const day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
|
||||
const hour = date.getHours() < 10 ? '0' + date.getHours() : date.getHours();
|
||||
const minute = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes();
|
||||
const second = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
|
||||
|
||||
if (this.type === 'datetime') {
|
||||
this.date = `${year}-${month}-${day} ${hour}:${minute}:${second}`;
|
||||
} else if (this.type === 'date') {
|
||||
this.date = `${year}-${month}-${day}`;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.setTime();
|
||||
if (isServer) return;
|
||||
this.timer = setInterval(() => {
|
||||
this.setTime();
|
||||
}, 1000 * this.interval);
|
||||
},
|
||||
beforeDestroy () {
|
||||
if (this.timer) clearInterval(this.timer);
|
||||
}
|
||||
};
|
||||
</script>
|
Loading…
Add table
Add a link
Reference in a new issue