| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- <template>
- <div class="container-echart">
- <div :id="'echart' + timeId" class="interface-echart"></div>
- </div>
- </template>
- <script lang="ts" setup>
- import * as echarts from 'echarts'
- import { EChartsType } from 'echarts'
- import { onMounted, ref, watch, onBeforeUnmount, nextTick } from 'vue'
- const props = defineProps({
- message: {
- type: Array,
- default: true
- }
- })
- let xAxisData: string[] = [];
- let data1: number[] = [];
- let data2: number[] = [];
- let data3: number[] = [];
- let data4: number[] = [];
- for (let i = 0; i < 10; i++) {
- xAxisData.push('201' + i);
- data1.push(+(Math.random() * 2).toFixed(2));
- data2.push(+(Math.random() * 5).toFixed(2));
- data3.push(+(Math.random() + 0.3).toFixed(2));
- data4.push(+Math.random().toFixed(2));
- }
- var emphasisStyle = {
- itemStyle: {
- shadowBlur: 10,
- shadowColor: 'rgba(0,0,0,0.3)'
- }
- };
- let myEchart: EChartsType
- const timeId = ref(Math.floor(new Date().getTime() * Math.random())); // 使该图表保持唯id
- const myEchartData = () => {
- const option = {
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'cross',
- label: {
- backgroundColor: '#6a7985'
- }
- }
- },
- legend: {
- data: ['省总用电量'],
- textStyle: {
- color: 'white' // 设置字体颜色为红色
- }
- },
- toolbox: {
- feature: {
- saveAsImage: {}
- }
- },
- grid: {
- left: '3%',
- right: '4%',
- bottom: '3%',
- containLabel: true
- },
- xAxis: [
- {
- type: 'category',
- boundaryGap: false,
- data: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月', '十月', '十一月', '十二月'],
- }
- ],
- yAxis: [
- {
- type: 'value'
- }
- ],
- series: [
- {
- name: '省总用电量',
- type: 'bar',
- stack: 'Total',
- areaStyle: {},
- emphasis: {
- focus: 'series'
- },
- tooltip: {
- valueFormatter: function (value) {
- return value + ' Kwh';
- }
- },
- data: [20, 10, 40, 20, 10, 50, 20, 30, 40, 10, 20, 40]
- }
- ]
- };
- // { notMerge: true } 解决删除数据时,数据不刷新的问题
- myEchart.setOption(option, { notMerge: true })
- }
- watch(
- //监控数据变化
- () => props.message,
- () => {
- setTimeout(() => {
- myEchartData()
- }, 500)
- },
- { deep: true }
- )
- onMounted(() => {
- setTimeout(() => {
- const dom = document.getElementById(`echart${timeId.value}`) as any
- myEchart = echarts.init(dom)
- myEchartData()
- }, 500)
- // 当窗口发生变化时
- window.addEventListener('resize', () => {
- myEchart.resize()
- })
- })
- onBeforeUnmount(() => {
- window.removeEventListener('resize', () => {
- myEchart.resize()
- })
- })
- </script>
- <style scoped lang="scss">
- .container-echart {
- width: 100%;
- height: 100%;
- display: flex;
- justify-content: center;
- align-items: center;
- overflow: hidden;
- }
- .interface-echart {
- width: 100%;
- height: 100%;
- }
- </style>
|