hupeng
5 years ago
42 changed files with 371 additions and 128 deletions
Before Width: | Height: | Size: 48 KiB After Width: | Height: | Size: 13 KiB |
@ -0,0 +1,87 @@ |
|||||||
|
<template> |
||||||
|
<div :class="className" :style="{height:height,width:width}" /> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import echarts from 'echarts' |
||||||
|
require('echarts/theme/macarons') // echarts theme |
||||||
|
import { getOrderCount } from '@/api/visits' |
||||||
|
import { debounce } from '@/utils' |
||||||
|
|
||||||
|
export default { |
||||||
|
props: { |
||||||
|
className: { |
||||||
|
type: String, |
||||||
|
default: 'chart' |
||||||
|
}, |
||||||
|
width: { |
||||||
|
type: String, |
||||||
|
default: '100%' |
||||||
|
}, |
||||||
|
height: { |
||||||
|
type: String, |
||||||
|
default: '300px' |
||||||
|
} |
||||||
|
}, |
||||||
|
data() { |
||||||
|
return { |
||||||
|
chart: null, |
||||||
|
column: [], |
||||||
|
orderCountDatas: [] |
||||||
|
} |
||||||
|
}, |
||||||
|
mounted() { |
||||||
|
getOrderCount().then(res => { |
||||||
|
this.column = res.column, |
||||||
|
this.orderCountDatas = res.orderCountDatas |
||||||
|
}).then(() =>{ |
||||||
|
this.initChart() |
||||||
|
}) |
||||||
|
|
||||||
|
this.__resizeHandler = debounce(() => { |
||||||
|
if (this.chart) { |
||||||
|
this.chart.resize() |
||||||
|
} |
||||||
|
}, 100) |
||||||
|
window.addEventListener('resize', this.__resizeHandler) |
||||||
|
}, |
||||||
|
beforeDestroy() { |
||||||
|
if (!this.chart) { |
||||||
|
return |
||||||
|
} |
||||||
|
window.removeEventListener('resize', this.__resizeHandler) |
||||||
|
this.chart.dispose() |
||||||
|
this.chart = null |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
initChart() { |
||||||
|
this.chart = echarts.init(this.$el, 'macarons') |
||||||
|
|
||||||
|
this.chart.setOption({ |
||||||
|
tooltip: { |
||||||
|
trigger: 'item', |
||||||
|
formatter: '{a} <br/>{b} : {c} ({d}%)' |
||||||
|
}, |
||||||
|
legend: { |
||||||
|
left: 'center', |
||||||
|
bottom: '10', |
||||||
|
data: this.column |
||||||
|
}, |
||||||
|
calculable: true, |
||||||
|
series: [ |
||||||
|
{ |
||||||
|
name: '商品分类销售占总销售的比例', |
||||||
|
type: 'pie', |
||||||
|
roseType: 'radius', |
||||||
|
radius: [15, 95], |
||||||
|
center: ['50%', '38%'], |
||||||
|
data: this.orderCountDatas, |
||||||
|
animationEasing: 'cubicInOut', |
||||||
|
animationDuration: 2600 |
||||||
|
} |
||||||
|
] |
||||||
|
}) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
</script> |
Loading…
Reference in new issue