| //根据选择查看方式,调整展示角度 | 
| 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 | 
|     }; | 
| }; |