227 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Vue
		
	
	
	
			
		
		
	
	
			227 lines
		
	
	
		
			6.6 KiB
		
	
	
	
		
			Vue
		
	
	
	
<template>
 | 
						|
    <div class="width-auto" style="position: relative">
 | 
						|
		<div class="title" style="display: flex;">
 | 
						|
			<div>{{'推荐平均用时'}}</div>
 | 
						|
			<div style="color:rgb(102, 102, 102);font-size: 14rpx;margin-left: 30rpx;">{{ '会员本次推荐与下次推荐平均间隔的时长' }}</div>
 | 
						|
		</div>
 | 
						|
        <div class="right-lines">
 | 
						|
            <div class="item-s" v-for="item in list">
 | 
						|
                <div>{{item.name}}</div>
 | 
						|
                <div class="bg-color" :style="{backgroundColor:`${item.color}`}"></div>
 | 
						|
            </div>
 | 
						|
        </div>
 | 
						|
        <div id="mycharts" style="width: 690rpx;height: 600rpx;"  :style="myChartStyle"></div>
 | 
						|
    </div>
 | 
						|
</template>
 | 
						|
 | 
						|
<script>
 | 
						|
import * as echarts from "echarts";
 | 
						|
import { getMemberRecommend  } from "@/config/distribute.js";
 | 
						|
import {formatSeconds} from '@/util/index.js'
 | 
						|
