209 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			209 lines
		
	
	
		
			7.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 
								 | 
							
								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";
							 | 
						||
| 
								 | 
							
								import IconFont from "../../../utils/iconFont";
							 | 
						||
| 
								 | 
							
								import { T } from "antd/lib/upload/utils";
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 年度安全检查统计 弹窗 年度安全检查统计  按月 按生产单元
							 | 
						||
| 
								 | 
							
								class BI056Dilg3_2 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: "",
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								      Data: {
							 | 
						||
| 
								 | 
							
								        axisLabelMonth: ["1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月"],
							 | 
						||
| 
								 | 
							
								        checkTypeInfo: {
							 | 
						||
| 
								 | 
							
								          mineTypeName: ["露天矿", "选矿厂", "尾矿库", "职能部门"],
							 | 
						||
| 
								 | 
							
								          listLegendName: [
							 | 
						||
| 
								 | 
							
								            ['巡回检查', '例行检查', '专业检查', '综合检查', '重大事故隐患专项排查'],
							 | 
						||
| 
								 | 
							
								            ['巡回检查', '例行检查', '专业检查', '综合检查'],
							 | 
						||
| 
								 | 
							
								            ['日常巡检', '防洪安全检查', '坝体安全检查', '库区安全检查', '重大事故隐患专项排查'],
							 | 
						||
| 
								 | 
							
								            ['巡回检查', '例行检查', '专业检查', '综合检查', '重大事故隐患专项排查']
							 | 
						||
| 
								 | 
							
								          ],
							 | 
						||
| 
								 | 
							
								          //每个生产单元  每种检查类型 1-12 月数量
							 | 
						||
| 
								 | 
							
								          checkTypeCount1: [[2, 3, 3, 5, 3, 2, 6, 2, 1, 0, 1, 2], [1, 2, 3, 3, 2, 4, 5, 3, 1, 0, 9, 8], [1, 2, 3, 4, 5, 3, 2, 4, 1, 1, 4, 0], [2, 1, 1, 0, 0, 3, 3, 2, 2, 0, 0, 1], [1, 1, 1, 3, 3, 1, 3, 1, 2, 2, 3, 4]],
							 | 
						||
| 
								 | 
							
								          checkTypeCount2: [[2, 3, 6, 6, 3, 2, 6, 3, 8, 0, 1, 2], [1, 2, 7, 3, 5, 4, 5, 4, 1, 4, 9, 2], [1, 2, 8, 4, 5, 3, 2, 4, 3, 4, 0, 6], [2, 3, 1, 0, 3, 3, 3, 6, 3, 4, 6, 1]],
							 | 
						||
| 
								 | 
							
								          checkTypeCount3: [[0, 0, 3, 3, 5, 5, 7, 7, 3, 4, 7, 1], [5, 7, 0, 0, 1, 1, 2, 1, 4, 0, 3, 6], [2, 2, 5, 7, 4, 0, 0, 4, 4, 0, 0, 4], [1, 5, 4, 2, 4, 0, 2, 0, 4, 0, 0, 4], [1, 1, 1, 0, 1, 0, 0, 5, 0, 0, 1, 0]],
							 | 
						||
| 
								 | 
							
								          checkTypeCount4: [[4, 2, 2, 5, 4, 0, 2, 5, 0, 2, 4, 4], [4, 0, 4, 0, 0, 4, 0, 0, 4, 0, 4, 0], [1, 0, 3, 0, 1, 3, 0, 7, 2, 0, 3, 0], [1, 0, 3, 1, 1, 3, 3, 3, 2, 0, 3, 0], [1, 0, 3, 0, 1, 3, 0, 2, 2, 1, 0, 2]],
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  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.this.state.CheckCount(ret?.Data.checkMineType, "divCheckCount1");
							 | 
						||
| 
								 | 
							
								      },
							 | 
						||
| 
								 | 
							
								    });
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  getBaseInfoData = (mineType) => {
							 | 
						||
| 
								 | 
							
								    this.CheckCount(this.state.Data, "div1", 1);
							 | 
						||
| 
								 | 
							
								    this.CheckCount(this.state.Data, "div2", 2);
							 | 
						||
| 
								 | 
							
								    this.CheckCount(this.state.Data, "div3", 3);
							 | 
						||
| 
								 | 
							
								    this.CheckCount(this.state.Data, "div4", 4);
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  // index 从1开始
							 | 
						||
| 
								 | 
							
								  CheckCount = (Data, divId, index) => {
							 | 
						||
| 
								 | 
							
								    let divShow = document.getElementById(divId);
							 | 
						||
| 
								 | 
							
								    if (divShow) {
							 | 
						||
| 
								 | 
							
								      let myChart = echarts.init(divShow);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      const labelOption = {
							 | 
						||
| 
								 | 
							
								        show: true,
							 | 
						||
| 
								 | 
							
								        position: 'top',
							 | 
						||
| 
								 | 
							
								        formatter: '{c}',
							 | 
						||
| 
								 | 
							
								        textStyle: {
							 | 
						||
| 
								 | 
							
								          fontSize: 12, // 字体大小
							 | 
						||
| 
								 | 
							
								          color: '#333', // 字体颜色
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								      };
							 | 
						||
| 
								 | 
							
								      var title = Data.checkTypeInfo.mineTypeName[index - 1]
							 | 
						||
| 
								 | 
							
								      var month = (new Date()).getMonth() + 1//取当前月
							 | 
						||
| 
								 | 
							
								      // checkTypeInfo.mineTypeName[]  mineTypeName: ["露天矿", "选矿厂", "尾矿库", "职能部门"],
							 | 
						||
| 
								 | 
							
								      var dataList = []
							 | 
						||
| 
								 | 
							
								      switch (index) {
							 | 
						||
| 
								 | 
							
								        case 1: dataList = Data.checkTypeInfo.checkTypeCount1
							 | 
						||
| 
								 | 
							
								          break;
							 | 
						||
| 
								 | 
							
								        case 2: dataList = Data.checkTypeInfo.checkTypeCount2
							 | 
						||
| 
								 | 
							
								          break;
							 | 
						||
| 
								 | 
							
								        case 3: dataList = Data.checkTypeInfo.checkTypeCount3
							 | 
						||
| 
								 | 
							
								          break;
							 | 
						||
| 
								 | 
							
								        case 4: dataList = Data.checkTypeInfo.checkTypeCount4
							 | 
						||
| 
								 | 
							
								          break;
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      var LegendName = Data.checkTypeInfo.listLegendName[index - 1]
							 | 
						||
| 
								 | 
							
								      var seriesShow = []
							 | 
						||
| 
								 | 
							
								      for (let i = 0; i < LegendName.length; i++) {
							 | 
						||
| 
								 | 
							
								        debugger
							 | 
						||
| 
								 | 
							
								        seriesShow.push({
							 | 
						||
| 
								 | 
							
								          name: LegendName[i],
							 | 
						||
| 
								 | 
							
								          barWidth: this.state.barWidth,
							 | 
						||
| 
								 | 
							
								          type: 'bar',
							 | 
						||
| 
								 | 
							
								          barGap: 0,
							 | 
						||
| 
								 | 
							
								          label: labelOption,
							 | 
						||
| 
								 | 
							
								          emphasis: {
							 | 
						||
| 
								 | 
							
								            focus: 'series'
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          data: dataList[i],//.slice(0, month),
							 | 
						||
| 
								 | 
							
								          itemStyle: { color: this.state.ColorShow[i] },
							 | 
						||
| 
								 | 
							
								        })
							 | 
						||
| 
								 | 
							
								      }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								      myChart.setOption(
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								          // 检查类型次数统计
							 | 
						||
| 
								 | 
							
								          title: {
							 | 
						||
| 
								 | 
							
								            text: title,
							 | 
						||
| 
								 | 
							
								            left: "center",
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          tooltip: {
							 | 
						||
| 
								 | 
							
								            trigger: 'axis',
							 | 
						||
| 
								 | 
							
								            axisPointer: {
							 | 
						||
| 
								 | 
							
								              type: 'shadow'
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          legend: {
							 | 
						||
| 
								 | 
							
								            left: "center",
							 | 
						||
| 
								 | 
							
								            align: "left",
							 | 
						||
| 
								 | 
							
								            bottom: "2%",
							 | 
						||
| 
								 | 
							
								            textStyle: {
							 | 
						||
| 
								 | 
							
								              color: "#000",
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								            itemWidth: 10,
							 | 
						||
| 
								 | 
							
								            itemHeight: 10,
							 | 
						||
| 
								 | 
							
								            data: Data.legendName
							 | 
						||
| 
								 | 
							
								          },
							 | 
						||
| 
								 | 
							
								          xAxis: [
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								              type: 'category',
							 | 
						||
| 
								 | 
							
								              axisTick: { show: false },
							 | 
						||
| 
								 | 
							
								              data: Data.axisLabelMonth,
							 | 
						||
| 
								 | 
							
								              axisLine: {
							 | 
						||
| 
								 | 
							
								                lineStyle: {
							 | 
						||
| 
								 | 
							
								                  color: "#0c3b71",
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								              },
							 | 
						||
| 
								 | 
							
								              axisLabel: {
							 | 
						||
| 
								 | 
							
								                show: true,
							 | 
						||
| 
								 | 
							
								                color: "rgb(170,170,170)",
							 | 
						||
| 
								 | 
							
								                interval: 0,
							 | 
						||
| 
								 | 
							
								                textStyle: {
							 | 
						||
| 
								 | 
							
								                  lineHeight: 14,
							 | 
						||
| 
								 | 
							
								                },
							 | 
						||
| 
								 | 
							
								              },
							 | 
						||
| 
								 | 
							
								            },
							 | 
						||
| 
								 | 
							
								          ],
							 | 
						||
| 
								 | 
							
								          yAxis: [
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								              type: 'value'
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								          ],
							 | 
						||
| 
								 | 
							
								          series: seriesShow
							 | 
						||
| 
								 | 
							
								        },
							 | 
						||
| 
								 | 
							
								        true
							 | 
						||
| 
								 | 
							
								      );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								  };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								  render() {
							 | 
						||
| 
								 | 
							
								    return (
							 | 
						||
| 
								 | 
							
								      <div style={{ backgroundColor: "#fff", top: "0", bottom: "0", left: "0", right: "0", margin: "auto" }}  >
							 | 
						||
| 
								 | 
							
								        <Row gutter={12} style={{ marginTop: "5px", textAlign: "center" }}>
							 | 
						||
| 
								 | 
							
								          <Col span={1} > </Col>
							 | 
						||
| 
								 | 
							
								          <Col span={11} style={{ padding: 0 }}>
							 | 
						||
| 
								 | 
							
								            <div id="div1" className="risk-model-col" style={{ width: "100%", height: "330px" }}></div>
							 | 
						||
| 
								 | 
							
								          </Col>
							 | 
						||
| 
								 | 
							
								          <Col span={1} > </Col>
							 | 
						||
| 
								 | 
							
								          <Col span={11} style={{ padding: 0 }}>
							 | 
						||
| 
								 | 
							
								            <div id="div2" className="risk-model-col" style={{ width: "100%", height: "330px" }}></div>
							 | 
						||
| 
								 | 
							
								          </Col>
							 | 
						||
| 
								 | 
							
								        </Row>
							 | 
						||
| 
								 | 
							
								        <Row gutter={12} style={{ marginTop: "30px", textAlign: "center" }}>
							 | 
						||
| 
								 | 
							
								          <Col span={1} > </Col>
							 | 
						||
| 
								 | 
							
								          <Col span={11} style={{ padding: 0 }}>
							 | 
						||
| 
								 | 
							
								            <div id="div3" className="risk-model-col" style={{ width: "100%", height: "330px" }}></div>
							 | 
						||
| 
								 | 
							
								          </Col>
							 | 
						||
| 
								 | 
							
								          <Col span={1} > </Col>
							 | 
						||
| 
								 | 
							
								          <Col span={11} style={{ padding: 0 }}>
							 | 
						||
| 
								 | 
							
								            <div id="div4" className="risk-model-col" style={{ width: "100%", height: "330px" }}></div>
							 | 
						||
| 
								 | 
							
								          </Col>
							 | 
						||
| 
								 | 
							
								        </Row>
							 | 
						||
| 
								 | 
							
								        <br />
							 | 
						||
| 
								 | 
							
								      </div>
							 | 
						||
| 
								 | 
							
								    );
							 | 
						||
| 
								 | 
							
								  }
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								export default connect(({ login, app }) => ({ login, app }))(BI056Dilg3_2);
							 |