web-base-h5/pages/mine/addNewPv/index.vue

358 lines
7.8 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="width-auto">
<view class="titleF">
<view class="title">
<!-- {{$t('N_I_105')}} -->
</view>
<picker :range="dateTypeList"
:value="index"
range-key="label"
@change="bindPickerChange">
<view class="mClass">
<view>{{dataName}}</view>
<u-icon name="arrow-down"
color="#999"></u-icon>
</view>
</picker>
</view>
<div class="flex-s">
<div id="mounthData2"
style="width: 700rpx;height: 600rpx;"
:style="myChartStyle"></div>
</div>
<div class="right-lines">
<div class="item-s" v-for="item in list">
<div class="bg-color" :style="{backgroundColor:`${item.color}`}"></div>
<div>{{item.name}}</div>
</div>
</div>
</div>
</template>
<script>
import * as echarts from 'echarts'
import * as api from '@/config/activity.js'
export default {
data() {
return {
list:[{"name":this.$t('S_C_73'),"color":"#FF5151"},
{"name":this.$t('S_C_74'),"color":"#BB0909"},
{"name":this.$t('S_C_75'),"color":"#FFAE36"},
{"name":this.$t('S_C_76'),"color":"#935801"}
],
dataName: '',
index: 0,
myChartStyle: {
float: 'center',
width: '690rpx',
height: '750rpx',
paddingTop: '0',
},
dateTypeList: [],
dateType: 1,
whatMounth: '',
mounthList: [
{
value: 1,
label: '1月',
},
{
value: 2,
label: '2月',
},
{
value: 3,
label: '3月',
},
{
value: 4,
label: '4月',
},
{
value: 5,
label: '5月',
},
{
value: 6,
label: '6月',
},
{
value: 7,
label: '7月',
},
{
value: 8,
label: '8月',
},
{
value: 9,
label: '9月',
},
{
value: 10,
label: '10月',
},
{
value: 11,
label: '11月',
},
{
value: 12,
label: '12月',
},
],
// margin: "20px",
//
}
},
mounted() {
this.getDayType()
// this.upDateCover()
// this.drawChart()
},
methods: {
bindPickerChange(e) {
this.dateType = e.detail.value + 1
this.dateTypeList.forEach((item) => {
if (this.dateType == item.value) {
this.dataName = item.label
}
})
setTimeout(() => {
this.upDateCover(this.dateType)
}, 50)
},
getDayType() {
api.getDayType().then((res) => {
this.dateTypeList = res.data
this.dataName = res.data[0].label
this.upDateCover(res.data[0].value)
})
},
upDateCover(value) {
api.getIndexAddAchieve({"dayType": value}).then((res) => {
let time = []
let arr1 = []
let arr2 = []
let arr3 = []
let arr4 = []
res.data.forEach((item) => {
if (item.settleDate) {
time.push(item.settleDate)
}
arr1.push(item.repANewPv)
arr2.push(item.repBNewPv)
arr3.push(item.bNewPv)
arr4.push(item.aNewPv)
})
this.drawChart(arr1, arr2, arr3, arr4, time)
})
},
drawChart(arr1, arr2, arr3, arr4, time) {
// 基于准备好的dom初始化echarts实例 这个和上面的main对应
var myChart = echarts.init(document.getElementById('mounthData2'))
// 指定图表的配置项和数据
let option = {
title: {
text: '',
subtext: this.$t('S_C_72'),
},
tooltip: {},
legend: {
top: 'bottom',
bottom: '5%',
},
xAxis: {
type: 'category',
data: time,
axisLine: {
show: true,
lineStyle: {
color: '#333',
width: '1', // 坐标轴线线宽
type: 'solid', // 坐标轴线线的类型solid实线类型dashed虚线类型dotted点状类型
},
},
axisTick: {
show: true, // 是否显示坐标轴刻度
inside: true, // 坐标轴刻度是否朝内,默认朝外
length: 5, // 坐标轴刻度的长度
lineStyle: {
color: '#FFF', // 刻度线的颜色
width: 10, // 坐标轴刻度线宽
type: 'solid', // 坐标轴线线的类型solid实线类型dashed虚线类型dotted点状类型
},
},
splitLine: {
show: false,
},
axisLabel: {
type: 'category',
interval: 0,
textStyle: {
color: '#000',
fontSize: '10',
itemSize: '',
},
formatter: function (data) {
return data
},
},
},
yAxis: {
type: 'value',
splitLine: {
show: true,
lineStyle: {
color: '#CCCCCC',
type: 'dashed', //虚线
},
},
},
series: [
{
data: arr4,
type: 'line',
color: '#FF5151',
label: {
show: false,
position: 'right',
},
formatter: function (data) {
console.error(data)
},
},
{
data: arr1,
type: 'line',
color: '#BB0909',
label: {
show: false,
position: 'right',
},
},
{
data: arr3,
type: 'line',
color: '#FE9A02',
label: {
show: false,
position: 'right',
},
},
{
data: arr2,
type: 'line',
color: '#935801',
label: {
show: false,
position: 'right',
},
},
],
}
// 使用刚指定的配置项和数据显示图表。
myChart.setOption(option)
},
},
}
</script>
<style scoped lang="scss">
.width-auto {
width: 100%;
position: relative;
height: 950rpx;
background-color: #fff;
width: 690rpx;
border-radius: 20rpx;
margin: 20rpx auto;
}
.title {
height: 80rpx;
line-height: 80rpx;
margin-top: 10rpx;
}
::v-deep .el-select .el-input .el-select__caret {
color: #333;
}
.lines {
width: 2px;
height: 470px;
opacity: 1;
background: #979797;
position: absolute;
bottom: 50px;
left: 50%;
margin-left: -110px;
}
.right-lines {
position: absolute;
// right: 80px;
// top: 140px;
color: #999;
font-size: 10px;
display: flex;
justify-content: center; /* 水平居中 */
align-items: center; /* 垂直居中 */
// width: 100%;
left: 0;
right: 0;
margin: 0 auto;
}
.item-s {
// padding-bottom: 10px;
display: flex;
// line-height: 24px;
align-items: center;
margin-right: 10rpx;
}
.bg-color {
width: 20px;
height: 10px;
border-radius: 2px;
margin-right: 10rpx;
}
.flex-s {
// display: flex;
// justify-content: center;
// align-items: center;
// width: 700px;
// padding: 0 20rpx;
}
.styles {
position: absolute;
right: -30px;
z-index: 111;
top: 60px;
/*background: rgba(0,0,0,0.05);*/
/*border-radius: 4px 4px 4px 4px;*/
}
::v-deep .el-select .el-input__inner {
border: none;
background: rgba(0, 0, 0, 0.05);
}
.titleF {
display: flex;
border-bottom: 10rpx solid #f3f3f3;
align-items: center;
justify-content: space-between;
padding: 20rpx 30rpx;
}
.mClass {
display: flex;
}
</style>