Newer
Older
smart-economy / src / components / economic / yztInfo / qyfz-one.vue
StephanieGitHub on 26 Jan 2021 20 KB first commit
<template>
  <div class="full-box jjyxyzt">
    <div class="" style="width: 100%;height:100%;" >
      <div class="map-box">
        <div class="top-tip-box t-title">当前位置:经济运行一张图  >  企业发展一张图</div>
        <div class="maps">
          <div class="map-item"  v-for="item in mapList" :class="[item.className]" @mouseenter=""  @mouseleave="">
            <div class="name-dot"></div><div class="name-text">{{item.name}}</div>
          </div>
        </div>
        <div class="map-detail-box" v-if="true">
          <div class="map-border-top">
            <div class="mb-left"></div>
            <div class="mb-right"></div>
          </div>
          <div class="map-border-left">
            <div class="mb-top"></div>
            <div class="mb-center"></div>
            <div class="mb-bottom"></div>
          </div>
          <div class="map-info-box">
            <div class="map-title-box">
              <div class="map-title"><span class="dot"></span><div>江西科伦制药</div></div>
              <div class="map-qy">区域:渊山岗工业区</div>
            </div>
            <div class="map-detail-row"><div class="">地  址:</div><div class="">江西省东乡县东红大道516号</div></div>
            <div class="map-detail-row"><div class="">社会信用代码:</div><div class="">91321029775873472f</div></div>
            <div class="map-detail-row"><div class="">行  业:</div><div class=""> 生物制药</div></div>
            <div class="map-detail-row"><div class="">注册日期:</div><div class="">2005年06月27日</div></div>
            <div class="map-detail-row"><div class="">注册资本:</div><div class="">2005年06月27日</div></div>
            <div class="more-mapdetail">更多>></div>
          </div>
        </div>
      </div>
      <div class="charts-box" style="position:relative">
        <div class="top-tip-box" style="width: calc(100% - 10px);margin-left: 10px;">
          <el-date-picker v-model="timeFilter" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" format="yyyy-MM" value-format="yyyy-MM" style="width:289px"></el-date-picker>
          <div class="jjyxyzt-seach-btn">查询</div>
        </div>
        <div class="hasSearch-box charts-one-boxs">
          <div class="chart-item-box charts-three-box">
            <div class="charts-line-top">
              <div class="line-left-icon" style="transform: rotate(180deg);top:-20px;"></div>
              <div class="line-left"></div>
            </div>
            <div class="chart-con-box">
              <div class="jjyx-tab-box">
                <div class="tab-item">总产值</div>
                <div class="tab-item">收入</div>
                <div class="tab-item">利税</div>
                <div class="tab-item">利润</div>
              </div>
              <div class="jjyx-tab-info">
                <div class="tab-info-item" style="position: relative">
                  <div class="select-types">
                    <div class="more-data more-detail" @click="showForecast = true" v-if="false">预测</div>
                  </div>
                  <div class="charts-title"><span class="dot"></span>企业数量发展分布图</div>
                  <div class="chart-li-box1">
                    <div id="chartsOne" style="width: 100%;height:100%;"></div>
                  </div>
                </div>
                <div class="jt-line"></div>
                <div class="tab-info-item">
                  <div class="charts-title"><span class="dot"></span>企业规模分布图</div>
                  <div class="chart-li-box1" id="chartsTwo"></div>
                </div>
                <div class="jt-line"></div>
                <div class="tab-info-item" style="position: relative">
                  <div class="select-types">
                    <el-select v-model="typeValue" placeholder="请选择"  class="more-data more-select" @change="">
                      <el-option v-for="item in typeList" :key="item.id" :label="item.name" :value="item.id"> </el-option>
                    </el-select>
                    <div class="more-data more-detail" @click="moreDataClick()">更多>></div>
                    <el-tooltip effect="light" content="更多" placement="top" v-if="false">
                      <i class="el-icon-more more-data" @click="moreDataClick()"></i>
                    </el-tooltip>
                  </div>
                  <div class="charts-title"><span class="dot"></span>企业工业总产值排名</div>
                  <div class="chart-li-box1" id="">
                    <table class="yzt-table" style="">
                      <thead><tr style="font-size: 12px;"><th>企业名称</th><th> 工业总产值</th><th>同比</th></tr></thead>
                      <tbody style="font-size: 10px">
                      <tr v-for="item in chartTable" :key="item.index">
                        <td>
                          <el-tooltip class="item" effect="dark" :content="item.name" placement="left">
                            <div class="ellipsis" style="width:100%;cursor: pointer;" @click="jumpToDetail(item.cid)">{{item.name}}</div>
                          </el-tooltip>
                        </td>
                        <td>{{item.value}}</td>
                        <td>{{item.valueTb}}%</td>
                      </tr>
                      </tbody>
                    </table>

                  </div>
                </div>
              </div>

            </div>
          </div>
        </div>
      </div>
    </div>
    <el-dialog title="企业发展数量" :visible.sync="showForecast" width="600px" @opened="qyfzNumByTime" :close-on-click-modal=false>
      <div class="jjyx-tab-box">
        <div class="tab-item" @click="qyfzNumByTime('month')">按月预测</div>
        <div class="tab-item" @click="qyfzNumByTime('year')">按年预测</div>
      </div>
      <div class="pop-chart-box" id="popQyfzChart"></div>
      <div slot="footer" class="dialog-footer">
        <el-button @click="showForecast = false">关闭</el-button>
      </div>
    </el-dialog>
    <el-dialog :title="title" :visible.sync="dialogVisible" width="800px" :close-on-click-modal=false top="40px">
      <el-table :data="moreData.list" highlight-current-row style="width: 100%">
        <el-table-column type="index" label="序号" align="center" width="80"></el-table-column>
        <el-table-column property="name"  label="企业名称" align="center" show-overflow-tooltip></el-table-column>
        <el-table-column property="nh"  :label='ndUnit'  align="center"></el-table-column>
        <el-table-column property="cz"  label="产值(万元)" align="center" width="150"></el-table-column>
      </el-table>
      <el-pagination @current-change="morePageChange" background layout="prev, pager, next" :page-size="moreData.pageSize" :current-page="moreData.pageNum" :total="moreData.total" style="text-align: right;"></el-pagination>
      <div slot="footer" class="dialog-footer">
        <el-button @click="dialogVisible = false">关闭</el-button>
      </div>
    </el-dialog>
  </div>
