ソースを参照

Merge branch 'master' of https://git.cocorobo.cn/CocoRoboLabs/ssti-CollegeManage

yuanyiming 2 年 前
コミット
a9d415d839
3 ファイル変更215 行追加10 行削除
  1. 28 0
      package-lock.json
  2. 1 0
      package.json
  3. 186 10
      src/views/echarts.vue

+ 28 - 0
package-lock.json

@@ -10,6 +10,7 @@
       "dependencies": {
         "axios": "^1.2.1",
         "core-js": "^3.8.3",
+        "echarts": "^5.4.2",
         "element-ui": "^2.4.5",
         "less": "^4.1.3",
         "less-loader": "^11.1.0",
@@ -5200,6 +5201,20 @@
         "node": ">=6.0.0"
       }
     },
+    "node_modules/echarts": {
+      "version": "5.4.2",
+      "resolved": "https://registry.npmjs.org/echarts/-/echarts-5.4.2.tgz",
+      "integrity": "sha512-2W3vw3oI2tWJdyAz+b8DuWS0nfXtSDqlDmqgin/lfzbkB01cuMEN66KWBlmur3YMp5nEDEEt5s23pllnAzB4EA==",
+      "dependencies": {
+        "tslib": "2.3.0",
+        "zrender": "5.4.3"
+      }
+    },
+    "node_modules/echarts/node_modules/tslib": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
+      "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
+    },
     "node_modules/ee-first": {
       "version": "1.1.1",
       "resolved": "https://registry.npmmirror.com/ee-first/-/ee-first-1.1.1.tgz",
@@ -12334,6 +12349,19 @@
       "resolved": "https://registry.npmmirror.com/yallist/-/yallist-2.1.2.tgz",
       "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==",
       "dev": true
+    },
+    "node_modules/zrender": {
+      "version": "5.4.3",
+      "resolved": "https://registry.npmjs.org/zrender/-/zrender-5.4.3.tgz",
+      "integrity": "sha512-DRUM4ZLnoaT0PBVvGBDO9oWIDBKFdAVieNWxWwK0niYzJCMwGchRk21/hsE+RKkIveH3XHCyvXcJDkgLVvfizQ==",
+      "dependencies": {
+        "tslib": "2.3.0"
+      }
+    },
+    "node_modules/zrender/node_modules/tslib": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.0.tgz",
+      "integrity": "sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg=="
     }
   }
 }

+ 1 - 0
package.json

