开发serverMonitor 模块 instances页面,图表配置
This commit is contained in:
		
							parent
							
								
									7e9c13b401
								
							
						
					
					
						commit
						0434cef898
					
				
							
								
								
									
										
											BIN
										
									
								
								src/assets/images/abnormalAlarm/line.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								src/assets/images/abnormalAlarm/line.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 975 B | 
							
								
								
									
										93
									
								
								src/views/abnormalAlarm/components/summaryArea.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										93
									
								
								src/views/abnormalAlarm/components/summaryArea.vue
									
									
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,93 @@ | |||
| <template> | ||||
|   <div id="abstractechar"></div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| import { Area } from '@antv/g2plot'; | ||||
| export default { | ||||
|   props:{ | ||||
|     lineData:{ | ||||
|       type:Array, | ||||
|       required:true | ||||
|     } | ||||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       chart: null, | ||||
|     } | ||||
|   }, | ||||
|   mounted() { | ||||
|     this.pieChart() | ||||
|   }, | ||||
| 
 | ||||
|   methods: { | ||||
|     /* 图表 */ | ||||
|     pieChart() { | ||||
|       const data = this.lineData | ||||
|       let _vm= this | ||||
|       if(this.chart){ | ||||
|         this.chart.update({ | ||||
|           data:data | ||||
|         }) | ||||
|         return | ||||
|       } | ||||
|       this.chart = new Area("abstractechar",{ | ||||
|         data, | ||||
|         xField: 'date', | ||||
|         yField: 'value', | ||||
|         colorField: '#0096FF', | ||||
|         areaStyle:()=>{ | ||||
|           return { fill: '#0096FF' } | ||||
|         }, | ||||
|         yAxis: { | ||||
|           line:{ | ||||
|             subTickLine:{ | ||||
|               count:5, | ||||
|               max:100 | ||||
|             }, | ||||
|           }, | ||||
|         }, | ||||
|         line:{ | ||||
|           lineWidth:0, | ||||
|           lineDash:[0,0] | ||||
|         }, | ||||
| 
 | ||||
|         tooltip: { | ||||
|       }}) | ||||
|       this.chart.render() | ||||
| 
 | ||||
|     }, | ||||
| 
 | ||||
|   }, | ||||
|   computed: { | ||||
|     // 直接当做普通属性调用不加括号 | ||||
|     // 任何data中数据变化立即重新计算 | ||||
|     // 计算属性会缓存 | ||||
|     textColor() { | ||||
|       return this.$store.getters.theme | ||||
|     }, | ||||
|   }, | ||||
|   watch: { | ||||
|     textColor: function (val) { | ||||
|       this.chart.update({ | ||||
|         areaStyle:{ | ||||
|           fill:val == 'default' ? '#282828' : '#C7C7C7' | ||||
|         } | ||||
|       }) | ||||
| 
 | ||||
| 
 | ||||
|     }, | ||||
|     lineData: function (val) { | ||||
|       this.pieChart() | ||||
|     }, | ||||
|   }, | ||||
| } | ||||
| </script> | ||||
| 
 | ||||
