Explorar o código

修改人力,续写投资

zhbyyy %!s(int64=2) %!d(string=hai) anos
pai
achega
40b868c441

BIN=BIN
investment/groupImg/left1-bg.png


+ 148 - 12
investment/investHomeGroup.html

@@ -28,10 +28,9 @@
 <body>
   <!-- <dv-full-screen-container> -->
   <div id="app" class="w-full h-full">
-    <div class="LeftBox overflow-hidden">
+    <div class="LeftBox">
       <header class="my-header">
         <span>投资业务管理</span>
-        <span class="right">{{time}}</span>
       </header>
       <div class="main">
         <dv-border-box-8 :dur="10" class="card left-lt">
@@ -165,26 +164,163 @@
         </dv-border-box-8>
       </div>
     </div>
-    <div class="CenterBox overflow-hidden">
+    <div class="CenterBox">
       <header class="my-header">
         <span>数智化投资管理驾驶舱</span>
-        <span class="right">{{time}}</span>
       </header>
       <div class="main">
         <div class="h-full w-full center-l">
-          <div class="card"></div>
-          <div class="card"></div>
-          <div class="card"></div>
+          <div class="card">
+            <div class="title">
+              <span class="text">投资关键指标</span>
+            </div>
+            <div class="content">
+              <div class="boxs">
+                <div>
+                  <p>
+                    <span class="name">投资总额</span>
+                    <i class="el-icon-more"></i>
+                  </p>
+                  <p>
+                    <i style="width:100%;text-align: center;"><span class="num">{{numFormat(1324.08)}}</span>亿</i>
+                  </p>
+                </div>
+                <div>
+                  <p>
+                    <span class="name">项目总数</span>
+                    <i class="el-icon-more"></i>
+                  </p>
+                  <p>
+                    <i style="width:100%;text-align: center;"><span class="num">{{numFormat(442)}}</span>个</i>
+                  </p>
+                </div>
+                <div>
+                  <p>
+                    <span class="name">固定资产</span>
+                    <i class="el-icon-more"></i>
+                  </p>
+                  <p>
+                    <i style="width:100%;text-align: center;"><span class="num">1,169.91</span>亿</i>
+                  </p>
+                </div>
+                <div>
+                  <p>
+                    <span class="name">股权投资</span>
+                    <i class="el-icon-more"></i>
+                  </p>
+                  <p>
+                    <i style="width:100%;text-align: center;"><span class="num">{{numFormat(154.17)}}</span>亿</i>
+                  </p>
+                </div>
+              </div>
+            </div>
+          </div>
+          <div class="card">
+            <div class="title">
+              <span class="text">投资产业分部</span>
+            </div>
+            <div class="content">
+              <div id="echartC1" class="commonBack" style="width: 100%; height: 100%;"></div>
+            </div>
+          </div>
+          <div class="card">
+            <div class="title">
+              <span class="text">投资执行情况</span>
+            </div>
+            <div class="content">
+              <div id="echartC2" ref="echartC2" class="commonBack" style="width: 100%; height: 100%;"></div>
+            </div>
+          </div>
+        </div>
+        <div class="h-full w-full">
+          <div class="top">
+            <div class="box">
+              <div class="t">
+                <img src="./images/center1.png" />
+                产业转型
+              </div>
+              <div class="flex b">
+                <div>
+                  <p>投资金额</p>
+                  <p style="color:#40A9FF"><span>769.30</span>亿</p>
+                </div>
+                <div>
+                  <p>项目数量</p>
+                  <p style="color:#40A9FF"><span>153</span>个</p>
+                </div>
+              </div>
+            </div>
+            <div class="box">
+              <div class="t">
+                <img src="./images/center1.png" />
+                数字转型
+              </div>
+              <div class="flex b">
+                <div>
+                  <p>投资金额</p>
+                  <p style="color:#40A9FF"><span>129.26</span>亿</p>
+                </div>
+                <div>
+                  <p>项目数量</p>
+                  <p style="color:#40A9FF"><span>113</span>个</p>
+                </div>
+              </div>
+            </div>
+          </div>
+          <div class="map-box">
+            <div ref="echarts-map" style="height: calc(100% - 155px);"></div>
+            <!-- 项目状态 -->
+
+            <div class="status">
+              <p>项目状态</p>
+              <ul style="padding-left: 30px; margin-bottom: 10px;">
+                <li>通过: <i>112</i></li>
+                <li>研究中: <i>14</i></li>
+                <li>退回: <i>15</i></li>
+                <li>暂缓: <i>4</i></li>
+                <li>终止: <i>2</i></li>
+                <li>否决: <i>4</i></li>
+              </ul>
+            </div>
+          </div>
         </div>
-        <div class="h-full w-full"></div>
         <div class="h-full w-full center-r">
-          <div class="card"></div>
-          <div class="card"></div>
-          <div class="card"></div>
+          <div class="card">
+            <div class="title">
+              <span class="text">五个一体化</span>
+            </div>
+            <div class="content">
+              <div id="echartC3" ref="echartC3" class="commonBack" style="width: 100%; height: 100%;"></div>
+            </div>
+          </div>
+          <div class="card">
+            <div class="title">
+              <span class="text">投资阶段分析</span>
+            </div>
+            <div class="content">
+              <div id="echartC4" ref="echartC4" class="commonBack" style="width: 100%; height: 100%;"></div>
+            </div>
+          </div>
+          <div class="card">
+            <div class="title">
+              <span class="text">重点项目监控</span>
+            </div>
+            <div class="content">
+              <dv-scroll-board :config="storageRecordConfig2" class="content" />
+            </div>
+          </div>
         </div>
       </div>
     </div>
-    <div>333</div>
+    <div class="RightBox">
+      <header class="my-header">
+        <span>投资业务管理</span>
+        <span class="right">{{time}}</span>
+      </header>
+      <div class="main">
+        
+      </div>
+    </div>
   </div>
   <!-- </dv-full-screen-container> -->
   <script src="./js/investHomeGroup.js"></script>

+ 1286 - 30
investment/js/investHomeGroup.js

