layui+Ajax+echarts+php实现数据可视化

初来乍到

最近做了一个小课设;记录一下历程
先看一下效果:
用layui+echarts写的销量可视化

数据库的商品编码

商品编码
数据库的商品命名规则:1-4位代表商品的大类,5-6位代表商品的种类,7-8某个商品,图片中没有显示的9-12位是流水号

前端部分

因为条件的内容是比较规律的;所以我的命名也是比较规律的
分类命名规则:category0-3
radio日期命名规则:func0-2
input 日期命名规则:date0-2

选择日期之后的显示与隐藏

 //选择日期之后的显示与隐藏
        function cradio(func,ele1,ele2){
            var x=document.getElementsByName(func);  //获取所有name=func的元素
            for(var i=0;i<x.length;i++){ //对所有结果进行遍历,如果状态是被选中的,则将其选择取消
                if (x[i].checked==true)
                {
                    $("#"+ele1+i).removeClass("layui-hide")
                    if(func=='classify'){
                        if(i==0){
                            select_data('categories_table', ele2+i,'goods_classify','ID','all')
                        }else if(i==1){
                            select_data('categories_table', ele2+i,'goods_classify','ID','big')
                        }else if(i==2){
                            select_data('categories_table', ele2+i,'goods_classify','ID','small')
                        }
                    }
                }else{
                    $("#"+ele1+i).addClass("layui-hide")
                    $("#"+ele2+i).val("")
                }

            }
            //重渲染
            layui.use("form", function () {
                var form = layui.form;
                form.render();
            })
        }

下拉框数据绑定


//下拉框数据绑定->数据表名,下拉列表元素,option的title,option的value
function select_data(table,ele,col_name,col_id,condition){
    console.log(ele);
    layui.use('form', function() {
        $("#"+ele).empty();
        var form = layui.form;
        //单个下拉框绑定数据库
        $.ajax({
            type: "POST",
            url: "../../php/sell/select_data.php?table="+table,
            dataType: 'json',
            data: {
                condition:condition
            },
            success: function (data, status) {
                console.log(data);
                var list_data = data.data;
                console.log(data.data)
                $("#"+ele).append(new Option("可以搜索" ,''));
                for (var i = 0; i < list_data.length; i++) {
                    $("#"+ele).append(new Option( list_data[i][col_name],list_data[i][col_id]));
                }
                form.render();//菜单渲染 把内容加载进去
            }
        });
    })
}

数据请求,填充至柱状图

 $.ajax({
                    type: "POST",
                    url: '../../php/sell/sales_analysis.php',
                    dataType: 'json',
                    data: {
                        classify: classify,
                        category: category,
                        get_Func: get_Func,
                        date: date
                    },
                    success: function (data, status) {
                        console.log(data);
                        if(data.msg!=""){
                            alert(data.msg)
                        }
                        var x=data.data["x"];
                        var y=data.data["y"];

                        //柱状图
                        var myChart = echarts.init(document.getElementById('main'));
                        function fetchData(cb) {
                                cb({
                                    categories: x,
                                    data: y
                                });
                        }
                        // 初始 option
                        option = {
                            title: {
                                text: ''    //title
                            },
                            tooltip: {},
                            legend: {
                                data:['销量']
                            },
                            xAxis: {
                                axisLabel:{
                                    interval:0,
                                    rotate:40   //X轴角度旋转
                                },
                                data: []
                            },
                            yAxis: {},
                            series: [{
                                name: '销量',
                                type: 'bar',
                                data: []
                            }]
                        };

                        fetchData(function (data) {
                            myChart.setOption(option)
                            myChart.setOption({
                                xAxis: {
                                    data: data.categories
                                },
                                series: [{
                                    // 根据名字对应到相应的系列
                                    name: '销量',
                                    data: data.data
                                }]
                            });
                        });
                    }
                });

后端

后端主要是将X、Y轴的数据查找并传到前端

如果想看源码可以点击下方链接
码云地址:https://gitee.com/lcl_key/Daily
前端:sales_analysis.html
后端:sales_analysis.php
第一次写请大家多多指教,有什么优化或者bug,可以指出,不喜勿喷

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值