| | |
| | | <script src="../../layuiadmin/Scripts/jquery-1.4.1.js"></script> |
| | | <script src="../../layuiadmin/layui/layui1.js"></script> |
| | | <script src="../../layuiadmin/echarts.min.js"></script> |
| | | <script src="../../layuiadmin/dayjs.min.js"></script> |
| | | <link href="../../layuiadmin/layui/css/ReportPlatform.css" rel="stylesheet" /> |
| | | <script src="../../layuiadmin/Scripts/webConfig.js"></script> |
| | | <style> |
| | |
| | | var HEquipName = "";//设å¤åç§° |
| | | var HSourceID = "";//产线id |
| | | var HDeptID = ""; |
| | | var pieData = []; // 饼徿°æ®éå |
| | | var timelineData = []; //æ¶åºå¾æ°æ®éå |
| | | layui.config({ |
| | | base: '../../layuiadmin/' //éæèµæºæå¨è·¯å¾ |
| | | }).extend({ |
| | |
| | | $.ajax({ |
| | | url: GetWEBURL() + '/DAQ_EquipRunningSlice/GetHEquipStatusReportList_DAQ', |
| | | type: "GET", |
| | | async: false, |
| | | data: { "HDeptID": HDeptID, "HEquipID": HEquipID, HBeginDate: HBeginDate, HEndDate: HEndDate, "user": sessionStorage["HUserName"] }, |
| | | dataType: "json",//æ°æ®ç±»åå¯ä»¥ä¸º text xml json script jsonp |
| | | success: function (res) { |
| | | data = res.data |
| | | debugger |
| | | |
| | | if (data.length < 1) { |
| | | return |
| | | } |
| | | |
| | | var $container = $("#chartContainer"); |
| | | $container.empty(); |
| | | |
| | | for (var i = 0; i < data.length; i++) { |
| | | var hmainid = data[i].hmainid; |
| | | var equipName = data[i].设å¤åç§°; |
| | | var dateStr = data[i].æå±æ¥æ.split('T')[0]; |
| | | |
| | | // æ¶é´å段 |
| | | var runTime = data[i].è¿è¡æ¶é´; // è¿è¡ |
| | | var stopTime = data[i].æºæ¶é´; // åæº |
| | | var alarmTime = data[i].åè¦æ¶é´; // åè¦ |
| | | var offTime = data[i].å
³æºæ¶é´; // å
³æº |
| | | var total = runTime + stopTime + alarmTime + offTime; |
| | | |
| | | // ============================================== |
| | | // 1. å建æ¯ä¸ªè®¾å¤çå¾è¡¨å¤å£³ï¼å·¦å³å¸å±ï¼é¥¼å¾ + æ¶åºå¾ï¼ |
| | | // ============================================== |
| | | var itemHtml = ` |
| | | <div style="width:100%; height:420px; display:flex; gap:20px; margin-bottom:30px; border:1px solid #eee; padding:15px; border-radius:8px;"> |
| | | <div id="chart_pie_${hmainid}" style="width:38%; height:100%;"></div> |
| | | <div id="chart_time_${hmainid}" style="width:62%; height:100%;"></div> |
| | | </div>`; |
| | | $container.append(itemHtml); |
| | | |
| | | // ============================================== |
| | | // 2. 左侧ç¯å½¢é¥¼å¾ï¼è¿è¡/åæº/åè¦/å
³æº å æ¯ï¼ |
| | | // ============================================== |
| | | var pieChart = echarts.init(document.getElementById(`chart_pie_${hmainid}`)); |
| | | pieChart.setOption({ |
| | | title: { text: `${dateStr} ${equipName}`, left: 'center', textStyle: { fontSize: 16 } }, |
| | | tooltip: { trigger: 'item', formatter: '{b}: {c}H ({d}%)' }, |
| | | legend: { orient: 'vertical', right: '2%', top: 'middle', textStyle: { fontSize: 13 } }, |
| | | series: [{ |
| | | type: 'pie', |
| | | radius: ['42%', '70%'], |
| | | center: ['45%', '55%'], |
| | | itemStyle: { borderRadius: 4, borderColor: '#fff', borderWidth: 2 }, |
| | | label: { show: false }, |
| | | data: [ |
| | | { value: runTime, name: 'è¿è¡', itemStyle: { color: '#4CAF50' } }, |
| | | { value: stopTime, name: 'åæº', itemStyle: { color: '#FF9800' } }, |
| | | { value: alarmTime, name: 'åè¦', itemStyle: { color: '#F44336' } }, |
| | | { value: offTime, name: 'å
³æº', itemStyle: { color: '#9E9E9E' } } |
| | | ] |
| | | }] |
| | | }); |
| | | |
| | | // ============================================== |
| | | // 3. å³ä¾§ 24å°æ¶ 设å¤è¿è¡æ¶åºå¾ï¼åææå¾å®å
¨ä¸è´ï¼ |
| | | // ============================================== |
| | | var timeChart = echarts.init(document.getElementById(`chart_time_${hmainid}`)); |
| | | timeChart.setOption({ |
| | | title: { |
| | | text: `è¿è¡:${runTime.toFixed(1)}H | åæº:${stopTime.toFixed(1)}H | åè¦:${alarmTime.toFixed(1)}H | å
³æº:${offTime.toFixed(1)}H`, |
| | | left: 'center', |
| | | textStyle: { fontSize: 14 } |
| | | }, |
| | | grid: { left: '3%', right: '3%', top: '20%', bottom: '10%', containLabel: true }, |
| | | xAxis: { |
| | | type: 'category', |
| | | data: ['00:00', '04:00', '08:00', '12:00', '16:00', '20:00', '24:00'] |
| | | }, |
| | | yAxis: { type: 'value', max: 1, show: false }, |
| | | series: [ |
| | | { type: 'bar', stack: 'total', barWidth: '80%', itemStyle: { color: '#9E9E9E' }, data: [offTime / 24, 0, 0, 0, 0, 0, 0] }, |
| | | { type: 'bar', stack: 'total', barWidth: '80%', itemStyle: { color: '#FF9800' }, data: [stopTime / 24, 0, 0, 0, 0, 0, 0] }, |
| | | { type: 'bar', stack: 'total', barWidth: '80%', itemStyle: { color: '#F44336' }, data: [alarmTime / 24, 0, 0, 0, 0, 0, 0] }, |
| | | { type: 'bar', stack: 'total', barWidth: '80%', itemStyle: { color: '#4CAF50' }, data: [runTime / 24, 0, 0, 0, 0, 0, 0] } |
| | | ] |
| | | }); |
| | | } |
| | | |
| | | pieData = data |
| | | } |
| | | }) |
| | | |
| | | $.ajax({ |
| | | url: GetWEBURL() + '/DAQ_EquipRunningSlice/GetHEquipStatusReportList2_DAQ', |
| | | type: "GET", |
| | | async: false, |
| | | data: { "HDeptID": HDeptID, "HEquipID": HEquipID, HBeginDate: HBeginDate, HEndDate: HEndDate, "user": sessionStorage["HUserName"] }, |
| | | dataType: "json",//æ°æ®ç±»åå¯ä»¥ä¸º text xml json script jsonp |
| | | success: function (res) { |
| | | data = res.data |
| | | |
| | | if (data.length < 1) { |
| | | return |
| | | } |
| | | console.log(timelineData) |
| | | timelineData = data |
| | | } |
| | | }) |
| | | |
| | | drawCharts() |
| | | |
| | | |
| | | //wktag = 0; |
| | | //$("#btomleft").html(""); |
| | |
| | | } |
| | | |
| | | |
| | | //#region ç»å¶å¾è¡¨ |
| | | function drawCharts() { |
| | | var $container = $("#chartContainer"); |
| | | $container.empty(); |
| | | |
| | | var data = pieData |
| | | console.log(pieChart) |
| | | var data1 = timelineData |
| | | |
| | | for (var i = 0; i < data.length; i++) { |
| | | var hmainid = data[i].hmainid; |
| | | var equipName = data[i].设å¤åç§°; |
| | | var dateStr = data[i].æå±æ¥æ.split('T')[0]; |
| | | |
| | | // æ¶é´å段 |
| | | var runTime = data[i].è¿è¡æ¶é´ || 0; // è¿è¡ |
| | | var stopTime = data[i].åæºæ¶é´ || 0; // åæº |
| | | var alarmTime = data[i].åè¦æ¶é´ || 0; // åè¦ |
| | | var offTime = data[i].å
³æºæ¶é´ || 0; // å
³æº |
| | | var total = runTime + stopTime + alarmTime + offTime; |
| | | |
| | | // ============================================== |
| | | // 1. å建æ¯ä¸ªè®¾å¤çå¾è¡¨å¤å£³ï¼å·¦å³å¸å±ï¼é¥¼å¾ + æ¶åºå¾ï¼ |
| | | // ============================================== |
| | | var itemHtml = ` |
| | | <div style="width:100%; height:200px; margin-bottom:20px; border:1px solid #eee; padding:15px; border-radius:8px;"> |
| | | <div style="display: inline-block; height:20%; display:flex; gap:20px;"> |
| | | <div style="width:40%;">${dateStr} ${equipName}</div> |
| | | <div style="width:60%; display: flex; justify-content: right; align-items: center; gap: 8px;"> |
| | | <div style="width: 18px; height: 18px; background-color: #73cc3f; display: inline-block"></div> |
| | | <div style="padding-left: 4px ;display: inline-block">è¿è¡(${runTime}H)</div> |
| | | <div style="width: 18px; height: 18px; background-color: #f2a439; display: inline-block"></div> |
| | | <div style="padding-left: 4px ;display: inline-block">åæº(${stopTime}H)</div> |
| | | <div style="width: 18px; height: 18px; background-color: #ff796a; display: inline-block"></div> |
| | | <div style="padding-left: 4px ;display: inline-block">åè¦(${alarmTime}H)</div> |
| | | <div style="width: 18px; height: 18px; background-color: #9b9a9b; display: inline-block"></div> |
| | | <div style="padding-left: 4px ;display: inline-block">å
³æº(${offTime}H)</div> |
| | | </div> |
| | | </div> |
| | | <div style="display: inline-block; height:80%; display:flex; gap:20px;"> |
| | | <div id="chart_pie_${hmainid}_${i}" style="width:25%; height:100%;"></div> |
| | | <div id="chart_time_${hmainid}_${i}" style="width:70%; height:100%;"></div> |
| | | </div> |
| | | </div>`; |
| | | $container.append(itemHtml); |
| | | |
| | | |
| | | // ============================================== |
| | | // 2. 左侧ç¯å½¢é¥¼å¾ï¼è¿è¡/åæº/åè¦/å
³æº å æ¯ï¼ |
| | | // ============================================== |
| | | var pieChart = echarts.init(document.getElementById(`chart_pie_${hmainid}_${i}`)); |
| | | pieChart.setOption({ |
| | | // title: { text: `${dateStr} ${equipName}`, left: 'center', textStyle: { fontSize: 16 } }, |
| | | tooltip: { |
| | | trigger: 'item', formatter: '{b}: {c}H ({d}%)', textStyle: { |
| | | lineHeight: 22 // æåé´è·æ´å¤§ |
| | | }, |
| | | }, |
| | | legend: { |
| | | orient: 'vertical', right: '2%', top: 'middle', textStyle: { fontSize: 13 } |
| | | , formatter: function (name, value) { |
| | | var getRate = function () { |
| | | if (name == 'è¿è¡') { |
| | | return (runTime / total * 100.0).toFixed(2) |
| | | } |
| | | if (name == 'åæº') { |
| | | return (stopTime / total * 100.0).toFixed(2) |
| | | } |
| | | if (name == 'åè¦') { |
| | | return (alarmTime / total * 100.0).toFixed(2) |
| | | } |
| | | if (name == 'å
³æº') { |
| | | return (offTime / total * 100.0).toFixed(2) |
| | | } |
| | | }() |
| | | return name + 'ç(' + getRate |
| | | + '%)' |
| | | } |
| | | }, |
| | | series: [{ |
| | | type: 'pie', |
| | | radius: ['42%', '70%'], |
| | | center: ['25%', '50%'], |
| | | itemStyle: { borderRadius: 4, borderColor: '#fff', borderWidth: 2 }, |
| | | label: { show: false }, |
| | | data: [ |
| | | { value: runTime, name: 'è¿è¡', itemStyle: { color: '#73cc3f' } }, |
| | | { value: stopTime, name: 'åæº', itemStyle: { color: '#f2a439' } }, |
| | | { value: alarmTime, name: 'åè¦', itemStyle: { color: '#ff796a' } }, |
| | | { value: offTime, name: 'å
³æº', itemStyle: { color: '#9b9a9b' } } |
| | | ] |
| | | }] |
| | | }); |
| | | |
| | | // ============================================== |
| | | // 3. å³ä¾§ 24å°æ¶ 设å¤è¿è¡æ¶åºå¾ |
| | | // ============================================== |
| | | // dataçæ¶é´å设å¤id以â_âè¿è¡æ¼æ¥å¯å¾åºdata1对象çkeyï¼ç®åæä½ |
| | | |
| | | var key = dateStr + "_" + hmainid |
| | | |
| | | var timeChart = echarts.init(document.getElementById(`chart_time_${hmainid}_${i}`)); |
| | | // ä½ çåå§æ°æ® |
| | | var data1Instance = data1[key] |
| | | if(!data1Instance){ |
| | | continue |
| | | } |
| | | var startTime = dayjs(dateStr + " 00:00:00").valueOf(); |
| | | var endTime = dayjs(dateStr + " 23:59:59").valueOf(); |
| | | var categories = [data1Instance[0]["çäº§èµæº"]]; |
| | | var types = [ |
| | | { name: 'æ£å¸¸è¿è¡', color: '#73cc3f' }, |
| | | { name: '离线', color: '#9b9a9b' }, |
| | | { name: 'å¾
æº', color: '#f2a439' }, |
| | | ]; |
| | | |
| | | var getColor = function (name) { |
| | | for (var i = 0; i < types.length; i++) { |
| | | if (name == types[i].name) { |
| | | return types[i].color |
| | | } |
| | | } |
| | | } |
| | | |
| | | chartDataTimeline = [] |
| | | for (var cursor = 0; cursor < data1Instance.length; cursor++) { |
| | | chartDataTimeline.push({ |
| | | "name": data1Instance[cursor]["HResult"], |
| | | "value": [ |
| | | 0, |
| | | dayjs(data1Instance[cursor]["æ¶é´"]).valueOf(), |
| | | dayjs(data1Instance[cursor]["æ¶é´"]).add(5, 'm').valueOf(), |
| | | 300000 |
| | | ], |
| | | "itemStyle": { |
| | | "normal": { |
| | | "color": getColor(data1Instance[cursor]["HResult"]) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | timeChart.setOption({ |
| | | tooltip: { |
| | | formatter: function (params) { |
| | | return params.marker + params.name; |
| | | } |
| | | }, |
| | | grid: { |
| | | top: 0, |
| | | bottom: 0, |
| | | left: 20, // ç»Yè½´æåçä¸ç¹ä½ç½® |
| | | right: 20, |
| | | containLabel: true |
| | | }, |
| | | xAxis: { |
| | | type: 'time', |
| | | min: startTime, // å¼å§æ¶é´æ³ |
| | | max: endTime, // ç»ææ¶é´æ³ |
| | | minInterval: 7200000, // é´é䏤尿¶ |
| | | scale: true, |
| | | axisLabel: { |
| | | formatter: function (val) { |
| | | return echarts.format.formatTime('hh:mm', val); |
| | | } |
| | | }, |
| | | axisLine: { |
| | | show: false // éè x 轴轴线 |
| | | } |
| | | }, |
| | | yAxis: { |
| | | data: categories, |
| | | axisLine: { |
| | | show: false // éè y 轴轴线 |
| | | }, |
| | | name: "", |
| | | axisLabel: { show: false }, // éèYè½´æ ç¾ |
| | | }, |
| | | series: [ |
| | | { |
| | | type: 'custom', |
| | | renderItem: renderItem, |
| | | itemStyle: { |
| | | opacity: 0.8 |
| | | }, |
| | | encode: { |
| | | x: [1, 2], |
| | | y: 0 |
| | | }, |
| | | data: chartDataTimeline |
| | | } |
| | | ] |
| | | }) |
| | | } |
| | | } |
| | | //#endregion |
| | | |
| | | // æ ç¶å¾æ¥è¯¢ |
| | | function get_Display_Tree() { |
| | |
| | | }); |
| | | } |
| | | |
| | | |
| | | function renderItem(params, api) { |
| | | var categoryIndex = api.value(0); |
| | | var start = api.coord([api.value(1), categoryIndex]); |
| | | var end = api.coord([api.value(2), categoryIndex]); |
| | | var height = api.size([0, 1])[1] * 0.6; |
| | | var rectShape = echarts.graphic.clipRectByRect( |
| | | { |
| | | x: start[0], |
| | | y: start[1] - height / 2, |
| | | width: end[0] - start[0], |
| | | height: height |
| | | }, |
| | | { |
| | | x: params.coordSys.x, |
| | | y: params.coordSys.y, |
| | | width: params.coordSys.width, |
| | | height: params.coordSys.height |
| | | } |
| | | ); |
| | | return ( |
| | | rectShape && { |
| | | type: 'rect', |
| | | transition: ['shape'], |
| | | shape: rectShape, |
| | | style: api.style() |
| | | } |
| | | ); |
| | | } |
| | | //#endregion |
| | | </script> |
| | | |