解决Echarts窗口自适应失效问题

Posted chuanqi1995

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决Echarts窗口自适应失效问题相关的知识,希望对你有一定的参考价值。

1.之前的窗口自适应关键代码(window.onresize)分别写到了好几个function中,窗口自适应失效了。代码如下:

$(function() 
    // 加载金额、油量、加油笔数、税额
    $.ajax(
        type:"POST",
        url:"Index!getOneAndAll.action",
        data: "sjkd" : 10 , "startTime" : HOMEDATEYM,
        dataType:"json",
        success: function(data)
            // 如果返回是json数据为null,则退出此方法
            if(null == data)
                return;
            
            if(null != data.total)
                var je_total = formatThousand2(data.total.je);
                var yl_total = formatThousand2(data.total.yl);
                var jybs_total = formatThousand(data.total.jybs);
                var se_total = formatThousand2(data.total.se);
                je_total = je_total.replace(".","<span class=‘point‘>.")+"</span>";
                yl_total = yl_total.replace(".","<span class=‘point‘>.")+"</span>";
                se_total =  se_total.replace(".","<span class=‘point‘>.")+"</span>";
                $("#je_total").html(je_total);
                $("#yl_total").html(yl_total);
                $("#jybs_total").html (jybs_total);
                $("#se_total").html(se_total);
            else
                $("#je_total").html("0<span class=‘point‘>.00</span>");
                $("#yl_total").html("0<span class=‘point‘>.00</span>");
                $("#jybs_total").html("0");
                $("#se_total").html("0<span class=‘point‘>.00</span>");
            
            createCollectEcharts1(data);
        ,
        error:function(data)
            alert("获取首页数据失败!");
        
    );
    
    // 加载Top10
    $.ajax(
        type:"POST",
        url:"Index!getTopBar.action",
        data: "sjkd" : 10 , "startTime" : HOMEDATEYM , "topKj" : 10 , "topNum" : 10,
        dataType:"json",
        success: function(data)
            // 如果返回是json数据为null,则退出此方法
            if(null == data)
                return;
            
            createCollectEcharts2(data);
        ,
        error:function(data)
            alert("获取首页数据失败!");
        
    );
    
    // 加载摘挂枪分析
    $.ajax(
        type:"POST",
        url:"Index!getZgqfxScatter.action",
        data: "sjkd" : 10 , "startTime" : HOMEDATEYM,
        dataType:"json",
        success: function(data)
            // 如果返回是json数据为null,则退出此方法
            if(null == data)
                return;
            
            createCollectEcharts3(data);
        ,
        error:function(data)
            alert("获取首页数据失败!");
        
    );
);

