From ac5ea4c47689788facb2471995621c720a06abc8 Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期五, 01 十二月 2023 17:31:34 +0800
Subject: [PATCH] 设备负荷对比分析的组件开发
---
src/views/cockpitPage/components/ChartTitle.vue | 2
src/views/cockpitPage/components/DeviceChart.vue | 350 +++++++++++++++++++----------------
src/components/cockpitPage/BackgroundBoardLayout.vue | 1
src/views/cockpitPage/components/BarChart.vue | 4
src/views/cockpitPage/components/PerSonnelProductivity.vue | 219 +++++++++++++++++++++
src/views/cockpitPage/components/MaterialChart.vue | 6
src/views/cockpitPage/index.vue | 6
7 files changed, 422 insertions(+), 166 deletions(-)
diff --git a/src/components/cockpitPage/BackgroundBoardLayout.vue b/src/components/cockpitPage/BackgroundBoardLayout.vue
index 3022f4e..08c04fc 100644
--- a/src/components/cockpitPage/BackgroundBoardLayout.vue
+++ b/src/components/cockpitPage/BackgroundBoardLayout.vue
@@ -142,6 +142,7 @@
.left-bottom-right-block {
width: $leftBottomRightWidth;
height: 100%;
+ padding-right:20px;
.right-bottom-top-block {
height: 60%;
}
diff --git a/src/views/cockpitPage/components/BarChart.vue b/src/views/cockpitPage/components/BarChart.vue
index 1d090ae..d494732 100644
--- a/src/views/cockpitPage/components/BarChart.vue
+++ b/src/views/cockpitPage/components/BarChart.vue
@@ -233,7 +233,7 @@
{
type: 'bar',
name: '姝e搧鏁伴噺',
- barWidth: '20%',
+ barWidth: '15',
itemStyle: {
normal: {
//鏌卞舰鍥惧渾瑙掞紝鍒濆鍖栨晥鏋�
@@ -245,7 +245,7 @@
{
type: 'bar',
name: '娆″搧鏁伴噺',
- barWidth: '20%',
+ barWidth: '15',
itemStyle: {
normal: {
//鏌卞舰鍥惧渾瑙掞紝鍒濆鍖栨晥鏋�
diff --git a/src/views/cockpitPage/components/ChartTitle.vue b/src/views/cockpitPage/components/ChartTitle.vue
index 2709c63..1ca2814 100644
--- a/src/views/cockpitPage/components/ChartTitle.vue
+++ b/src/views/cockpitPage/components/ChartTitle.vue
@@ -41,7 +41,7 @@
top:0;
}
.title-bg{
- width:100%;
+ width:calc(100% - 20px);
height:30px;
padding-left:20px;
display:inline-block;
diff --git a/src/views/cockpitPage/components/DeviceChart.vue b/src/views/cockpitPage/components/DeviceChart.vue
index 8e65081..be8a045 100644
--- a/src/views/cockpitPage/components/DeviceChart.vue
+++ b/src/views/cockpitPage/components/DeviceChart.vue
@@ -1,6 +1,11 @@
<template>
<div class="bar-chart">
- <ChartTitle name="璁惧璐熻嵎瀵规瘮鍒嗘瀽"></ChartTitle>
+ <div class="top-view">
+ <img src="/cockpitPage/machine-top.png" alt="" />
+ <div class="top-title">
+ <span>璁惧璐熻嵎瀵规瘮鍒嗘瀽</span>
+ </div>
+ </div>
<div class="bar-contents">
<div class="chart" ref="chart"></div>
</div>
@@ -8,193 +13,218 @@
</template>
<script>
-import ChartTitle from "@/views/cockpitPage/components/ChartTitle.vue";
//寮曞叆echart
import * as echarts from 'echarts'
export default {
components: {
- ChartTitle,
},
props: {},
data() {
return {
- chartData:{
- datax:['浜у搧1', '浜у搧2', '浜у搧3', '浜у搧4','浜у搧5', '浜у搧6'],
- datay:[120, 200, 150, 380, 470, 150, 230],
+ chartData: {
+ datax: ['璁惧1', '璁惧2', '璁惧3', '璁惧4', '璁惧5', '璁惧6'],
+ datay: [10, 20, 15, 38, 47, 50, 20],
}
};
},
mounted() {
- this.pieChart('chart',this.chartData)
+ this.pieChart('chart', this.chartData)
},
watch: {},
methods: {
//鍦ㄨ亴
- pieChart(chartName,data){
- let chartDom = this.$refs[chartName]
- let myChart = echarts.init(chartDom);
- let option;
- let lineColor='#35ddc74d'
- if(data){
- option = {
- color:['#00FFFF','#dcb018'],
- tooltip: {
- trigger: 'axis',
- axisPointer: {
- type: 'none'
- },
+ pieChart(chartName, data) {
+ let chartDom = this.$refs[chartName]
+ let myChart = echarts.init(chartDom);
+ let option;
+ let lineColor = '#35ddc74d'
+ if (data) {
+ option = {
+ color: ['#00FFFF', '#dcb018'],
+ tooltip: {
+ trigger: 'axis',
+ axisPointer: {
+ type: 'none'
+ },
+ },
+ grid: {
+ right: "80px",
+ bottom: '60px',
+ left: '60px',
+ top: '30px',
+ },
+ dataZoom: [
+ {
+ type: 'inside',
+ // show: true, //鏄剧ず婊氬姩鏉�
+ start: 0,
+ end: 100,
+ yAxisIndex: 0,
+ minSpan: 20,
+ maxSpan: 100,
+ // handleSize: 8
+ },
+ {
+ // type: 'slider', //涓や釜涓�涓槸slider锛屼竴涓槸inside锛宻lider鏄鍔犳粴鍔ㄦ潯浠ュ強榧犳爣鎷栧姩婊氬姩鏉″姛鑳斤紝inside鍒欐槸榧犳爣婊氳疆婊氬姩婊氬姩鏉°��
+ type: 'inside',
+ // show: true,
+ // realtime : true,
+ yAxisIndex: 0,
+ minSpan: 20,
+ maxSpan: 100,
+ start: 0,
+ end: 100
+ },
+ ],
+ legend: {
+ itemWidth: 8,
+ itemHeight: 8,
+ itemGap: 35,//闂磋窛
+ bottom: '5px',
+ left: 'center',
+ },
+ yAxis: [
+ {
+ type: 'category',
+ axisTick: {
+ show: false
},
- grid: {
- right: "80px",
- bottom:'60px',
- left:'60px',
- top:'30px',
- },
- dataZoom: [
- {
- type: 'inside',
- // show: true, //鏄剧ず婊氬姩鏉�
- start:0,
- end: 100,
- xAxisIndex: 0,
- minSpan:20,
- maxSpan:100,
- // handleSize: 8
- },
- {
- // type: 'slider', //涓や釜涓�涓槸slider锛屼竴涓槸inside锛宻lider鏄鍔犳粴鍔ㄦ潯浠ュ強榧犳爣鎷栧姩婊氬姩鏉″姛鑳斤紝inside鍒欐槸榧犳爣婊氳疆婊氬姩婊氬姩鏉°��
- type: 'inside',
- // show: true,
- // realtime : true,
- xAxisIndex: 0,
- minSpan:20,
- maxSpan:100,
- start: 0,
- end: 100
- },
- ],
- legend: {
- itemWidth: 8,
- itemHeight: 8,
- itemGap: 35,//闂磋窛
- bottom:'5px',
- left:'center',
- },
- yAxis: [
- {
- type: 'category',
- axisTick: {
- show: false
- },
- axisLine: {
- show: true,
- lineStyle: {
- color:lineColor,
- }
- },
- axisLabel:{
- // rotate:45,
- margin: 10,
- show: true,
- textStyle: {
- color:function(params,index){
- let colorList=['#dcb018','#00FFFF']
- if(index % 2 == 0){
- return colorList[0]
- }else{
- return colorList[1]
- }
- }
- },
- },
- data: data.datax?data.datax:[],
+ axisLine: {
+ show: true,
+ lineStyle: {
+ color: lineColor,
}
- ],
- xAxis: [
- {
- type: '',
- name: '鍗曚綅锛氫欢',
- // min: data.yAxis[0].min?data.yAxis.min:0,
- minInterval: 1,//鍧愭爣杞存槸鏁存暟
- max:Math.ceil(eval(`Math.max(${data.datay})`)/5)*5,//鏁版嵁鏈�澶у�煎姞3
- interval: Math.ceil(eval( `Math.max(${data.datay})`)/7)*7 / 7,
- position: 'left',
- axisLine: {
- show: true,
- lineStyle: {
- color:'#0a112B',
+ },
+ axisLabel: {
+ // rotate:45,
+ margin: 10,
+ show: true,
+ textStyle: {
+ color: function (params, index) {
+ let colorList = ['#dcb018', '#00FFFF']
+ if (index % 2 == 0) {
+ return colorList[0]
+ } else {
+ return colorList[1]
}
- },
- nameTextStyle:{
- color:"#00FFFF",
- },
- splitLine: {
- show: true,
- lineStyle: {
- // 浣跨敤娣辨祬鐨勯棿闅旇壊
- color: lineColor,
- }
- },
- axisTick: {
- show: false
- },
-
- axisLabel: {
- textStyle: {
- color: '#00FFFF'
- },
-
}
},
- ],
- series:[
- {
- type: 'bar',
- name: '',
- barWidth: '20%',
- itemStyle: {
- normal: {
- //鏌卞舰鍥惧渾瑙掞紝鍒濆鍖栨晥鏋�
- barBorderRadius:[4, 4, 0, 0],
- color:function(params){
- let colorList=['#dcb018','#00FFFF']
- if(params.dataIndex % 2 == 0){
- return colorList[0]
- }else{
- return colorList[1]
- }
- }
- },
- },
- data: data.datay,
- },
- ]
- };
+ },
+ data: data.datax ? data.datax : [],
+ }
+ ],
+ xAxis: [
+ {
+ type: '',
+ name: '',
+ // min: data.yAxis[0].min?data.yAxis.min:0,
+ minInterval: 1,//鍧愭爣杞存槸鏁存暟
+ max: Math.ceil(eval(`Math.max(${data.datay})`) / 5) * 5,//鏁版嵁鏈�澶у�煎姞3
+ interval: Math.ceil(eval(`Math.max(${data.datay})`) / 6) * 6 / 6,
+ position: 'left',
+ axisLine: {
+ show: true,
+ lineStyle: {
+ color: '#0a112B',
+ }
+ },
+ nameTextStyle: {
+ color: "#00FFFF",
+ },
+ splitLine: {
+ show: true,
+ lineStyle: {
+ // 浣跨敤娣辨祬鐨勯棿闅旇壊
+ color: lineColor,
+ }
+ },
+ axisTick: {
+ show: false
+ },
- option && myChart.setOption(option);
- }else{
- option={};
- myChart.setOption(option,true);
- }
- },
+ axisLabel: {
+ textStyle: {
+ color: '#00FFFF'
+ },
+ formatter: '{value}%'
+ }
+ },
+ ],
+ series: [
+ {
+ type: 'bar',
+ name: '',
+ barWidth: '15',
+ label:{
+ show:true,
+ position:'right',
+ color: '#00FFFF'
+ },
+ itemStyle: {
+ normal: {
+ //鏌卞舰鍥惧渾瑙掞紝鍒濆鍖栨晥鏋�
+ barBorderRadius: [4, 4, 0, 0],
+ color: function (params) {
+ let colorList = ['#dcb018', '#00FFFF']
+ if (params.dataIndex % 2 == 0) {
+ return colorList[0]
+ } else {
+ return colorList[1]
+ }
+ }
+ },
+ },
+ data: data.datay,
+ },
+ ]
+ };
+
+ option && myChart.setOption(option);
+ } else {
+ option = {};
+ myChart.setOption(option, true);
+ }
+ },
},
};
</script>
<style scoped lang="scss">
-.bar-chart{
- width:100%;
- height:calc(100% - 0px);
- padding:0px 0 0;
- .bar-contents{
- width:100%;
- height:calc(100% - 60px);
- border:1px solid #00FFFF;
- box-sizing: border-box;
- .chart{
- width: 100%;
- height:100%;
+.bar-chart {
+ width: 100%;
+ height: calc(100% - 0px);
+ padding: 0px 0 0;
+ border: 1px solid #00FFFF;
+ box-sizing: border-box;
+ position: relative;
+ .top-view {
+ height:38px;
+ margin-top: -1px;
+ margin-left: -1px;
+ position: relative;
+ left:0;
+ top:0;
+ .top-title {
+ width: calc(100% - 10px);
+ margin: auto;
+ height:38px;
+ line-height:38px;
+ position:absolute;
+ top:0;
+ left:10px;
+ color: #01f7fd;
+ font-size: 14px;
+ font-family: "Arial Negreta", "Arial Normal", "Arial";
+ font-weight: 700;
}
+ }
+ .bar-contents {
+ width: 100%;
+ height: calc(100% - 40px);
+ .chart {
+ width: 100%;
+ height: 100%;
+ }
}
}
</style>
diff --git a/src/views/cockpitPage/components/MaterialChart.vue b/src/views/cockpitPage/components/MaterialChart.vue
index 3102763..56c5eaf 100644
--- a/src/views/cockpitPage/components/MaterialChart.vue
+++ b/src/views/cockpitPage/components/MaterialChart.vue
@@ -56,7 +56,7 @@
// show: true, //鏄剧ず婊氬姩鏉�
start:0,
end: 100,
- xAxisIndex: 0,
+ yAxisIndex: 0,
minSpan:20,
maxSpan:100,
// handleSize: 8
@@ -66,7 +66,7 @@
type: 'inside',
// show: true,
// realtime : true,
- xAxisIndex: 0,
+ yAxisIndex: 0,
minSpan:20,
maxSpan:100,
start: 0,
@@ -151,7 +151,7 @@
{
type: 'bar',
name: '',
- barWidth: '20%',
+ barWidth: '15',
itemStyle: {
normal: {
//鏌卞舰鍥惧渾瑙掞紝鍒濆鍖栨晥鏋�
diff --git a/src/views/cockpitPage/components/PerSonnelProductivity.vue b/src/views/cockpitPage/components/PerSonnelProductivity.vue
new file mode 100644
index 0000000..bde5d14
--- /dev/null
+++ b/src/views/cockpitPage/components/PerSonnelProductivity.vue
@@ -0,0 +1,219 @@
+<template>
+ <div class="bar-chart">
+ <ChartTitle name="浜哄憳鐢熶骇鏁堢巼瀵规瘮"></ChartTitle>
+ <div class="bar-contents">
+ <div class="chart-left">
+ <div class="chart" ref="chart"></div>
+ </div>
+ <div class="chart-right">
+ <div class="chart" ref="chart2"></div>
+ </div>
+ </div>
+ </div>
+</template>
+
+<script>
+import ChartTitle from "@/views/cockpitPage/components/ChartTitle.vue";
+//寮曞叆echart
+import * as echarts from 'echarts'
+export default {
+ components: {
+ ChartTitle,
+ },
+ props: {},
+ data() {
+ return {
+ chartData:{
+ datax:['浜哄憳1', '浜哄憳2', '浜哄憳3', '浜哄憳4','浜哄憳5', '浜哄憳6'],
+ datay:[120, 200, 150, 380, 470, 150, 230],
+ }
+ };
+ },
+ mounted() {
+ this.pieChart('chart',this.chartData)
+ },
+ watch: {},
+ methods: {
+ //鍦ㄨ亴
+ pieChart(chartName,data){
+ let chartDom = this.$refs[chartName]
+ let myChart = echarts.init(chartDom);
+ let option;
+ let lineColor='#35ddc74d'
+ if(data){
+ option = {
+ color:['#00FFFF','#dcb018'],
+ tooltip: {
+ trigger: 'axis',
+ axisPointer: {
+ type: 'none'
+ },
+ },
+ grid: {
+ right: "80px",
+ bottom:'60px',
+ left:'60px',
+ top:'30px',
+ },
+ dataZoom: [
+ {
+ type: 'inside',
+ // show: true, //鏄剧ず婊氬姩鏉�
+ start:0,
+ end: 100,
+ yAxisIndex: 0,
+ minSpan:20,
+ maxSpan:100,
+ // handleSize: 8
+ },
+ {
+ // type: 'slider', //涓や釜涓�涓槸slider锛屼竴涓槸inside锛宻lider鏄鍔犳粴鍔ㄦ潯浠ュ強榧犳爣鎷栧姩婊氬姩鏉″姛鑳斤紝inside鍒欐槸榧犳爣婊氳疆婊氬姩婊氬姩鏉°��
+ type: 'inside',
+ // show: true,
+ // realtime : true,
+ yAxisIndex: 0,
+ minSpan:20,
+ maxSpan:100,
+ start: 0,
+ end: 100
+ },
+ ],
+ legend: {
+ itemWidth: 8,
+ itemHeight: 8,
+ itemGap: 35,//闂磋窛
+ bottom:'5px',
+ left:'center',
+ },
+ yAxis: [
+ {
+ type: 'category',
+ axisTick: {
+ show: false
+ },
+ axisLine: {
+ show: true,
+ lineStyle: {
+ color:lineColor,
+ }
+ },
+ axisLabel:{
+ // rotate:45,
+ margin: 10,
+ show: true,
+ textStyle: {
+ color:function(params,index){
+ let colorList=['#dcb018','#00FFFF']
+ if(index % 2 == 0){
+ return colorList[0]
+ }else{
+ return colorList[1]
+ }
+ }
+ },
+ },
+ data: data.datax?data.datax:[],
+ }
+ ],
+ xAxis: [
+ {
+ type: '',
+ name: '鍗曚綅锛氫欢',
+ // min: data.yAxis[0].min?data.yAxis.min:0,
+ minInterval: 1,//鍧愭爣杞存槸鏁存暟
+ max:Math.ceil(eval(`Math.max(${data.datay})`)/5)*5,//鏁版嵁鏈�澶у�煎姞3
+ interval: Math.ceil(eval( `Math.max(${data.datay})`)/7)*7 / 7,
+ position: 'left',
+ axisLine: {
+ show: true,
+ lineStyle: {
+ color:'#0a112B',
+ }
+ },
+ nameTextStyle:{
+ color:"#00FFFF",
+ },
+ splitLine: {
+ show: true,
+ lineStyle: {
+ // 浣跨敤娣辨祬鐨勯棿闅旇壊
+ color: lineColor,
+ }
+ },
+ axisTick: {
+ show: false
+ },
+
+ axisLabel: {
+ textStyle: {
+ color: '#00FFFF'
+ },
+
+ }
+ },
+ ],
+ series:[
+ {
+ type: 'bar',
+ name: '',
+ barWidth: '15',
+ label:{
+ show:true,
+ position:'right',
+ color: '#00FFFF'
+ },
+ itemStyle: {
+ normal: {
+ //鏌卞舰鍥惧渾瑙掞紝鍒濆鍖栨晥鏋�
+ barBorderRadius:[4, 4, 0, 0],
+ color:function(params){
+ let colorList=['#dcb018','#00FFFF']
+ if(params.dataIndex % 2 == 0){
+ return colorList[0]
+ }else{
+ return colorList[1]
+ }
+ }
+ },
+ },
+ data: data.datay,
+ },
+ ]
+ };
+
+ option && myChart.setOption(option);
+ }else{
+ option={};
+ myChart.setOption(option,true);
+ }
+ },
+ },
+};
+</script>
+
+<style scoped lang="scss">
+.bar-chart{
+ width:100%;
+ height:calc(100% - 20px);
+ padding:20px 0 0;
+ .bar-contents{
+ width:100%;
+ height:calc(100% - 60px);
+
+ .chart-left{
+ width: 50%;
+ height:100%;
+ border:1px solid #00FFFF;
+ box-sizing: border-box;
+ }
+ .chart-right{
+ width: 50%;
+ height:100%;
+ }
+ .chart{
+ width:100%;
+ height:100%;
+ }
+ }
+}
+</style>
diff --git a/src/views/cockpitPage/index.vue b/src/views/cockpitPage/index.vue
index f5b44ca..476bc4b 100644
--- a/src/views/cockpitPage/index.vue
+++ b/src/views/cockpitPage/index.vue
@@ -9,6 +9,10 @@
<template #leftBlock3>
<CountView></CountView>
</template>
+
+ <template #leftBlock6>
+ <PerSonnelProductivity @should-reload="reloadAllData"></PerSonnelProductivity>
+ </template>
<template #rightBlock1>
<DeviceChart @should-reload="reloadAllData"></DeviceChart>
</template>
@@ -26,6 +30,7 @@
import MachineStartupRate from "@/views/cockpitPage/components/MachineStartupRate";
import CountView from "@/views/cockpitPage/components/CountView";
import BackgroundBoardLayout from "@/components/cockpitPage/BackgroundBoardLayout.vue";
+import PerSonnelProductivity from "@/views/cockpitPage/components/PerSonnelProductivity.vue";
import DeviceChart from "@/views/cockpitPage/components/DeviceChart.vue";
import MaterialChart from "@/views/cockpitPage/components/MaterialChart.vue";
import BarChart from "@/views/cockpitPage/components/BarChart.vue";
@@ -33,6 +38,7 @@
components: {
StatisticalBox,
BackgroundBoardLayout,
+ PerSonnelProductivity,
DeviceChart,
MaterialChart,
BarChart,
--
Gitblit v1.8.0