Echart使用后台Map接口

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>人员管理 - 快递代拿系统</title>

        <script   src="../../../assets/js/echarts.js"></script>


    <script src="../../../assets/js/jquery3.3.1.min.js"></script>
</head>

<body>

    
            <div class="panel-body" style="display: flex">
                <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
                <div id="main" style="width: 500px;height:300px;  " ></div>
                <div id="main2" style="width: 500px;height:300px; " ></div>
                <div id="line" style="width: 500px;height:300px; " ></div>
            </div>


<script>

    $.ajax({
        contentType: "application/json",
        type: "GET",
        url: "/admin/express/getTongji",
        dataType: "json",
        success: function (data) {
            console.log("所有"+data)
            var maleCount = data.maleCount[0];
            var tongji = data.tongji[0];
            console.log(maleCount);
            console.log(tongji);
            // 基于准备好的dom,初始化echarts实例
            var myChart = echarts.init(document.getElementById('main'));
            // 指定图表的配置项和数据
            var option = {
                title: {
                    text: '接单员统计'
                },
                tooltip: {},
                legend: {
                    data:['销量']
                },
                xAxis: {
                    data: ['男生','女生']
                },
                yAxis: {},
                series: [{
                    name: '数量',
                    type: 'bar',
                    data: [maleCount['male'],maleCount['female']]
                }]
            };

            // 使用刚指定的配置项和数据显示图表。
            myChart.setOption(option);

        },
        error: function () {
            console.log("失败")
        }
    })


</script>

<script>
    $.ajax({
        contentType: "application/json",
        type: "GET",
        url: "/admin/express/getTongji",
        dataType: "json",
        success: function (data) {
            console.log("所有"+data)
            var tongji = data.tongji[0];

            // 折线图
            // 基于准备好的dom,初始化echarts实例
            var line = echarts.init(document.getElementById('line'));
            // 指定图表的配置项和数据
            lineOption = {
                // 标题
                title: {
                    text: '订单完成情况'
                },
                // 图例
                tooltip: {
                    show: true,
                    trigger: "axis",
                    backgroundColor: "#1677FF",
                    // {a}(系列名称),{b}(类目值),{c}(数值), {d}(无)
                    formatter: "{b}:{c}个"
                },
                xAxis: {
                    type: 'category',
                    data: ['等待配送','派送中','订单完成','订单异常']
                },
                yAxis: {
                    type: 'value'
                },
                series: [{
                    name: '价格',
                    data: [tongji['dengdaipeisong'],tongji['paisongzhong'] ,tongji['dingdanwancheng'],tongji['dingdanyichang']],
                    type: 'line'
                }]
            };
            line.setOption(lineOption);
        },
        error: function () {
            console.log("失败")
        }
    })

</script>
<script>
    $.ajax({
        contentType: "application/json",
        type: "GET",
        url: "/admin/express/getTongji",
        dataType: "json",
        success: function (data) {
            console.log("所有"+data)
            var order = data.orderDeatail[0];

            // 基于准备好的dom,初始化echarts实例
            var myChart = echarts.init(document.getElementById('main2'));
            // 指定图表的配置项和数据
            var option = {
                title: {
                    text: '订单数量统计'
                },
                tooltip: {},
                legend: {
                    data:['销量']
                },
                xAxis: {
                    data: ['今日','昨日','一周内']
                },
                yAxis: {},
                series: [{
                    name: '数量',
                    type: 'bar',
                    data: [order['today'],order['yesterday'],order['week']]
                }]
            };

            // 使用刚指定的配置项和数据显示图表。
            myChart.setOption(option);
        },
        error: function () {
            console.log("失败")
        }
    })

</script>

</body>

</html>

后端代码()

  @GetMapping("/getTongji")
    public Map  getTongji(){
        Map<String,Object> map = new HashMap<>(16);

        List<Tongji> list = new ArrayList<>();
        Tongji tongji =expressService.getTongji();
        List<MaleCount> list2 = new ArrayList<>();
        MaleCount maleCount = expressService.getMale();

        //统计订单状态
        list.add(tongji);
        //统计管理员男女
        list2.add(maleCount);

        OrderDetail orderDetail = new OrderDetail();
        int today = expressService.getOrderDeatail();
        orderDetail.setToday(today);
        orderDetail.setYesterday(expressService.getOrderDeatail2()-today);
        orderDetail.setWeek(expressService.getOrderDeatail3());


        List<OrderDetail> list3 = new ArrayList<>();
        list3.add(orderDetail);

        map.put("tongji",list);
        map.put("maleCount",list2);
        map.put("orderDeatail",list3);
        return map;
    }

Vue添加Echart

<template>
  <el-card>
    <el-row class="tac">
      <el-col :span="12">
        <div id="studyChart" :style="{width: '480px', height: '400px'}"></div>
      </el-col>
	  
		<el-col :span="12">
			<div id="pie1" style="width: 600px;height:400px;"></div>
		  <!-- <div id="videoTimeChart" :style="{width: '480px', height: '400px'}"></div> -->
		</el-col>
    </el-row>
  </el-card>
