Newer
Older
CloudBrainNew / src / views / cityGovern / index.vue
StephanieGitHub on 4 Feb 2021 11 KB first commit
<template>
  <panel-container>
    <modular-layout type="roundCorner">
      <panel-title-1>城市治理</panel-title-1>
      <div class="Modular_main">
        <div>
          <vue-scroll>
            <div class="row">
              <div class="col-40">
                <TitleThree title="地下管网" />
                <div id="traffic_govern_box" class="">
                  <EchartBar1Color
                    :id="traffic_govern.id"
                    :width="traffic_govern.width"
                    :height="traffic_govern.height"
                    :xAxisData="traffic_govern.xAxisData"
                    :seriesData="traffic_govern.seriesData"
                  />
                </div>
              </div>
              <div class="col-60 ">
                <TitleThree title="交通治理" />
                <div>
                  <div class="col-45">
                    <DataList :data="sscw" :title="['实时车位','数据']" >
                      <Corner2 slot="corner" />
                    </DataList>
                  </div>
                  <div class="col-55" id="traffic_govern_line_box">
                    <EchartLine
                      :id="traffic_govern_line.id"
                      :width="traffic_govern_line.width"
                      :height="traffic_govern_line.height"
                      :legend="traffic_govern_line.legend"
                      :xAxisData="traffic_govern_line.xAxisData"
                      :yAxisData="traffic_govern_line.yAxisData"
                    />
                  </div>
                </div>
              </div>
            </div>

            <div class="row">
              <!--问题事件总数-->
              <div class="col-40">
                <TitleThree title="问题事件总数" />
                <div class="Modular_left">
                  <div class="module-corner">
                    <EarthViews :data="wtsjzs" height="1rem" />
                    <Corner2 />
                  </div>
                </div>
              </div>
              <!--问题事件分析-->
              <div class="col-60">
                <TitleThree title="问题事件分析" />
                <div class="row-flex">
                  <div id="problem_analysis_box" class="col-60">
                    <EchartBar1
                      :id="problem_analysis.id"
                      :width="problem_analysis.width"
                      :height="problem_analysis.height"
                      :xAxisData="problem_analysis.xAxisData"
                      :seriesData="problem_analysis.seriesData"
                    />
                  </div>
                  <div class="col-40">
                    <DataList :data="hwss" class="Modular_right"  :title="['环卫设施','数据']" >
                      <corner3 slot="corner"/>
                    </DataList>
                  </div>
                </div>
              </div>
            </div>

            <div class="row">
              <!--案件状态分布-->
              <div class="col-40">
                <TitleThree title="案件状态分布" />
                <div class="Modular_left">
                  <div class="module-corner" id="case_status_box">
                    <EchartPieAnnular
                      :id="case_status.id"
                      :width="case_status.width"
                      :height="case_status.height"
                      :legend="case_status.legend"
                      :seriesData="case_status.seriesData"
                    />
                    <Corner2 />
                  </div>
                </div>
              </div>
              <!--近一周空气质量-->
              <div class="col-60">
                <TitleThree title="近一周空气质量" />
                <div id="air_quality_box" class="Modular_right">
                  <EchartLine
                    :id="air_quality.id"
                    :width="air_quality.width"
                    :height="air_quality.height"
                    :legend="air_quality.legend"
                    :xAxisData="air_quality.xAxisData"
                    :yAxisData="air_quality.yAxisData"
                  />
                </div>
              </div>
            </div>
          </vue-scroll>
        </div>
      </div>
    </modular-layout>
  </panel-container>
</template>

