123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320 |
- <template>
- <div :class="className" :style="{height:height,width:width}" />
- </template>
- <script>
- import * as echarts from 'echarts';
- require('echarts/theme/macarons') // echarts theme
- import resize from './mixins/resize'
- export default {
- mixins: [resize],
- props: {
- className: {
- type: String,
- default: 'chart'
- },
- width: {
- type: String,
- default: '104px'
- },
- height: {
- type: String,
- default: '104px'
- }
- },
- data() {
- return {
- chart: null,
- option: {
- series: [
- {
- name: 'hour',
- type: 'gauge',
- startAngle: 90,
- endAngle: -270,
- min: 0,
- max: 12,
- splitNumber: 12,
- clockwise: true,
- axisTick:{
- show:false,
- },
- axisLine: {
- lineStyle: {
- width: 2,
- color: [[1, 'rgba(0,0,0,0.7)']],
- shadowColor: 'rgba(0, 0, 0, 0.5)',
- shadowBlur: 2
- }
- },
- splitLine: {
- length: 3,
- distance: 3,
- lineStyle: {
- width: 1,
- shadowColor: 'rgba(0, 0, 0, 0.3)',
- shadowBlur: 1,
- shadowOffsetX: 1,
- shadowOffsetY: 2
- }
- },
- axisLabel: {
- fontSize: 11,
- distance: 3,
- formatter: function (value) {
- if (value === 0) {
- return '';
- }
- return value + '';
- }
- },
- anchor: {
- show: false,
- icon: 'path://M532.8,70.8C532.8,70.8,532.8,70.8,532.8,70.8L532.8,70.8C532.7,70.8,532.8,70.8,532.8,70.8z M456.1,49.6c-2.2-6.2-8.1-10.6-15-10.6h-37.5v10.6h37.5l0,0c2.9,0,5.3,2.4,5.3,5.3c0,2.9-2.4,5.3-5.3,5.3v0h-22.5c-1.5,0.1-3,0.4-4.3,0.9c-4.5,1.6-8.1,5.2-9.7,9.8c-0.6,1.7-0.9,3.4-0.9,5.3v16h10.6v-16l0,0l0,0c0-2.7,2.1-5,4.7-5.3h10.3l10.4,21.2h11.8l-10.4-21.2h0c6.9,0,12.8-4.4,15-10.6c0.6-1.7,0.9-3.5,0.9-5.3C457,53,456.7,51.2,456.1,49.6z M388.9,92.1h11.3L381,39h-3.6h-11.3L346.8,92v0h11.3l3.9-10.7h7.3h7.7l3.9-10.6h-7.7h-7.3l7.7-21.2v0L388.9,92.1z M301,38.9h-10.6v53.1H301V70.8h28.4l3.7-10.6H301V38.9zM333.2,38.9v10.6v10.7v31.9h10.6V38.9H333.2z M249.5,81.4L249.5,81.4L249.5,81.4c-2.9,0-5.3-2.4-5.3-5.3h0V54.9h0l0,0c0-2.9,2.4-5.3,5.3-5.3l0,0l0,0h33.6l3.9-10.6h-37.5c-1.9,0-3.6,0.3-5.3,0.9c-4.5,1.6-8.1,5.2-9.7,9.7c-0.6,1.7-0.9,3.5-0.9,5.3l0,0v21.3c0,1.9,0.3,3.6,0.9,5.3c1.6,4.5,5.2,8.1,9.7,9.7c1.7,0.6,3.5,0.9,5.3,0.9h33.6l3.9-10.6H249.5z M176.8,38.9v10.6h49.6l3.9-10.6H176.8z M192.7,81.4L192.7,81.4L192.7,81.4c-2.9,0-5.3-2.4-5.3-5.3l0,0v-5.3h38.9l3.9-10.6h-53.4v10.6v5.3l0,0c0,1.9,0.3,3.6,0.9,5.3c1.6,4.5,5.2,8.1,9.7,9.7c1.7,0.6,3.4,0.9,5.3,0.9h23.4h10.2l3.9-10.6l0,0H192.7z M460.1,38.9v10.6h21.4v42.5h10.6V49.6h17.5l3.8-10.6H460.1z M541.6,68.2c-0.2,0.1-0.4,0.3-0.7,0.4C541.1,68.4,541.4,68.3,541.6,68.2L541.6,68.2z M554.3,60.2h-21.6v0l0,0c-2.9,0-5.3-2.4-5.3-5.3c0-2.9,2.4-5.3,5.3-5.3l0,0l0,0h33.6l3.8-10.6h-37.5l0,0c-6.9,0-12.8,4.4-15,10.6c-0.6,1.7-0.9,3.5-0.9,5.3c0,1.9,0.3,3.7,0.9,5.3c2.2,6.2,8.1,10.6,15,10.6h21.6l0,0c2.9,0,5.3,2.4,5.3,5.3c0,2.9-2.4,5.3-5.3,5.3l0,0h-37.5v10.6h37.5c6.9,0,12.8-4.4,15-10.6c0.6-1.7,0.9-3.5,0.9-5.3c0-1.9-0.3-3.7-0.9-5.3C567.2,64.6,561.3,60.2,554.3,60.2z',
- showAbove: false,
- offsetCenter: [0, '-35%'],
- size: 10,
- keepAspect: true,
- itemStyle: {
- color: '#707177'
- }
- },
- pointer: {
- icon: 'path://M2.9,0.7L2.9,0.7c1.4,0,2.6,1.2,2.6,2.6v115c0,1.4-1.2,2.6-2.6,2.6l0,0c-1.4,0-2.6-1.2-2.6-2.6V3.3C0.3,1.9,1.4,0.7,2.9,0.7z',
- width: 5,
- length: '55%',
- offsetCenter: [0, '8%'],
- itemStyle: {
- color: '#C0911F',
- shadowColor: 'rgba(0, 0, 0, 0.3)',
- shadowBlur: 1,
- shadowOffsetX: 2,
- shadowOffsetY: 4
- }
- },
- detail: {
- show: false
- },
- title: {
- offsetCenter: [0, '30%']
- },
- data: [
- {
- value: 0
- }
- ]
- },
- {
- name: 'minute',
- type: 'gauge',
- startAngle: 90,
- endAngle: -270,
- min: 0,
- max: 60,
- clockwise: true,
- axisLine: {
- show: false
- },
- splitLine: {
- show: false
- },
- axisTick: {
- show: false
- },
- axisLabel: {
- show: false
- },
- pointer: {
- icon: 'path://M2.9,0.7L2.9,0.7c1.4,0,2.6,1.2,2.6,2.6v115c0,1.4-1.2,2.6-2.6,2.6l0,0c-1.4,0-2.6-1.2-2.6-2.6V3.3C0.3,1.9,1.4,0.7,2.9,0.7z',
- width: 3,
- length: '70%',
- offsetCenter: [0, '8%'],
- itemStyle: {
- color: '#C0911F',
- shadowColor: 'rgba(0, 0, 0, 0.3)',
- shadowBlur: 1,
- shadowOffsetX: 2,
- shadowOffsetY: 4
- }
- },
- anchor: {
- show: true,
- size: 8,
- showAbove: false,
- itemStyle: {
- borderWidth: 3,
- borderColor: '#C0911F',
- shadowColor: 'rgba(0, 0, 0, 0.3)',
- shadowBlur: 1,
- shadowOffsetX: 2,
- shadowOffsetY: 4
- }
- },
- detail: {
- show: false
- },
- title: {
- offsetCenter: ['0%', '-40%']
- },
- data: [
- {
- value: 0
- }
- ]
- },
- {
- name: 'second',
- type: 'gauge',
- startAngle: 90,
- endAngle: -270,
- min: 0,
- max: 60,
- animationEasingUpdate: 'bounceOut',
- clockwise: true,
- axisLine: {
- show: false
- },
- splitLine: {
- show: false
- },
- axisTick: {
- show: false
- },
- axisLabel: {
- show: false
- },
- pointer: {
- icon: 'path://M2.9,0.7L2.9,0.7c1.4,0,2.6,1.2,2.6,2.6v115c0,1.4-1.2,2.6-2.6,2.6l0,0c-1.4,0-2.6-1.2-2.6-2.6V3.3C0.3,1.9,1.4,0.7,2.9,0.7z',
- width: 1,
- length: '85%',
- offsetCenter: [0, '8%'],
- itemStyle: {
- color: '#C0911F',
- shadowColor: 'rgba(0, 0, 0, 0.3)',
- shadowBlur: 1,
- shadowOffsetX: 2,
- shadowOffsetY: 4
- }
- },
- anchor: {
- show: true,
- size: 1,
- showAbove: true,
- itemStyle: {
- color: '#C0911F',
- shadowColor: 'rgba(0, 0, 0, 0.3)',
- shadowBlur: 1,
- shadowOffsetX: 2,
- shadowOffsetY: 4
- }
- },
- detail: {
- show: false
- },
- title: {
- offsetCenter: ['0%', '-40%']
- },
- data: [
- {
- value: 0
- }
- ]
- }
- ]
- },
- }
- },
- mounted() {
- this.$nextTick(() => {
- // this.initChart()
- this.time()
- this.chart = echarts.init(this.$el, 'macarons')
- this.chart.setOption(this.option)
- // return
- var that=this;
- setInterval(function () {
- var date = new Date();
- var y = date.getFullYear();
- var m = date.getMonth() + 1;
- var d = date.getDate();
- var h = date.getHours();
- var min = date.getMinutes();
- var s = date.getSeconds();
- var second = s;
- var minute = min + second / 60;
- var hour = (h % 12) + minute / 60;
- var timeStr = (h < 10 ? ('0' + h) : h) + ':' + (min < 10 ? ('0' + min) : min) + ':' + (s < 10 ? (
- '0' + s) : s);
- var day=m+'月'+d+'日'
- var week = date.getDay(); //获取当前星期X(0-6,0代表星期天)
- var weeks = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
- var obj={
- time:timeStr,
- day:day,
- week:weeks[week]
- }
- // that.option.animationDurationUpdate = 300;
- that.$emit('getTime',obj)
- var optione={
- series: [
- {
- name: 'hour',
- animation: hour !== 0,
- data: [{ value: hour }]
- },
- {
- name: 'minute',
- animation: minute !== 0,
- data: [{ value: minute }]
- },
- {
- animation: second !== 0,
- name: 'second',
- data: [{ value: second }]
- }
- ]
- }
- that.chart.setOption(optione);
- }, 1000);
- })
- },
- beforeDestroy() {
- if (!this.chart) {
- return
- }
- this.chart.dispose()
- this.chart = null
- },
- methods: {
- time(){
- var date = new Date();
- var y = date.getFullYear();
- var m = date.getMonth() + 1;
- var d = date.getDate();
- var h = date.getHours();
- var min = date.getMinutes();
- var s = date.getSeconds();
- var timeStr = (h < 10 ? ('0' + h) : h) + ':' + (min < 10 ? ('0' + min) : min) + ':' + (s < 10 ? (
- '0' + s) : s);
- var day=m+'月'+d+'日'
- var week = date.getDay(); //获取当前星期X(0-6,0代表星期天)
- var weeks = ["星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
- var obj={
- time:timeStr,
- day:day,
- week:weeks[week]
- }
- this.$emit('getTime',obj)
- },
- initChart() {
- this.chart = echarts.init(this.$el, 'macarons')
- this.chart.setOption({
- })
- }
- }
- }
- </script>
|