| <style scoped> | ||||
| #abstractechar { | ||||
|   padding: 0 30px; | ||||
|   width:100%; | ||||
|   height: 151px; | ||||
| } | ||||
| </style> | ||||
|  | @ -265,8 +265,17 @@ | |||
|     </div> | ||||
|     <div class="content-center"> | ||||
|       <BoxTitle title="Event Timelinen"> | ||||
|         <template slot="right">asdfadf</template> | ||||
|         <template slot="right"> | ||||
|           <ul class="legend-list"> | ||||
|             <li v-for="(item,index) in types" :key="index"> | ||||
|               <div :style="`background:${item.color}`" class="li-icon"></div> | ||||
|               {{ item.name }} | ||||
|             </li> | ||||
|           </ul> | ||||
|         </template> | ||||
|       </BoxTitle> | ||||
|       <div class="line-bg"></div> | ||||
|       <div class="time-line" id="timeLine"></div> | ||||
|     </div> | ||||
|     <div class="content-bottom"> | ||||
|       <div class="content-bottom-left"> | ||||
|  | @ -274,32 +283,122 @@ | |||
|           <a-row :gutter="20"> | ||||
|             <a-col class="gutter-row" :span="8"> | ||||
|               <BoxTitle title="CPU"></BoxTitle> | ||||
|               <div class="gauge-content" id="cpu"></div> | ||||
|             </a-col> | ||||
|             <a-col class="gutter-row" :span="8"> | ||||
|               <BoxTitle title="MEMORY"></BoxTitle> | ||||
|               <div class="gauge-content" id="memory"></div> | ||||
|             </a-col> | ||||
|             <a-col class="gutter-row" :span="8"> | ||||
|               <BoxTitle title="LOADS"></BoxTitle> | ||||
|               <div class="gauge-content" id="loads"></div> | ||||
|             </a-col> | ||||
|           </a-row> | ||||
|         </div> | ||||
|         <div class="content-bottom-left-bottom"> | ||||
|           <BoxTitle title="CPU utilization"> | ||||
|             <template slot="right">asdfadf</template> | ||||
|             <template slot="right"> | ||||
|               <div class="right-title"> | ||||
|                 <div class="right-title-item"> | ||||
|                   average value:<i>32%</i> | ||||
|                 </div> | ||||
|                 <div class="right-title-item"> | ||||
|                   minimum value:<i>32%</i> | ||||
|                 </div> | ||||
|                 <div class="right-title-item"> | ||||
|                   Maximum value:<i>32%</i> | ||||
|                 </div> | ||||
|               </div> | ||||
|             </template> | ||||
|           </BoxTitle> | ||||
|           <div class="area-cpu" id="areaCpu"></div> | ||||
|         </div> | ||||
|       </div> | ||||
|       <div style="width:542px"> | ||||
|         <BoxTitle title="DISK"></BoxTitle> | ||||
|         <div class="bar-disk" id="disk"></div> | ||||
|       </div> | ||||
|     </div> | ||||
|   </div> | ||||
| </template> | ||||
| 
 | ||||
| <script> | ||||
| var base = +new Date(1968, 9, 3); | ||||
| var oneDay = 24 * 3600 * 1000; | ||||
| var date = []; | ||||
| 
 | ||||
| var data = [Math.random() * 300]; | ||||
| 
 | ||||
