From c4d687aacfb4e7b6ee5ce67df93cf2f8d8df80c1 Mon Sep 17 00:00:00 2001
From: xiejun <xj@2023>
Date: 星期日, 26 十一月 2023 14:05:48 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 Source/UBCS-WEB/src/components/StatisticsComponent/ColumnarChart.vue |  191 +++++++++++++++++++++++++++--------------------
 1 files changed, 110 insertions(+), 81 deletions(-)

diff --git a/Source/UBCS-WEB/src/components/StatisticsComponent/ColumnarChart.vue b/Source/UBCS-WEB/src/components/StatisticsComponent/ColumnarChart.vue
index 2d84725..065c234 100644
--- a/Source/UBCS-WEB/src/components/StatisticsComponent/ColumnarChart.vue
+++ b/Source/UBCS-WEB/src/components/StatisticsComponent/ColumnarChart.vue
@@ -2,120 +2,149 @@
   <basic-container>
     <v-chart id="chart" :auto-resize="true" :options="chartOptions"></v-chart>
   </basic-container>
-
 </template>
 
 <script>
 import 'echarts'
-import 'echarts/lib/chart/line'
-import 'echarts/lib/chart/pie'
-import 'echarts/lib/chart/bar'
 import 'echarts/lib/component/tooltip'
 import 'echarts/lib/component/title'
 import 'echarts/lib/component/legend'
 
