千帆竟发图的实现

这个作业属于哪个课程 2021春软件工程实践S班
这个作业要求在哪里 软件工程实践总结&个人技术博客
这个作业的目标 个人技术总结
其他参考文献 CSDN、《构建之法》

技术概述

利用后端获取数据的通过E-chart工具进行绘制折线图

技术详述

首先引入E-chart包

<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/echarts@5/dist/echarts.min.js"></script>

使用

function readyDate() {
        var option = {
            title: {
                text: '千帆竟发图'
            },
            tooltip: {
                trigger: 'axis',
                formatter: function (a, b, c) {
                    console.log(a)
                    // console.log(b)
                    // console.log(c)
                    const dataindex = a[0].dataIndex
                    console.log(dataindex)
                    console.log(pccserics)
                    // console.log(pccserics[a[0].dataIndex].account[dataindex])
                    return a[0].axisValue + '</br>' +pccserics[0].account[dataindex]+ '   ' + a[0].data;
                    // return ''
                }
            },
            legend: {
                data: sccoutname,
            },
            grid: {
                left: '3%',
                right: '4%',
                bottom: '15%',
                containLabel: true
            },
            toolbox: {
                feature: {
                    restore:{},
                    saveAsImage: {}
                }
            },
            xAxis: {
                type: 'category',
                boundaryGap: false,
                data: pccname
            },
            yAxis: {
                name: '分数',
                type: 'value',
                min:0,
                max:100,
                splitNumber:9
            },
            series: pccserics
        };
        if (option && typeof option === 'object') {
            myChart.setOption(option);
        }

    }

通过ajax获取后端数据

$.ajax({
        type: "post",
        async: true,
        url: "http://1.15.129.32:8888/student/chart",
        data: {},
        dataType: "json",
        success: function (result){
            if (result.code == 200) {
                var json  = {
                    name: '分数',
                    type: 'line',
                    data: [],
                    account: [],
                }
                for (var i = 0; i < result.data.length; i++) {
                    // sccoutname.push(result.data[i].stuAccount)
                    for (let j = 0; j < result.data[i].taskList.length; j++) {
                        sccoutname.push(result.data[i].stuAccount)
                        pccname.push(result.data[i].taskList[j].taskName)
                        json.data.push(result.data[i].taskList[j].score);
                        json.account.push(result.data[i].stuAccount);
                    }
                }
                pccserics.push(json);
            }
            myChart.hideLoading();
            readyDate();
            return

            if (result){
                for(var i =result.length-1;i>=0;i--){
                    stuAccounts.push(result[i].data.stuAccount);
                    taskScores.push(result[i].taskList.score);
                }
                myChart.hideLoading();
                myChart.setOption({
                    legend: {
                        name: '学号',
                        data: stuAccount
                    },
                    xAxis: {

                    },
                    series: [{
                        name: '分数',
                        data: taskScores
                    }]
                });
            }
        },
        error : function(errorMsg) {
            //请求失败时执行该函数
            alert("图表请求数据失败!");
            myChart.hideLoading();
        }


    })

流程图

遇到的问题和解决

用npm引入echart时出现莫名bug,最后选择直接引入js成功解决。
刚开始对ajax不太熟悉,最后在网上观看视频学会。

总结

在基础方面还是需要多花时间,只有先打好基础才能事半功倍,否则会把进度拖得很慢,这次任务也算是积累了一些经验,能够让我在下次遇到困难时更迅速的找到解决办法。

参考资料的文献

利用ajax传递数组及后台接收的方法详解
echarts折线图,使用ajax动态加载数据
黑马程序员前端基础教程Ajax零基础入门

posted @ 2021-06-28 22:27  黄伟为  阅读(66)  评论(2编辑  收藏  举报