| | |
| | | import baseChart from "./BaseChart.vue"; |
| | | |
| | | const chart = ref(null); |
| | | const props = defineProps({ |
| | | type: { |
| | | type: String, |
| | | default: '电流' |
| | | }, |
| | | title: { |
| | | type: String, |
| | | default: '' |
| | | }, |
| | | unit: { |
| | | type: String, |
| | | default: '' |
| | | } |
| | | }); |
| | | |
| | | |
| | | function getOptions() { |
| | | |
| | | function getOptions(xLabels, datas) { |
| | | xLabels = xLabels || []; |
| | | datas = datas || []; |
| | | const option = { |
| | | title: { |
| | | text: '请求数', |
| | | textStyle: { |
| | | fontWeight: 'normal', |
| | | fontSize: 16, |
| | | color: '#F1F1F3' |
| | | }, |
| | | left: '6%' |
| | | }, |
| | | // title: { |
| | | // text: props.title, |
| | | // textStyle: { |
| | | // fontWeight: 'normal', |
| | | // fontSize: 14, |
| | | // color: '#fff' |
| | | // }, |
| | | // left: '6%' |
| | | // }, |
| | | tooltip: { |
| | | trigger: 'axis', |
| | | axisPointer: { |
| | | lineStyle: { |
| | | color: '#57617B' |
| | | color: '#fff' |
| | | } |
| | | } |
| | | }, |
| | | // legend: { |
| | | // icon: 'rect', |
| | | // itemWidth: 14, |
| | | // itemHeight: 5, |
| | | // itemGap: 13, |
| | | // data: ['移动', '电信', '联通'], |
| | | // right: '4%', |
| | | // textStyle: { |
| | | // fontSize: 12, |
| | | // color: '#F1F1F3' |
| | | // } |
| | | // }, |
| | | grid: { |
| | | left: '3%', |
| | | right: '4%', |
| | | bottom: '3%', |
| | | top: 30, |
| | | containLabel: true |
| | | }, |
| | | xAxis: [{ |
| | |
| | | boundaryGap: false, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: '#57617B' |
| | | color: '#fff' |
| | | } |
| | | }, |
| | | data: ['13:00', '13:05', '13:10', '13:15', '13:20', '13:25', '13:30', '13:35', '13:40', '13:45', '13:50', '13:55'] |
| | | }, { |
| | | axisPointer: { |
| | | show: false |
| | | }, |
| | | axisLine: { |
| | | lineStyle: { |
| | | color: '#57617B' |
| | | } |
| | | }, |
| | | axisTick: { |
| | | show: false |
| | | }, |
| | | |
| | | position: 'bottom', |
| | | offset: 20, |
| | | data: ['', '', '', '', '', '', '', '', '', '', { |
| | | value: '周六', |
| | | textStyle: { |
| | | align: 'left' |
| | | } |
| | | }, '周日'] |
| | | data: xLabels |
| | | }], |
| | | yAxis: [{ |
| | | type: 'value', |
| | | name: '单位(%)', |
| | | name: props.unit, |
| | | axisTick: { |
| | | show: false |
| | | show: true, |
| | | }, |
| | | axisLine: { |
| | | show: true, |
| | | lineStyle: { |
| | | color: '#57617B' |
| | | color: '#fff' |
| | | } |
| | | }, |
| | | axisLabel: { |
| | | margin: 10, |
| | | textStyle: { |
| | | fontSize: 14 |
| | | } |
| | | fontSize: 12, |
| | | color: '#fff' |
| | | }, |
| | | splitLine: { |
| | | lineStyle: { |
| | | color: '#57617B' |
| | | color: 'rgba(255,255,255,0.2)' |
| | | } |
| | | } |
| | | }], |
| | | series: [{ |
| | | name: '移动', |
| | | name: props.type, |
| | | type: 'line', |
| | | smooth: true, |
| | | symbol: 'circle', |
| | | symbolSize: 5, |
| | | showSymbol: false, |
| | | lineStyle: { |
| | | normal: { |
| | | width: 1 |
| | | } |
| | | width: 1 |
| | | }, |
| | | areaStyle: { |
| | | normal: { |
| | | color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ |
| | | offset: 0, |
| | | color: 'rgba(137, 189, 27, 0.3)' |
| | | }, { |
| | | offset: 0.8, |
| | | color: 'rgba(137, 189, 27, 0)' |
| | | }], false), |
| | | shadowColor: 'rgba(0, 0, 0, 0.1)', |
| | | shadowBlur: 10 |
| | | } |
| | | color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ |
| | | offset: 0, |
| | | color: 'rgba(0, 136, 212, 0.3)' |
| | | }, { |
| | | offset: 0.8, |
| | | color: 'rgba(0, 136, 212, 0)' |
| | | }], false), |
| | | shadowColor: 'rgba(0, 0, 0, 0.1)', |
| | | shadowBlur: 10 |
| | | }, |
| | | itemStyle: { |
| | | normal: { |
| | | color: 'rgb(137,189,27)', |
| | | borderColor: 'rgba(137,189,2,0.27)', |
| | | borderWidth: 12 |
| | | |
| | | } |
| | | color: 'rgb(0,136,212)', |
| | | borderColor: 'rgba(0,136,212,0.2)', |
| | | borderWidth: 12 |
| | | }, |
| | | data: [220, 182, 191, 134, 150, 120, 110, 125, 145, 122, 165, 122] |
| | | }, { |
| | | name: '电信', |
| | | type: 'line', |
| | | smooth: true, |
| | | symbol: 'circle', |
| | | symbolSize: 5, |
| | | showSymbol: false, |
| | | lineStyle: { |
| | | normal: { |
| | | width: 1 |
| | | } |
| | | }, |
| | | areaStyle: { |
| | | normal: { |
| | | color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ |
| | | offset: 0, |
| | | color: 'rgba(0, 136, 212, 0.3)' |
| | | }, { |
| | | offset: 0.8, |
| | | color: 'rgba(0, 136, 212, 0)' |
| | | }], false), |
| | | shadowColor: 'rgba(0, 0, 0, 0.1)', |
| | | shadowBlur: 10 |
| | | } |
| | | }, |
| | | itemStyle: { |
| | | normal: { |
| | | color: 'rgb(0,136,212)', |
| | | borderColor: 'rgba(0,136,212,0.2)', |
| | | borderWidth: 12 |
| | | |
| | | } |
| | | }, |
| | | data: [120, 110, 125, 145, 122, 165, 122, 220, 182, 191, 134, 150] |
| | | }, { |
| | | name: '联通', |
| | | type: 'line', |
| | | smooth: true, |
| | | symbol: 'circle', |
| | | symbolSize: 5, |
| | | showSymbol: false, |
| | | lineStyle: { |
| | | normal: { |
| | | width: 1 |
| | | } |
| | | }, |
| | | areaStyle: { |
| | | normal: { |
| | | color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ |
| | | offset: 0, |
| | | color: 'rgba(219, 50, 51, 0.3)' |
| | | }, { |
| | | offset: 0.8, |
| | | color: 'rgba(219, 50, 51, 0)' |
| | | }], false), |
| | | shadowColor: 'rgba(0, 0, 0, 0.1)', |
| | | shadowBlur: 10 |
| | | } |
| | | }, |
| | | itemStyle: { |
| | | normal: { |
| | | |
| | | color: 'rgb(219,50,51)', |
| | | borderColor: 'rgba(219,50,51,0.2)', |
| | | borderWidth: 12 |
| | | } |
| | | }, |
| | | data: [220, 182, 125, 145, 122, 191, 134, 150, 120, 110, 165, 122] |
| | | },] |
| | | data: datas |
| | | }] |
| | | }; |
| | | |
| | | return option; |
| | |
| | | } |
| | | |
| | | function updateChart(xLabels, datas) { |
| | | let option = getOptions(xLabels, datas); |
| | | // if (myChart) { |
| | | |
| | | // myChart.setOption(option); |
| | | // } |
| | | if (chart.value) { |
| | | let option = getOptions(xLabels, datas); |
| | | chart.value.setOption(option); |
| | | } |
| | | } |
| | | |
| | | defineExpose({ |
| | | updateChart |
| | | }); |
| | | |
| | | onMounted(() => { |
| | | console.log('line mounted', '============='); |
| | | // console.log('line mounted', '============='); |
| | | |
| | | initChart(); |
| | | }); |