-var data = [
-  [120, 132, 101, 134, 90, 230, 210, 130, 0, 122, 100, 80],
-  [220, 232, 301, 334, 290, 330, 410, 330, 212, 322, 200, 234],
-];
-
-// 鎵惧埌姣忎竴椤规暟鎹腑鐨勬渶澶у�煎苟淇濆瓨鍒版暟缁�
-var maxValues = data[0].map(function (_, i) {
-  return Math.max.apply(null, data.map(function (item) {
-    return item[i];
-  }));
-});
-
-var colors = ['#91CC75', '#5470C6'];
-// 鐢熸垚鏌辩姸鍥剧殑 series 鏁版嵁
-var seriesData = [];
-for (var i = 0; i < data.length; i++) {
-  var curSeriesData = [];
-  // 璁$畻鏁版嵁涓殑姣忕粍鏁版嵁鐨勬渶澶у��
-  for (var j = 0; j < data[i].length; j++) {
-    var borderRadius = [0, 0, 0, 0];  // 榛樿涓嶈缃渾瑙�
-    if (data[i][j] === maxValues[j]) {  // 濡傛灉褰撳墠鏌卞瓙鐨勫�肩瓑浜庡搴斿垪鐨勬渶澶у�硷紝璁剧疆鍦嗚
-      borderRadius = [50, 50, 0, 0];  // 璁剧疆鍥涗釜瑙掗兘涓哄渾瑙�
+export default {
+  name: "ColumnarChart",
+  props:{
+    columnarData:{
+      type:Array,
+      default:[]
+    },
+    chartName:{
+      type:String,
+      default: ""
     }
-    curSeriesData.push({
-      value: data[i][j],
-      itemStyle: {
-        normal: {
-          barBorderRadius: borderRadius,  // 璁剧疆鍦嗚
-          color: colors[i],
-          show: function (params) {
-            // 鏍规嵁鏁版嵁鍊肩殑澶у皬鏉ュ垽鏂槸鍚︽樉绀� label
-            return params.value > 30;
+  },
+  watch:{
+    columnarData:{
+      immediate:true,
+      handler(newval,oldval){
+        if(newval && newval.length > 0){
+          const minValues = newval[0].map(function (_, i) {
+            return Math.min.apply(
+              null,
+              newval.map(function (item) {
+                return item[i];
+              })
+            );
+          });
+
+          let colors = ["#91CC75", "#5470C6"];
+
+          const seriesData = [];
+          for (let i = 0; i < newval.length; i++) {
+            let curSeriesData = [];
+            for (let j = 0; j < newval[i].length; j++) {
+              let borderRadius = [0, 0, 0, 0];
+              if (newval[i][j] === minValues[j]) {
+                borderRadius = [50, 50, 0, 0];
+              }
+              curSeriesData.push({
+                value: newval[i][j],
+                itemStyle: {
+                  normal: {
+                    barBorderRadius: borderRadius,  // 璁剧疆鍦嗚
+                    color: colors[i],
+                  }
+                },
+              });
+            }
+            let seriesName = (i === 0 ? "鎬婚噺" : "鏂板")
+            seriesData.push({
+              name: seriesName,
+              type: "bar",
+              stack: "鎬婚噺",
+              barWidth: 60,
+              data: curSeriesData,
+              label: {
+                show: true,
+                position: 'top'
+              },
+              emphasis: {
+                focus: "series",
+              },
+            });
+            this.chartOptions.series=seriesData
           }
         }
       }
-    });
-  }
-  var seriesName = '';
-  if (i === 0) {
-    seriesName = '鎬婚噺';
-  } else if (i === 1) {
-    seriesName = '鏂板';
-  }
-  seriesData.push({
-    name: seriesName,
-    type: 'bar',
-    stack: '鎬婚噺',
-    data: curSeriesData,
-    label: {
-      show: true,
-      position: 'top'
     },
-    itemStyle: {
-      color: colors[i]  // 璁剧疆鏌卞瓙鐨勯鑹�
-    },
-    emphasis: {
-      focus: 'series'
+    chartName:{
+      handler(newval,oldval){
+        if(newval){
+          console.log(newval)
+          this.chartOptions.title.text = newval + "鏁版嵁缁熻"
+        }
+      },
+      immediate:true,
+      deep:true
     }
-  });
-}
-
-export default {
-  name: "ColumnarChart",
+  },
   data() {
     return {
       chartOptions: {
+        color:["#91CC75", "#5470C6"],
         title: {
-          text: '浜哄憳涓绘暟鎹粺璁�'
+          text: "",
         },
         grid: {
-          left: '3%',
-          right: '4%',
-          bottom: '3%',
-          containLabel: true
+          left: "3%",
+          right: "4%",
+          bottom: "3%",
+          containLabel: true,
         },
         tooltip: {
-          trigger: 'axis',
+          trigger: "axis",
           axisPointer: {
-            type: 'shadow'
-          }
+            type: "shadow",
+          },
         },
         legend: {
-          data: ['鎬婚噺', '鏂板'],
-          left: 'center'
+          data: ["鎬婚噺", "鏂板"],
+          left: "center",
+          textStyle: {
+            fontSize: 14 // 璋冩暣瀛椾綋澶у皬
+          }
         },
         xAxis: {
-          type: 'category',
-          data: ['涓�鏈�', '浜屾湀', '涓夋湀', '鍥涙湀', '浜旀湀', '鍏湀', '涓冩湀', '鍏湀', '涔濇湀', '鍗佹湀', '鍗佷竴鏈�', '鍗佷簩鏈�']
+          type: "category",
+          data: [
+            "涓�鏈�",
+            "浜屾湀",
+            "涓夋湀",
+            "鍥涙湀",
+            "浜旀湀",
+            "鍏湀",
+            "涓冩湀",
+            "鍏湀",
+            "涔濇湀",
+            "鍗佹湀",
+            "鍗佷竴鏈�",
+            "鍗佷簩鏈�",
+          ],
         },
         yAxis: {
-          type: 'value'
+          type: "value",
         },
-        series: seriesData,
-      }
-    }
-  }
-}
+        series: [],
+      },
+    };
+  },
+  created() {
+  },
+};
 </script>
 
 <style scoped lang="scss">
 #chart {
-  width: 1280px;
-  height: 800px;
+  width: 100%;
+  height: 560px;
 }
 </style>

--
Gitblit v1.9.3