智慧园区前端大屏
shuishen
2024-12-02 b67f46b4a768b4cd72d4e463c5dffefe977ddeb7
src/views/survey/components/box/fireContent.vue
@@ -1,25 +1,142 @@
<!--
 * @Author: shuishen 1109946754@qq.com
 * @Date: 2023-03-13 14:54:26
 * @Date: 2024-11-04 16:32:04
 * @LastEditors: shuishen 1109946754@qq.com
 * @LastEditTime: 2023-03-13 15:00:55
 * @FilePath: \forest-fire\src\views\statistics\components\box\dataContent.vue
 * @Description:
 *
 * Copyright (c) 2023 by ${git_name_email}, All Rights Reserved.
 * @LastEditTime: 2024-11-27 15:37:28
 * @FilePath: \bigScreen\src\views\survey\components\box\fireContent.vue
 * @Description:
 *
 * Copyright (c) 2024 by shuishen, All Rights Reserved.
-->
<script setup>
import publicContent from './publicContent.vue'
import { useEchartsResize } from 'hooks/useEchartsResize'
import { getRiskSourceStatistic } from '../../../../api/indParkInfo'
let $echarts = inject('echarts')
const curEcharts = ref(null)
let myEcharts = reactive({
  chart: ''
})
let typeLevel = [
  {
    name: '低',
    itemStyle: {
      color: '#31B5FF'
    }
  },
  {
    name: '一般',
    itemStyle: {
      color: '#FFC000'
    }
  },
  {
    name: '较大',
    itemStyle: {
      color: '#F4090F'
    }
  },
  {
    name: '重大',
    itemStyle: {
      color: '#FE0000'
    }
  }
]
function getRiskSource() {
  getRiskSourceStatistic().then(res => {
    let data = res.data.data
    let dataRsult = []
    var total = 0
    data.forEach(item => {
      dataRsult.push({
        name: item.riskLevel,
        value: item.num,
        itemStyle: typeLevel.find(i => i.name == item.riskLevel).itemStyle
      })
      total = total + item.num
    })
    myEcharts.chart.setOption({
      title: {
        text: "总数",
        subtext: String(total),
        textStyle: {
          fontSize: 16,
          color: "#fff",
          lineHeight: 20,
        },
        subtextStyle: {
          fontSize: 28,
          color: "#fff",
        },
        textAlign: "center",
        left: "62%",
        // right: "43%",
        top: "36%",
      },
      legend: {
        orient: "vertical",
        top: "40%",
        left: "5%",
        textStyle: {
          color: "#fff",
        },
      },
      grid: {
        top: '6%',
        left: '6%',
        right: '6%',
        bottom: '6%',
        containLabel: true
      },
      tooltip: {
        trigger: 'item'
      },
      series: [
        {
          // name: 'Access From',
          type: 'pie',
          left: '-5%',
          radius: ['45%', '75%'],
          data: dataRsult,
          left: "25%",
          label: {
            show: false,
          },
          labelLine: {
            show: false,
          },
        }
      ]
    })
  })
}
nextTick(() => {
  myEcharts.chart = $echarts.init(curEcharts.value)
  getRiskSource()
})
const echartsResize = () => {
  myEcharts.chart && myEcharts.chart.resize()
}
useEchartsResize(echartsResize)
</script>
<template>
    <public-content>
        <template #content>
            <div>
  <div class="w100 h100" ref="curEcharts">
            </div>
        </template>
    </public-content>
  </div>
</template>
<style lang="scss" scoped></style>
<style lang="scss" scoped></style>