import React, { useState, useEffect, useRef, Component } from 'react' import { connect } from 'dva' import { initFilter, addRuleAndGroups, guid, extendInclude, extendRule, extendOrder, extend, initQueryFilter } from "../../../utils/common" import { Table, Row, Col, Button, Select, DatePicker, message } from 'antd'; import echarts from 'echarts'; import moment from 'moment' class BI008RiskAnalysis extends React.Component { constructor(props) { super(props); this.state = { pagination: {}, retData: [], totalUsers: 0, totalActiveUsers: 0, todayCount: 0, LEVEL1TOTAL: 0, LEVEL2TOTAL: 0, LEVEL3TOTAL: 0, LEVEL4TOTAL: 0, HAZARDTOTALCOUNT: 0, RISKTOTALCOUNT: 0, MEASURESTOTALCOUNT: 0 }; }; componentDidMount() { this.state.columns1 = [ { title: '部门', dataIndex: 'NAME', }, { title: '一级风险', dataIndex: 'LEVEL1', }, { title: '二级风险', dataIndex: 'LEVEL2', }, { title: '三级风险', dataIndex: 'LEVEL3', }, { title: '四级风险', dataIndex: 'LEVEL4', }, ] const json = initFilter(this.props.login.OrgId); this.getBaseInfoData(); }; //获取数据 getBaseInfoData = () => { const json2 = initFilter(this.props.login.OrgId) extendOrder(json2, "CREATE_TIME", 1); this.props.dispatch({ type: 'app/getDataByPost', url: 'BI/BIController/getRiskData', payload: json2, onlyData: false, onComplete: (ret) => { if (ret) { this.state.retData = ret?.Data.RISKLEVELCOUNTS; let level1all = 0; let level2all = 0; let level3all = 0; let level4all = 0; for (let i = 0; i < ret.Data.RISKLEVELCOUNTS.length; i++) { level1all += ret.Data.RISKLEVELCOUNTS[i].LEVEL1; level2all += ret.Data.RISKLEVELCOUNTS[i].LEVEL2; level3all += ret.Data.RISKLEVELCOUNTS[i].LEVEL3; level4all += ret.Data.RISKLEVELCOUNTS[i].LEVEL4; } this.state.LEVEL1TOTAL = level1all; this.state.LEVEL2TOTAL = level2all; this.state.LEVEL3TOTAL = level3all; this.state.LEVEL4TOTAL = level4all; this.state.HAZARDTOTALCOUNT = ret.Data.HAZARDTOTALCOUNT; this.state.RISKTOTALCOUNT = ret.Data.RISKTOTALCOUNT; this.state.MEASURESTOTALCOUNT = ret.Data.MEASURESTOTALCOUNT; } this.chart1(); this.chart2(ret?.Data.AREACOUNTS.filter(t => t.AREATYPE == 0).slice(0, 10)); this.chart3(ret?.Data.AREACOUNTS.filter(t => t.AREATYPE == 1).slice(0, 10)); this.chart4(ret?.Data.DATECOUNTS); } }) }; chart1 = () => { let chart1s = document.getElementById('chart1'); let myChart = echarts.init(chart1s); myChart.setOption( { grid: { top: '2%', left: '1%', right: '1%', }, title: { text: "风险分级占比", left: 'center', top: "2%" }, tooltip: { trigger: 'item' }, legend: { bottom: '2%' }, series: [ { type: 'pie', radius: ['40%', '70%'], avoidLabelOverlap: false, label: { show: false, position: 'center' }, labelLine: { show: false }, data: [ { value: this.state.LEVEL1TOTAL, name: '一级风险' }, { value: this.state.LEVEL2TOTAL, name: '二级风险' }, { value: this.state.LEVEL3TOTAL, name: '三级风险' }, { value: this.state.LEVEL4TOTAL, name: '四级风险' }, ], itemStyle: { normal: { color: function (colors) { var colorList = [ "red","orange","yellow","blue" ]; return colorList [colors.dataIndex]; } }, } } ] } ); } chart2 = (data) => { let areaName = []; let areaCount = []; data.forEach(item => { areaName.push(item.AREANAME); areaCount.push(item.AREACOUNT); }) let chart2s = document.getElementById('chart2'); if (chart2s) { let myChart = echarts.init(chart2s); myChart.setOption({ title: { text: "矿山-风险区域统计TOP10", left: 'center', top: "2%" }, tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' }, }, grid: { left: '3%', right: '4%', top: '10%', bottom: '1%', containLabel: true }, xAxis: { type: 'value', splitLine: { show: false, lineStyle: { color: '#172749' } }, axisLine: { show: false }, axisTick: { show: false }, axisLabel: { show: true, interval: 0, formatter: '{value}', // 给每个数值添加% }, }, yAxis: { type: 'category', axisTick: { show: false }, axisLine: { show: false }, splitLine: { show: false, lineStyle: { color: '#172749' } }, data: areaName, }, series: [ { name: '数量', type: 'bar', label: { show: true, position: 'insideRight', color: '#fff', formatter: '{c}', fontSize: '12' }, itemStyle: { color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [ { offset: 0, color: "#01AEF6" }, { offset: 1, color: "#9999FF" }, ]), }, data: areaCount, show: false }, ], }); } } chart3 = (data) => { let areaName = []; let areaCount = []; data.forEach(item => { areaName.push(item.AREANAME); areaCount.push(item.AREACOUNT); }) let chart3s = document.getElementById('chart3'); if (chart3s) { let myChart = echarts.init(chart3s); myChart.setOption({ title: { text: "选矿-风险区域统计TOP10", left: 'center', top: "2%" }, tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' }, }, grid: { left: '3%', right: '4%', top: '10%', bottom: '1%', containLabel: true }, xAxis: { type: 'value', splitLine: { show: false, lineStyle: { color: '#172749' } }, axisLine: { show: false }, axisTick: { show: false }, axisLabel: { show: true, interval: 0, formatter: '{value}', // 给每个数值添加% }, }, yAxis: { type: 'category', axisTick: { show: false }, axisLine: { show: false }, splitLine: { show: false, lineStyle: { color: '#172749' } }, data: areaName, }, series: [ { name: '数量', type: 'bar', label: { show: true, position: 'insideRight', color: '#fff', formatter: '{c}', fontSize: '12' }, itemStyle: { color: new echarts.graphic.LinearGradient(0, 0, 1, 0, [ { offset: 0, color: "#01AEF6" }, { offset: 1, color: "#9999FF" }, ]), }, data: areaCount, show: false }, ], }); } } chart4 = (data) => { let riskArr = []; let hazardArr = []; let dates = []; for (let i = 0; i < data.length; i++) { if (data[i].TYPE == 0) { riskArr.push(data[i].COUNT); dates.push(moment(data[i].DATE).format('YYYY/MM')) } else { hazardArr.push(data[i].COUNT); } } let currMonth=dates.length; for (let i = 1; i < (13 - currMonth); i++) { dates.push(moment(dates[dates.length]).add(i, 'months').format('YYYY/MM')) } let chart4s = document.getElementById('chart4'); if (chart4s) { let myChart = echarts.init(chart4s); myChart.setOption({ grid: { left: '5%', right: '5%', }, legend: { bottom: '0px' }, title: { text: "月度风险辨识统计走势", left: 'center', top: "2%" }, tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' }, }, xAxis: { type: 'category', data: dates, axisLabel: { showMaxLabel: true } }, yAxis: { type: 'value', }, series: [ { name: '危险源/风险库', data: riskArr, type: 'line', }, { name: '职业危害库', data: hazardArr, type: 'line', } ] }); } } render() { return (

风险管理统计分析




) } } export default connect(({ login, app }) => ({ login, app }))(BI008RiskAnalysis)