@@ -7,9 +7,12 @@ let app = new Vue({
       totleLimit: '1363.88',
       showTip2: false,
       showTip3: false,
-      list:'',
+      list: '',
       count: 0,
       countType: 0,
+      mapName: 'shanxi',
+      geoCoordMap: {},
+      storageRecordConfig2:[],
       storageRecordConfig: {
         // waitTime: '30000',
         hoverPause: false,
@@ -17,11 +20,10 @@ let app = new Vue({
         // headerBGC: '#05507b33',
         // oddRowBGC: '#05507b33',
         // evenRowBGC: '#05507b33',
-        headerHeight:50,
+        headerHeight: 50,
         headerBGC: '#05507b33',
-        oddRowBGC: '#05183c',
-        evenRowBGC: '#05507b00',
-        rowNum: 5,
+        oddRowBGC: '#05507b33',
+        rowNum: 6,
         // columnWidth: [100, 550,100],
         align: ['center', 'center', 'center'],
         data: [
@@ -73,6 +75,13 @@ let app = new Vue({
       this.initChartL10()
       this.initChartL11()
       this.changeTopColor()
+      // 大屏二
+      this.initChartC1()
+      this.initChartC2()
+      this.initChartC3()
+      this.initChartC4()
+      this.initChinaChart()
+      this.initProjectList()
     })
   },
   methods: {
@@ -313,7 +322,7 @@ let app = new Vue({
           verticalAlign: 'middle', // 纵向位置
           layout: "vertical",//横排还是竖排
           x: -30,
-          y:50,
+          y: 50,
           symbolWidth: 50,
           itemStyle: {
             fontSize: '20px',
@@ -327,9 +336,9 @@ let app = new Vue({
             color: '#fff',
             fontSize: 22,
           },
-          align:'center',
-          verticalAlign:"bottom",
-          x:-80
+          align: 'center',
+          verticalAlign: "bottom",
+          x: -80
         },
         tooltip: {
           crosshairs: false,
@@ -591,7 +600,7 @@ let app = new Vue({
           verticalAlign: 'middle', // 纵向位置
           layout: "vertical",//横排还是竖排
           x: -30,
-          y:50,
+          y: 50,
           symbolWidth: 50,
           itemDistance: 50,
           itemStyle: {
@@ -606,9 +615,9 @@ let app = new Vue({
             color: '#fff',
             fontSize: 22,
           },
-          align:'center',
-          verticalAlign:"bottom",
-          x:-120
+          align: 'center',
+          verticalAlign: "bottom",
+          x: -120
         },
         tooltip: {
           crosshairs: true,
@@ -882,7 +891,7 @@ let app = new Vue({
             // fontSize: "10",
           },
           right: 'center',
-          y:5,
+          y: 5,
           icon: "roundRect",
           // 小图标的宽高
           itemHeight: 5,
@@ -1018,7 +1027,7 @@ let app = new Vue({
           verticalAlign: 'middle', // 纵向位置
           layout: "vertical",//横排还是竖排
           x: -30,
-          y:50,
+          y: 50,
           symbolWidth: 50,
           itemDistance: 50,
           itemStyle: {
@@ -1033,9 +1042,9 @@ let app = new Vue({
             color: '#fff',
             fontSize: 22,
           },
-          align:'center',
-          verticalAlign:"bottom",
-          x:-120
+          align: 'center',
+          verticalAlign: "bottom",
+          x: -120
         },
         tooltip: {
           crosshairs: true,
@@ -1291,7 +1300,7 @@ let app = new Vue({
           verticalAlign: 'middle', // 纵向位置
           layout: "vertical",//横排还是竖排
           x: -30,
-          y:30,
+          y: 30,
           symbolWidth: 50,
           itemDistance: 50,
           itemStyle: {
@@ -1306,9 +1315,9 @@ let app = new Vue({
             color: '#fff',
             fontSize: 22,
           },
-          align:'center',
-          verticalAlign:"bottom",
-          x:-120
+          align: 'center',
+          verticalAlign: "bottom",
+          x: -120
         },
         tooltip: {
           crosshairs: true,
@@ -1560,9 +1569,9 @@ let app = new Vue({
             color: '#fff',
             fontSize: 22,
           },
-          align:'center',
-          verticalAlign:"bottom",
-          x:-120
+          align: 'center',
+          verticalAlign: "bottom",
+          x: -120
         },
         legend: {
           // labelFormatter: function() {
@@ -1572,7 +1581,7 @@ let app = new Vue({
           verticalAlign: 'middle', // 纵向位置
           layout: "vertical",//横排还是竖排
           x: -50,
-          y:30,
+          y: 30,
           symbolWidth: 50,
           itemDistance: 50,
           itemStyle: {
@@ -1818,9 +1827,9 @@ let app = new Vue({
             color: '#fff',
             fontSize: 22,
           },
-          align:'center',
-          verticalAlign:"bottom",
-          x:-120
+          align: 'center',
+          verticalAlign: "bottom",
+          x: -120
         },
         legend: {
           // labelFormatter: function() {
@@ -1830,7 +1839,7 @@ let app = new Vue({
           verticalAlign: 'middle', // 纵向位置
           layout: "vertical",//横排还是竖排
           x: -70,
-          y:50,
+          y: 50,
           symbolWidth: 50,
           itemDistance: 50,
           itemStyle: {
@@ -2429,5 +2438,1252 @@ let app = new Vue({
         loopSeries: true,
       })
     },
+    // 大屏二
+    initChartC1 () {
+      var chartData = []
+      var timer = null;
+      var timer2 = null;
+      var i = 0;
+      industryList.forEach((item, index) => {
+        let obj = {
+          name: item.name,
+          y: item.value,
+          sliced: false,
+          selected: false,
+          color: index == 0 ? 'rgb(243,178,119)' : index == 1 ? 'rgb(110,222,191)' : 'rgb(82,161,229)'
+        }
+        chartData.push(obj)
+      })
+      let that = this
+      var chart = Highcharts.chart('echartC1', {
+        chart: {
+          type: 'pie',
+          backgroundColor: 'rgba(0,0,0,0)',
+          options3d: {
+            enabled: true,
+            alpha: 45,
+            //beta: 0
+          },
+          events: {
+            // load,图表加载完成时触发
+            load: function () {
+              var chart = this;
+
+              var points = chart.series[0].points;
+              var len = points.length;
+
+              timer && clearInterval(timer);
+              timer = setInterval(function () {
+                autoTooltip(points[i]);
+                chartData.forEach((item, index) => {
+                  item.sliced = false
+                  item.selected = false
+                  if (index == i) {
+                    item.sliced = true
+                    item.selected = true
+                  }
+                })
+                chart.update({
+                  series: [{
+                    type: 'pie',
+                    name: '占比',
+                    point: {
+                      events: {
+                        click: function (e) {
+                          if (e.point.name == '战略新兴产业') {
+                            that.tipTitle2 = e.point.name
+                            that.showTip2 = true
+                          }
+                        }
+                      }
+                    },
+                    data: chartData
+                  }]
+                })
+                i++;
+                if (i === len) {
+                  i = 0;
+                }
+              }, 2000);
+            },
+            legendItemClick: function (event) {
+              console.log(event);
+              return true;
+            }
+          }
+        },
+        credits: {
+          enabled: false  //去掉hightchats水印
+        },
+        title: {
+          text: null
+        },
+        tooltip: {
+          crosshairs: true,
+          backgroundColor: 'rgba(0,0,0,0.5)',
+          useHTML: false, //开启html模式
+          style: {
+            color: '#fff',
+          },
+          formatter: function (e) {
+            //console.log(this, e)
+            this.percentage = Math.round(this.percentage)
+            // e.options.backgroundColor = 'rgba(0,0,0,0.5)'
+            // e.options.style.color = '#fff'
+            return `${this.key}:<b>${this.percentage}%</b><br/>金额:<b>${this.y}</b>亿`
+          },
+          //pointFormat: 
+        },
+        legend: {
+          layout: 'vertical',
+          align: 'right',
+          verticalAlign: 'bottom',
+          itemStyle: {
+            fontSize: '20px',
+            color: '#fff',
+            x: 20
+          }
+        },
+
+        plotOptions: {
+          pie: {
+            allowPointSelect: true,
+            showInLegend: true, // 图例
+            cursor: 'pointer',
+            size: 500,
+            innerSize: 300, //环形图中间空白,0为饼图
+            depth: 28, //立体高度
+            slicedOffset: 23, //动画距离
+            dataLabels: {
+              enabled: false,  // 是否展示指示线
+              format: '{point.name}: {point.percentage}'
+            }
+          },
+        },
+        series: [{
+          type: 'pie',
+          name: '占比',
+          center: ['70%', '50%'],
+          point: {
+            events: {
+              click: function (e) { //点击事件
+                //console.log(e)
+                if (e.point.name == '战略新兴产业') {
+                  that.tipTitle2 = e.point.name
+                  that.showTip2 = true
+                }
+              },
+              mouseOver: function (e) { //鼠标移入停止轮播并且找到移入的当前数据设为选中
+                //console.log(e) 
+                chartData.forEach((item, index) => {
+                  item.sliced = false
+                  item.selected = false
+                })
+                chartData[e.target.index].sliced = true
+                chartData[e.target.index].selected = true
+                chart.update({
+                  series: [{
+                    type: 'pie',
+                    name: '占比',
+                    point: {
+                      events: {
+                        click: function (e) {
+                          if (e.point.name == '战略新兴产业') {
+                            that.tipTitle2 = e.point.name
+                            that.showTip2 = true
+                          }
+                        }
+                      }
+                    },
+                    data: chartData
+                  }]
+                })
+                timer && clearInterval(timer);
+              },
+              mouseOut: function () { // 鼠标移出后需要继续执行轮播
+                var points = chart.series[0].points;
+                var len = points.length;
+
+                timer && clearInterval(timer);
+                timer = setInterval(function () {
+                  autoTooltip(points[i]);
+                  chartData.forEach((item, index) => {
+                    item.sliced = false
+                    item.selected = false
+                    if (index == i) {
+                      item.sliced = true
+                      item.selected = true
+                    }
+                  })
+                  chart.update({
+                    series: [{
+                      type: 'pie',
+                      name: '占比',
+                      point: {
+                        events: {
+                          click: function (e) {
+                            if (e.point.name == '战略新兴产业') {
+                              that.tipTitle2 = e.point.name
+                              that.showTip2 = true
+                            }
+                          }
+                        }
+                      },
+                      data: chartData
+                    }]
+                  })
+                  i++;
+                  if (i === len) {
+                    i = 0;
+                  }
+                }, 2000);
+              }
+            }
+          },
+          data: chartData
+        }]
+      });
+
+      function autoTooltip (point) {
+        chart.tooltip.refresh(point);
+      }
+    },
+    initChartC2() {
+      let myChart = echarts.init(this.$refs['echartC2'])
+      let option = {
+        tooltip: {
+          formatter: data => {            
+            return `${data[0].name}<br /><span style="display:inline-block;border-radius:50%; width:7px;height:7px;background-color:${data[0].color.colorStops[0].color}"></span> ${data[0].seriesName}:${data[0].value}亿 <br/><span style="display:inline-block;border-radius:50%; width:7px;height:7px;background-color:${data[1].color.colorStops[0].color}"></span> ${data[1].seriesName}:${data[1].value}亿`
+          },
+          trigger: 'axis',
+          axisPointer: {
+            type: 'cross',
+          },
+        },
+        dataZoom:[
+         {
+          // start: 9,//默认为@
+          // end: 100,//黑认认为1@0
+          type: "slider",
+          show: false,
+          // xAxisIndex: [0]
+          handlesize: 0,//滑动条的 左右2个滑动条的大小
+          startValue: 5,// 初始显示值
+          endValue: 0,// 结束显示值
+          height: 10,//组件高度
+          left:"5%",
+          right: "4%",//右边的距离
+          bottom: "25%",//底边的距离
+          borderColor:"#939",
+          fillerColor:"#269cdb",
+          borderRadius: 5,
+          backgroundColor: "#33384b",//两边未选中的滑动条区域的额色
+          showDataShadow: false,//是否显示数据阴影
+          showDetail: false,//即拖拽时候是否显示详细数值信息 
+          truerealtime: true,//是否实时更新
+          filterMode: "filter"
+         },{
+          type:'inside',
+          show: true,
+          start: 1,
+          end: 100
+         }
+        ],
+        grid: {
+          top: '10%',
+          right: '3%',
+          left: '7%',
+          bottom: '7%',
+        },
+        legend: {
+          top: '1',
+          right: '10',
+          textStyle: {
+            color: 'rgba(250,250,250,0.6)',
+          },
+        },
+        xAxis: {
+          data: executeList.map(item => item.name),
+          axisLine: {
+            show: true, //隐藏X轴轴线
+            lineStyle: {
+              color: '#005094',
+              width: 1,
+            },
+          },
+          axisTick: {
+            show: false, //隐藏X轴刻度
+          },
+          axisLabel: {
+            show: true,
+            rotate: 40,
+            textStyle: {
+              color: '#fff',//'rgba(255,255,255,0.6)', //X轴文字颜色
+            },
+          },
+        },
+        yAxis: [
+          {
+            type: 'value',
+            name: '亿元',
+            nameTextStyle: {
+              color: 'rgba(255,255,255,0.6)',
+            },
+            splitLine: {
+              show: true,
+              lineStyle: {
+                color: '#68b4dd66',
+                type: 'dashed',
+              },
+            },
+            axisLine: {
+              show: true,
+              lineStyle: {
+                color: '#3D7495',
+              },
+            },
+            axisLabel: {
+              show: true,
+              textStyle: {
+                color: 'rgba(250,250,250,0.6)',
+              },
+            },
+          },
+        ],
+        series: [
+          {
+            name: '计划投资',
+            type: 'bar',
+            barWidth: 10,
+            itemStyle: {
+              normal: {
+                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                  {
+                    offset: 0,
+                    color: '#69c0ff',
+                  },
+                  {
+                    offset: 1,
+                    color: '#082550',
+                  },
+                ]),
+              },
+            },
+            data: executeList.map(item => item.value),
+          },
+          {
+            name: '实际投资',
+            type: 'bar',
+            barWidth: 10,
+            itemStyle: {
+              normal: {
+                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                  {
+                    offset: 0,
+                    color: '#957DFF',
+                  },
+                  {
+                    offset: 1,
+                    color: '#082550',
+                  },
+                ]),
+              },
+            },
+            data: executeList.map(item => item.value2),
+          },
+        ],
+      }
+      myChart.setOption(option)
+      tools.loopShowTooltip(myChart, option, {
+        nterval: 2000,
+        loopSeries: true,
+      })
+      let arr =  executeList.map(item => item.value2)
+      this.timeOut = setInterval(function () {
+       
+        let startValue = myChart.getModel().option.dataZoom[0].startValue;
+        let endValue = myChart.getModel().option.dataZoom[0].endValue;
+        let start = myChart.getModel().option.xAxis[0].data[startValue];//起始X轴
+        let end = myChart.getModel().option.xAxis[0].data[endValue];//结束X轴
+        // 每次向后滚动一个,最后一个从头开始。
+        // console.log(option.dataZoom[0].endValue);
+        
+        if (option.dataZoom[0].endValue >= 12) {
+          option.dataZoom[0].endValue = 5
+          option.dataZoom[0].startValue = 0
+        } else {
+            option.dataZoom[0].endValue = option.dataZoom[0].endValue + 6
+            option.dataZoom[0].startValue = option.dataZoom[0].startValue + 6
+        }
+
+        // myChart.dispatchAction({
+        //   type: 'showTip',
+        //   seriesIndex: 0,
+        //   dataIndex: startValue +1,
+        // });
+        myChart.setOption(option);
+      }, 12000);
+      
+    },
+    convertData(data) {
+      var res = []
+      for (var i = 0; i < data.length; i++) {
+        var geoCoord = this.geoCoordMap[data[i].name]
+        if (geoCoord) {
+          res.push({
+            name: data[i].name,
+            value: geoCoord.concat(data[i].value),
+          })
+        }
+      }
+      return res
+    },
+    initChinaChart() {
+      var data = [
+        { name: '大同市', value: 60.35, value2: 28 },
+        { name: '朔州市', value: 33.61, value2: 13 },
+        { name: '忻州市', value: 73.35, value2: 25 },
+        { name: '吕梁市', value: 109.04, value2: 45 },
+        { name: '太原市', value: 251.67, value2: 113 },
+        { name: '阳泉市', value: 25.12, value2: 28 },
+        { name: '晋中市', value: 148.57, value2: 52 },
+        { name: '临汾市', value: 130.55, value2: 30 },
+        { name: '长治市', value: 103.00, value2: 23 },
+        { name: '运城市', value: 41.06, value2: 23 },
+        { name: '晋城市', value: 45.43, value2: 31 }
+      ]
+
+      var moveLine = {
+        normal: [
+          {
+            fromName: '太原市',
+            toName: '吕梁市',
+            coords: [
+              [112.3352, 37.9413],
+              [111.3574, 37.7325],
+            ],
+          },
+          {
+            fromName: '太原市',
+            toName: '忻州市',
+            coords: [
+              [112.3352, 37.9413],
+              [112.4561, 38.8971],
+            ],
+          },
+          {
+            fromName: '太原市',
+            toName: '临汾市',
+            coords: [
+              [112.3352, 37.9413],
+              [111.4783, 36.1615],
+            ],
+          },
+          {
+            fromName: '太原市',
+            toName: '阳泉市',
+            coords: [
+              [112.3352, 37.9413],
+              [113.4778, 38.0951],
+            ],
+          },
+          {
+            fromName: '太原市',
+            toName: '晋中市',
+            coords: [
+              [112.3352, 37.9413],
+              [112.7747, 37.37],
+            ],
+          },
+          {
+            fromName: '太原市',
+            toName: '运城市',
+            coords: [
+              [112.3352, 37.9413],
+              [111.1487, 35.2002],
+            ],
+          },
+          {
+            fromName: '太原市',
+            toName: '大同市',
+            coords: [
+              [112.3352, 37.9413],
+              [113.7854, 39.8035],
+            ],
+          },
+          {
+            fromName: '太原市',
+            toName: '晋城市',
+            coords: [
+              [112.3352, 37.9413],
+              [112.7856, 35.6342],
+            ],
+          },
+          {
+            fromName: '太原市',
+            toName: '长治市',
+            coords: [
+              [112.3352, 37.9413],
+              [112.8625, 36.4746],
+            ],
+          },
+          {
+            fromName: '太原市',
+            toName: '朔州市',
+            coords: [
+              [112.3352, 37.9413],
+              [113.0713, 39.6991],
+            ],
+          },
+        ],
+      }
+      /*获取地图数据*/
+      let myChart = echarts.init(this.$refs['echarts-map'])
+      echarts.registerMap('shanxi', {
+        type: 'FeatureCollection',
+        features: [
+          {
+            type: 'Feature',
+            id: '1409',
+            properties: { name: '忻州市', cp: [112.4561, 38.8971], childNum: 14 },
+            geometry: {
+              type: 'Polygon',
+              coordinates: [
+                '@@Vx@lnbn¦WlnnUšmš°š²VšV‚VVVnUn„ºlz@l„„@Jƒ@kXWVXl@Lƒa@„ƒKUL„ŽlbnKlLnK‚LnKÆXn°šbVV@bUVl°Un@LnaVJUbW@UX²l‚@ČwlVVIšWnkÆa°„„anV‚Kn°™UW¯@™aVUVk@Un@„aV@ValwUanmWU„k@WVUUanaVwnLVl°@nk@mVU@UVK@w„LVKVU@ƒ„K@UUKVUV@@bnL„a‚V„aôšlIXmlKX_°KVV@bVV„@šzV`kblI„V„Ul‚šL@bnV@V„Ċll„„VlIXW@k„a‚U²blKšVnIlJ„albXXlWVn°JnšnL@l@XlJlaX@„X˜W²@l_VmnKšU„blU@mnkVK„¯@U@ƒma@kX¥VƒmakkƒLƒa@aƒ@WIUUVXWWnk@a°a@kkm@kUUmJm@WUUUIk`m@V—kaWWkX™KmƒXk¯ƒ@WKƒLkak@±bƒw@ƒaƒa@akaƒ@ma¯@ƒL—KÇÅkKWbkmġ™±ÅUƒLUK™VVkƒm¯LUVVbƒ„UwUW¯bm„ƒULƒxWJ—@ƒklmkUm@@KnwVkVK@akwƒ@@a¯bƒKkn›VUI™b¯mmbk@UbmKUL@xUUƒ@klmLUŽlVXI‚VVVUVUœU`mLXVWbXnW`Ų°xmށxU@mĉƒƒwU@mbU@UƒmbkVW¦kJ™@ƒX@`¯Im@UlUVVnb@bWJXnmbƒJUU™UUaƒ@UamIkaƒxƒ@@x@b',
+              ],
+              encodeOffsets: [[113614, 39657]],
+            },
+          },
+          {
+            type: 'Feature',
+            id: '1411',
+            properties: { name: '吕梁市', cp: [111.3574, 37.7325], childNum: 13 },
+            geometry: {
+              type: 'Polygon',
+              coordinates: [
+                '@@@a@w„@„wlbnJVb„@VbšVVV„InaWmXI@a‚aUmVUVkn@°J@_„Wš@lIX¥lUnaV„V@naV@„xĊ„n‚V@‚wn¯wƱX_WmXaWUnKV_V›VUUUUWJkUVnKlk¯™@@kmKUaٱKkU@WmI@WUIlUUmVwXƒ‚w@ƒUlUVwœV‚@„Lnb‚W@anU@UšaVkô@l»n@na˜JnUÈLVaƃUUVm„VKVƒ²L@mU_lK@UVWkU‚a@a@U¯aUaƒÑóÑUb™„ƒKk@@aƒk¯mVaUwVƒÑkWUmK@UUKmXUWÝwUa™LUU@aWJUUU@Ua݄U@WL@VKVaVI@WnU@alIVKƒƒ@kIƒmIkJ@™m@ƒ™@@_™K@xƒ@kaW@U„@Vmn@ŽUK@mIƒJUXV¤XXWlkKƒkkK@XmJVakImJU@ó™¯LWKUV@nUVƒLkxmKkLma@kXKmmƒLƒab™LmK@V@mXVÆUxƒX@`nL„aV@@VmLUVnLlLš˜„b@„šŽ°²nx@b‚VUxlb@V¯bUV@zV‚XVĊXVx@lVn@VnnmŽUš@LlJXVƒz¯VWVXbšV@bmn™VUVk„Çþń@XVxmbUlV„Uln„W„@„Xl‚@VLXÒ@bÞJ°¦„L˜ò„@nU‚b@°„X@ŽXbmVU„V„nb@x‚x',
+              ],
+              encodeOffsets: [[113614, 39657]],
+            },
+          },
+          {
+            type: 'Feature',
+            id: '1410',
+            properties: { name: '临汾市', cp: [111.4783, 36.1615], childNum: 17 },
+            geometry: {
+              type: 'Polygon',
+              coordinates: [
+                '@@nW‚@@UnLšK‚a„b„KnnWL@lnblKnLlw„KVU@mVUXL°KôšV@nIlJUbnI@WlL„llLXkWWU£VW„InJ‚@VL@nm@UVƒX@lb„@@wšL@`‚@„šn@V@lw„@n„VmVX„WmwnUlƒœa@_lK„wVlUn°xVKVXXWlUšVVI@K@K„n°KœwlVlU@kna@V_„Wn‚m„UVm@kXml_@m„LlKXw°m@_ôJVUV@X™l@UaV@Va°I„lk»VwUkVmwUmmVn@V¯@KƒU—wmK@U¯wUVÝ@mJƒU—nWK™@@UnKVa„_lykUmKÛnm@™x@ƒUUlwVk™ƒXW@ƒa@Uƒ@@K@ƒkIV™nammVakUlƒ@wX@@kƒ™¯@ƒVVbml@„„°UbULmlVbnbÅK±VƒKVXUJWa@ULWaUU@@U@aWK@UkxUKƒLUUUJ±UkL@V±kk@kam@UV@l@LWl@n@VVUx„LlUUx@VUV™U@aƒIUl™L@°mLU‚ƒbkUUaWUUaUU@aWK—LWJ@bUL@VUVVbU@m@a@kmKmnĉlUK™XƒWUblb—xmIkƒƒU@xWb@lkšVx™LXŽmzVV@bklVVUzm˜@bk„@Vx@xlŽU„@lUbVnl@„Wxnl@n@ŽUbV„mL‚mƒb@`X@lUX@@xlnkLWaUJnnWV™Vn@l„@bULVV@l™V@XnJVX',
+              ],
+              encodeOffsets: [[113063, 37784]],
+            },
+          },
+          {
+            type: 'Feature',
+            id: '1407',
+            properties: { name: '晋中市', cp: [112.7747, 37.37], childNum: 11 },
+            geometry: {
+              type: 'Polygon',
+              coordinates: [
+                '@@@šlInJ„lJ„@‚„ULkJ@bmV@XUJUb‚L@UXKV@ރVbV@VVXI@bVVšKVbÞxVXnWVL@VnLV‚lX„ÒUŽVxUb°n„l@bl@„LšƒVaô҄ÒVb°b@VnLnnV@lmn@lb„U„V@„‚JœUVV‚Xkl@lUzmJ@xšXkl‚bUn„JVšUb„nU‚lb„V@nlLX@lakšV`Ub°š@XVJnU‚L²KlxnI@KV@lbUbVV„KnVl@„zlm@Uš@nŽšI@WUaVl@@mVU„@XkW@ƒnkVKVƒ„_Vw„y@knwVa‚@XalU„@šVnml@„X@V„L‚KVaÞbnnlJšI„mVKn„VVVInVlU„@„m@™mXK@UmyUI@mWUUakamw@wUwmLkakwVƒmK™w@wUam£y@am_ƒW@™UU@knmm„amU@WUa@knw@ƒUUUUV@nƒJm@mVUkKVUUUkKmwƒKULƒKUImV@lUn™nŽm@mbUK@°™bUnmbUmkkƒWUb@am@UXkK@a±@™V™@ĉř„V‚UXVxUVkLWl¯@@bULUlm@@nm`—XƒlWakIkm›VUbUL@Vm@kIƒ@@Kšm@—VaX‚I@W@aU@kUƒVU_™KƒbƒJkkǎ™b@nkKmL™wÅW@kVUUƒVU@WUIƒJmIXmma@_kyVaUUlkUm@ƒkU›x¯Lƒm@L@LUJ™UkVWXUWUL¯wVmUkƒxkL@`›bk„mVnxƒXUWUnmƒƒ@kxU@',
+              ],
+              encodeOffsets: [[114087, 37682]],
+            },
+          },
+          {
+            type: 'Feature',
+            id: '1408',
+            properties: { name: '运城市', cp: [111.1487, 35.2002], childNum: 13 },
+            geometry: {
+              type: 'Polygon',
+              coordinates: [
+                '@@„Vl„nJ˜wkaVa„XšWVLĊknmnL‚l@@bn‚V@UaVU@UVK@aXI˜KXL@bVVVbXVVblV„aVnK@¯šKVk„J@bšVVU@UVwkVƒKVwUUm@@Xk@K@kVUn@lbl@²l@UlK²VVIVV„KVLlw@VXL@b@VV@VŽXbVK‚@XbVIUW„L‚U²ÆLmaUankVKVaƒ¯@ƒnkUa„U°@„š‚n@@kWa„UVaXUW@IXKVw@U™ƒ„™WU@W@@UUƒU@mn@ƒ`m@UUULkUmJ™IUƒ@@UƒK@U@›anƒ™ak_@wmKUwmakV™kmK™V™k¯b™wƒ`kwUIÇx¯»ÇaŃmn@@™mƒmUkV@wkKW@kxmL™UkĉLÝk™xÝw¯lóVU„mV@ĀVVX¦W¤kz@`Vx°„²ĸ‚š@„Ul@x„êĸNJ°¤V„VlXLWnXxmV@nUl@„',
+              ],
+              encodeOffsets: [[113232, 36597]],
+            },
+          },
+          {
+            type: 'Feature',
+            id: '1402',
+            properties: { name: '大同市', cp: [113.7854, 39.8035], childNum: 8 },
+            geometry: {
+              type: 'Polygon',
+              coordinates: [
+                '@@²£šyl@Ȑ˜Ė@bĸŽĢbĸ„˜X„a‚KŤnn@ŎôllÈx„nVnÞDŽV@b‚nXllL°KšbVb@J@b—„‚„@ŽU„„xlKXLlKlXk„@Ulk„JlkUƒVKXUƒÇVIVm@_nǚLšašl‚w„VnU@UUwma@aƒaÝaLmUk@@Wƒ@U@@X™wVWÝUUUk@@VmLƒKV»nwUw™aUL@`mzƒJUIVƒUaUw™KUaVIlJôanÑlLVUn@ša„@VV„@@UUwVK°Vn_lJÆLœéW@UUUÅ@»lm@aÞIVwXW˜UUkkm@U@aƒU@mwU£VWU_kWmƒXwW_°yUkkK@UÇK@kkUVymóK—U@KWIƒbUak@mJ@bkbmLkŽ™UmƒkVU„W¦@lnb@„@Vƒ°ULml@nkVƒa™VmLUnk`±@—XƒWW@kbǦXޝ„WxI@xmbmxXlWV„„@bŎUz@J‚b@bÞb™ŽU@Wbk@ƒxk@WX¯VۙƒWÝbÝUkVUU@alI@a@akLWa™m@U¯UUmÇL@K@aU@¯VUkƒKmX@`@œkJ@nV‚Ub@lbVÆXVW„ULU`VbkLUV@XWl@bXJ˜@VbV@Vl',
+              ],
+              encodeOffsets: [[115335, 41209]],
+            },
+          },
+          {
+            type: 'Feature',
+            id: '1404',
+            properties: { name: '长治市', cp: [112.8625, 36.4746], childNum: 12 },
+            geometry: {
+              type: 'Polygon',
+              coordinates: [
+                '@@Uk™Lky@I‚JVa@mÞaWšy@_W@_WƒXVlUVwš@nw°K@m„UƒVaƒmVkU@mmmnLVUmKXa™U@IlKVUnK@UmWkX@WV_Vƒ@akU@a„KWIXyƒIUVmUn™Ua@WaXUVKVmkUWVkUƒLU@@VƒbƒKbƒIUmƒ@mbVL—x›WUUkn±V¯wƒbÅJUbmLkbmKÅKƒbVnUbƒV™KUb™KUbmLKmƒb™aƒKkUm@UŽnn‚VnxUVlUxl¼ƒk¯JUbU@Vbk@WšU@UVóI@`¯nWxkLƒK@nk`Wn@lUnƒVnm‚ƒXU`@mb@lkV@„VnklVVUblz@`nbWnnJ„IVJ@XUVV„UV@lÆXšxnKlL@mšaȍll„I„ašLV`„UlVV@@b@XJWUb@˜™n@L„@lJn@@UVKVaœUlnlJXb„k˜Wn_@mn@VkVK@a°@XklKVUUwVWUšƒĊƚ@šU²@@blLVWn@@bVa„XllVnnaVmša@¯VLnan@‚šmVm@knUVJ',
+              ],
+              encodeOffsets: [[116269, 37637]],
+            },
+          },
+          {
+            type: 'Feature',
+            id: '1406',
+            properties: { name: '朔州市', cp: [113.0713, 39.6991], childNum: 5 },
+            geometry: {
+              type: 'Polygon',
+              coordinates: [
+                '@@XXWVXVWnnlnn@èÆ¼@„„xlš„ŽV„nblšššVŽÈUVl‚š@„blnœL܃ĊmUkU@Ua‚—@WI@aXk@WVUlKUaV_VKXƒWUUÅka@VaU@mlI@›@_nW„LVl°UV@@b@LÈKVn°V@VšnXblK@b@bkJ@bVVlUÞVÞa„Xܚ°UXWl@„wl@XaV@šÝa@aa@IVyƍ@aƒƒXUWknwna@w‚JXw°ƒWÈ¥kI@W@kmKm™¯IUmkXWWkaƒbkImJ™UkL±aVƒb@lWXkJƒUkƒĉkƒ@UmU@a™KkƒVƒUkJlaU_™yƒ@UU@aUU¯LW`kLWnkJó™ƒbUƒbmK@aU@UVVL@VƒL@„UVULƒK@xUL@VUV@nml¯@UkmKUxmbVbUV@XƒlXVmnVbkxUbU@ƒbm@@VUlUVšb°@VX¯šm‚',
+              ],
+              encodeOffsets: [[114615, 40562]],
+            },
+          },
+          {
+            type: 'Feature',
+            id: '1405',
+            properties: { name: '晋城市', cp: [112.7856, 35.6342], childNum: 6 },
+            geometry: {
+              type: 'Polygon',
+              coordinates: [
+                '@@lV„Lšb„an‚LnKVašLVašL„UVaUm„aÆLnLlanKVaÆI„a°x²UlmVVœX˜wUKna„@Vn„J‚a„L„a@UV@@alUkKVKnkmmVwUk„w@ƒ™@kxWUXƒW@@mƒk@aUa@a¯aƒLkKmwkUm@kL@K@aWIXmƒVƒXƒWkUVakL@UVKƒw@aUK@UUKmLU@¯n™KUwVƒUIWJUWmka™@UXƒJƒk@UkmW@kLWKVƒx@bmI@VUaVU@a¯@UUmVKmX@±`kÝKVxUL±akL@V™bƒLkKmVƒ@XWVUbƒVXb@lm@@lW@@xk„lVUbnnmbUšlJ@„@L„@@V„b@‚WXš„UlkxVV@„šwn@ÜmnLlVkzƒ`UbmL@Vš@XL˜m„VnIÞ@VU°x@VnL˜x„V@LU°',
+              ],
+              encodeOffsets: [[115223, 36895]],
+            },
+          },
+          {
+            type: 'Feature',
+            id: '1401',
+            properties: { name: '太原市', cp: [112.3352, 37.9413], childNum: 5 },
+            geometry: {
+              type: 'Polygon',
+              coordinates: [
+                '@@„@VV@wVKnLVal@na°nšaVJœUlm„L°a@b„@lx@bULUlmx@Ln@lVkn„l˜@XI„w‚K„Vnƒ°aVXVx„ƒUaVU°K„nUlšUVL„KÆVš²Ģ‚lnXalLÈÆ˜L„KUaVkUanmWU™a@WwkUWU¯y¯Ñ@anIl@@aVU„m„I„ymUƒLUUVakaU@@LmJkw±LKmVUI@W¯™VaU_l™kbW@kK@mƒUkaVƒmVaU™ƒIVmalk™W@wnIVy@klkWUU›VI@ƒƒUƒVkam@knU@mmmK@bblVUX@VkLV`@n±KU„ULƒ‚UnVVńUbÇKmV—Imbm@k¼ó@Ul™b@VmV@bXmaƒK@›UUxkV‚V@„xW„UxVnkVVJ@XnJ@XlV²LƂVbnL@lš@°',
+              ],
+              encodeOffsets: [[114503, 39134]],
+            },
+          },
+          {
+            type: 'Feature',
+            id: '1403',
+            properties: { name: '阳泉市', cp: [113.4778, 38.0951], childNum: 3 },
+            geometry: {
+              type: 'Polygon',
+              coordinates: [
+                '@@°@nb„@lb@b„b„b‚@„x²al@lb„KXU@m‚kUWkkmUUƒVwV@XUW@™naVklKXblKnL‚ƒnLVanImaXKlL„ašV@U@KUKW„alƒXK@£WKXUV@VU„ƒUUVW„_V™@W@@K„@šƒUƒƒIWmXUmƒULƒn™JkImmÝaUbLƒK@UƒWk@mn™Uƒ@kVWb@Ubmx@lƒzUxƒ`U„ULml@„XWlƒ@UV@nk@U‚Vb@X™Jm™@@Vknƒyk@ƒzƒJƒnUV@bk@mJ@b°Ò°zXVlVXx‚@šbXVmnVbUlVb',
+              ],
+              encodeOffsets: [[115864, 39336]],
+            },
+          },
+        ],
+        UTF8Encoding: true,
+      })
+      var mapFeatures = echarts.getMap(this.mapName).geoJson.features
+      mapFeatures.forEach(v => {
+        // 地区名称
+        var name = v.properties.name
+        // 地区经纬度
+        this.geoCoordMap[name] = v.properties.cp
+      })
+      // <p>当前阶段:<span>可论证阶段</span></p>
+      // <p>时间节点:<span>2021.10-2022.10</span></p>
+      let option = {
+        tooltip: {
+          padding: 15,
+          enterable: true,
+          transitionDuration: 1,
+          formatter: (params, ticket, callback) => {
+            // 清空所有轮播
+            for (var k in this.geoCoordMap) {
+              myChart.dispatchAction({
+                // type: 'geoUnSelect',
+                type: 'downplay',
+                name: k,
+              })
+            }
+            // 如果鼠标滑动到线线上面,则返回空
+            myChart.dispatchAction({
+              // type: 'geoSelect',
+              type: 'highlight',
+              name: params.name,
+            })
+            if (params.componentSubType == 'lines') {
+              return
+            }
+            if (params.componentSubType == 'scatter') {
+              let tipHtml = `
+              <div class="tooltip-cont">
+                <p>项目数量:<span>${data[params.dataIndex].value2}个</span></p>
+                <p>总投资额:<span>${params.data.value[2]}亿</span></p>
+            </div>`
+              callback(ticket, tipHtml)
+              return tipHtml
+            }
+            if (params.componentSubType == 'map') {
+              let tipHtml = `
+              <div class="tooltip-cont">
+              <p>项目数量:<span>${data[params.dataIndex].value2}个</span></p>
+                <p>总投资额:<span>${params.data.value}亿</span></p>
+            </div>`
+              callback(ticket, tipHtml)
+              return tipHtml
+            }
+
+          },
+        },
+        visualMap: {
+          show: false,
+          min: 0,
+          max: 300,
+          right: 0,
+          bottom: 0,
+          text: ['高', '低'],
+          textStyle: {
+            color: '#f1f1f1'
+          },
+          realtime: false,
+          calculable: false,
+          inRange: {
+            color: ['lightskyblue', '#2754b7']
+          }
+        },
+        geo: {
+          show: true,
+          map: 'shanxi',
+          layoutCenter: ['50%', '50%'], //地图位置
+          layoutSize: '100%',
+          zoom:1.5,
+          label: {
+            normal: {
+              show: false,
+            },
+            emphasis: {
+              show: false,
+            },
+          },
+          roam: false,
+          itemStyle: {
+            normal: {
+              areaColor: '#1946a8',
+              shadowColor: '#1946a8',
+              borderWidth: 1, //设置外层边框
+              borderColor: '#1946a8',
+              shadowOffsetX: 10,
+              shadowOffsetY: 5,
+              shadowBlur: 2,
+            },
+            emphasis: {
+              areaColor: '#1946a8',
+              borderColor: '#d4bc1d',
+              borderWidth: 2, //设置外层边框
+            },
+          },
+        },
+        series: [
+          {
+            name: '散点',
+            type: 'scatter',
+            coordinateSystem: 'geo',
+            data: this.convertData(data),
+            symbolSize: function (val) {
+              return 10
+            },
+            label: {
+              normal: {
+                formatter: '{b}',
+                position: [10, 10],
+                fontSize: 30,
+                fontWeight: 600,
+                fontStyle: 'italic',
+                color: '#fff',
+                show: true,
+              },
+              emphasis: {
+                show: true,
+              },
+            },
+            itemStyle: {
+              normal: {
+                color: '#000',
+                borderWidth: 2,
+                borderColor: '#fff',
+              },
+            },
+          },
+          {
+            type: 'map',
+            map: this.mapName,
+            geoIndex: 0,
+            aspectScale: 1.5, //长宽比
+            showLegendSymbol: true, // 存在legend时显示
+            label: {
+              normal: {
+                show: true,
+              },
+              emphasis: {
+                show: false,
+                textStyle: {
+                  color: '#fff',
+                },
+              },
+            },
+            roam: true,
+            itemStyle: {
+              normal: {
+                areaColor: '#031525',
+                borderColor: '#3B5077',
+              },
+              emphasis: {
+                areaColor: '#2B91B7',
+              },
+            },
+            animation: false,
+            data: data,
+          },
+          {
+            name: '点',
+            type: 'scatter',
+            coordinateSystem: 'geo',
+            zlevel: 6,
+          },
+          {
+            name: 'Top 5',
+            type: 'effectScatter',
+            coordinateSystem: 'geo',
+            data: this.convertData(
+              data
+                .sort(function (a, b) {
+                  return b.value - a.value
+                })
+                .slice(0, 5)
+            ),
+            symbolSize: function (val) {
+              return 15
+            },
+            showEffectOn: 'render',
+            rippleEffect: {
+              brushType: 'stroke',
+            },
+            hoverAnimation: true,
+            label: {
+              normal: {
+                formatter: '{b}',
+                position: 'left',
+                show: false,
+              },
+            },
+            itemStyle: {
+              normal: {
+                color: 'yellow',
+                shadowBlur: 10,
+                shadowColor: 'yellow',
+              },
+            },
+            zlevel: 1000,
+          },
+          {
+            name: '线路',
+            type: 'lines',
+            zlevel: 2,
+            effect: {
+              show: true,
+              period: 4, //箭头指向速度,值越小速度越快
+              trailLength: 0.02, //特效尾迹长度[0,1]值越大,尾迹越长重
+              symbol: 'arrow', //箭头图标
+              symbolSize: 5, //图标大小
+            },
+            lineStyle: {
+              normal: {
+                color: '#00FFFF',
+                width: 1,
+                type: 'dashed',
+                opacity: 0.5, //尾迹线条透明度
+                curveness: -0.3, //尾迹线条曲直度
+              },
+            },
+            data: moveLine.normal,
+          },
+        ],
+      }
+      let that = this
+      myChart.on('click', function (params) {
+        if (params.name == '太原市') {
+          that.showTip = true
+        }
+        // window.open('https://www.baidu.com')
+      })
+      tools.loopShowTooltip(myChart, option, {
+        interval: 2000,
+        loopSeries: false,
+      });
+      myChart.setOption(option)
+    },
+    initChartC3() {
+      let myChart = echarts.init(this.$refs['echartC3'])
+      let option = {
+        tooltip: {
+          trigger: 'axis',
+          formatter: '{a0}:{c0}' + '亿元',  //+ '<br/>'+ '{a1}:{c1}' + '%',
+          axisPointer: {
+            type: 'cross',
+          },
+        },
+        grid: {
+          top: '5%',
+          right: '3%',
+          left: '7%',
+          bottom: '10%',
+        },
+        // legend: {
+        //   top: '1',
+        //   textStyle: {
+        //     color: 'rgba(250,250,250,0.6)',
+        //   },
+        // },
+        xAxis: {
+          data: statusList.map(item => item.name),
+          axisLine: {
+            show: true, //隐藏X轴轴线
+            lineStyle: {
+              color: '#005094',
+              width: 1,
+            },
+          },
+          axisTick: {
+            show: false, //隐藏X轴刻度
+          },
+          axisLabel: {
+            show: true,
+            rotate: 20,
+            textStyle: {
+              color: '#fff',//'rgba(255,255,255,0.6)', //X轴文字颜色
+            },
+          },
+        },
+        yAxis: [
+          {
+            type: 'value',
+            name: '亿元',
+            nameTextStyle: {
+              color: 'rgba(255,255,255,0.6)',
+            },
+            splitLine: {
+              show: true,
+              lineStyle: {
+                color: '#68b4dd66',
+                type: 'dashed',
+              },
+            },
+            axisLine: {
+              show: true,
+              lineStyle: {
+                color: '#3D7495',
+              },
+            },
+            axisLabel: {
+              show: true,
+              textStyle: {
+                color: 'rgba(250,250,250,0.6)',
+              },
+            },
+          },
+          {
+            type: 'value',
+            axisLine: {
+              show: false,
+            },
+            splitLine: {
+              show: false,
+            },
+            axisLabel: {
+              show: true,
+              formatter: '{value} %',
+              textStyle: {
+                color: 'rgba(250,250,250,0.6)',
+              },
+            },
+          },
+        ],
+        series: [
+          {
+            type: 'bar',
+            name: '投资金额',
+            barWidth: 15,
+            itemStyle: {
+              normal: {
+                color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [
+                  {
+                    offset: 0,
+                    color: '#69c0ff',
+                  },
+                  {
+                    offset: 1,
+                    color: '#082550',
+                  },
+                ]),
+              },
+            },
+            data: statusList.map(item => item.value),
+          },
+        ],
+      }
+      myChart.setOption(option)
+      tools.loopShowTooltip(myChart, option, {
+        nterval: 2000,
+        loopSeries: true,
+      })
+
+    },
+    initChartC4() {
+      var chartData = []
+      var timer = null;
+      var timer2 = null;
+      var i = 0;
+
+      chartDateR2.forEach((item,index) => {
+        let obj = {
+          name: item.name,
+          y: item.value2,
+          num: item.value,
+          sliced: false,
+          selected: false,
+          color: index == 0 ? '#43ede3' : '#8ba2ff'
+        }
+        chartData.push(obj)
+        
+      })
+      let that = this
+    var chart = Highcharts.chart('echartC4', {
+      chart: {
+        type: 'pie',
+        backgroundColor: 'rgba(0,0,0,0)',
+        options3d: {
+          enabled: true,
+          alpha: 45,
+          //beta: 0
+        },
+        events: {
+          // load,图表加载完成时触发
+          load: function () {
+            var chart = this;
+
+            var points = chart.series[0].points;
+            var len = points.length;
+           
+            timer && clearInterval(timer);
+            timer = setInterval(function () {
+              autoTooltip(points[i]);
+              chartData.forEach((item,index) => {
+                item.sliced = false
+                item.selected = false
+                if(index == i){
+                  item.sliced = true
+                  item.selected = true
+                }
+              })
+              chart.update({
+                series:[{
+                  type: 'pie',
+                  name: '占比',
+                  point: {
+                    events:{
+                      click:function(e){
+                          console.log(e)
+                      }
+                    }
+                  },
+                  data: chartData
+                }]
+              })
+              i++;
+              if (i === len) {
+                i = 0;
+                chartData.forEach((item,index) => {
+                  item.sliced = false
+                  item.selected = false
+                })
+                chart.update({
+                  series:[{
+                    type: 'pie',
+                    name: '占比',
+                    point: {
+                      events:{
+                        click:function(e){
+                            console.log(e)
+                        }
+                      }
+                    },
+                    data: chartData
+                  }]
+                })
+              }
+            }, 2000);
+          },
+          legendItemClick : function(event) {
+            console.log(event);
+            return true;
+          }
+        }
+      },
+      credits: {
+        enabled: false  //去掉hightchats水印
+      },
+      title: {
+        text: null
+      },
+      tooltip: {
+        crosshairs: true,
+        backgroundColor: 'rgba(0,0,0,0.5)',
+        // positioner: function(e){
+        //   console.log(e, this)
+        // },
+        useHTML: false, //开启html模式
+        style: {
+          color:'#fff',
+        },
+        formatter: function(e){
+          //console.log(this)
+          let num = chartData[this.colorIndex].num
+          this.percentage = Math.round(this.percentage)
+          return `${this.key}:<b>${this.percentage}%</b><br/>投资完成额:<b>${this.y}</b>亿<br/>投资数量:<b>${num}个</b>`
+        },
+        //pointFormat: 
+      },
+      legend: {
+        layout: 'vertical',
+        align: 'right',
+        verticalAlign: 'bottom',
+        itemStyle: {
+          fontSize: '20px',
+          color: '#fff',
+          x: 20
+        }
+      },
+      plotOptions: {
+        pie: {
+          allowPointSelect: true,
+          showInLegend:  true, // 图例
+          cursor: 'pointer',
+          size: 500,
+          innerSize : 300, //环形图中间空白,0为饼图
+          depth: 28, //立体高度
+          slicedOffset: 23, //动画距离
+          dataLabels: {
+            enabled: false,  // 是否展示指示线
+            format: '{point.name}: {point.percentage}'
+          }
+        },
+      },
+      series: [{
+        type: 'pie',
+        name: '占比',
+        center: ['60%', '50%'],
+        point: {
+            events:{
+                click:function(e){ //点击事件
+                },
+                mouseOver: function(e){ //鼠标移入停止轮播并且找到移入的当前数据设为选中
+                  //console.log(e) 
+                  chartData.forEach((item,index) => {
+                    item.sliced = false
+                    item.selected = false
+                 })
+                  chartData[e.target.index].sliced = true
+                  chartData[e.target.index].selected = true
+                  chart.update({
+                    series:[{
+                      type: 'pie',
+                      name: '占比',
+                      point: {
+                        events:{
+                          click:function(e){
+                              console.log(e)
+                          }
+                        }
+                      },
+                      data: chartData
+                    }]
+                  })
+                  timer && clearInterval(timer);
+                },
+                mouseOut: function(){ // 鼠标移出后需要继续执行轮播
+                var points = chart.series[0].points;
+                var len = points.length;
+           
+                timer && clearInterval(timer);
+                timer = setInterval(function () {
+                  autoTooltip(points[i]);
+                  chartData.forEach((item,index) => {
+                    item.sliced = false
+                    item.selected = false
+                    if(index == i){
+                      item.sliced = true
+                      item.selected = true
+                    }
+                  })
+                  chart.update({
+                    series:[{
+                      type: 'pie',
+                      name: '占比',
+                      point: {
+                        events:{
+                          click:function(e){
+                              console.log(e)
+                          }
+                        }
+                      },
+                      data: chartData
+                    }]
+                  })
+                  i++;
+                  if (i === len) {
+                    i = 0;
+                    chartData.forEach((item,index) => {
+                      item.sliced = false
+                      item.selected = false
+                    })
+                    chart.update({
+                      series:[{
+                        type: 'pie',
+                        name: '占比',
+                        point: {
+                          events:{
+                            click:function(e){
+                                console.log(e)
+                            }
+                          }
+                        },
+                        data: chartData
+                      }]
+                    })
+                  }
+                }, 2000);                
+               }
+            }
+        },
+        data: chartData
+      }]
+    });
+    
+    function autoTooltip(point) {
+      chart.tooltip.refresh(point);
+    }
+    },
+    initProjectList() {
+      let dataList = []
+      projectList.map(item => {
+        dataList.push([item.office,item.name,  item.value + '亿'])
+      })
+      this.storageRecordConfig2 = {
+        header: ['企业集团', '项目名称',  '投资金额'],
+        headerBGC: '#05507b33',
+        oddRowBGC: '#05507b33',
+        evenRowBGC: '',
+        headerHeight: '40',
+        rowNum: 6,
+        columnWidth: [100, 550,100],
+        align: ['center', 'center', 'center'],
+        data: dataList,
+      }
+    }
   },
 })

+ 188 - 2
investment/styles/investHomeGroup.css

@@ -1,7 +1,8 @@
 html,
 body {
   width: 7680px;
-  height: 2130px;
+  min-height: 2130px;
+  height: 100%;
   font-size: 20px;
   color: #fff;
   font-family: 'Microsoft YaHei', 'Helvetica Neue', Helvetica, 'PingFang SC',
@@ -64,7 +65,8 @@ div {
   font-size: 16px;
 }
 .LeftBox,
-.CenterBox {
+.CenterBox,
+.RightBox {
   padding: 0 20px;
 }
 .CenterBox > .main {
@@ -82,6 +84,12 @@ div {
   grid-template-rows: repeat(3, 1fr);
   gap: 10px;
 }
+.RightBox > .main {
+  width: 100%;
+  height: calc(100% - 70px);
+  display: grid;
+  gap: 10px;
+}
 .LeftBox .card {
   width: 100%;
   height: 100%;
@@ -311,6 +319,184 @@ div {
   gap: 10px;
   grid-template-rows: repeat(3, 1fr);  
 }
+.CenterBox .boxs {
+  display: grid;
+  grid-template-columns: repeat(2, 1fr); 
+  grid-template-rows: repeat(2, 1fr);  
+  padding: 10px;
+  color: #40A9FF;
+  height: 100%;
+}
+.CenterBox .boxs > div {
+  flex: 0 0 50%;
+  background: url('../groupImg/left1-bg.png') no-repeat center;
+  background-size: 100% 100%;
+  padding: 20px 30px;
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  flex-direction: column;
+}
+.CenterBox .boxs > div > p {
+  width: 80%;
+}
+.CenterBox .boxs > div > p:nth-child(1){
+  display: flex;
+  justify-content: space-between;
+} 
+.CenterBox .boxs > div > p:nth-child(2) {
+  margin-top: 25px;
+  text-align: left;
+}
+.CenterBox .boxs .name {
+  color: #f3f3f3;
+  font-size: 30px;
+}
+.CenterBox .boxs .change {
+  color: #32EDAA;
+}
+.CenterBox .boxs .change.up {
+  color: #ED3248;
+}
+.CenterBox .boxs .num {
+  font-size: 30px;
+  font-weight: 600;
+  margin-right: 5px;
+}
+.CenterBox .boxs .el-icon-more {
+  font-size: 35px;
+}
+.CenterBox .top {
+  display: flex;
+  justify-content: space-between;
+}
+.CenterBox .top .box {
+  flex: 1;
+  margin: 0 10px;
+  display: flex;
+  flex-direction: column;
+  align-items: center;
+  color: #40A9FF;
+}
+/* .CenterBox .t {
+  padding: 15px 0;
+  display: flex;
+  align-items: center;
+  background-color: rgba(59,211,255,0.05);
+} */
+.CenterBox .t {
+  padding: 25px 0;
+  display: flex;
+  font-size: 30px;
+  font-weight: 600;
+  align-items: center;
+  justify-content: center;
+  background-color: rgba(18, 61, 98, .6);
+}
+.CenterBox .b {
+  padding: 15px 0;
+  display: flex;
+  align-items: center;
+  justify-content: space-around;
+  background-color: rgba(7, 42, 76, .6);
+  padding: 15px 0;
+}
+.CenterBox .b span {
+  color: #40A9FF;
+  font-size: 34px;
+  font-weight: 900;
+}
+.CenterBox .t img {
+  margin-right: 10px;
+}
+.CenterBox .box > div {
+  width: 100%;
+}
+.CenterBox .box > img {
+  width: 40px;
+}
+.CenterBox .box > div p {
+  font-size: 26px;
+  color: #e1e3ef;
+}
+.CenterBox .box > div span {
+  display: inline-block;
+  font-size: 34px;
+  margin-right: 5px;
+  font-weight: bolder;
+  margin-top: 5px;
+}
+.CenterBox .map-box {
+  height: 100%;
+  position: relative;
+  padding: 30px 0;
+}
+.CenterBox .status {
+  position: absolute;
+  /* bottom: 20px; */
+  bottom: 200px;
+  right: 15px;
+  background-color: rgba(3,10,12,0.46);
+  border: 1px solid #4A57CF;
+}
+.CenterBox .status p {
+  background-color: #02397F;
+  line-height: 45px;
+  text-align: center;
+  font-size: 25px;
+  color: #40A9FF;
+}
+.CenterBox .status li {
+  line-height: 30px;
+  padding-right: 15px;
+  list-style: none;
+  position: relative;
+  font-size: 20px;
+}
+.CenterBox .status li::before {
+  content: '';
+  position: absolute;
+  left: -15px;
+  top: 50%;
+  transform: translate(0, -50%);
+  width: 5px;
+  height: 5px;
+  background-color: #00FFFF;
+  border-radius: 50%;
+}
+.CenterBox .status i {
+  font-size: 20px;
+  font-weight: 600;
+  color: #40A9FF;
+}
+.CenterBox .tooltip-cont {
+  margin: -15px;
+  border: 1px solid #3699FF;
+  border-radius: 8px;
+  padding: 15px;
+  background-color: rgb(39 122 145 / 0.36);
+  font-size: 30px;
+}
+.CenterBox .tooltip-cont p {
+  line-height: 1.8;
+  color: #f3f3f3;
+  position: relative;
+  padding-left: 12px;
+}
+.CenterBox .tooltip-cont p::before {
+  position: absolute;
+  display: inline-block;
+  content: '';
+  left: -10px;
+  top: 20px;
+  width: 15px;
+  height: 15px;
+  border-radius: 50%;
+  background-color: #40A9FF;
+}
+.CenterBox .tooltip-cont span{
+  color: #69C0FF;
+}
 /* 公共css */
 /* 宽高纵横比 */
 .aspect-auto {

+ 10 - 10
manpowerPort/js/index2.js

@@ -1597,7 +1597,7 @@ let app = new Vue({
       option.legend.show = true
       option.grid.right = '15%'
       option.tooltip = {
-        show:false,
+        show:true,
         trigger: 'axis',
         formatter: '{a0}:{c0}' + '<br/>' + '{a1}:{c1}' + '%'
       }
@@ -1618,10 +1618,10 @@ let app = new Vue({
         },
       })
       myChart.setOption(option)
-      tools.loopShowTooltip(myChart, option, {
-        nterval: 2000,
-        loopSeries: true,
-      });
+      // tools.loopShowTooltip(myChart, option, {
+      //   nterval: 2000,
+      //   loopSeries: true,
+      // });
     },
     initChartC2 () {
       let myChart = echarts.init(this.$refs['echartC2'])
@@ -1733,7 +1733,7 @@ let app = new Vue({
       option.legend.data = ['人工成本利润率','人工成本利润率同比变化']
       option.legend.show = true
       option.tooltip = {
-        show:false,
+        show:true,
         trigger: 'axis',
         formatter: '{a0}:{c0}' + '%' + '<br/>' + '{a1}:{c1}' + '%'
       }
@@ -1775,10 +1775,10 @@ let app = new Vue({
         }
       ]
       myChart.setOption(option)
-      tools.loopShowTooltip(myChart, option, {
-        nterval: 2000,
-        loopSeries: true,
-      });
+      // tools.loopShowTooltip(myChart, option, {
+      //   nterval: 2000,
+      //   loopSeries: true,
+      // });
     },
     // 右侧图表---------------------------------------------开始
     initChartR1 () {

+ 10 - 10
manpowerPort/js/index2JNKG.js

@@ -1566,7 +1566,7 @@ let app = new Vue({
       option.legend.show = true
       option.grid.right = '15%'
       option.tooltip = {
-        show:false,
+        show:true,
         trigger: 'axis',
         formatter: '{a0}:{c0}' + '<br/>' + '{a1}:{c1}' + '%'
       }
@@ -1587,10 +1587,10 @@ let app = new Vue({
         },
       })
       myChart.setOption(option)
-      tools.loopShowTooltip(myChart, option, {
-        nterval: 2000,
-        loopSeries: true,
-      });
+      // tools.loopShowTooltip(myChart, option, {
+      //   nterval: 2000,
+      //   loopSeries: true,
+      // });
     },
     initChartC2 () {
       let myChart = echarts.init(this.$refs['echartC2'])
@@ -1702,7 +1702,7 @@ let app = new Vue({
       option.legend.data = ['人工成本利润率','人工成本利润率同比变化']
       option.legend.show = true
       option.tooltip = {
-        show:false,
+        show:true,
         trigger: 'axis',
         formatter: '{a0}:{c0}' + '%' + '<br/>' + '{a1}:{c1}' + '%'
       }
@@ -1744,10 +1744,10 @@ let app = new Vue({
         }
       ]
       myChart.setOption(option)
-      tools.loopShowTooltip(myChart, option, {
-        nterval: 2000,
-        loopSeries: true,
-      });
+      // tools.loopShowTooltip(myChart, option, {
+      //   nterval: 2000,
+      //   loopSeries: true,
+      // });
     },
     // 右侧图表---------------------------------------------开始
     initChartR1 () {

+ 12 - 12
manpowerPort/js/index3.js

@@ -391,8 +391,8 @@ let app = new Vue({
           dataR5[0] = []
           dataR5[1] = []
           res.orgData.area5.card1.forEach(item => {
-            dataR5[0].push(item['ZBPZ0063'])
-            dataR5[1].push(item['ZBPZ0064'])
+            dataR5[0].push(item['ZBPZ0064'])
+            dataR5[1].push(item['ZBPZ0063'])
           })
           // 各二级企业利润与薪酬变动情况
           dataR6[0] = []
@@ -1570,7 +1570,7 @@ let app = new Vue({
       option.legend.show = true
       option.grid.right = '15%'
       option.tooltip = {
-        show:false,
+        show:true,
         trigger: 'axis',
         formatter: '{a0}:{c0}' + '<br/>' + '{a1}:{c1}' + '%'
       }
@@ -1591,10 +1591,10 @@ let app = new Vue({
         },
       })
       myChart.setOption(option)
-      tools.loopShowTooltip(myChart, option, {
-        nterval: 2000,
-        loopSeries: true,
-      });
+      // tools.loopShowTooltip(myChart, option, {
+      //   nterval: 2000,
+      //   loopSeries: true,
+      // });
     },
     initChartC2 () {
       let myChart = echarts.init(this.$refs['echartC2'])
@@ -1706,7 +1706,7 @@ let app = new Vue({
       option.legend.data = ['人工成本利润率', '人工成本利润率同比变化']
       option.legend.show = true
       option.tooltip = {
-        show:false,
+        show:true,
         trigger: 'axis',
         formatter: '{a0}:{c0}' + '%' + '<br/>' + '{a1}:{c1}' + '%'
       }
@@ -1748,10 +1748,10 @@ let app = new Vue({
         }
       ]
       myChart.setOption(option)
-      tools.loopShowTooltip(myChart, option, {
-        nterval: 2000,
-        loopSeries: true,
-      });
+      // tools.loopShowTooltip(myChart, option, {
+      //   nterval: 2000,
+      //   loopSeries: true,
+      // });
     },
     // 右侧图表---------------------------------------------开始
     initChartR1 () {

+ 10 - 10
manpowerPort/js/index3MT.js

@@ -1543,7 +1543,7 @@ let app = new Vue({
       option.legend.show = true
       option.grid.right = '15%'
       option.tooltip = {
-        show:false,
+        show:true,
         trigger: 'axis',
         formatter: '{a0}:{c0}' + '<br/>' + '{a1}:{c1}' + '%'
       }
@@ -1564,10 +1564,10 @@ let app = new Vue({
         },
       })
       myChart.setOption(option)
-      tools.loopShowTooltip(myChart, option, {
-        nterval: 2000,
-        loopSeries: true,
-      });
+      // tools.loopShowTooltip(myChart, option, {
+      //   nterval: 2000,
+      //   loopSeries: true,
+      // });
     },
     initChartC2 () {
       let myChart = echarts.init(this.$refs['echartC2'])
@@ -1679,7 +1679,7 @@ let app = new Vue({
       option.legend.data = ['人工成本利润率','人工成本利润率同比变化']
       option.legend.show = true
       option.tooltip = {
-        show:false,
+        show:true,
         trigger: 'axis',
         formatter: '{a0}:{c0}' + '%' + '<br/>' + '{a1}:{c1}' + '%'
       }
@@ -1721,10 +1721,10 @@ let app = new Vue({
         }
       ]
       myChart.setOption(option)
-      tools.loopShowTooltip(myChart, option, {
-        nterval: 2000,
-        loopSeries: true,
-      });
+      // tools.loopShowTooltip(myChart, option, {
+      //   nterval: 2000,
+      //   loopSeries: true,
+      // });
     },
     // 右侧图表---------------------------------------------开始
     initChartR1 () {

+ 12 - 12
manpowerPort/js/index4.js

@@ -381,8 +381,8 @@ let app = new Vue({
           dataR5[0] = []
           dataR5[1] = []
           res.orgData.area5.card1.forEach(item => {
-            dataR5[0].push(item['ZBPZ0063'])
-            dataR5[1].push(item['ZBPZ0064'])
+            dataR5[0].push(item['ZBPZ0064'])
+            dataR5[1].push(item['ZBPZ0063'])
           })
           // 各二级企业利润与薪酬变动情况
           dataR6[0] = []
@@ -1564,7 +1564,7 @@ let app = new Vue({
       option.legend.show = true
       option.grid.right = '15%'
       option.tooltip = {
-        show:false,
+        show:true,
         trigger: 'axis',
         formatter: '{a0}:{c0}' + '%' + '<br/>' + '{a1}:{c1}' + '%'
       }
@@ -1585,10 +1585,10 @@ let app = new Vue({
         },
       })
       myChart.setOption(option)
-      tools.loopShowTooltip(myChart, option, {
-        nterval: 2000,
-        loopSeries: true,
-      });
+      // tools.loopShowTooltip(myChart, option, {
+      //   nterval: 2000,
+      //   loopSeries: true,
+      // });
     },
     initChartC2 () {
       let myChart = echarts.init(this.$refs['echartC2'])
@@ -1700,7 +1700,7 @@ let app = new Vue({
       option.legend.data = ['人工成本利润率', '人工成本利润率同比变化']
       option.legend.show = true
       option.tooltip = {
-        show:false,
+        show:true,
         trigger: 'axis',
         formatter: '{a0}:{c0}' + '%' + '<br/>' + '{a1}:{c1}' + '%'
       }
@@ -1742,10 +1742,10 @@ let app = new Vue({
         }
       ]
       myChart.setOption(option)
-      tools.loopShowTooltip(myChart, option, {
-        nterval: 2000,
-        loopSeries: true,
-      });
+      // tools.loopShowTooltip(myChart, option, {
+      //   nterval: 2000,
+      //   loopSeries: true,
+      // });
     },
     // 右侧图表---------------------------------------------开始
     initChartR1 () {

+ 10 - 10
manpowerPort/js/index4SY.js

@@ -1506,7 +1506,7 @@ let app = new Vue({
       option.legend.show = true
       option.grid.right = '15%'
       option.tooltip = {
-        show:false,
+        show:true,
         trigger: 'axis',
         formatter: '{a0}:{c0}' + '%' + '<br/>' + '{a1}:{c1}' + '%'
       }
@@ -1527,10 +1527,10 @@ let app = new Vue({
         },
       })
       myChart.setOption(option)
-      tools.loopShowTooltip(myChart, option, {
-        nterval: 2000,
-        loopSeries: true,
-      });
+      // tools.loopShowTooltip(myChart, option, {
+      //   nterval: 2000,
+      //   loopSeries: true,
+      // });
     },
     initChartC2 () {
       let myChart = echarts.init(this.$refs['echartC2'])
@@ -1642,7 +1642,7 @@ let app = new Vue({
       option.legend.data = ['人工成本利润率', '人工成本利润率同比变化']
       option.legend.show = true
       option.tooltip = {
-        show:false,
+        show:true,
         trigger: 'axis',
         formatter: '{a0}:{c0}' + '%' + '<br/>' + '{a1}:{c1}' + '%'
       }
@@ -1684,10 +1684,10 @@ let app = new Vue({
         }
       ]
       myChart.setOption(option)
-      tools.loopShowTooltip(myChart, option, {
-        nterval: 2000,
-        loopSeries: true,
-      });
+      // tools.loopShowTooltip(myChart, option, {
+      //   nterval: 2000,
+      //   loopSeries: true,
+      // });
     },
     // 右侧图表---------------------------------------------开始
     initChartR1 () {