import React, { useState, useEffect, useRef, Component } from "react"; import { connect } from "dva"; import { initFilter, extendOrder, guid } from "../../../utils/common"; import { Row, Col, Modal, Table, Button, Select, DatePicker, message } from "antd"; import echarts from "echarts"; import moment from "moment"; // 年度安全检查统计 弹窗 年度安全检查统计 按月 按生产单元 class BI056Dilg2_1 extends React.Component { constructor(props) { super(props); this.state = { ColorShow: ["#c02e30", "#f7aa52", "#fbe06a", "#5185f3", "#EF9494", "#51b5f3"], barWidth: this.props.barWidth, isShow1: false, isShow2: false, dtStart: null,//开始时间 dtEnd: null,//结束时间 mineType: 0,//生产单元 detailForm: { formCode: "", title: "", }, ret: { IsSuccessful: true, Data: { legendName: ['已整改', '未整改', '整改率'], titleMineType: ["露天矿", "选矿厂", "尾矿库", "职能部门"], xAxisName: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"], countDeal: [[5, 10, 8, 5, 12, 15, 10, 9, 8, 10, 11, 6], [7, 10, 8, 5, 12, 15, 10, 9, 8, 10, 11, 6], [13, 10, 8, 5, 12, 15, 10, 9, 8, 10, 11, 6], [15, 10, 8, 5, 12, 15, 10, 9, 8, 10, 11, 6]], countNotDeal: [[1, 1, 1, 2, 3, 2, 0, 1, 3, 3, 3, 2], [2, 1, 1, 2, 3, 2, 0, 1, 3, 3, 3, 2], [3, 1, 1, 2, 3, 2, 0, 1, 3, 3, 3, 2], [4, 1, 1, 2, 3, 2, 0, 1, 3, 3, 3, 2]], linePercent: [[100.00, 90.00, 87.5, 60.00, 75.00, 86.67, 100.00, 88.89, 62.50, 70.00, 72.73, 66.67], [70.00, 90.00, 87.5, 60.00, 75.00, 86.67, 100.00, 88.89, 62.50, 70.00, 72.73, 66.67], [80.00, 90.00, 87.5, 60.00, 75.00, 86.67, 100.00, 88.89, 62.50, 70.00, 72.73, 90], [90.00, 90.00, 87.5, 60.00, 75.00, 86.67, 100.00, 88.89, 62.50, 70.00, 72.73, 80]], } } } } componenthidMount() { this.getBaseInfoData(); } componentDidMount() { this.getBaseInfoData(); } //获取数据 getBaseInfoDataOnline = (mineType) => { const json2 = initFilter(this.props.login.OrgId); extendOrder(json2, "CREATE_TIME", 1); json2.Parameter1 = mineType; this.props.dispatch({ type: "app/getDataByPost", url: "BI/BIController/getRiskPerformanceData", payload: json2, onlyData: false, onComplete: (ret) => { this.CheckCount(this.state.ret.Data) }, }); }; getBaseInfoData = (mineType) => { this.RiskDeal(this.state.ret.Data, 1) this.RiskDeal(this.state.ret.Data, 2) this.RiskDeal(this.state.ret.Data, 3) this.RiskDeal(this.state.ret.Data, 4) }; RiskDeal = (Data, index) => { let divID = document.getElementById("div" + index) if (divID) { let myChart = echarts.init(divID); var listseries = [] var title = Data.titleMineType[index - 1] + "隐患整改情况" for (let i = 0; i < Data.legendName.length; i++) { if (i < 2) { listseries.push({ name: Data.legendName[i], type: "bar", stack: "总量", label: { show: true, position: "insideRight", }, data: i == 0 ? Data.countDeal[index - 1] : (i == 1 ? Data.countNotDeal[index - 1] : Data.linePercent[index - 1]), itemStyle: { color: this.state.ColorShow[i] }, barWidth: 30,// this.state.barWidth }) } else { listseries.push( { name: Data.legendName[i], type: "line", label: { show: true, position: "top", formatter: "{c}%" }, lineStyle: { color: "#ffb122" }, data: Data.linePercent[index - 1], itemStyle: { color: this.state.ColorShow[i] }, yAxisIndex: 1 }) } } myChart.setOption( { title: { text: title, left: "center", }, tooltip: { trigger: "axis", axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: "shadow", // 默认为直线,可选为:'line' | 'shadow' }, formatter: function (value) { var tooltipShow = '' if (value.length > 0) { tooltipShow += value[0].axisValueLabel + '
' for (var i = 0; i < value.length; i++) { if (value[i].componentSubType == "bar") { tooltipShow += value[i].marker + value[i].seriesName + ":" + value[i].value + "
" } else { tooltipShow += value[i].marker + value[i].seriesName + ":" + value[i].value + "%" } } } return tooltipShow } }, legend: { left: "center", align: "left", bottom: "2%", textStyle: { color: "#000", }, itemWidth: 10, itemHeight: 10, data: Data.legendName, }, grid: { left: "3%", right: "3%", bottom: "12%", top: "10%", containLabel: true, }, xAxis: { type: "category", data: Data.xAxisName, axisLabel: { interval: 0, rotate: 20, formatter: function (value) { return value } } }, yAxis: [ { name: '整改情况', type: 'value', }, { name: "完成率(%)", type: "value", min: 0, max: 70, position: "middle",// "right", formatter: "{value}%", min: 0, max: 100, axisLabel: { // textStyle: { fontSize: 20 }, formatter: '{value} %', // 给坐标轴标签加单位 }, splitLine: { //网格线 show: false } } ], series: listseries }, true ); } }; CheckCount = (Data) => { let divRiskCount = document.getElementById("divRiskCount"); if (divRiskCount) { let myChart = echarts.init(divRiskCount); var listSeries = [] for (var i = 0; i < Data.legendName.length; i++) { listSeries.push({ name: Data.legendName[i], data: Data.checkrisk[i], type: "bar", itemStyle: { color: this.state.ColorShow[i] }, barWidth: this.state.barWidth,//横轴的柱状图宽度 label: { normal: { show: true, position: 'top', // 或者 'inside'(内部)、'insideLeft'、'insideRight' 等其他位置 formatter: '{c}', // 使用变量 {c} 表示数值,也可以自定义格式化函数 textStyle: { fontSize: 12, // 字体大小 color: '#333', // 字体颜色 }, }, }, }) } myChart.setOption( { tooltip: { trigger: "axis", axisPointer: { // 坐标轴指示器,坐标轴触发有效 type: "shadow", // 默认为直线,可选为:'line' | 'shadow' }, }, legend: { left: "center", align: "left", bottom: "2%", textStyle: { color: "#000", }, itemWidth: 10, itemHeight: 10, data: Data.legendName, }, grid: { left: "3%", right: "3%", bottom: "12%", top: "10%", containLabel: true, }, xAxis: [ { type: "category", data: Data.axisLabelMonth, }, ], yAxis: [ { type: "value", }, ], series: listSeries }, true ); } }; render() { return (
{/* 第一行 */}

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