From 1274e4da2f175dba16d68bd091be6f23ee9a523a Mon Sep 17 00:00:00 2001
From: haoxuan <haoxuan>
Date: 星期五, 01 十二月 2023 19:43:30 +0800
Subject: [PATCH] 人员生产效率对比组件开发

---
 src/views/cockpitPage/components/PerSonnelProductivity.vue |  453 +++++++++++++++++++++++++++++++++++---------------------
 1 files changed, 283 insertions(+), 170 deletions(-)

diff --git a/src/views/cockpitPage/components/PerSonnelProductivity.vue b/src/views/cockpitPage/components/PerSonnelProductivity.vue
index bde5d14..85bd057 100644
--- a/src/views/cockpitPage/components/PerSonnelProductivity.vue
+++ b/src/views/cockpitPage/components/PerSonnelProductivity.vue
@@ -23,197 +23,310 @@
   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: [120, 200, 150, 380, 470, 150, 230],
+      },
     };
   },
   mounted() {
-    this.pieChart('chart',this.chartData)
+    this.pieChart('chart', this.chartData)
+    let chartData2 = [
+      { value: 10, name: "涓�绫�" },
+      { value: 20, name: "浜岀被" },
+      { value: 60, name: "涓夌被" },
+      { value: 10, name: "鍥涚被" },
+    ];
+    this.getChartRight('chart2', chartData2)
   },
   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,
-                  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:[],
+              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: '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,
-                },
-              ]
-            };
+              },
+              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
+              },
 
-            option && myChart.setOption(option);
-          }else{
-            option={};
-            myChart.setOption(option,true);
-          }
-        },
+              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);
+      }
+    },
+    getChartRight(chartName, data) {
+      let chartDom = this.$refs[chartName];
+      let myChart = echarts.init(chartDom);
+      let img='/cockpitPage/dotted-circle.png'
+      let option;
+      if (data) {
+        option = {
+          color: ["#dcb018", "#735b09", "#ebd68e",'#FF3000'],
+          tooltip: {
+            trigger: "item",
+          },
+          graphic:{
+            elements:[
+              {
+                type:'image',
+                z:3,
+                style:{
+                  image:img,
+                  width:118,
+                  height:118,
+                },
+                left:'center',
+                top:'center',
+                position:[10,10]
+             }
+             
+            ]
+          },
+          series: [
+            {
+              name: "Access From",
+              type: "pie",
+              // center: ['80%', '46%'],
+              radius: ['52%','65%'],
+              // minAngle: 20,
+              // startAngle: 60,
+              avoidLabelOverlap: false,
+             
+              label: {
+                normal:{
+                  position: 'outer',
+                  paddding:[-100,70],
+                  
+                  color: "#01f7fd",
+                  fontSize: 12,
+                  borderWidth:20,
+                  borderRadius:4,
+                  formatter: function (params) {
+                    let str=
+                    params.name+
+                          params.value+'%'
+                    return str;
+                  },
+                },
+              },
+              emphasis: {
+                label: {
+                  show: true,
+                  fontSize: 12,
+                  fontWeight: "bold",
+                  color:'#dcb018',
+                },
+              },
+              labelLine: {
+                show: true,
+                length: 20,
+                length2:10,
+                lineStyle:{
+                  color:'#dcb018',
+                }
+              },
+              data: data,
+            },
+          ],
+        };
+
+        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%;
+.bar-chart {
+  width: 100%;
+  height: calc(100% - 20px);
+  padding: 20px 0 0;
+
+  .bar-contents {
+    width: 100%;
+    height: calc(100% - 60px);
+
+    .chart-left {
+      width: calc(60% - 20px);
+      height: 100%;
+      margin-right:20px;
+      float:left;
+      border: 1px solid #00FFFF;
+      box-sizing: border-box;
+    }
+
+    .chart-right {
+      width: 40%;
+      float:left;
+      height: 100%;
+      position:relative;
+      .chart-bg{
+        width:100%;
+        position:absolute;
+        top:0;
+        right:0;
+        img{
+          width:100%;
+        }
       }
       .chart{
-        width:100%;
-        height:100%;
+        position:absolute;
+        top:0;
+        right:0;
       }
+    }
+
+    .chart {
+      width: 100%;
+      height: 100%;
+    }
   }
 }
 </style>

--
Gitblit v1.8.0