function createCollectEcharts1(data)
    var xAxisData = [];
    var jeSeriesData = [];
    var ylSeriesData = [];
    var jybsSeriesData = [];
    var seSeriesData = [];
    
    for (var i = 0, size = data.dataList.length; i < size; i++) 
        xAxisData.push(data.dataList[i].sjjc);
        jeSeriesData.push(data.dataList[i].je);
        ylSeriesData.push(data.dataList[i].yl);
        jybsSeriesData.push(data.dataList[i].jybs);
        seSeriesData.push(data.dataList[i].se);
    
    
    var data = [‘中石油102‘, ‘大平五一路‘, ‘中通‘, ‘和源‘, ‘德月‘, ‘铭磊‘, ‘高桥‘, ‘大平汽贸城‘, ‘天盈‘, ‘宝光‘, ‘燕港‘, ‘顺达‘, ‘长城‘];
    // 散点图声明
    var baseNumber = 45000;
    var variableNumber = 0;
    
    // 指定图表的配置项和数据
    var textBr = function(value) 
        // debugger
        var ret = ""; // 拼接加\n返回的类目项
        var maxLength = 3; // 每项显示文字个数
        var valLength = value.length; // X轴类目项的文字个数
        var rowN = Math.ceil(valLength / maxLength); // 类目项需要换行的行数
        if (rowN > 1) // 如果类目项的文字大于3,
        
            for (var i = 0; i < rowN; i++) 
                var temp = ""; // 每次截取的字符串
                var start = i * maxLength; // 开始截取的位置
                var end = start + maxLength; // 结束截取的位置
                // 这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧
                temp = value.substring(start, end) + "\n";
                ret += temp; // 凭借最终的字符串
            
            return ret;
         else 
            return value;
        
    
    
    var myChart1, myChart2, myChart3, myChart4;
    
    // 基于准备好的dom,初始化echarts实例
    if ($(‘#echarts1‘).length > 0) 
        myChart1 = echarts.init(document.getElementById(‘echarts1‘));
    
    if ($(‘#echarts2‘).length > 0) 
        myChart2 = echarts.init(document.getElementById(‘echarts2‘));
    
    if ($(‘#echarts3‘).length > 0) 
        myChart3 = echarts.init(document.getElementById(‘echarts3‘));
    
    if ($(‘#echarts4‘).length > 0) 
        myChart4 = echarts.init(document.getElementById(‘echarts4‘));
    
    
    /* 第一个图表的配置--月销售额 --柱状图 */
    var option1 = 
        color: [‘#01a1ff‘],
        tooltip: 
            trigger: ‘axis‘,
            axisPointer:  // 坐标轴指示器,坐标轴触发有效
                type: ‘shadow‘ // 默认为直线,可选为:‘line‘ | ‘shadow‘
            ,
               formatter:function(params)
                   var res = params[0].name;
                   for (var i = 0; i < params.length; i++) 
                       res += "<br>"+params[i].marker+params[i].seriesName+":"+formatThousand2(params[i].data);
                
                return res;
               
        ,
        dataZoom: [
            type: ‘inside‘,
        ],
        grid: 
            top: ‘30‘,
            left: ‘1%‘,
            right: ‘1%‘,
            bottom: ‘1%‘,
            containLabel: true,
        ,
        xAxis: [
            data: xAxisData,
            axisTick: 
                show: false,
            ,
            axisLabel: 
                formatter: function(value) 
                    return textBr(value);
                
            
        ],
        yAxis: [
            type: ‘value‘,
            axisTick: 
                show: false,
            ,
        ],
        series: [
            name: ‘本月销售额‘,
            type: ‘bar‘,
            barWidth: ‘40%‘,
            label: 
                normal: 
                    show: true,
                    position: ‘top‘,
                    color: ‘#424242‘,
                    fontSize: 12,
                    formatter: function(params) 
                        return formatThousand2(params.value);
                    
                
            ,
            data: jeSeriesData
        ],

    ;
    /* 第二个图表的配置--销售量 --折线图 */
    var option2 = 
        color: [‘#ffa801‘],
        dataZoom: [
            type: ‘inside‘,
        ],
        tooltip: 
            trigger: ‘axis‘,
            axisPointer:  // 坐标轴指示器,坐标轴触发有效
                type: ‘line‘ // 默认为直线,可选为:‘line‘ | ‘shadow‘
            ,
               formatter:function(params)
                   var res = params[0].name;
                   for (var i = 0; i < params.length; i++) 
                       res += "<br>"+params[i].marker+params[i].seriesName+":"+formatThousand2(params[i].data);
                
                return res;
               
        ,
        grid: 
            top: ‘30‘,
            left: ‘1%‘,
            right: ‘1%‘,
            bottom: ‘1%‘,
            containLabel: true
        ,
        xAxis: [
            data: xAxisData,
            axisTick: 
                show: false,
            ,
            axisLabel: 
                formatter: function(value) 
                    return textBr(value);
                
            

        ],
        yAxis: [
            type: ‘value‘,
            axisTick: 
                show: false,
            ,
        ],
        series: [
            name: ‘本月销售量‘,
            type: ‘line‘,
            label: 
                normal: 
                    show: true,
                    position: ‘top‘,
                    color: ‘#424242‘,
                    fontSize: 12,
                    formatter: function(params) 
                        return formatThousand2(params.value);
                    
                ,
            ,
            clipOverflow: false,
            symbolSize: 10,
            data: ylSeriesData,
            areaStyle: 
                color: 
                    type: ‘linear‘,
                    x: 0,
                    y: 0,
                    x2: 0,
                    y2: 1,
                    colorStops: [
                        offset: 0,
                        color: ‘rgba(255,168,1,0.8)‘ // 0% 处的颜色
                    , 
                        offset: 1,
                        color: ‘rgba(255,168,1,0.2)‘ // 100% 处的颜色
                    ],
                
            
        ]
    ;
    /* 第三个图表的配置--加油笔数 --柱状图 */
    var option3 = 
        color: [‘#64bf0f‘],
        tooltip: 
            trigger: ‘axis‘,
            axisPointer:  // 坐标轴指示器,坐标轴触发有效
                type: ‘shadow‘ // 默认为直线,可选为:‘line‘ | ‘shadow‘
            ,
               formatter:function(params)
                   var res = params[0].name;
                   for (var i = 0; i < params.length; i++) 
                       res += "<br>"+params[i].marker+params[i].seriesName+":"+formatThousand(params[i].data);
                
                return res;
               
        ,
        dataZoom: [
            type: ‘inside‘,
        ],
        grid: 
            top: ‘30‘,
            left: ‘1%‘,
            right: ‘1%‘,
            bottom: ‘1%‘,
            containLabel: true,
        ,
        xAxis: [
            data: xAxisData,
            axisTick: 
                show: false,
            ,
            axisLabel: 
                formatter: function(value) 
                    return textBr(value);
                
            
        ],
        yAxis: [
            type: ‘value‘,
            axisTick: 
                show: false,
            ,
        ],
        series: [
            name: ‘本月加油笔数‘,
            type: ‘bar‘,
            barWidth: ‘26%‘,
            data: jybsSeriesData,
            itemStyle: 
                barBorderRadius: [30, 30, 0, 0],
            ,
            label: 
                show: true,
                position: ‘top‘,
                color: ‘#424242‘,
                fontSize: 12,
                formatter: function(params) 
                    return formatThousand(params.value);
                
            
        ]
    ;
    /* 第四个图表的配置--税额 --柱状图 */
    var option4 = 
        color: [‘#ea3c33‘],
        tooltip: 
            trigger: ‘axis‘,
            axisPointer:  // 坐标轴指示器,坐标轴触发有效
                type: ‘shadow‘ // 默认为直线,可选为:‘line‘ | ‘shadow‘
            ,
               formatter:function(params)
                   var res = params[0].name;
                   for (var i = 0; i < params.length; i++) 
                       res += "<br>"+params[i].marker+params[i].seriesName+":"+formatThousand2(params[i].data);
                
                return res;
               
        ,
        dataZoom: [
            type: ‘inside‘,
        ],
        grid: 
            top: ‘30‘,
            left: ‘1%‘,
            right: ‘1%‘,
            bottom: ‘1%‘,
            containLabel: true,
        ,
        xAxis: [
            data: xAxisData,
            axisTick: 
                show: false,
            ,
            axisLabel: 
                formatter: function(value) 
                    return textBr(value);
                
            
        ],
        yAxis: [
            axisTick: 
                show: false,
            ,
        ],
        series: [
            name: ‘本月销售额‘,
            type: ‘bar‘,
            barWidth: ‘30%‘,
            label: 
                normal: 
                    show: true,
                    position: ‘top‘,
                    rotate: ‘20‘,
                    color: ‘#424242‘,
                    fontSize: 12,
                    formatter: function(params) 
                        return formatThousand2(params.value);
                    
                
            ,
            data: seSeriesData
        ]
    ;
    
    myChart1 && myChart1.setOption(option1, true);
    myChart2 && myChart2.setOption(option2, true);
    myChart3 && myChart3.setOption(option3, true);
    myChart4 && myChart4.setOption(option4, true);
    
    /* 窗口自适应,关键代码 */
    window.onresize = function() 
        if ($(‘#echarts1‘).length > 0) 
            myChart1.resize();
        
        if ($(‘#echarts2‘).length > 0) 
            myChart2.resize();
        
        if ($(‘#echarts3‘).length > 0) 
            myChart3.resize();
        
        if ($(‘#echarts4‘).length > 0) 
            myChart4.resize();
        
    ;
    
    // 解决tab切换不显示问题 在加载窗口后重新渲染。
    $(‘a[data-toggle="tab"]‘).on(‘shown.bs.tab‘, function(e) 
        if ($(‘#echarts1‘).length > 0) 
            myChart1.resize();
        
        if ($(‘#echarts2‘).length > 0) 
            myChart2.resize();
        
        if ($(‘#echarts3‘).length > 0) 
            myChart3.resize();
        
        if ($(‘#echarts4‘).length > 0) 
            myChart4.resize();
        
    );


function createCollectEcharts2(data)
    var color1 = "#EA1E1E";
    var color2 = "#ED8913";
    var color3 = "#57B115";
    var xAxisData = [];
    var seriesData = [];
    var series = [];
    
    for (var i = 0, size = data.dataList.length; i < size; i++) 
        xAxisData.push(data.dataList[i].sjjc);
    
    
    for (var i = 0, size = data.dataList.length; i < size; i++) 
        if(i == 0)
            seriesData.push(
                value : data.dataList[i].bq_zje,
                itemStyle : color: color1
            );
        else if(i == 1)
            seriesData.push(
                value : data.dataList[i].bq_zje,
                itemStyle : color: color2
            );
        else if(i == 2)
            seriesData.push(
                value : data.dataList[i].bq_zje,
                itemStyle : color: color3
            );
        else
            seriesData.push(data.dataList[i].bq_zje);
        
        
    
    
    series.push(
        
            name: ‘总销售额‘,
            type: ‘bar‘,
            barWidth: ‘22%‘,
            label: 
                normal: 
                    show: false,
                    position: ‘top‘,
                    color: ‘#424242‘,
                    fontSize: 12,
                
            ,
            data: seriesData
        
    );
    
    
    // 指定图表的配置项和数据
    var textBr = function(value) 
        // debugger
        var ret = ""; // 拼接加\n返回的类目项
        var maxLength = 3; // 每项显示文字个数
        var valLength = value.length; // X轴类目项的文字个数
        var rowN = Math.ceil(valLength / maxLength); // 类目项需要换行的行数
        if (rowN > 1) // 如果类目项的文字大于3,
        
            for (var i = 0; i < rowN; i++) 
                var temp = ""; // 每次截取的字符串
                var start = i * maxLength; // 开始截取的位置
                var end = start + maxLength; // 结束截取的位置
                // 这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧
                temp = value.substring(start, end) + "\n";
                ret += temp; // 凭借最终的字符串
            
            return ret;
         else 
            return value;
        
    
    
    var myChart5;
    
    // 基于准备好的dom,初始化echarts实例
    if ($(‘#echarts5‘).length > 0) 
        myChart5 = echarts.init(document.getElementById(‘echarts5‘));
    
    
    /* 第5个图表的配置--top分析排名 --柱状图 */
    var option5 = 
        color: [‘#01a1ff‘],
        dataZoom: [
            type: ‘inside‘,
        ],
        tooltip: 
            trigger: ‘axis‘,
            axisPointer: 
                type: ‘shadow‘
            ,
               formatter:function(params)
                   var res = params[0].name;
                   for (var i = 0; i < params.length; i++) 
                       res += "<br>"+params[i].marker+params[i].seriesName+":"+formatThousand2(params[i].data);
                
                return res;
               
        ,
        grid: 
            top: ‘10‘,
            left: ‘1%‘,
            right: ‘1%‘,
            bottom: ‘20‘,
            containLabel: true,
        ,
        xAxis: [
            data: xAxisData,
            axisTick: 
                show: false,
            ,
            axisLabel: 
                formatter: function(value) 
                    return textBr(value);
                
            
        ],
        yAxis: [
            type: ‘value‘,
            axisTick: 
                show: false,
            ,
        ],
        series: series,
    ;
    
    myChart5 && myChart5.setOption(option5, true);
    
    /* 窗口自适应,关键代码 */
    window.onresize = function() 
        if ($(‘#echarts5‘).length > 0) 
            myChart5.resize();
        
    ;


function createCollectEcharts3(data)
    var zgqb;
    var titleText;
    var zgqsSeriesdata = [];
    var jybsSeriesdata = [];
    if(null != data.total)
        zgqb = formatPercent2(data.total.zgqb);
        zgqsSeriesdata.push(data.total.zgqs);
        jybsSeriesdata.push(data.total.jybs);
    
    titleText = "摘挂枪比:" + zgqb;
    
    
    // 散点图声明
    var baseNumber = 45000;
    var variableNumber = 0;
    
    var myChart6;
    
    if ($(‘#echarts6‘).length > 0) 
        myChart6 = echarts.init(document.getElementById(‘echarts6‘));
    
    
    /* 第6个图表的配置--摘挂枪分析 --单轴散点图 */
    var option6 = 
        title: 
            //text: ‘摘挂枪比:60.00%‘,
            text: titleText,
            left: ‘center‘,
            bottom: ‘20‘,
            textStyle: 
                fontSize: 13,
                fontWeight: ‘bold‘,
                color: [‘#ffb888‘],
                lineHeight: 12,
            ,
        ,

        legend: 
            data: [‘摘挂枪数‘, ‘加油笔数‘]
        ,
        singleAxis: 
            type: ‘category‘,
            top: ‘70%‘,
            axisLine: 
                show: false
            ,
            axisTick: 
                show: false
            
        ,
        tooltip: 
            trigger: ‘item‘,
        ,
        series: [
            type: ‘scatter‘,
            name: ‘摘挂枪数‘,
            coordinateSystem: ‘singleAxis‘,
            //data: [300000],
            data: zgqsSeriesdata,
            symbolSize: function(value) 
                variableNumber = value;
                return Math.sqrt(baseNumber) * .8
            ,
            symbolOffset: [0, ‘-50%‘],
            itemStyle: 
                opacity: 1,
                color: ‘#ac90cc‘
            ,
            label: 
                show: true,
                position: [‘38%‘, ‘7%‘],
                formatter: ‘c‘,
                color: ‘#fff‘,
                formatter: function(params) 
                    return formatThousand(params.value);
                
            
        , 
            type: ‘scatter‘,
            name: ‘加油笔数‘,
            coordinateSystem: ‘singleAxis‘,
            //data: [214400],
            data: jybsSeriesdata,
            symbolSize: function(value) 
                if (value >= variableNumber)
                    return Math.sqrt(baseNumber) * .8
                else
                    return Math.sqrt(value / variableNumber * baseNumber) * .8
            ,
            symbolOffset: [0, ‘-50%‘],
            itemStyle: 
                opacity: 1,
                color: ‘#ffb888‘
            ,
            label: 
                show: true,
                position: ‘inside‘,
                formatter: ‘c‘,
                color: ‘#fff‘,
                formatter: function(params) 
                    return formatThousand(params.value);
                
            
        ]
    ;
    
    myChart6 && myChart6.setOption(option6, true);
    
    /* 窗口自适应,关键代码 */
    window.onresize = function() 
        if ($(‘#echarts6‘).length > 0) 
            myChart6.resize();
        
    ;

2.之后将窗口自适应关键代码一起提到了最下边就好使了。代码如下:

$(function() 
    // 加载金额、油量、加油笔数、税额
    $.ajax(
        type:"POST",
        url:"Index!getOneAndAll.action",
        data: "sjkd" : 10 , "startTime" : HOMEDATEYM,
        dataType:"json",
        success: function(data)
            // 如果返回是json数据为null,则退出此方法
            if(null == data)
                return;
            
            if(null != data.total)
                var je_total = formatThousand2(data.total.je);
                var yl_total = formatThousand2(data.total.yl);
                var jybs_total = formatThousand(data.total.jybs);
                var se_total = formatThousand2(data.total.se);
                je_total = je_total.replace(".","<span class=‘point‘>.")+"</span>";
                yl_total = yl_total.replace(".","<span class=‘point‘>.")+"</span>";
                se_total =  se_total.replace(".","<span class=‘point‘>.")+"</span>";
                $("#je_total").html(je_total);
                $("#yl_total").html(yl_total);
                $("#jybs_total").html (jybs_total);
                $("#se_total").html(se_total);
            else
                $("#je_total").html("0<span class=‘point‘>.00</span>");
                $("#yl_total").html("0<span class=‘point‘>.00</span>");
                $("#jybs_total").html("0");
                $("#se_total").html("0<span class=‘point‘>.00</span>");
            
            createCollectEcharts1(data);
        ,
        error:function(data)
            alert("获取首页数据失败!");
        
    );
    
    // 加载Top10
    $.ajax(
        type:"POST",
        url:"Index!getTopBar.action",
        data: "sjkd" : 10 , "startTime" : HOMEDATEYM , "topKj" : 10 , "topNum" : 10,
        dataType:"json",
        success: function(data)
            // 如果返回是json数据为null,则退出此方法
            if(null == data)
                return;
            
            createCollectEcharts2(data);
        ,
        error:function(data)
            alert("获取首页数据失败!");
        
    );
    
    // 加载摘挂枪分析
    $.ajax(
        type:"POST",
        url:"Index!getZgqfxScatter.action",
        data: "sjkd" : 10 , "startTime" : HOMEDATEYM,
        dataType:"json",
        success: function(data)
            // 如果返回是json数据为null,则退出此方法
            if(null == data)
                return;
            
            createCollectEcharts3(data);
        ,
        error:function(data)
            alert("获取首页数据失败!");
        
    );
    
);
var myChart1, myChart2, myChart3, myChart4;
function createCollectEcharts1(data)
    var xAxisData = [];
    var jeSeriesData = [];
    var ylSeriesData = [];
    var jybsSeriesData = [];
    var seSeriesData = [];
    
    for (var i = 0, size = data.dataList.length; i < size; i++) 
        xAxisData.push(data.dataList[i].sjjc);
        jeSeriesData.push(data.dataList[i].je);
        ylSeriesData.push(data.dataList[i].yl);
        jybsSeriesData.push(data.dataList[i].jybs);
        seSeriesData.push(data.dataList[i].se);
    
    
    var data = [‘中石油102‘, ‘大平五一路‘, ‘中通‘, ‘和源‘, ‘德月‘, ‘铭磊‘, ‘高桥‘, ‘大平汽贸城‘, ‘天盈‘, ‘宝光‘, ‘燕港‘, ‘顺达‘, ‘长城‘];
    // 散点图声明
    var baseNumber = 45000;
    var variableNumber = 0;
    
    // 指定图表的配置项和数据
    var textBr = function(value) 
        // debugger
        var ret = ""; // 拼接加\n返回的类目项
        var maxLength = 3; // 每项显示文字个数
        var valLength = value.length; // X轴类目项的文字个数
        var rowN = Math.ceil(valLength / maxLength); // 类目项需要换行的行数
        if (rowN > 1) // 如果类目项的文字大于3,
        
            for (var i = 0; i < rowN; i++) 
                var temp = ""; // 每次截取的字符串
                var start = i * maxLength; // 开始截取的位置
                var end = start + maxLength; // 结束截取的位置
                // 这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧
                temp = value.substring(start, end) + "\n";
                ret += temp; // 凭借最终的字符串
            
            return ret;
         else 
            return value;
        
    
    
    
    // 基于准备好的dom,初始化echarts实例
    if ($(‘#echarts1‘).length > 0) 
        myChart1 = echarts.init(document.getElementById(‘echarts1‘));
    
    if ($(‘#echarts2‘).length > 0) 
        myChart2 = echarts.init(document.getElementById(‘echarts2‘));
    
    if ($(‘#echarts3‘).length > 0) 
        myChart3 = echarts.init(document.getElementById(‘echarts3‘));
    
    if ($(‘#echarts4‘).length > 0) 
        myChart4 = echarts.init(document.getElementById(‘echarts4‘));
    
    
    /* 第一个图表的配置--月销售额 --柱状图 */
    var option1 = 
        color: [‘#01a1ff‘],
        tooltip: 
            trigger: ‘axis‘,
            axisPointer:  // 坐标轴指示器,坐标轴触发有效
                type: ‘shadow‘ // 默认为直线,可选为:‘line‘ | ‘shadow‘
            ,
               formatter:function(params)
                   var res = params[0].name;
                   for (var i = 0; i < params.length; i++) 
                       res += "<br>"+params[i].marker+params[i].seriesName+":"+formatThousand2(params[i].data);
                
                return res;
               
        ,
        dataZoom: [
            type: ‘inside‘,
        ],
        grid: 
            top: ‘30‘,
            left: ‘1%‘,
            right: ‘1%‘,
            bottom: ‘1%‘,
            containLabel: true,
        ,
        xAxis: [
            data: xAxisData,
            axisTick: 
                show: false,
            ,
            axisLabel: 
                formatter: function(value) 
                    return textBr(value);
                
            
        ],
        yAxis: [
            type: ‘value‘,
            axisTick: 
                show: false,
            ,
        ],
        series: [
            name: ‘本月销售额‘,
            type: ‘bar‘,
            barWidth: ‘30%‘,
            label: 
                normal: 
                    show: true,
                    position: ‘top‘,
                    color: ‘#424242‘,
                    fontSize: 12,
                    formatter: function(params) 
                        return formatThousand2(params.value);
                    
                
            ,
            data: jeSeriesData
        ],

    ;
    /* 第二个图表的配置--销售量 --折线图 */
    var option2 = 
        color: [‘#ffa801‘],
        dataZoom: [
            type: ‘inside‘,
        ],
        tooltip: 
            trigger: ‘axis‘,
            axisPointer:  // 坐标轴指示器,坐标轴触发有效
                type: ‘line‘ // 默认为直线,可选为:‘line‘ | ‘shadow‘
            ,
               formatter:function(params)
                   var res = params[0].name;
                   for (var i = 0; i < params.length; i++) 
                       res += "<br>"+params[i].marker+params[i].seriesName+":"+formatThousand2(params[i].data);
                
                return res;
               
        ,
        grid: 
            top: ‘30‘,
            left: ‘1%‘,
            right: ‘1%‘,
            bottom: ‘1%‘,
            containLabel: true
        ,
        xAxis: [
            data: xAxisData,
            axisTick: 
                show: false,
            ,
            axisLabel: 
                formatter: function(value) 
                    return textBr(value);
                
            

        ],
        yAxis: [
            type: ‘value‘,
            axisTick: 
                show: false,
            ,
        ],
        series: [
            name: ‘本月销售量‘,
            type: ‘line‘,
            label: 
                normal: 
                    show: true,
                    position: ‘top‘,
                    color: ‘#424242‘,
                    fontSize: 12,
                    formatter: function(params) 
                        return formatThousand2(params.value);
                    
                ,
            ,
            clipOverflow: false,
            symbolSize: 10,
            data: ylSeriesData,
            areaStyle: 
                color: 
                    type: ‘linear‘,
                    x: 0,
                    y: 0,
                    x2: 0,
                    y2: 1,
                    colorStops: [
                        offset: 0,
                        color: ‘rgba(255,168,1,0.8)‘ // 0% 处的颜色
                    , 
                        offset: 1,
                        color: ‘rgba(255,168,1,0.2)‘ // 100% 处的颜色
                    ],
                
            
        ]
    ;
    /* 第三个图表的配置--加油笔数 --柱状图 */
    var option3 = 
        color: [‘#64bf0f‘],
        tooltip: 
            trigger: ‘axis‘,
            axisPointer:  // 坐标轴指示器,坐标轴触发有效
                type: ‘shadow‘ // 默认为直线,可选为:‘line‘ | ‘shadow‘
            ,
               formatter:function(params)
                   var res = params[0].name;
                   for (var i = 0; i < params.length; i++) 
                       res += "<br>"+params[i].marker+params[i].seriesName+":"+formatThousand(params[i].data);
                
                return res;
               
        ,
        dataZoom: [
            type: ‘inside‘,
        ],
        grid: 
            top: ‘30‘,
            left: ‘1%‘,
            right: ‘1%‘,
            bottom: ‘1%‘,
            containLabel: true,
        ,
        xAxis: [
            data: xAxisData,
            axisTick: 
                show: false,
            ,
            axisLabel: 
                formatter: function(value) 
                    return textBr(value);
                
            
        ],
        yAxis: [
            type: ‘value‘,
            axisTick: 
                show: false,
            ,
        ],
        series: [
            name: ‘本月加油笔数‘,
            type: ‘bar‘,
            barWidth: ‘26%‘,
            data: jybsSeriesData,
            itemStyle: 
                barBorderRadius: [30, 30, 0, 0],
            ,
            label: 
                show: true,
                position: ‘top‘,
                color: ‘#424242‘,
                fontSize: 12,
                formatter: function(params) 
                    return formatThousand(params.value);
                
            
        ]
    ;
    /* 第四个图表的配置--税额 --柱状图 */
    var option4 = 
        color: [‘#ea3c33‘],
        tooltip: 
            trigger: ‘axis‘,
            axisPointer:  // 坐标轴指示器,坐标轴触发有效
                type: ‘shadow‘ // 默认为直线,可选为:‘line‘ | ‘shadow‘
            ,
               formatter:function(params)
                   var res = params[0].name;
                   for (var i = 0; i < params.length; i++) 
                       res += "<br>"+params[i].marker+params[i].seriesName+":"+formatThousand2(params[i].data);
                
                return res;
               
        ,
        dataZoom: [
            type: ‘inside‘,
        ],
        grid: 
            top: ‘30‘,
            left: ‘1%‘,
            right: ‘1%‘,
            bottom: ‘1%‘,
            containLabel: true,
        ,
        xAxis: [
            data: xAxisData,
            axisTick: 
                show: false,
            ,
            axisLabel: 
                formatter: function(value) 
                    return textBr(value);
                
            
        ],
        yAxis: [
            axisTick: 
                show: false,
            ,
        ],
        series: [
            name: ‘本月销售额‘,
            type: ‘bar‘,
            barWidth: ‘30%‘,
            label: 
                normal: 
                    show: true,
                    position: ‘top‘,
                    rotate: ‘20‘,
                    color: ‘#424242‘,
                    fontSize: 12,
                    formatter: function(params) 
                        return formatThousand2(params.value);
                    
                
            ,
            data: seSeriesData
        ]
    ;
    
    myChart1 && myChart1.setOption(option1, true);
    myChart2 && myChart2.setOption(option2, true);
    myChart3 && myChart3.setOption(option3, true);
    myChart4 && myChart4.setOption(option4, true);
    
    
    
    // 解决tab切换不显示问题 在加载窗口后重新渲染。
    $(‘a[data-toggle="tab"]‘).on(‘shown.bs.tab‘, function(e) 
        if ($(‘#echarts1‘).length > 0) 
            myChart1.resize();
        
        if ($(‘#echarts2‘).length > 0) 
            myChart2.resize();
        
        if ($(‘#echarts3‘).length > 0) 
            myChart3.resize();
        
        if ($(‘#echarts4‘).length > 0) 
            myChart4.resize();
        
    );

var myChart5;
function createCollectEcharts2(data)
    var color1 = "#EA1E1E";
    var color2 = "#ED8913";
    var color3 = "#57B115";
    var xAxisData = [];
    var seriesData = [];
    var series = [];
    
    for (var i = 0, size = data.dataList.length; i < size; i++) 
        xAxisData.push(data.dataList[i].sjjc);
    
    
    for (var i = 0, size = data.dataList.length; i < size; i++) 
        if(i == 0)
            seriesData.push(
                value : data.dataList[i].bq_zje,
                itemStyle : color: color1
            );
        else if(i == 1)
            seriesData.push(
                value : data.dataList[i].bq_zje,
                itemStyle : color: color2
            );
        else if(i == 2)
            seriesData.push(
                value : data.dataList[i].bq_zje,
                itemStyle : color: color3
            );
        else
            seriesData.push(data.dataList[i].bq_zje);
        
        
    
    
    series.push(
        
            name: ‘总销售额‘,
            type: ‘bar‘,
            barWidth: ‘36%‘,
            label: 
                normal: 
                    show: false,
                    position: ‘top‘,
                    color: ‘#424242‘,
                    fontSize: 12,
                
            ,
            data: seriesData
        
    );
    
    
    // 指定图表的配置项和数据
    var textBr = function(value) 
        // debugger
        var ret = ""; // 拼接加\n返回的类目项
        var maxLength = 3; // 每项显示文字个数
        var valLength = value.length; // X轴类目项的文字个数
        var rowN = Math.ceil(valLength / maxLength); // 类目项需要换行的行数
        if (rowN > 1) // 如果类目项的文字大于3,
        
            for (var i = 0; i < rowN; i++) 
                var temp = ""; // 每次截取的字符串
                var start = i * maxLength; // 开始截取的位置
                var end = start + maxLength; // 结束截取的位置
                // 这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧
                temp = value.substring(start, end) + "\n";
                ret += temp; // 凭借最终的字符串
            
            return ret;
         else 
            return value;
        
    
    

    
    // 基于准备好的dom,初始化echarts实例
    if ($(‘#echarts5‘).length > 0) 
        myChart5 = echarts.init(document.getElementById(‘echarts5‘));
    
    
    /* 第5个图表的配置--top分析排名 --柱状图 */
    var option5 = 
        color: [‘#01a1ff‘],
        dataZoom: [
            type: ‘inside‘,
        ],
        tooltip: 
            trigger: ‘axis‘,
            axisPointer: 
                type: ‘shadow‘
            ,
               formatter:function(params)
                   var res = params[0].name;
                   for (var i = 0; i < params.length; i++) 
                       res += "<br>"+params[i].marker+params[i].seriesName+":"+formatThousand2(params[i].value);
                
                return res;
               
        ,
        grid: 
            top: ‘10‘,
            left: ‘1%‘,
            right: ‘1%‘,
            bottom: ‘20‘,
            containLabel: true,
        ,
        xAxis: [
            data: xAxisData,
            axisTick: 
                show: false,
            ,
            axisLabel: 
                formatter: function(value) 
                    return textBr(value);
                
            
        ],
        yAxis: [
            type: ‘value‘,
            axisTick: 
                show: false,
            ,
        ],
        series: series,
    ;
    
    myChart5 && myChart5.setOption(option5, true);

var myChart6;
function createCollectEcharts3(data)
    var zgqb;
    var titleText;
    var zgqsSeriesdata = [];
    var jybsSeriesdata = [];
    if(null != data.total)
        zgqb = formatPercent2(data.total.zgqb);
        zgqsSeriesdata.push(data.total.zgqs);
        jybsSeriesdata.push(data.total.jybs);
    
    titleText = "摘挂枪比:" + zgqb;
    
    
    // 散点图声明
    var baseNumber = 45000;
    var variableNumber = 0;
    
    if ($(‘#echarts6‘).length > 0) 
        myChart6 = echarts.init(document.getElementById(‘echarts6‘));
    
    
    /* 第6个图表的配置--摘挂枪分析 --单轴散点图 */
    var option6 = 
        title: 
            //text: ‘摘挂枪比:60.00%‘,
            text: titleText,
            left: ‘center‘,
            bottom: ‘20‘,
            textStyle: 
                fontSize: 13,
                fontWeight: ‘bold‘,
                color: [‘#ffb888‘],
                lineHeight: 12,
            ,
        ,

        legend: 
            data: [‘摘挂枪数‘, ‘加油笔数‘]
        ,
        singleAxis: 
            type: ‘category‘,
            top: ‘70%‘,
            axisLine: 
                show: false
            ,
            axisTick: 
                show: false
            
        ,
        tooltip: 
            trigger: ‘item‘,
        ,
        series: [
            type: ‘scatter‘,
            name: ‘摘挂枪数‘,
            coordinateSystem: ‘singleAxis‘,
            //data: [300000],
            data: zgqsSeriesdata,
            symbolSize: function(value) 
                variableNumber = value;
                return Math.sqrt(baseNumber) * .8
            ,
            symbolOffset: [0, ‘-50%‘],
            itemStyle: 
                opacity: 1,
                color: ‘#ac90cc‘
            ,
            label: 
                show: true,
                position: [‘38%‘, ‘7%‘],
                formatter: ‘c‘,
                color: ‘#fff‘,
                formatter: function(params) 
                    return formatThousand(params.value);
                
            
        , 
            type: ‘scatter‘,
            name: ‘加油笔数‘,
            coordinateSystem: ‘singleAxis‘,
            //data: [214400],
            data: jybsSeriesdata,
            symbolSize: function(value) 
                if (value >= variableNumber)
                    return Math.sqrt(baseNumber) * .8
                else
                    return Math.sqrt(value / variableNumber * baseNumber) * .8
            ,
            symbolOffset: [0, ‘-50%‘],
            itemStyle: 
                opacity: 1,
                color: ‘#ffb888‘
            ,
            label: 
                show: true,
                position: ‘inside‘,
                formatter: ‘c‘,
                color: ‘#fff‘,
                formatter: function(params) 
                    return formatThousand(params.value);
                
            
        ]
    ;
    myChart6 && myChart6.setOption(option6, true);

/* 窗口自适应,关键代码 */
window.onresize = function() 
    if ($(‘#echarts1‘).length > 0) 
        myChart1.resize();
    
    if ($(‘#echarts2‘).length > 0) 
        myChart2.resize();
    
    if ($(‘#echarts3‘).length > 0) 
        myChart3.resize();
    
    if ($(‘#echarts4‘).length > 0) 
        myChart4.resize();
    
    if ($(‘#echarts5‘).length > 0) 
        myChart5.resize();
    
    if ($(‘#echarts6‘).length > 0) 
        myChart6.resize();
    
;

 

以上是关于解决Echarts窗口自适应失效问题的主要内容,如果未能解决你的问题,请参考以下文章

Echarts图表变形与自适应解决方案

echarts自适应

echarts学习总结:一个页面存在多个echarts图形,图形自适应窗口大小

eCharts 多个图表自适应窗口大小

Echarts中窗口自适应

echarts图表初始大小问题及echarts随窗口变化自适应