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' const { Option } = Select; class TrainSafeAnalysis extends React.Component { constructor(props) { super(props); this.state = { pagination: {}, retData: [], totalUsers: 0, totalActiveUsers: 0, selectUser: "", selectDepartment: "", dates: [], recordNums: [], todayCount: 0, NUM1: 0, NUM2: 0, NUM3: 0, NUM4: 0, NUM5: 0, NUM6: 0, NUM7: 0, searchMonth: moment().format('YYYY-MM'), showLoading: false }; }; componentDidMount() { this.state.columns1 = [ { title: '序号', render: (text, record, index) => `${index + 1}` }, { title: '课程名称', dataIndex: 'NAME', }, { title: '培训起止时间', dataIndex: 'TIMERANGE', }, { title: '应参训人数', dataIndex: 'SHOULD_TRAINER', }, { title: '实际参训人数', dataIndex: 'ACTUAL_TRAINER', }, { title: '参训率', render: (text, record) => ({((record.ACTUAL_TRAINER / record.SHOULD_TRAINER) * 100).toFixed(0) + "%"}), }, { title: '考核方式', dataIndex: 'METHOD', }, { title: '通过率', dataIndex: 'PASS_RATE', render: (text, record) => ({(record.PASS_RATE * 100).toFixed(0) + "%"}), }, { title: '效果评估(优良率)', dataIndex: 'EFFORT_RATE', render: (text, record) => ({(record.EFFORT_RATE*1).toFixed(0) + "%"}), }, ] this.loadData(this.state.searchMonth); }; loadData = (startTime) => { const json = initFilter(this.props.login.OrgId); this.state.showLoading = true; json.Parameter1 = startTime; this.props.dispatch({ type: 'app/getDataByPost', url: 'BI/BIController/getSafeTrainData', payload: json, onlyData: false, onComplete: (ret) => { if (ret) { this.state.showLoading = false; this.state.NUM1 = ret.Data.NUM1; this.state.NUM2 = ret.Data.NUM2; this.state.NUM3 = ret.Data.NUM3; this.state.NUM4 = ret.Data.NUM4; this.state.NUM5 = ret.Data.NUM5; this.state.NUM6 = ret.Data.NUM6; this.state.NUM7 = ret.Data.NUM7; this.state.retData = ret.Data.trainRecords; this.chart1(ret.Data.dateCountModel); } } }) } chart1 = (ret) => { this.state.recordNums = []; this.state.dates = []; for (let i = 0; i < ret.length; i++) { this.state.recordNums.push(ret[i].COUNT); this.state.dates.push(moment(ret[i].DATE).format('YYYY-MM')); } let chart1s = document.getElementById('chart1'); if (chart1s) { let myChart = echarts.init(chart1s); myChart.on('click', (params) => { this.loadData(params.name); }); myChart.setOption({ grid: { left: '5%', right: '5%', }, legend: { bottom: '0px' }, title: { text: "月度培训完成走势图", left: 'center' }, tooltip: { trigger: 'axis', axisPointer: { type: 'shadow' }, }, xAxis: { type: 'category', data: this.state.dates, axisLabel: { showMaxLabel: true } }, yAxis: { type: 'value', }, series: [ { name: '培训记录数', data: this.state.recordNums, type: 'line', }, ] }); } } onChange = (type, value) => { this.setState({ [type]: value }) } paginationConfig = { pageSizeOptions: ['10', '20', '50'], pageSize: 20, showSizeChanger: true, size: 'small', } render() { return (

安全教育与培训统计分析

{/* */} {/* */} {/* */} {/* */}


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