<template> <div ref="chartRef" :style="{ height: '500px', width }"></div> </template> <script lang="ts" setup> import { ref, Ref, watchEffect } from 'vue'; import { useECharts } from '/@/hooks/web/useECharts'; import { basicProps } from './props'; import { max } from 'lodash-es'; import { useDataStoreWithOut } from '/@/store/modules/data'; defineProps({ ...basicProps, }); const chartRef = ref<HTMLDivElement | null>(null); const { setOptions } = useECharts(chartRef as Ref<HTMLDivElement>); const dataStore = useDataStoreWithOut(); watchEffect(() => { const data = dataStore?.getChartData || {}; const maxY = data?.y ? max(data?.y) : 0; setOptions({ tooltip: { trigger: 'axis', axisPointer: { lineStyle: { width: 1, color: '#019680', }, }, }, xAxis: { type: 'category', boundaryGap: false, data: data?.x, splitLine: { show: true, lineStyle: { width: 1, type: 'solid', color: 'rgba(226,226,226,0.5)', }, }, axisTick: { show: false, }, }, yAxis: [ { type: 'value', max: maxY + 20, splitNumber: 20, axisTick: { show: false, }, splitArea: { show: true, areaStyle: { color: ['rgba(255,255,255,0.2)', 'rgba(226,226,226,0.2)'], }, }, }, ], grid: { left: '1%', right: '1%', top: '2 %', bottom: 0, containLabel: true }, series: [ { smooth: true, data: data?.y, type: 'line', areaStyle: {}, itemStyle: { color: '#5ab1ef', }, }, // { // smooth: true, // data: [ // 33, 66, 88, 333, 3333, 5000, 18000, 3000, 1200, 13000, 22000, 11000, 2221, 1201, 390, // 198, 60, 30, 22, 11, // ], // type: 'line', // areaStyle: {}, // itemStyle: { // color: '#019680', // }, // }, ], }); }); </script>