| for (var i = 1; i < 200; i++) { | ||||
|     var now = new Date(base += oneDay); | ||||
|     date.push([now.getFullYear(), now.getMonth() + 1, now.getDate()].join('/')); | ||||
|     data.push(Math.round((Math.random() - 0.5) * 20 + data[i - 1])); | ||||
| } | ||||
| var data1 = []; | ||||
| var dataCount = 6; | ||||
| var startTime = +new Date(); | ||||
| var categories = ['cpu']; | ||||
| var types = [ | ||||
|   { name: 'Halt', color: '#ec3e0d' }, | ||||
|   { name: 'Critical', color: '#ff683e' }, | ||||
|   { name: 'Problematic', color: '#ffbf2e' }, | ||||
|   { name: 'Maintained', color: '#a2681e' }, | ||||
|   { name: 'Anomalous', color: '#8dac39' }, | ||||
|   { name: 'Suspension', color: '#6c6c6c' } | ||||
| ]; | ||||
| var legendData = types.map(item=>{ | ||||
|   return item.name | ||||
| }) | ||||
| // Generate mock data | ||||
| categories.forEach((category, index) => { | ||||
|   var baseTime = startTime; | ||||
|   for (var i = 0; i < dataCount; i++) { | ||||
|     var typeItem = types[i]; | ||||
|     var duration = Math.round(Math.random() * 10000); | ||||
|     data1.push({ | ||||
|       name: typeItem.name, | ||||
|       value: [index, baseTime, (baseTime += duration), duration], | ||||
|       itemStyle: { | ||||
|         normal: { | ||||
|           color: typeItem.color | ||||
|         } | ||||
|       } | ||||
|     }); | ||||
|     baseTime += Math.round(Math.random() * 2000); | ||||
|   } | ||||
| }); | ||||
| function renderItem1(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] * 1; | ||||
|   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() | ||||
|     } | ||||
|   ); | ||||
| } | ||||
| import BoxTitle from '../../components/boxTitle.vue'; | ||||
| import infiniteScroll from 'vue-infinite-scroll'; | ||||
| import { getAction,postAction,httpAction,deleteAction } from '@/api/manage' | ||||
| import { getAction, postAction, httpAction, deleteAction } from '@/api/manage' | ||||
| import * as echarts from 'echarts' | ||||
| export default { | ||||
|   directives: { infiniteScroll }, | ||||
|   components: { | ||||
|  | @ -307,6 +406,7 @@ export default { | |||
|   }, | ||||
|   data() { | ||||
|     return { | ||||
|       types, | ||||
|       dataSource: [], | ||||
|       loading: false, | ||||
|       busy: false, | ||||
|  | @ -323,7 +423,13 @@ export default { | |||
|         pageSize: 10, | ||||
|         total: 0 | ||||
|       }, | ||||
|       currIndex:null, | ||||
|       currIndex: null, | ||||
|       timeLine: null, | ||||
|       guageCpu: null, | ||||
|       guageMemory: null, | ||||
|       guageLoads: null, | ||||
|       areaCpu: null, | ||||
|        | ||||
|     } | ||||
|   }, | ||||
|   mounted () { | ||||
|  | @ -345,6 +451,16 @@ export default { | |||
|         this.$message.warning("This operation fails. Contact your system administrator") | ||||
|       } | ||||
|     }); | ||||
|     this.$nextTick(() => { | ||||
|       setTimeout(() => { | ||||
|         this.drawTimeline() | ||||
|         this.drawGuageCpu() | ||||
|         this.drawGuageMemory() | ||||
|         this.drawGuageLoads() | ||||
|         this.drawAreaCpu() | ||||
|         this.drawDisk() | ||||
|       },0) | ||||
|     }) | ||||
|   }, | ||||
|   methods: { | ||||
|     getSysServer(callBack) { | ||||
|  | @ -409,7 +525,603 @@ export default { | |||
|           }); | ||||
|         } | ||||
|       } | ||||
|     } | ||||
|     }, | ||||
|      | ||||
|     drawTimeline() { | ||||
|       this.timeLine = echarts.init(document.getElementById("timeLine")) | ||||
|       let option = { | ||||
|         color:['#7b9ce1','#bd6d6c','#75d874','#e0bc78','#dc77dc','#72b362'], | ||||
|         tooltip: { | ||||
|           formatter: function (params) { | ||||
|             return params.marker + params.name + ': ' + params.value[3] + ' ms'; | ||||
|           } | ||||
|         }, | ||||
|         grid: { | ||||
|           left: '0%', | ||||
|           right: '0%', | ||||
|           bottom: '0', | ||||
|           top:15, | ||||
|           height: 32, | ||||
|           containLabel: false, | ||||
|           show: true | ||||
|         }, | ||||
|         xAxis: { | ||||
|           min: startTime, | ||||
|           axisLabel: { | ||||
|             color: "#ade6ee", | ||||
|             fontSize: 14, | ||||
|             formatter: function (val) { | ||||
|               return Math.max(0, val - startTime) + ' ms'; | ||||
|             } | ||||
|           }, | ||||
|           splitLine: { | ||||
|             show: false | ||||
|           } | ||||
|         }, | ||||
|         yAxis: { | ||||
|           show:false, | ||||
|           data: categories | ||||
|         }, | ||||
|         series: [ | ||||
|           { name: legendData[0], type: 'bar', data: [] }, | ||||
|           { name: legendData[1], type: 'bar', data: [] }, | ||||
|           { name: legendData[2], type: 'bar', data: [] }, | ||||
|           { name: legendData[3], type: 'bar', data: [] }, | ||||
|           { name: legendData[4], type: 'bar', data: [] }, | ||||
|           { name: legendData[5], type: 'bar', data: [] }, | ||||
|           { | ||||
|             type: 'custom', | ||||
|             renderItem: renderItem1, | ||||
|             encode: { | ||||
|               x: [1, 2], | ||||
|               y: 0 | ||||
|             }, | ||||
|             data: data1 | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|       this.timeLine.setOption(option) | ||||
|       window.addEventListener("resize", function () { | ||||
|         this.timeLine.resize(); | ||||
|       }); | ||||
|     }, | ||||
|     drawGuageCpu() { | ||||
|       this.guageCpu = echarts.init(document.getElementById("cpu")) | ||||
|       let option = { | ||||
|         series: [ | ||||
|           { | ||||
|             type: 'gauge', | ||||
|             center: ['50%', '93%'], | ||||
|             radius: 90, | ||||
|             startAngle: 180, | ||||
|             endAngle: 0, | ||||
|             min: 0, | ||||
|             max: 100, | ||||
|             itemStyle:{ | ||||
|               color: "#8531f6" | ||||
|             }, | ||||
|             progress: { | ||||
|               show: true, | ||||
|               width: 20 | ||||
|             }, | ||||
|             pointer: { | ||||
|               show: false | ||||
|             }, | ||||
|             axisLine: { | ||||
|               lineStyle: { | ||||
|                 color:[[1, '#162b39']], | ||||
|                 width: 20 | ||||
|               } | ||||
|             }, | ||||
|             axisTick: { | ||||
|               show:false, | ||||
|             }, | ||||
|             splitLine: { | ||||
|               show:false, | ||||
|             }, | ||||
|             axisLabel: { | ||||
|               show:false, | ||||
|             }, | ||||
|             anchor: { | ||||
|               show: false | ||||
|             }, | ||||
|             title: { | ||||
|               show: false | ||||
|             }, | ||||
|             detail: { | ||||
|               valueAnimation: true, | ||||
|               fontFamily: "MicrogrammaD-MediExte", | ||||
|               fontSize: 24, | ||||
|               lineHeight: 28, | ||||
|               offsetCenter: [0, '-10%'], | ||||
|               formatter: '{value} %', | ||||
|               color: 'white' | ||||
|             }, | ||||
|             data: [ | ||||
|               { | ||||
|                 value: 20 | ||||
|               } | ||||
|             ] | ||||
|           }, | ||||
|           { | ||||
|             type: 'gauge', | ||||
|             center: ['50%', '93%'], | ||||
|             radius: 100, | ||||
|             startAngle: 180, | ||||
|             endAngle: 0, | ||||
|             min: 0, | ||||
|             max: 100, | ||||
|             itemStyle: { | ||||
|               color: { | ||||
|                 type: 'linear', | ||||
|                 x: 0, | ||||
|                 y: 1, | ||||
|                 x2: 0, | ||||
|                 y2: 0, | ||||
|                 colorStops: [{ | ||||
|                     offset: 0, color: '#7776ff' // 0% 处的颜色 | ||||
|                 }, { | ||||
|                     offset: 1, color: '#ae2cf1' // 100% 处的颜色 | ||||
|                 }], | ||||
|                 global: false // 缺省为 false | ||||
|               } | ||||
|             }, | ||||
|             progress: { | ||||
|               show: true, | ||||
|               width: 2 | ||||
|             }, | ||||
|             pointer: { | ||||
|               show: false | ||||
|             }, | ||||
|             axisLine: { | ||||
|               show: false | ||||
|             }, | ||||
|             axisTick: { | ||||
|               show: false | ||||
|             }, | ||||
|             splitLine: { | ||||
|               show: false | ||||
|             }, | ||||
|             axisLabel: { | ||||
|               show: false | ||||
|             }, | ||||
|             detail: { | ||||
|               show: false | ||||
|             }, | ||||
|             data: [ | ||||
|               { | ||||
|                 value: 100 | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|       this.guageCpu.setOption(option) | ||||
|       window.addEventListener("resize", function () { | ||||
|         this.guageCpu.resize(); | ||||
|       }); | ||||
|     }, | ||||
|     drawGuageMemory() { | ||||
|       this.guageMemory = echarts.init(document.getElementById("memory")) | ||||
|       let option = { | ||||
|         series: [ | ||||
|           { | ||||
|             type: 'gauge', | ||||
|             center: ['50%', '93%'], | ||||
|             radius: 90, | ||||
|             startAngle: 180, | ||||
|             endAngle: 0, | ||||
|             min: 0, | ||||
|             max: 100, | ||||
|             itemStyle:{ | ||||
|               color: "#1aad32" | ||||
|             }, | ||||
|             progress: { | ||||
|               show: true, | ||||
|               width: 20 | ||||
|             }, | ||||
|             pointer: { | ||||
|               show: false | ||||
|             }, | ||||
|             axisLine: { | ||||
|               lineStyle: { | ||||
|                 color:[[1, '#162b39']], | ||||
|                 width: 20 | ||||
|               } | ||||
|             }, | ||||
|             axisTick: { | ||||
|               show:false, | ||||
|             }, | ||||
|             splitLine: { | ||||
|               show:false, | ||||
|             }, | ||||
|             axisLabel: { | ||||
|               show:false, | ||||
|             }, | ||||
|             anchor: { | ||||
|               show: false | ||||
|             }, | ||||
|             title: { | ||||
|               show: false | ||||
|             }, | ||||
|             detail: { | ||||
|               valueAnimation: true, | ||||
|               fontFamily: "MicrogrammaD-MediExte", | ||||
|               fontSize: 24, | ||||
|               lineHeight: 28, | ||||
|               offsetCenter: [0, '-10%'], | ||||
|               formatter: '{value} %', | ||||
|               color: 'white' | ||||
|             }, | ||||
|             data: [ | ||||
|               { | ||||
|                 value: 20 | ||||
|               } | ||||
|             ] | ||||
|           }, | ||||
|           { | ||||
|             type: 'gauge', | ||||
|             center: ['50%', '93%'], | ||||
|             radius: 100, | ||||
|             startAngle: 180, | ||||
|             endAngle: 0, | ||||
|             min: 0, | ||||
|             max: 100, | ||||
|             itemStyle: { | ||||
|               color: { | ||||
|                 type: 'linear', | ||||
|                 x: 0, | ||||
|                 y: 1, | ||||
|                 x2: 0, | ||||
|                 y2: 0, | ||||
|                 colorStops: [{ | ||||
|                     offset: 0, color: '#1bad33' // 0% 处的颜色 | ||||
|                 }, { | ||||
|                     offset: 1, color: '#14ea38' // 100% 处的颜色 | ||||
|                 }], | ||||
|                 global: false // 缺省为 false | ||||
|               } | ||||
|             }, | ||||
|             progress: { | ||||
|               show: true, | ||||
|               width: 2 | ||||
|             }, | ||||
|             pointer: { | ||||
|               show: false | ||||
|             }, | ||||
|             axisLine: { | ||||
|               show: false | ||||
|             }, | ||||
|             axisTick: { | ||||
|               show: false | ||||
|             }, | ||||
|             splitLine: { | ||||
|               show: false | ||||
|             }, | ||||
|             axisLabel: { | ||||
|               show: false | ||||
|             }, | ||||
|             detail: { | ||||
|               show: false | ||||
|             }, | ||||
|             data: [ | ||||
|               { | ||||
|                 value: 100 | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|       this.guageMemory.setOption(option) | ||||
|       window.addEventListener("resize", function () { | ||||
|         this.guageMemory.resize(); | ||||
|       }); | ||||
|     }, | ||||
|     drawGuageLoads() { | ||||
|       this.guageLoads = echarts.init(document.getElementById("loads")) | ||||
|       let option = { | ||||
|         series: [ | ||||
|           { | ||||
|             type: 'gauge', | ||||
|             center: ['50%', '93%'], | ||||
|             radius: 90, | ||||
|             startAngle: 180, | ||||
|             endAngle: 0, | ||||
|             min: 0, | ||||
|             max: 100, | ||||
|             itemStyle:{ | ||||
|               color: "#61bbfa" | ||||
|             }, | ||||
|             progress: { | ||||
|               show: true, | ||||
|               width: 20 | ||||
|             }, | ||||
|             pointer: { | ||||
|               show: false | ||||
|             }, | ||||
|             axisLine: { | ||||
|               lineStyle: { | ||||
|                 color:[[1, '#162b39']], | ||||
|                 width: 20 | ||||
|               } | ||||
|             }, | ||||
|             axisTick: { | ||||
|               show:false, | ||||
|             }, | ||||
|             splitLine: { | ||||
|               show:false, | ||||
|             }, | ||||
|             axisLabel: { | ||||
|               show:false, | ||||
|             }, | ||||
|             anchor: { | ||||
|               show: false | ||||
|             }, | ||||
|             title: { | ||||
|               show: false | ||||
|             }, | ||||
|             detail: { | ||||
|               valueAnimation: true, | ||||
|               fontFamily: "MicrogrammaD-MediExte", | ||||
|               fontSize: 24, | ||||
|               lineHeight: 28, | ||||
|               offsetCenter: [0, '-10%'], | ||||
|               formatter: '{value} %', | ||||
|               color: 'white' | ||||
|             }, | ||||
|             data: [ | ||||
|               { | ||||
|                 value: 20 | ||||
|               } | ||||
|             ] | ||||
|           }, | ||||
|           { | ||||
|             type: 'gauge', | ||||
|             center: ['50%', '93%'], | ||||
|             radius: 100, | ||||
|             startAngle: 180, | ||||
|             endAngle: 0, | ||||
|             min: 0, | ||||
|             max: 100, | ||||
|             itemStyle: { | ||||
|               color: { | ||||
|                 type: 'linear', | ||||
|                 x: 0, | ||||
|                 y: 1, | ||||
|                 x2: 0, | ||||
|                 y2: 0, | ||||
|                 colorStops: [{ | ||||
|                     offset: 0, color: '#4facfe' // 0% 处的颜色 | ||||
|                 }, { | ||||
|                     offset: 1, color: '#00f2fe' // 100% 处的颜色 | ||||
|                 }], | ||||
|                 global: false // 缺省为 false | ||||
|               } | ||||
|             }, | ||||
|             progress: { | ||||
|               show: true, | ||||
|               width: 2 | ||||
|             }, | ||||
|             pointer: { | ||||
|               show: false | ||||
|             }, | ||||
|             axisLine: { | ||||
|               show: false | ||||
|             }, | ||||
|             axisTick: { | ||||
|               show: false | ||||
|             }, | ||||
|             splitLine: { | ||||
|               show: false | ||||
|             }, | ||||
|             axisLabel: { | ||||
|               show: false | ||||
|             }, | ||||
|             detail: { | ||||
|               show: false | ||||
|             }, | ||||
|             data: [ | ||||
|               { | ||||
|                 value: 100 | ||||
|               } | ||||
|             ] | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|       this.guageLoads.setOption(option) | ||||
|       window.addEventListener("resize", function () { | ||||
|         this.guageLoads.resize(); | ||||
|       }); | ||||
|     }, | ||||
|     drawAreaCpu() { | ||||
|       this.areaCpu = echarts.init(document.getElementById("areaCpu")) | ||||
|       let option = { | ||||
|         grid: { | ||||
|           left: '0%', | ||||
|           right: '0%', | ||||
|           bottom: '0', | ||||
|           top:15, | ||||
|           containLabel: true | ||||
|         }, | ||||
|         xAxis: { | ||||
|           type: 'category', | ||||
|           axisTick: { | ||||
|             show:false | ||||
|           }, | ||||
|           axisLine: { | ||||
|             lineStyle: { | ||||
|               color: "rgba(119, 181, 213, 0.5)" | ||||
|             } | ||||
|           }, | ||||
|           axisLabel: { | ||||
|             color: "rgba(173, 230, 238, 1)" | ||||
|           }, | ||||
|           data: date | ||||
|         }, | ||||
|         yAxis: { | ||||
|           type: 'value', | ||||
|           axisLine: { | ||||
|             show:true, | ||||
|             lineStyle: { | ||||
|               color: "rgba(119, 181, 213, 0.5)" | ||||
|             } | ||||
|           }, | ||||
|           splitLine: { | ||||
|             show: true, | ||||
|             lineStyle: { | ||||
|               color: "rgba(119, 181, 213, 0.2)" | ||||
|             } | ||||
|           }, | ||||
|           axisLabel: { | ||||
|             color: "rgba(173, 230, 238, 1)" | ||||
|           }, | ||||
|         }, | ||||
|         series: [ | ||||
|           { | ||||
|             type:'line', | ||||
|             smooth:true, | ||||
|             symbol: 'none', | ||||
|             sampling: 'average', | ||||
|             itemStyle:{ normal:{color:"#10b3d6"}}, | ||||
|             areaStyle: { | ||||
|                 normal: { | ||||
|                 color: "#10b3d6", | ||||
|               }, | ||||
|             }, | ||||
|             data: data | ||||
|           } | ||||
|         ] | ||||
|       } | ||||
|       this.areaCpu.setOption(option) | ||||
|       window.addEventListener("resize", function () { | ||||
|         this.areaCpu.resize(); | ||||
|       }); | ||||
|     }, | ||||
|     drawDisk() { | ||||
|       this.barDisk = echarts.init(document.getElementById("disk")) | ||||
|       let option = { | ||||
|         grid: { | ||||
|           left: '0%', | ||||
|           right: '0%', | ||||
|           bottom: '0', | ||||
|           top:15, | ||||
|           containLabel: true | ||||
|         }, | ||||
|         xAxis: { | ||||
|           type: 'category', | ||||
|           axisTick: { | ||||
|             show:false | ||||
|           }, | ||||
|           axisLine: { | ||||
|             lineStyle: { | ||||
|               color: "rgba(119, 181, 213, 0.5)" | ||||
|             } | ||||
|           }, | ||||
|           axisLabel: { | ||||
|             color: "rgba(173, 230, 238, 1)" | ||||
|           }, | ||||
|           data: ['C', 'D', 'E'] | ||||
|         }, | ||||
|         yAxis: { | ||||
|           type: 'value', | ||||
|           min: 0, | ||||
|           max: 100, | ||||
|            | ||||
|           axisLine: { | ||||
|             show:true, | ||||
|             lineStyle: { | ||||
|               color: "rgba(119, 181, 213, 0.5)" | ||||
|             } | ||||
|           }, | ||||
|           splitLine: { | ||||
|             show: true, | ||||
|             lineStyle: { | ||||
|               color: "rgba(119, 181, 213, 0.2)" | ||||
|             } | ||||
|           }, | ||||
|           axisLabel: { | ||||
|             color: "rgba(173, 230, 238, 1)", | ||||
|             formatter: "{value}%" | ||||
|           }, | ||||
|         }, | ||||
|         series: [ | ||||
|           { | ||||
|             type: "bar", | ||||
|             barWidth: 50, | ||||
|             itemStyle: { | ||||
|               normal: { | ||||
|                 color: function(params) { | ||||
|                   //注意,如果颜色太少的话,后面颜色不会自动循环,最好多定义几个颜色 | ||||
|                   var colorList = [ | ||||
|                     { | ||||
|                       type: 'linear', | ||||
|                       x: 0, | ||||
|                       y: 1, | ||||
|                       x2: 0, | ||||
|                       y2: 0, | ||||
|                       colorStops: [{ | ||||
|                           offset: 0, color: '#b43c2b' // 0% 处的颜色 | ||||
|                       }, { | ||||
|                           offset: 1, color: '#d3a721' // 100% 处的颜色 | ||||
|                       }], | ||||
|                     }, { | ||||
|                       type: 'linear', | ||||
|                       x: 0, | ||||
|                       y: 1, | ||||
|                       x2: 0, | ||||
|                       y2: 0, | ||||
|                       colorStops: [{ | ||||
|                           offset: 0, color: '#0c5fa6' // 0% 处的颜色 | ||||
|                       }, { | ||||
|                           offset: 1, color: '#0af0f8' // 100% 处的颜色 | ||||
|                       }], | ||||
|                     }, { | ||||
|                       type: 'linear', | ||||
|                       x: 0, | ||||
|                       y: 1, | ||||
|                       x2: 0, | ||||
|                       y2: 0, | ||||
|                       colorStops: [{ | ||||
|                           offset: 0, color: '#0a6f0a' // 0% 处的颜色 | ||||
|                       }, { | ||||
|                           offset: 1, color: '#90d40c' // 100% 处的颜色 | ||||
|                       }], | ||||
|                     } | ||||
|                   ]; | ||||
|                   return colorList[params.dataIndex] | ||||
|                 } | ||||
|               }, | ||||
|             }, | ||||
|             data: [60, 80, 30], | ||||
|             z: 10, | ||||
|             zlevel: 0, | ||||
|           }, | ||||
|           { | ||||
|             // 分隔 | ||||
|             type: "pictorialBar", | ||||
|             itemStyle: { | ||||
|               normal: { | ||||
|                 color: "#0F375F", | ||||
|               }, | ||||
|             }, | ||||
|             symbolRepeat: "fixed", | ||||
|             symbolMargin: 2, | ||||
|             symbol: "rect", | ||||
|             symbolClip: true, | ||||
|             symbolSize: [50, 4], | ||||
|             symbolPosition: "start", | ||||
|             data: [60, 80, 30], | ||||
|             width: 5, | ||||
|             z: 0, | ||||
|             zlevel: 1, | ||||
|           }, | ||||
|         ], | ||||
|       } | ||||
|       this.barDisk.setOption(option) | ||||
|       window.addEventListener("resize", function () { | ||||
|         this.barDisk.resize(); | ||||
|       }); | ||||
|     }, | ||||
|   }, | ||||
| } | ||||
| </script> | ||||
|  | @ -578,12 +1290,43 @@ export default { | |||
| } | ||||
| .content-center{ | ||||
|   width: 100%; | ||||
|   height: 130px; | ||||
|   height: 115px; | ||||
|   position: relative; | ||||
|   // height: 14.9%; | ||||
|   .legend-list{ | ||||
|     list-style:none; | ||||
|     li{ | ||||
|       float: left; | ||||
|       font-size: 14px; | ||||
|       margin-left: 25px; | ||||
|       .li-icon{ | ||||
|         display: inline-block; | ||||
|         vertical-align: middle; | ||||
|         width: 12px; | ||||
|         height: 12px; | ||||
|         border-radius: 50%; | ||||
|         background: red; | ||||
|         margin-right: 10px; | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   .line-bg{ | ||||
|     width: 100%; | ||||
|     height: 32px; | ||||
|     position: absolute; | ||||
|     left: 0; | ||||
|     top: 55px; | ||||
|     background: url(~@/assets/images/abnormalAlarm/line.png) repeat; | ||||
|   } | ||||
|   .time-line{ | ||||
|     width: 100%; | ||||
|     height: 75px; | ||||
|     position: relative; | ||||
|   } | ||||
| } | ||||
| .content-bottom{ | ||||
|   width: 100%; | ||||
|   height: calc(100% - 461px); | ||||
|   height: calc(100% - 446px); | ||||
|   // height: 41.6%; | ||||
|   display: flex; | ||||
|   justify-content: space-between; | ||||
|  | @ -593,11 +1336,40 @@ export default { | |||
|     &-top{ | ||||
|       width: 100%; | ||||
|       height: 160px; | ||||
|       .gauge-content{ | ||||
|         width: 100%; | ||||
|         height: 120px; | ||||
|       } | ||||
|     } | ||||
|     &-bottom{ | ||||
|       width: 100%; | ||||
|       height: calc(100% - 160px); | ||||
|       .right-title{ | ||||
|         font-family: ArialMT; | ||||
|         font-size: 12px; | ||||
|         letter-spacing: 1px; | ||||
|         color: #ade6ee; | ||||
|         font-weight: normal; | ||||
|         &-item{ | ||||
|           display: inline-block; | ||||
|           margin-left: 20px; | ||||
|         } | ||||
|         i{ | ||||
|           font-size: 16px; | ||||
|           font-style: normal; | ||||
|           letter-spacing: 2px; | ||||
|           color: #ade6ee; | ||||
|         } | ||||
|       } | ||||
|       .area-cpu{ | ||||
|         width: 100%; | ||||
|         height: calc(100% - 40px); | ||||
|       } | ||||
|     } | ||||
|   } | ||||
|   .bar-disk{ | ||||
|     width: 100%; | ||||
|     height: calc(100% - 40px); | ||||
|   } | ||||
| } | ||||
| </style> | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user