<script>
import {countSize} from '@/utils/utils'
import EarthViews from '@/components/earthViews/EarthViews'
import Corner2 from '@/components/Corner2'
import DataList from '@/components/board/DataList'
import EchartBar1Color from '@/components/echart/EchartBar1Color'
import EchartLine from '@/components/echart/EchartLine'
import EchartBar1 from '@/components/echart/EchartBar1'
import EchartPieAnnular from '@/components/echart/EchartPieAnnular'
import PanelContainer from '@/components/layout/panelContainer'
import ModularLayout from '@/components/layout/modularLayout'
import PanelTitle1 from '@/components/title/panelTitle1'
import Corner3 from '@/components/corner/Corner3'
export default {
  components: {
    Corner3,
    PanelTitle1,
    ModularLayout,
    PanelContainer,
    EarthViews,
    Corner2,
    DataList,
    EchartBar1Color,
    EchartLine,
    EchartBar1,
    EchartPieAnnular
  },
  data () {
    return {
      traffic_govern: {
        id: 'traffic_govern_id',
        width: 0,
        height: 0,
        xAxisData: ['给水', '雨污水', '燃气', '通讯', '排污', '其他'],
        seriesData: [10, 52, 200, 334, 390]
      },
      // 交通治理
      // traffic_govern:{
      //   id: 'traffic_govern_id',
      //   width: 0,
      //   height: 0,
      //   xAxisData: ['燃气管线报警','燃气管线报警','燃气管线报警','燃气管线报警','燃气管线报警','燃气管线报警'],
      //   legend: ['总数量','抢修次数','抢修率'],
      //   yAxisData: [
      //     [200, 34.9, 57, 23.2, 25.6, 76.7],
      //     [206, 200, 145, 126.4, 28.7, 70.7],
      //     [220, 266, 163, 295, 183, 302]
      //   ]
      // },
      traffic_govern_line: {
        id: 'traffic_govern_line_id',
        width: 0,
        height: 0,
        legend: ['近一周日均车位占用率', '近一周日均车位停车次数'],
        xAxisData: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
        yAxisData: [
          {name: '近一周日均车位占用率', data: [120, 252, 101, 134, 290, 230, 110], color: '58,55,194'},
          {name: '近一周日均车位停车次数', data: [120, 222, 191, 234, 250, 200, 310], color: '109,202,23'}
        ]
      },
      // 实时车位
      sscw: [
        { name: '车位总数', num: '250', unit: '(个)' },
        { name: '占用车位数', num: '80', unit: '(个)' },
        { name: '空闲车位数', num: '170', unit: '(个)' },
        { name: '占用率', num: '32%' }
      ],
      // 环卫设施
      hwss: [
        { name: '中转站', num: '15', unit: '(个)' },
        { name: '渣土车', num: '54', unit: '(个)' },
        { name: '洒水车', num: '37', unit: '(个)' },
        { name: '环卫工', num: '267', unit: '(个)' },
        { name: '消纳场', num: '22', unit: '(个)' },
        { name: '工地', num: '28', unit: '(个)' }
      ],
      // 问题事件总数
      wtsjzs: [
        { name: '事件总数', num: '457' },
        { name: '处理事件总数', num: '323' },
        { name: '处理率', num: '83%' }
      ],
      /* 问题事件分析 */
      problem_analysis: {
        id: 'problem_analysis',
        width: 0,
        height: 0,
        xAxisData: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
        seriesData: [320, 302, 301, 334, 390, 330, 320]
      },
      // 案件状态分布
      case_status: {
        id: 'case_status',
        width: 0,
        height: 0,
        legend: ['申报立案', '调查取证', '大队执行', '立案审核', '法制审批'],
        seriesData: [
          {value: 34, name: '申报立案'},
          {value: 25, name: '调查取证'},
          {value: 45, name: '大队执行'},
          {value: 14, name: '立案审核'},
          {value: 24, name: '法制审批'}
        ]
      },
      // 近一周空气质量
      air_quality: {
        id: 'air_quality_id',
        width: 0,
        height: 0,
        xAxisData: ['周一', '周二', '周三', '周四', '周五', '周六', '周日'],
        legend: ['PM2.5', 'NO2'],
        yAxisData: [
          {name: 'PM2.5', data: [ 855, 1278, 856, 865, 1290, 782, 1210 ], color: '255,45,85'},
          {name: 'NO2', data: [400, 632, 333, 554, 490, 530, 610], color: '255,204,0'}
        ]
      }
    }
  },
  created () {},
  mounted () {
    // 获取智慧官网-井盖开启次数
    this.getPipelineAlarm()
    // 地下管网echart
    this.callEchart('traffic_govern_box', this.traffic_govern, 1.85)
    // 交通治理echart
    this.callEchart('traffic_govern_line_box', this.traffic_govern_line, 1.7)
    // 问题事件分析echart
    this.callEchart('problem_analysis_box', this.problem_analysis, 1.5)
    // 案件状态分布echart
    this.callEchart('case_status_box', this.case_status, 1.7)
    // 近一周空气质量echart
    this.callEchart('air_quality_box', this.air_quality, 2.5)
  },
  methods: {
    // 获取智慧官网-井盖开启次数
    getPipelineAlarm () {
      let params = {
        appkey: '53a21bdd-626a-4b3b-9170-0c79498193e6',
        id: '155',
        flag: '97',
        format: 'json',
        param_dsid: '1086'
      }
      this.request({
        url: '/platformbigdata/modelservlet',
        method: 'get',
        params
      }).then(res => {
        if (res.ret_code == 200) {
          let xAxisData = []
          let seriesData = []
          res.data.forEach((item, index) => {
            if (index < 10) {
              xAxisData.push(item.SJ.slice(5, 10))
              seriesData.push(item.SL)
            } else {

            }
          })
          this.traffic_govern.xAxisData = xAxisData
          this.traffic_govern.seriesData = seriesData
          this.callEchart('traffic_govern_box', this.traffic_govern, 1.85)
        }
      })
    },
    callEchart (idBox, data, offset) {
      const _width = document.getElementById(idBox).clientWidth
      this.$set(data, 'width', _width)
      this.$set(data, 'height', _width / offset)
    }
  }
}

</script>

<style scoped>
.panel-container{
  width: 100%;
  height: 100%;
  overflow: auto;
}
/* 盒子 */
.row{
  width: 100%;
  overflow: hidden;
  margin: 0.07rem 0;
}
.row-flex{
  display:flex;
  justify-content:space-between;
}
.col-40{
  width: 38%;
  float: left;
}
.col-60{
  width: 62%;
  float: left;
}
.col-45{
  width: 45%;
  float: left;
}
.col-55{
  width: 55%;
  float: left;
}
/* 环卫设施-定制的四角 */
/*.corner-top{*/
  /*position: absolute;*/
  /*top: 0;*/
  /*left: 0;*/
  /*width: .1rem;*/
  /*height: .1rem;*/
  /*background: url("../../assets/images/module-horn2.png") no-repeat;*/
  /*background-size: 100% 100%;*/
/*}*/
/*.corner-bottom{*/
  /*position: absolute;*/
  /*bottom: 0;*/
  /*left: 0;*/
  /*width: 100%;*/
  /*height: 40%;*/
  /*background: url("../../assets/images/module-horn3.png") no-repeat;*/
  /*background-size: 100% 100%;*/
/*}*/
</style>
<style>
.page-cszl .dataListBox li{
  padding: .05rem .08rem !important;
}
</style>