</template>

<script>
  let month = new Date().getMonth()==0?0:new Date().getMonth();
  let year = month<10?new Date().getFullYear()+"-0"+month :new Date().getFullYear()+"-"+month;
  export default {
    name: 'zhyx',
    data () {
      return {
        showCondition:false,
        timeFilter:[new Date().format("yyyy-")+"01",new Date(year).format("yyyy-MM")],
        filter:{
          type:"plate",
        },
        mapList:[
          {code:'',name:'科技孵化园',className:'kjfhy'},
          {code:'',name:'东腾工业园',className:'dtgyy'},
          {code:'',name:'东山工业园',className:'dsgyy'},
          {code:'',name:'渊山岗工业园',className:'ysggyy'},
        ],
        MapData:null,
        showMapBk:false,
        mapBkValue:{
          mapDetailName:'',
          list:[]
        },
        /**/
        bkList:[
          {id:'plate',name:'板块'},
          {id:'time',name:'时间'}
        ],
        typeValue:'',
        typeList:[
          {id:'',name:'全部'},
          {id:'ssgs',name:'上市公司'},
          {id:'gxqy',name:'高新技术企业'},
        ],
        chartTable:[
          {cid: 2, name: "江西科伦 ", value: 125391.1, valueTb: 12.45},
          {cid: 12, name: "抚州永冠科技 ", value: 125391.1, valueTb: 12.45},
          {cid: 22, name: "书源科技 ", value: 125391.1, valueTb: 12.45},
          {cid: 22, name: "书源科技 ", value: 125391.1, valueTb: 12.45},
          {cid: 22, name: "书源科技 ", value: 125391.1, valueTb: 12.45},
        ],
        defaultOp:{
          title: { show: false },
          legend:{show:false,height:"0"},
          grid:{top:30,bottom:30},
          tooltip: {
            trigger: 'axis',
            axisPointer: {
              type: 'cross',
              label: {
                backgroundColor: '#777'
              },
              crossStyle: {
                color: 'rgba(255,255,255,.8)',
              }
            }
          },
          xAxis: {
            axisLabel:{color:'rgba(255,255,255,.9)'/*,interval:0*/},
            axisLine:{lineStyle:{color:'rgba(255,255,255,.3)'}},
            splitLine:{lineStyle:{color:'rgba(255,255,255,.1)'}}
          }
        },
        chartsTitle:{ left:'',right:''},
        /**/
        showForecast:false,
        timeType:'month',
        title:'企业工业总产值排名',
        ndUnit:'能耗(标准煤)',
        dialogVisible:false,
        moreData:{list:[{cid: 2, name: "江西科伦 ", nh: 125391.1, cz: 12.45},], pageNum:1, pageSize:10, total:0},
        showBk:false,
        bkValue:{
          mapDetailName:'',
          list:[]
        }
      }
    },
    mounted (){
      /*this.getMapData();*/
      this.loadTabCharts();
      this.$refs.dialog.qyfzNumByTime();
    },
    methods:{
      showBkList : function (data) {
        let _this = this
        _this.mapBkValue.mapDetailName = data.name;
        _this.mapBkValue.list = _this.MapData[data.code];
        _this.showMapBk = true;
      },
      hideBkList : function (data) {
        let _this = this
        _this.mapBkValue.mapDetailName=''
        _this.mapBkValue.list = ''
        _this.showMapBk = false;
      },
      getMapData(){
        let _this = this
        _this.$http.get('/jjyx/charts/zhyx/locationStatis').then(function (resp) {
          _this.MapData = resp.data.data
        })
      },
      searchByCondition(){
        let _this = this
        _this.showCondition = true;
      },
      searchResult(){
        let _this = this
        _this.showCondition = false;
        _this.loadTabCharts();
      },
      loadTabCharts(){
        this.chartsTitle.left='吨标准煤';this.chartsTitle.right='同比';
        this.drawLine('chartsOne',['投产运营','工业企业','规上工业','上市公司','高新技术'],[12,334,344,333,787],[122,223,440,22,678],[2,22,34,45,88]);
        let t = [{name: "企业产值100亿以上企业", value: 122},{name: "企业产值50-100亿以上企业", value: 233},{name: "企业产值10-50亿以上企业", value: 453},{name: "企业产值5-10亿以上企业", value: 453},{name: "企业产值1-5亿以上企业", value: 453}];
        let legend=[];
        t.forEach(function (item) {
          legend.push(item.name)
        })
        this.drawPie("chartsTwo",t,legend)
        /*this.getNhData();
        this.getTzData()*/
      },
      getCzData(){
        let vm = this;
        let _start = "",_end = "";
        if(!vm.$Util.isEmpty(vm.timeFilter)){
          if(vm.timeFilter.length === 1){
            _start = vm.timeFilter[0];
          }else if(vm.timeFilter.length === 2){
            _start = vm.timeFilter[0];
            _end = vm.timeFilter[1];
          }
        }
        vm.$http.get('/jjyx/charts/zhyx/cz',{params:$.extend({startDate:_start,endDate:_end},vm.filter)}).then(function (resp) {
          let t = resp.data.data
          vm.drawBar('chartsOne',t.xAxis,t.value);
        })
      },
      getTzData(){
        let vm = this;
        let _start = "",_end = "";
        if(!vm.$Util.isEmpty(vm.timeFilter)){
          if(vm.timeFilter.length === 1){
            _start = vm.timeFilter[0];
          }else if(vm.timeFilter.length === 2){
            _start = vm.timeFilter[0];
            _end = vm.timeFilter[1];
          }
        }
        vm.$http.get('/jjyx/charts/zhyx/gytz',{params:{endDate:_end}}).then(function (resp) {
          let t = resp.data.data;
          vm.chartsTitle.left = '投资金额';vm.chartsTitle.right = '完成率';
          vm.drawLine('gytz',t.xAxis,t.value,t.tb);
        })
      },
      getNhData(){
        let vm = this;
        let _start = "",_end = "";
        if(!vm.$Util.isEmpty(vm.timeFilter)){
          if(vm.timeFilter.length === 1){
            _start = vm.timeFilter[0];
          }else if(vm.timeFilter.length === 2){
            _start = vm.timeFilter[0];
            _end = vm.timeFilter[1];
          }
        }
        vm.$http.get('/jjyx/charts/zhyx/nh',{params:$.extend({startDate:_start,endDate:_end},vm.filter)}).then(function (resp) {
          let t = resp.data.data;
          vm.chartsTitle.left='吨标准煤';vm.chartsTitle.right='同比';
          vm.drawLine('zhnh',t.xAxis,t.value,t.tb);
        })
      },
      /*预测*/
      qyfzNumByTime(type){
        let vm = this
        vm.chartsTitle.left='吨标准煤';vm.chartsTitle.right='同比';
        vm.drawLine('popQyfzChart',['投产运营','工业企业','规上工业','上市公司','高新技术'],[12,334,344,333,787],[122,223,440,22,678],[2,22,34,45,88]);
      },
      /*预测e*/
      moreDataClick(){
        /*this.getMoreTableData(1);*/
        this.dialogVisible = true
      },

      drawLine(container,cate,d1,d2,d3){
        let vm = this
        let myChart = vm.$echarts.init(document.getElementById(container))
        let op = {
          xAxis: {
            type:"category",
            data: cate,
            axisLine:{lineStyle:{color:'rgba(255,255,255,.3)'}}
          },
          yAxis:[
            {
              type: 'value',
              name: vm.chartsTitle.left,
              minInterval: 10,
              nameTextStyle:{color:'rgba(255,255,255,.8)'},
              axisLabel:{
                color:'rgba(255,255,255,.8)',
                formatter: function (value) {
                  let texts = [];
                  if(value<1000){
                    texts.push(value)
                  }else if(Math.ceil(value/1000)>=1&&Math.ceil(value/1000)<10){
                    texts.push(Math.ceil(value/1000) + "千")
                  }else if(Math.ceil(value/10000)>=1&&Math.ceil(value/10000)<100){
                    texts.push(Math.ceil(value/10000) + "万")
                  }else if(Math.ceil(value/1000000)>=1){
                    texts.push(Math.ceil(value/1000000) + "百万")
                  }
                  return texts
                }},
              axisLine:{lineStyle:{color:'rgba(255,255,255,.3)'}},
              splitLine:{lineStyle:{color:'rgba(255,255,255,.1)'}}
            },
            {
              type: 'value',
              name: vm.chartsTitle.right,
              minInterval: 100,
              nameTextStyle:{color:'rgba(255,255,255,.8)'},
              axisLabel:{color:'rgba(255,255,255,.8)'},
              axisLine:{lineStyle:{color:'rgba(255,255,255,.3)'}},
              splitLine:{show:false}
            }
          ],
          series: [
            {
            name: vm.chartsTitle.left,
            type: 'bar',
            color:"#6ee988",
            data: d1,//[100,200,33,56,188,123,143,23,99],//res.zcz
            itemStyle: {
              color: {
                type: 'linear', x: 0, y: 0, x2: 0, y2: 1,
                colorStops: [{
                  offset: 0, color: '#6ee988' // 0% 处的颜色
                }, {
                  offset: 1, color: '#6ee988' // 100% 处的颜色
                }]
              }
            }
          },
            {
              name: vm.chartsTitle.left,
              type: 'bar',
              color:"#16e1ff",
              data: d2,//[100,200,33,56,188,123,143,23,99],//res.zcz
              itemStyle: {
                color: {
                  type: 'linear', x: 0, y: 0, x2: 0, y2: 1,
                  colorStops: [{
                    offset: 0, color: '#16e1ff' // 0% 处的颜色
                  }, {
                    offset: 1, color: '#16e1ff' // 100% 处的颜色
                  }]
                }
              }
            },
            {
            name: vm.chartsTitle.right,
            type: 'line',
            yAxisIndex: 1,
            color:"#e0e63d",
            data: d3,//[10,20,30,44,77,55,66,22,100],//res.tb
            areaStyle: {
              color: {
                type: 'linear', x: 0, y: 0, x2: 0, y2: 1,
                colorStops: [{
                  offset: 0, color: '#e0e63d' // 0% 处的颜色
                }, {
                  offset: 1, color: 'rgba(255,255,255,0)' // 100% 处的颜色
                }]
              }
            }
          }]
        }
        myChart.setOption($.extend(true,op,vm.defaultOp));
        if(container == "gytz") {
          myChart.on('click', function (param) {
            let _start = "",_end = "";
            if(!vm.$Util.isEmpty(vm.timeFilter)){
              if(vm.timeFilter.length === 1){
                _start = vm.timeFilter[0];
              }else if(vm.timeFilter.length === 2){
                _start = vm.timeFilter[0];
                _end = vm.timeFilter[1];
              }
            }
            vm.$router.push({name: "gytz", params: {sDate: _start, eDate: _end}})
          })
        }
      },
      drawPie(container,data,legend){
        let vm = this
        let myChart = vm.$echarts.init(document.getElementById(container))
        let op = {
          tooltip: {
            trigger: 'item',
            formatter: "{a} <br/>{b}: {c} ({d}%)"
          },
          color:['#efca5a','#7dbbea','#dd798f','#6e89ed','#a8de74'],
          legend: {
            type: 'scroll',
            orient: 'vertical',

            x:"left",
            data:[],
            textStyle:{color:"rgba(255,255,255,.8)"}
          },
          series: [
            {
              name:'固定资产投资占比',
              type:'pie',
              radius:['30%', '55%'],
              minAngle: 30,
              center:['50%', '50%'],
              avoidLabelOverlap: false,
              label: {
                normal: {
                  formatter: '{b|{b}}{abg|}\n{hr|}\n {c}  {per|{d}%}  ',
                  /*backgroundColor: '#eee',
                  borderColor: '#aaa',*/
                  /*borderWidth: 1,
                  borderRadius: 4,*/
                  rich: {
                    hr: {borderColor: 'rgba(255,255,255,.3)',width: '100%',borderWidth: 0.5,height: 0},
                    b: {lineHeight: 22,align: 'center',fontSize:10},
                    per: {backgroundColor: '#334455',padding: [2, 4],borderRadius: 2}
                  }
                },
              },
              data:data
            }
          ]
        }
        myChart.setOption(op)
        /*myChart.on('click', function (param) {
          let _start = "",_end = "";
          if(!vm.$Util.isEmpty(vm.timeFilter)){
            if(vm.timeFilter.length === 1){
              _start = vm.timeFilter[0];
            }else if(vm.timeFilter.length === 2){
              _start = vm.timeFilter[0];
              _end = vm.timeFilter[1];
            }
          }
          vm.$router.push({name:"jjyx",params:{sDate:_start,eDate:_end,bk:'',industry:param.name}})
        })*/
      },
    }
  }
</script>
<style>
  .search-row-condition .el-date-editor .el-range-input{width:35%!important;}
  .jjyxyzt .more-data.more-select{right:50px;width:100px;position:absolute;background:rgba(22,225,255,.25);font-size: 10px;}
  .jjyxyzt .more-data.more-select .el-input--suffix .el-input__inner{border: none;background: rgba(7,182,255,0);padding: 0 13px 0 0;height: 20px;line-height: 20px;}
  .jjyxyzt .more-data.more-select .el-input__suffix{right:0px}
  .jjyxyzt .more-data.more-select.el-select .el-input .el-select__caret{width:13px!important;}
  .jjyxyzt .yzt-table{width:100%;height:calc(100% - 10px);text-align: left;margin: 10px auto 0;color: rgba(255,255,255,.8);}
  .jjyxyzt .yzt-table thead {background:rgba(22,225,255,.25);}
  .jjyxyzt .yzt-table thead tr th{padding: 3px;}
  .jjyxyzt .yzt-table tr td{border-bottom: 1px dotted rgba(255,255,255,.9);padding:5px 0px;}


</style>
<style scoped>

</style>