| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- <template>
- <div class="area-distribution">
- <div class="chart-container" ref="areaChart"></div>
- </div>
- </template>
- <script>
- import * as echarts from 'echarts'
- export default {
- name: 'AreaDistribution',
- props: {
- chartsData: {
- type: Object,
- default: () => ({
- labels: ['T1-A区', 'T1-B区', 'T2-A区', 'T2-B区', 'T3-A区', 'T3-B区'],
- data: [320, 280, 350, 380, 320, 332]
- })
- }
- },
- data() {
- return {
- chart: null
- }
- },
- mounted() {
- this.$nextTick(() => {
- this.initChart()
- })
- },
- watch: {
- chartsData: {
- deep: true,
- handler() {
- this.$nextTick(() => {
- if (this.chart) this.chart.dispose()
- this.initChart()
- })
- }
- }
- },
- methods: {
- initChart() {
- if (!this.$refs.areaChart) return
- this.chart = echarts.init(this.$refs.areaChart)
- const option = {
- responsive: true,
- maintainAspectRatio: false,
- tooltip: {
- trigger: 'axis',
- axisPointer: { type: 'shadow' }
- },
- legend: {
- data: ['查获数量'],
- textStyle: { color: '#666', fontSize: 10 },
- top: 0
- },
- grid: {
- left: '15%',
- right: '5%',
- bottom: '15%',
- top: '22%'
- },
- xAxis: {
- type: 'category',
- data: this.chartsData.labels,
- axisLine: {
- lineStyle: {
- color: 'rgba(0, 0, 0, 0.1)'
- }
- },
- axisLabel: {
- color: '#666',
- fontSize: 10,
- // rotate: 30
- }
- },
- yAxis: {
- type: 'value',
- axisLine: {
- show: false
- },
- axisTick: {
- show: false
- },
- splitLine: {
- lineStyle: {
- color: 'rgba(0, 0, 0, 0.05)'
- }
- },
- axisLabel: {
- color: '#666',
- fontSize: 10
- }
- },
- series: [{
- type: 'bar',
- data: this.chartsData.data,
- itemStyle: {
- color: {
- type: 'linear',
- x: 0,
- y: 0,
- x2: 0,
- y2: 1,
- colorStops: [{
- offset: 0, color: '#A78BFA'
- }, {
- offset: 1, color: '#6366F1'
- }]
- }
- },
- barWidth: '60%'
- }]
- }
- this.chart.setOption(option)
- }
- },
- beforeDestroy() {
- if (this.chart) this.chart.dispose()
- }
- }
- </script>
- <style lang="scss" scoped>
- .area-distribution {
- .chart-container {
- height: 280rpx;
- }
- }
- </style>
|