//根据选择查看方式,调整展示角度 function resetGrainChartAlpha(type) { var alpha = 40; var beta = 0; var distance = 165; var boxWidth = 150;// 每列宽度 var boxDepth = 75;// 每行深度 var parentWidth = $('#grainChar3d').width(); boxWidth = parentWidth / numX; // 动态计算每列的宽度 if ("lay" == type) {// 层查看 alpha = 45; beta = 0; boxWidth = 150;// 每列宽度 boxDepth = 75;// 每行深度 // 调整数据展示 renderGrainByLay(1); } if ("row" == type) {// 行查看 alpha = 15; beta = 0; // 调整数据展示 renderGrainByRow(1); } if ("col" == type) {// 列查看 distance = 210; alpha = 35; beta = 75; boxWidth = 80; boxDepth = 150; // 调整数据展示 renderGrainByCol(1); } if ("all" == type) {// 全部查看 alpha = 45; beta = 0; boxWidth = 150;// 每列宽度 boxDepth = 75;// 每行深度 // 调整数据展示 renderGrainByAll(); } // 更新按钮信息 updateGrainBtn(type); grainChar3d.option.grid3D.boxWidth = boxWidth; grainChar3d.option.grid3D.boxDepth = boxDepth; grainChar3d.option.grid3D.viewControl.distance = distance; grainChar3d.option.grid3D.viewControl.alpha = alpha; grainChar3d.option.grid3D.viewControl.beta = beta; grainChar3d.chart.setOption(grainChar3d.option); }; // 动态调整粮情的最大层行列展示 function resetGrainChart3d() { var attr = grainData.cable.split("-"); var x = new Array(); var y = new Array(); var z = new Array(); numZ = attr[0]; numY = attr[1]; numX = attr[2]; for (var i = numX; i > 0; i--) { x.push({ value : i + "列", textStyle : {} }); } for (var i = 1; i <= numY; i++) { y.push({ value : i + "行", textStyle : {} }); } for (var i = numZ; i > 0; i--) { z.push({ value : i + "层", textStyle : {} }); } grainChar3d.option.xAxis3D.data = x; grainChar3d.option.yAxis3D.data = y; grainChar3d.option.zAxis3D.data = z; // 默认渲染第一层 //renderGrainByLay(1); //默认渲染全部 renderGrainByAll(); }; // 更新按钮显示 function updateGrainBtn(type) { var btnNext = $("#btn_next"); var btnPre = $("#btn_pre"); if ("lay" == type) { btnNext.text("下一层"); btnPre.text("上一层"); } if ("row" == type) {// 行查看 btnNext.text("下一行"); btnPre.text("上一行"); } if ("col" == type) {// 列查看 btnNext.text("下一列"); btnPre.text("上一列"); } if ("all" == type) { btnNext.text("下一层"); btnPre.text("上一层"); } // 将信息保存在btnNext中 btnNext.attr("num", 1); btnNext.attr("typeTag", type); }; // 下一层/行/列 function grainNext() { var btnNext = $("#btn_next"); var num = btnNext.attr("num");// 当前所在行/列/层 var type = btnNext.attr("typeTag"); num = Number(num) + 1; if ("lay" == type) {// 层查看 if (num > numZ) num = 1; renderGrainByLay(num); } if ("row" == type) {// 行查看 if (num > numY) num = 1; renderGrainByRow(num); } if ("col" == type) {// 列查看 if (num > numX) num = 1; renderGrainByCol(num); } btnNext.attr("num", num); }; // 上一层/行/列 function grainPre() { var btnNext = $("#btn_next"); var num = btnNext.attr("num");// 当前所在行/列/层 var type = btnNext.attr("typeTag"); num = Number(num) - 1; if ("lay" == type) {// 层查看 if (num < 1) num = numZ; renderGrainByLay(num); } if ("row" == type) {// 行查看 if (num < 1) num = numY; renderGrainByRow(num); } if ("col" == type) {// 列查看 if (num < 1) num = numX; renderGrainByCol(num); } btnNext.attr("num", num); }; // 根据用户选择的列,渲染数据,从1开始 function renderGrainByCol(num) { if (!num) num = 1; var result = new Array(); var listPoints = grainData.listPoints; $.each(listPoints, function(index, data) { if (num == (numX - data.x)) { result.push([ data.x, data.y, (numZ - data.fz), data.temp ]); } }); // 根据选择调整样式 var dataList = grainChar3d.option.xAxis3D.data; $.each(dataList, function(index, item) { if (index == (numX - num)) { dataList[index] = { value : item.value, textStyle : { color : "#900", fontSize : 18 } } } else { dataList[index] = { value : item.value } } }); grainChar3d.option.xAxis3D.data = dataList; grainChar3d.option.series[0].data = result; grainChar3d.option.series[0].label.show = true; grainChar3d.chart.setOption(grainChar3d.option); }; // 根据用户选择的行,渲染数据,从1开始 function renderGrainByRow(num) { if (!num) num = 1; var result = new Array(); var listPoints = grainData.listPoints; $.each(listPoints, function(index, data) { if ((num - 1) == data.y) { result.push([ data.x, data.y, (numZ - data.fz), data.temp ]); } }); // 根据选择调整当前层的样式 var yDataList = grainChar3d.option.yAxis3D.data; $.each(yDataList, function(index, item) { if (index == (num - 1)) { yDataList[index] = { value : item.value, textStyle : { color : "#900", fontSize : 18 } } } else { yDataList[index] = { value : item.value } } }); grainChar3d.option.yAxis3D.data = yDataList; grainChar3d.option.series[0].data = result; grainChar3d.option.series[0].label.show = true; grainChar3d.chart.setOption(grainChar3d.option); // 获取行信息 var row; var listRows = grainData.listRows; $.each(listRows, function(index, data) { if ((num - 1) == data.y) { row = data; } }); // 更新层信息 $("#dynamicAve").text(row.tempAve); $("#dynamicMax").text(row.tempMax); $("#dynamicMin").text(row.tempMin); $("#dynamicAveName").text("行均温"); $("#dynamicMaxName").text("行高温"); $("#dynamicMinName").text("行低温"); }; // 根据用户选择的层,渲染数据,从1开始 function renderGrainByLay(num) { var result = new Array(); var listPoints = grainData.listPoints; $.each(listPoints, function(index, data) { if (num == data.fz) { result.push([ data.x, data.y, (numZ - data.fz), data.temp ]); } }); // 根据选择调整样式 var dataList = grainChar3d.option.zAxis3D.data; $.each(dataList, function(index, item) { if (index == (numZ - num)) { dataList[index] = { value : item.value, textStyle : { color : "#900", fontSize : 18 } } } else { dataList[index] = { value : item.value } } }); grainChar3d.option.zAxis3D.data = dataList; grainChar3d.option.series[0].data = result; grainChar3d.option.series[0].label.show = true; grainChar3d.chart.setOption(grainChar3d.option); // 获取层信息 var lay; var listLays = grainData.listLays; $.each(listLays, function(index, data) { if (num == data.fz) { lay = data; } }); // 更新层信息 $("#dynamicAve").text(lay.tempAve); $("#dynamicMax").text(lay.tempMax); $("#dynamicMin").text(lay.tempMin); $("#dynamicAveName").text("层均温"); $("#dynamicMaxName").text("层高温"); $("#dynamicMinName").text("层低温"); }; // 以层展示方式显示所有的数据 function renderGrainByAll() { var result = new Array(); var listPoints = grainData.listPoints; $.each(listPoints, function(index, data) { result.push([ data.x, data.y, (numZ - data.fz), data.temp ]); }); // 根据选择调整样式 var dataList = grainChar3d.option.zAxis3D.data; $.each(dataList, function(index, item) { dataList[index] = { value : item.value, textStyle : { color : "#900", fontSize : 18 } } }); grainChar3d.option.zAxis3D.data = dataList; grainChar3d.option.series[0].data = result; grainChar3d.option.series[0].label.show = false; grainChar3d.chart.setOption(grainChar3d.option); // 更新层信息 $("#dynamicAve").text("--"); $("#dynamicMax").text("--"); $("#dynamicMin").text("--"); $("#dynamicAveName").text("层均温"); $("#dynamicMaxName").text("层高温"); $("#dynamicMinName").text("层低温"); }; // 初始化三维粮情 function initGrainChar3d() { var div = $('#grainChar3d'); var leftHeight = $("#mainLeft").height(); var topWidth = $("#topInfo").width(); var height = leftHeight - 10; var width = topWidth; height = 600; div.css("height", height); div.css("width", width); var boxWidth = 150;// 每列宽度 var boxDepth = 75;// 每行深度 boxWidth = width / numX; // 动态计算每列的宽度 var x = [ '列7', '列6', '列5', '列4', '列3', '列2', '列1' ]; var y = [ '行1', '行2', '行3', '行4', '行5', '行6' ]; var z = [ '四层', '三层', '二层', '一层' ]; var data = []; var option = { xAxis3D : { name : "", show : false, type : 'category', data : x, axisLine : { interval : 0 }, axisLabel : { interval : 0 } }, yAxis3D : { name : "", show : false, type : 'category', data : y, }, zAxis3D : { name : "", show : false, type : 'category', data : z }, grid3D : { boxWidth : boxWidth, boxDepth : boxDepth, light : { main : { intensity : 1.2, shadow : true }, ambient : { intensity : 0.3 } }, environment : new echarts.graphic.LinearGradient(0, 0, 0, 1, [ { offset : 0, color : '#00aaff' // 天空颜色 }, { offset : 0.7, color : '#998866' // 地面颜色 }, { offset : 1, color : '#998866' // 地面颜色 } ], false), splitArea : { show : true, interval : 0, }, axisPointer : { show : false }, viewControl : { projection : 'perspective', autoRotate : false, rotateSensitivity : 1, //鼠标旋转 1= 可以,0 不可以 zoomSensitivity : 1, //鼠标缩放 0 是无法缩放,其他代表灵敏度 distance : 170, alpha : 45, beta : 0 }, }, series : [ { type : 'scatter3D', symbol : 'pin', symbolSize : 20, shading : 'lambert', label : { show : true, distance : 1, position : 'left', textStyle : { fontSize : '16', borderWidth : 1 }, formatter : function(params) { if (params.value[3] == -100) { return "备用"; } if (params.value[3] == 85.0) { return "故障"; } return params.value[3].toFixed(1); } }, emphasis : { show : true, label : { textStyle : { fontSize : 24, color : '#900' } }, itemStyle : { color : '#900' } }, data : data, itemStyle : {// 散点 normal : { color : function(params) { return getColor(params.value[3]); } } } } ] }; var myChart = echarts.init(document.getElementById('grainChar3d'), "light"); myChart.setOption(option, true); myChart.on('click', 'series', function(params) { showPointChart(params.data); }); return { "chart" : myChart, "option" : option }; }; // 根据值获取展示颜色 var colors = [ '#05FF46', '#1FFF3E', '#45FF33', '#69FF29', '#94FF1B', '#A8FF15', '#CDFF0C', '#FAFF00', '#FFEB01', '#FFA104', '#FF630E', '#FF3116', '#FF0D1B' ]; function getColor(value) { if ("备用" == value || -100 == value) { return "#BBBBBB"; } if ("故障" == value || -101 == value) { return "#BBBBBB"; } if (value <= -5) { return "#05FF46"; } if (value > -5 && value <= 0) { return colors[1]; } if (value > 0 && value <= 5) { return colors[2]; } if (value > 5 && value <= 11) { return colors[3]; } if (value > 11 && value <= 14) { return colors[4]; } if (value > 14 && value <= 17) { return colors[5]; } if (value > 17 && value <= 20) { return colors[6]; } if (value > 20 && value <= 23) { return colors[7]; } if (value > 23 && value <= 26) { return colors[8]; } if (value > 26 && value <= 29) { return colors[9]; } if (value > 29 && value <= 32) { return colors[10]; } if (value > 32 && value <= 35) { return colors[11]; } return "#FF0D1B"; }; /** * 显示采集点走势 * * @param pointData */ function showPointChart(pointData) { // console.log(pointData); var param = { numX : numX, numY : numY, numZ : numZ, x : pointData[0], y : pointData[1], z : pointData[2], depotId : depotId, batchId : grainData.batchId }; // 渲染走势 var pointChart = initPointChartLine(); var index = layer.load(); var title = "粮情采集点走势:层=" + (numZ - param.z) + " 行=" + (param.y + 1) + " 列=" + (numX - param.x); layer.open({ type : 1, title : 0, area : [ '1350px', '580px' ], shade : 0, content : $('#pointChart'), btn : 0, closeBtn : 1 }); // 开始加载数据 $.ajax({ type : "POST", url : "../../basic/grain/chart-point-line", dataType : "json", contentType : "application/json;charset=UTF-8", data : JSON.stringify(param), success : function(result) { layer.close(index); if (result.code != "0000") { layer.msg(result.msg); } else { pointChart.option.title.text = title; pointChart.option.xAxis[0].data = result.data.xaxisData; pointChart.option.series[0].data = result.data.series[0].data; pointChart.option.series[1].data = result.data.series[1].data; pointChart.chart.setOption(pointChart.option); } }, error : function() { layer.close(index); layer.msg("获取当前仓库检测记录失败,请重新尝试"); } }); }; // 采集位走势 function initPointChartLine() { var option = { title : { text : '粮情采集点走势', show : true }, tooltip : { trigger : 'axis', axisPointer : { type : 'cross', label : { backgroundColor : '#6a7985' } } }, legend : { data : [ '粮温', '平均粮温' ], bottom : '5', top : 'top' }, grid : { left : '3%', right : '3%', bottom : '45', containLabel : true }, xAxis : [ { data : [ '01:00', '02:00', '03:00', '04:00', '05:00', '06:00', '07:00', '08:00', '09:00', '10:00', '11:00', '12:00' ] } ], yAxis : [ { type : 'value' } ], dataZoom : [ { start : 50, end : 100 }, { type : 'inside' } ], series : [ { name : '粮温', type : 'line', data : [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] }, { name : '平均粮温', type : 'line', data : [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] } ] }; var myChart = echarts.init(document.getElementById("pointChartLine"), "light"); myChart.setOption(option, true); return { "chart" : myChart, "option" : option }; };