@@ -10,6 +10,7 @@
   "dependencies": {
     "axios": "^1.2.1",
     "core-js": "^3.8.3",
+    "echarts": "^5.4.2",
     "element-ui": "^2.4.5",
     "less": "^4.1.3",
     "less-loader": "^11.1.0",

+ 186 - 10
src/views/echarts.vue

@@ -28,15 +28,13 @@
 
       <!-- 中部大饼区开始 -->
      <div class="midBlock">
-        <div class="mid" style="background: ;"></div>
-        <div class="mid"></div>
+        <div ref="Circular" class="mid"></div>
+        <div ref="Horizontal" class="mid"></div>
      </div>
       <!-- 中部大饼区结束 -->
 
       <!-- 柱状图区域开始 -->
-      <div class="histogram">
-        
-      </div>
+      <div ref="Columnar" class="histogram"></div>
       <!-- 柱状图区域结束 -->
 
       <!-- 底部表格区域开始 -->
@@ -108,17 +106,191 @@
   </template>
     
   <script>
- 
+ import * as echarts from 'echarts';
   export default {
    
     data() {
       return {
+        //圆形
+        CircularData:{
+          title:{
+            text:"创新创业项目类型"
+          },
+          legend: {
+            data:[
+              "创客活动",
+              "个人创客"
+            ],
+            orient: 'vertical',
+            top:"10%",
+            left:"left"
+          },
+          series: [
+            {
+              type: 'pie',
+              label: {
+                show:true,
+                position:"inner",
+                formatter:'{d}%'
+              },
+              data: [
+                {
+                  value: 30,
+                  name:"个人创客"
+                },
+                {
+                  value: 70,
+                  name:"创客活动"
+                },
+              
+              ],
+            }
+          ]
+        },
+        //横行的柱状
+        HorizontalData:{
+          grid: {
+            top: 80, // 设置网格顶部的边距为 50px 
+            left:10,
+            right:"100px"
+            // left:'-10px'
+          },
+          title:{
+            text:"创客活动资金"
+          },
+          dataset: {
+            source: [
+              ['amount', 'product'],
+              [ 100, '物联网激光切割器'],
+              [ 1000, '人工智能领跑马拉松'],
+              [ 2000, '3D演奏智能工具'],
+              [ 3000, '人工智能分链机器'],
+            ],
+          },
+          xAxis: { 
+            position:"top",
+            name:"单位:万元",
+            nameTextStyle:{
+              fontSize:14,
+              align:"left",
+              verticalAlign:"bottom",
+              padding:[0,0,7,10],
+            }
+          },
+          yAxis: {
+            type: 'category',
+            zlevel:1,
+            axisLabel:{
+              inside:true,
+              margin:10,
+              formatter: function (value) {
+                const vl = Math.floor(value.length/2);
+                let newText = value.slice(0,vl)+'\n'+value.slice(vl)
+                return newText;
+            },
+            color:(value,index)=>{
+              const textWidth = this.HorizontalData['dataset']['source'][this.HorizontalData['dataset']['source'].length-1][0]/6/2;
+              const vl = this.HorizontalData['dataset']['source'][index+1][0]
+              return vl >= textWidth ? 'white' : '#3c4654';
+            }
+            },
+          },
+          series: [
+            {
+              type: 'bar',
+              encode: {
+                x: 'amount',
+                y: 'product'
+              },
+              itemStyle:{
+                color:"#3eb370"
+              }
+            }
+          ]
+        },
+        // 柱状
+        ColumnarData:{
+          grid: {
+            top: 80,
+          },
+          title:{
+            text:"个人创客资金",
+            top:0
+          },
+          dataset: {
+            // 提供一份数据。
+            source: [
+              ['3D智能分链机器', 2000],
+              ['3D智能分链机器1',3000],
+              ['3D智能分链机器2', 2500],
+              ['3D智能分链机器3', 1000],
+              ['3D智能分链机器4', 2000],
+              ['3D智能分链机器5',3000],
+              ['3D智能分链机器6', 2500],
+              ['3D智能分链机器7', 1000],
+              ['3D智能分链机器8', 2000],
+              ['3D智能分链机器9',3000],
+              ['3D智能分链机器10', 2500],
+              ['3D智能分链机器11', 1000],
+              ['3D智能分链机器12', 2000],
+              ['3D智能分链机器13',3000],
+              ['3D智能分链机器14', 2500],
+              ['3D智能分链机器15', 1000],
+            ]
+          },
+          // 声明一个 X 轴,类目轴(category)。默认情况下,类目轴对应到 dataset 第一列。
+          xAxis: { 
+            type: 'category',
+            axisLabel: {
+              formatter: function (value) {
+                // 设置每行显示的最大字符数
+                var maxLength = 4;
+                // 计算文本需要换行的行数
+                var rowNumber = Math.ceil(value.length / maxLength);
+                // 拼接换行后的文本
+                var newText = '';
+                for (var i = 0; i < rowNumber; i++) {
+                  var start = i * maxLength;
+                  var end = start + maxLength;
+                  newText += value.slice(start, end) + '\n';
+                }
+                return newText;
+              }
+            }
+          },
+          // 声明一个 Y 轴,数值轴。
+          yAxis: {
+            name:"单位:万元",
+            nameTextStyle:{
+              fontSize:14,
+              align:"center",
+            }
+          },
+          // 声明多个 bar 系列,默认情况下,每个系列会自动对应到 dataset 的每一列。
+          series: [{ type: 'bar' }]
+        },
         tableData: []
       };
     },
     methods: {
-
-    }
+      setCircularData(){
+        const Circular = echarts.init(this.$refs['Circular']);
+        Circular.setOption(this.CircularData)
+      },
+      setHorizontalData(){
+        const Horizontal = echarts.init(this.$refs['Horizontal']);
+        Horizontal.setOption(this.HorizontalData)
+      },
+      setColumnarData(){
+        const Columnar = echarts.init(this.$refs['Columnar']);
+        Columnar.setOption(this.ColumnarData)
+      }
+    },
+    mounted() {
+      this.setCircularData();
+      this.setHorizontalData();
+      this.setColumnarData();
+    },
   };
   </script>
     
@@ -164,7 +336,7 @@
   }
   .midBlock{     //中部大饼
     width: 100%;
-    height: 300px;
+    height: 400px;
     margin-top: 20px;
     // background: #ce7070;
     display: flex;
@@ -173,14 +345,18 @@
     .mid{
       height: 95%;
       width: 49%;
+      padding: 20px;
+      box-sizing: border-box;
       background: #f3f6f7;
     }
   }
 
   .histogram{       //柱状图
     margin-top: 20px;
+    box-sizing: border-box;
+    padding: 20px;
     width: 100%;
-    height: 350px;
+    height: 400px;
     background: #f3f6f7;
   }