</template>

<script>
import request from "@/utils/request";

export default {
  name: "Count",
  data(){
    return{
    }
  },
  mounted() {
    this.drawLineStudy()
	this.videoTime()
  },
  methods:{
    drawLineStudy(){
		var logintime;
		var playtime;
		var downloadtime;
		request.get("/count").then( res => {
			console.log("信息"+res)
		   this.logintime= res.data.logintime
		   this.playtime= res.data.playtime
		   this.downloadtime= res.data.downloadtime
		   
		console.log("哈哈"+this.logintime)
       let studyChart= this.$root.echarts.init(document.getElementById("studyChart"))
		 // 指定图表的配置项和数据
		var option = {
			title: {
				text: '数据详情统计'
			},
			tooltip: {},
			legend: {
				data:['次数']
			},
			xAxis: {
				data: ['登录总次数','播放总次数','下载总次数']
			},
			yAxis: {},
			series: [{
				name: '次数',
				type: 'bar',
				data: [this.logintime,this.playtime,this.downloadtime]
			}]
		};
	
       studyChart.setOption(option)
	   
	   	})
    },

 videoTime(){
		let myChart1= this.$root.echarts.init(document.getElementById("pie1"))
	     // var myChart1 = echarts.init(document.getElementById('pie1'));
		 var logintime;
		 var playtime;
		 var downloadtime;
		 var videoTime;
		 request.get("/count").then( res => {
		    this.logintime= res.data.logintime
		    this.playtime= res.data.playtime
		    this.downloadtime= res.data.downloadtime
			this.videoTime=res.data.videoTime
			// alert(this.videoTime)
	        let option1 = {
	    	    title:{
	                text:'按类型统计',
	                top:'bottom',
	                left:'center',
	                textStyle:{
	                    fontSize: 14,
	                    fontWeight: '',
	                    color: '#333'
	                },
	            },//标题
	            tooltip: {
	                trigger: 'item',
	                formatter: "{a} <br/>{b}: {c} ({d}%)"
	                /*formatter:function(val){   //让series 中的文字进行换行
	                     console.log(val);//查看val属性,可根据里边属性自定义内容
	                     var content = var['name'];
	                     return content;//返回可以含有html中标签
	                 },*/ //自定义鼠标悬浮交互信息提示,鼠标放在饼状图上时触发事件
	            },//提示框,鼠标悬浮交互时的信息提示
	            legend: {
	                show: false,
	                orient: 'vertical',
	                x: 'left',
	                data: ['50%-学生', '25%-老师', '25%-家长']
	            },//图例属性,以饼状图为例,用来说明饼状图每个扇区,data与下边series中data相匹配
	            graphic:{
	                type:'text',
	                left:'center',
	                top:'center',
	                style:{
	                    text:'时长统计\n', //使用“+”可以使每行文字居中
	                    textAlign:'center',
	                    font:'italic bolder 16px cursive',
	                    fill:'#000',
	                    width:30,
	                    height:30
	                }
	            },//此例饼状图为圆环中心文字显示属性,这是一个原生图形元素组件,功能很多
	            series: [
	                {
	                    name:'总时长统计(秒)',//tooltip提示框中显示内容
	                    type: 'pie',//图形类型,如饼状图,柱状图等
	                    radius: ['35%', '65%'],//饼图的半径,数组的第一项是内半径,第二项是外半径。支持百分比,本例设置成环形图。具体可以看文档或改变其值试一试
	                    //roseType:'area',是否显示成南丁格尔图,默认false
	                    itemStyle: {
	                        normal:{
	                            label:{
	                                show:true,
	                                textStyle:{color:'#3c4858',fontSize:"18"},
	                                formatter:function(val){   //让series 中的文字进行换行
	                                    return val.name.split("-").join("\n");}
	                            },//饼图图形上的文本标签,可用于说明图形的一些数据信息,比如值,名称等。可以与itemStyle属性同级,具体看文档
	                            labelLine:{
	                                show:true,
	                                lineStyle:{color:'#3c4858'}
	                            }//线条颜色
	                        },//基本样式
	                        emphasis: {
	                            shadowBlur: 10,
	                            shadowOffsetX: 0,
	                            shadowColor: 'rgba(0, 0, 0, 0.5)',//鼠标放在区域边框颜色
	                            textColor:'#000'
	                        }//鼠标放在各个区域的样式
	                    },
	                    data: [
	                        {value: this.videoTime, name: '播放总时长'},
	                        // {value: 25, name: '老师'},
	                        // {value: 25, name: '25%-家长'},
	                    ],//数据,数据中其他属性,查阅文档
	                    color: ['#51CEC6','#FFB703','#5FA0FA'],//各个区域颜色
	                },//数组中一个{}元素,一个图,以此可以做出环形图
	            ],//系列列表
	        };
	        myChart1.setOption(option1);
			
			})
    },
  }
}
</script>

<style scoped>

</style>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值