铝交易,微信公众号
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

236 lines
4.3 KiB

<template>
<view class="visualization">
<uv-tabs :list="tabs"
lineColor="#fff"
:inactiveStyle="{color : '#aaa', fontSize : '24rpx'}"
:activeStyle="{color : '#fff', fontSize : '24rpx'}"
@click="clickTabs"></uv-tabs>
<div class="chartContainer"
ref="chartContainer"></div>
</view>
</template>
<script>
import * as echarts from 'echarts';
export default {
data() {
return {
tabs : [
{
name : '长江现货铝均价',
},
{
name : '国内现货铝均价',
},
{
name : '国外现货铝均价',
},
{
name : '伦敦铝均价',
},
],
series : [
{
name: '长江现货铝均价',
type: 'line',
data: [],
smooth: true,
symbol: 'circle',
symbolSize: 8,
itemStyle: {
color: '#4ECDC4'
},
lineStyle: {
color: '#4ECDC4',
width: 2
},
areaStyle: {
color: '#4ECDC422'
},
},
{
name: '国内现货铝均价',
type: 'line',
data: [],
smooth: true,
symbol: 'circle',
symbolSize: 8,
itemStyle: {
color: '#ff0'
},
lineStyle: {
color: '#ff0',
width: 2
},
areaStyle: {
color: '#ffff0022'
},
},
{
name: '国外现货铝均价',
type: 'line',
data: [],
smooth: true,
symbol: 'circle',
symbolSize: 8,
itemStyle: {
color: '#cd0000'
},
lineStyle: {
color: '#cd0000',
width: 2
},
areaStyle: {
color: '#cd000022'
},
},
{
name: '伦敦铝均价',
type: 'line',
data: [],
smooth: true,
symbol: 'circle',
symbolSize: 8,
itemStyle: {
color: '#c800ff'
},
lineStyle: {
color: '#c800ff',
width: 2
},
areaStyle: {
color: '#c800ff22'
},
},
],
dates : [],
index : 0,
myChart : null,
}
},
created() {
this.getData()
},
methods: {
getData(){
this.$api("alpriceNew", res => {
if(res.code == 200){
let data = res.result
data.length = 4
for(let i = 0;i < data.length;i++){
this.dates.push(data[i].map(n => this.$dayjs(n.priceDate)
.format('MM-DD')))
}
this.series.forEach((s, i) => {
if(data[i]){
s.data = data[i].map(n => n.price)
}
})
const chartContainer = this.$refs.chartContainer;
if (!chartContainer) {
console.error("Chart container not found");
return;
}
this.myChart = echarts.init(chartContainer);
this.initChart()
}
})
},
initChart(data) {
var that = this;
let serie = this.series[this.index]
// 配置 ECharts
const option = {
backgroundColor: '#1B263B',
title: {
text: `${serie.name} ${serie.data[serie.data.length - 1].toFixed(4)}`,
right: '10%',
top: '10%',
textStyle: {
color: '#fff',
fontSize: 12
}
},
// legend: {
// data: ['长江铝现货', '国内现货价', '国外现货价'],
// textStyle: {
// color: '#fff',
// fontSize : '9px'
// },
// },
tooltip: {
trigger: 'axis',
formatter: '{c0}',
backgroundColor: '#3A506B',
textStyle: {
color: '#fff',
}
},
grid: {
left: '58px',
right: '1%',
bottom: '15%'
},
xAxis: {
type: 'category',
data: this.dates[this.index],
axisLine: {
lineStyle: {
color: '#fff'
},
},
axisLabel: {
color: '#fff',
fontSize : '10px',
}
},
yAxis: {
type: 'value',
axisLine: {
lineStyle: {
color: '#fff'
}
},
axisLabel: {
color: '#fff',
formatter: function(value) {
return value;
}
}
},
series: [this.series[this.index]]
};
this.myChart.setOption(option);
},
clickTabs(e){
console.log(e);
this.index = e.index
this.initChart()
},
},
}
</script>
<style scoped lang="scss">
.visualization{
background-color: #1B263B;
padding: 20rpx 0;
.chartContainer{
width: 100%;
height: 300px;
}
}
</style>