export default {
 | 
						|
    name: "recommendTime",
 | 
						|
    data(){
 | 
						|
        return{
 | 
						|
            myChart:{},
 | 
						|
            list:[
 | 
						|
                {"name":'自己',"color":"#01C291"},
 | 
						|
                {"name":'团队',"color":"#FE4C4B"},
 | 
						|
                {"name":'明星',"color":"#FE9A02"},
 | 
						|
                {"name":'公司',"color":"#2982FF"},
 | 
						|
            ],
 | 
						|
            myChartStyle: {
 | 
						|
                float: "center",
 | 
						|
                width: "690rpx",
 | 
						|
                height: "600rpx",
 | 
						|
                // paddingTop: "20rpx",
 | 
						|
                // margin: "20px",
 | 
						|
            }, //图表样式
 | 
						|
            sexData: [
 | 
						|
            ],
 | 
						|
        }
 | 
						|
    },
 | 
						|
    created() {
 | 
						|
        this.getInit();
 | 
						|
    },
 | 
						|
    methods:{
 | 
						|
        getInit() {
 | 
						|
            getMemberRecommend().then((res)=>{
 | 
						|
                this.ageChart(res.data);
 | 
						|
            })
 | 
						|
        },
 | 
						|
        ageChart(data) {
 | 
						|
            let _that = this;
 | 
						|
            let list1=[]
 | 
						|
            list1.push({'value':data.companyTime})
 | 
						|
            list1.push({'value':data.starTime})
 | 
						|
            list1.push({'value':data.teamTime})
 | 
						|
            list1.push({'value':data.thisTime})
 | 
						|
            let _data = this.initCharts(list1);
 | 
						|
            let _maxTime = _data[0].value;
 | 
						|
            let _unit = '秒';
 | 
						|
            let _unitInfo = 60;
 | 
						|
            if(_maxTime > 60){
 | 
						|
                _unit = '分';
 | 
						|
            }
 | 
						|
            if(_maxTime > 60 * 60){
 | 
						|
                _unit = '时';
 | 
						|
                _unitInfo = 60*60;
 | 
						|
            }
 | 
						|
            if(_maxTime > 60 * 60 * 24){
 | 
						|
                _unit = '天';
 | 
						|
                _unitInfo = 60*60*24;
 | 
						|
            }
 | 
						|
            list1.forEach(function(item){
 | 
						|
               item["subValue"] = parseFloat(item.value) / _unitInfo;
 | 
						|
            });
 | 
						|
            var option = {
 | 
						|
                tooltip: {
 | 
						|
                    formatter: function(data){
 | 
						|
                        data.value= formatSeconds( data.value)
 | 
						|
                        return data.value
 | 
						|
                    },
 | 
						|
                },
 | 
						|
                legend: {
 | 
						|
                    // left: "right",
 | 
						|
                    top: "70px",
 | 
						|
                    right: "0px",
 | 
						|
 | 
						|
                    orient: 'vertical',
 | 
						|
                    itemHeight:10,
 | 
						|
                    itemWidth:20
 | 
						|
                },
 | 
						|
                color: "rgb(71,137,246)",
 | 
						|
                grid: {
 | 
						|
                    left: '0%',
 | 
						|
                    right: '4%',
 | 
						|
                    bottom: '3%',
 | 
						|
                    containLabel: true
 | 
						|
                },
 | 
						|
                xAxis: {
 | 
						|
					axisLabel: {
 | 
						|
						textStyle: {
 | 
						|
						  fontSize: "10",
 | 
						|
						},
 | 
						|
					  },
 | 
						|
                    type: 'value',
 | 
						|
                    minInterval: 1,
 | 
						|
                    axisLine:{
 | 
						|
                        show:true
 | 
						|
                    },
 | 
						|
                    splitLine: {
 | 
						|
                        show: false
 | 
						|
                    },
 | 
						|
                    axisLabel: {
 | 
						|
 | 
						|
                        formatter:function(data){
 | 
						|
                           let _data =formatSeconds(data)
 | 
						|
                            return _data;
 | 
						|
                        },
 | 
						|
                    }
 | 
						|
                    // axisLabel:{
 | 
						|
                    //     formatter: function(data){
 | 
						|
                    //         var text=data;
 | 
						|
                    //         console.error(text)
 | 
						|
                    //         return text+'天'
 | 
						|
                    //     },
 | 
						|
                    //     itemWidth: "40"
 | 
						|
                    // }
 | 
						|
                },
 | 
						|
                yAxis: {
 | 
						|
                    type: 'category',
 | 
						|
                    show:false,
 | 
						|
                    width: 10,
 | 
						|
                    axisLabel: {
 | 
						|
                      textStyle: {
 | 
						|
                        fontSize: "10",
 | 
						|
                      },
 | 
						|
                  },
 | 
						|
                },
 | 
						|
                series: {
 | 
						|
                    type: 'bar',
 | 
						|
                    color:'#FE9A02',
 | 
						|
                    data: list1,
 | 
						|
                    label: {
 | 
						|
                        show: true,
 | 
						|
                        position:'right',
 | 
						|
                        textStyle:{
 | 
						|
                            color:"#333",
 | 
						|
                            fontSize:10
 | 
						|
                        },
 | 
						|
                        formatter: function(data){
 | 
						|
                            data.value= formatSeconds( data.value)
 | 
						|
                            return data.value
 | 
						|
                        }
 | 
						|
                    },
 | 
						|
                    itemStyle: {
 | 
						|
                        normal: {
 | 
						|
                            //这里是颜色
 | 
						|
                            color: function(params) {
 | 
						|
                                var colorList = ['#2982FF','#FE9A02', '#FE4C4B', '#01C291'];
 | 
						|
                                return colorList[params.dataIndex]
 | 
						|
                            }
 | 
						|
                        }
 | 
						|
                    },
 | 
						|
                    barWidth:'30'
 | 
						|
                },
 | 
						|
            };
 | 
						|
            const myChart = echarts.init(document.getElementById("mycharts"));
 | 
						|
            myChart.setOption(option);
 | 
						|
            //随着屏幕大小调节图表
 | 
						|
            window.addEventListener("resize", () => {
 | 
						|
                myChart.resize();
 | 
						|
            });
 | 
						|
        },
 | 
						|
        initCharts(data){
 | 
						|
            data.sort(function(a,b){
 | 
						|
                return b.value - a.value;
 | 
						|
            });
 | 
						|
            return data;
 | 
						|
        }
 | 
						|
    }
 | 
						|
}
 | 
						|
</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{
 | 
						|
		padding: 20rpx 30rpx ;
 | 
						|
		height: 80rpx;
 | 
						|
		line-height: 80rpx;
 | 
						|
		border-bottom: 10rpx solid #f3f3f3;
 | 
						|
		margin-top: 10rpx;
 | 
						|
		font-size: 28rpx;
 | 
						|
	}
 | 
						|
.right-lines{
 | 
						|
    position: absolute;
 | 
						|
    display: flex;
 | 
						|
text-align: center;
 | 
						|
  justify-content: center;
 | 
						|
  width: 100%;
 | 
						|
    bottom:30rpx;
 | 
						|
    color: #999;
 | 
						|
    font-size: 12px;
 | 
						|
	//display: flex;
 | 
						|
}
 | 
						|
.item-s{
 | 
						|
    padding-bottom: 10px;
 | 
						|
    display: flex;
 | 
						|
    line-height: 30rpx;
 | 
						|
	height: 30rpx;
 | 
						|
}
 | 
						|
.bg-color{
 | 
						|
    width: 60rpx;
 | 
						|
    height: 30rpx;
 | 
						|
    border-radius: 2px;
 | 
						|
   margin: 0 10rpx;
 | 
						|
}
 | 
						|
</style> |