import React from 'react'
import { connect } from 'dva'
import { initFilter, extendRule, extendOrder } from "../../../utils/common"
import { ChartPieShow, ChartBarShow } from "../../../utils/commonEcharsShow"
import { Table, Button,Input, Row, Col,Modal ,Icon,Progress} from 'antd';
import echarts from 'echarts';
import styles from '../HI/StepForm.css';
import moment from 'moment'
import { T } from 'antd/lib/upload/utils';
import FormPage from '../../FormPage'
class BI011FormRunAnalysis extends React.Component {
constructor(props) {
super(props);
this.state = {
visible: false,
loading:false,
noticeTitle: '',
tmpData: {},
tableKey: "1",
startTime: moment(new Date().setDate(1)).subtract(5,'months').format("YYYY-MM-DD"),
endTime:moment(new Date()).format("YYYY-MM-DD"),
timeType: 5,
totalCount:0,
finishCount:0,
overtimeCount:0,
unfinishCount:0,
dtotalCount:0,
dfinishCount:0,
dovertimeCount:0,
dunfinishCount:0,
inputText:this.props.login.user.NAME,
drate:'0%',
dnormalRate:'0%',
weekColor:'black',
monthColor:'orange',
threeMonthColor:'black',
sixMonthColor:'black',
yearColor:'black',
retData:[],
groupData:[],
detailData:[],
newData:[],
detailDataH:[],
displayHr:'none',
displaydetail:'none',
columns: [
{
width: "30px",
title: '月份',
dataIndex: 'MONTHStr',
key: 'MONTHStr',
// render: (text, record) => (
//
// this.showEditModal(record.DEPARTMENT_ID,record.DEPARTMENT_NAME)}>{record.DEPARTMENT_NAME}
//
// ),
},
{
width: "30px",
title: '任务数',
dataIndex: 'TOTAL_QTY',
key: 'TOTAL_QTY'
},{
width: "30px",
title: '完成率',
dataIndex: 'FINISH_RATE',
key: 'FINISH_RATE',
render: (text, record) => (
//
// this.showEditModal(record.DEPARTMENT_ID,record.DEPARTMENT_NAME)}>{record.DEPARTMENT_NAME}
//
),
},
{
width: "30px",
title: '及时完成率',
dataIndex: 'NORMAL_FINISH_RATE',
key: 'NORMAL_FINISH_RATE',
render: (text, record) => (
//
// this.showEditModal(record.DEPARTMENT_ID,record.DEPARTMENT_NAME)}>{record.DEPARTMENT_NAME}
//
),
}
],
detailColumns: [
// {
// width: "55px",
// title: '序号',
// dataIndex: 'NUM',
// key: 'NUM',
// },
{
width: "100px",
title: '模块名称',
dataIndex: 'MOUDLE_NAME',
key: 'MOUDLE_NAME',
// render: (text, record) => (
//
// this.showFormModal(record.MOUDLE_NAME)}>{record.MOUDLE_NAME}
//
// ),
},
{
width: "60px",
title: '总任务数',
dataIndex: 'TOTAL_QTY',
key: 'TOTAL_QTY'
},
{
width: "60px",
title: '正常已办',
dataIndex: 'FINISH_QTY',
key: 'FINISH_QTY'
},
{
width: "60px",
title: '超时已办',
dataIndex: 'OVER_FINISH_QTY',
key: 'OVER_FINISH_QTY'
},
{
width: "50px",
title: '未完成',
dataIndex: 'UNFINISH_QTY',
key: 'UNFINISH_QTY',
},
{
width: "50px",
title: '完成率',
dataIndex: 'FINISH_RATE',
key: 'FINISH_RATE',
},
{
width: "70px",
title: '及时完成率',
dataIndex: 'NORMAL_FINISH_RATE',
key: 'NORMAL_FINISH_RATE',
render: (text, record) => (
{record.NORMAL_FINISH_RATE}{"%"}
),
}
],
};
};
componentDidMount() {
this.loadData()
};
showEditModal = (departmentId, departmentName) => {
const newtmpData = {
data: {
id: departmentId, name: departmentName, onCancel: this.handleCancel, tableKey: this.state.tableKey,
homeReload: true
},
formCode: "BI007_RUNANALYSIS",
}
this.setState({
id: departmentId,
name: departmentName,
noticeTitle: departmentName+"安全生产标准化运行情况",
tmpData: newtmpData,
currActivatedMenu: ''
}, () => this.setState({
visible: true
}));
}
showFormModal=(mouldName)=>{
const newtmpData = {
data: {
name: mouldName, onCancel: this.handleCancel, tableKey: this.state.tableKey,
homeReload: true
},
formCode: "BI008_RUNANALYSIS",
}
this.setState({
name: mouldName,
noticeTitle: mouldName+"安全生产标准化运行情况",
tmpData: newtmpData,
currActivatedMenu: ''
}, () => this.setState({
visible: true
}));
}
// showEditModal = (dataId, formCode, TaskID, title, taskCode) => {
// const newtmpData = {
// data: {
// id: dataId, TaskID: TaskID, onCancel: this.handleCancel, taskCode: taskCode, tableKey: this.state.tableKey,
// homeReload: true
// },
// formCode: formCode,
// }
// this.setState({
// noticeTitle: title,
// taskCode: taskCode,
// tmpData: newtmpData,
// currActivatedMenu: ''
// }, () => this.setState({
// visible: true
// }));
// }
//加载数据赋值
loadData = () => {
// this.ksRun();
this.getMould(this.props.login.user.NAME);
// this.getDepartment();
}
//矿山
ksRun = (data) => {
// let data = {
// "IsSuccessful": true, "Data": [{ "DEPARTMENT_ID": "e3061909-1a7e-b60c-bc71-1845b79c4a11", "MONTH": "2021-08-01 00:00:00", "MONTHStr": "2023年1月", "C_COUNT": 90, "D_COUNT":80},
// {"DEPARTMENT_ID": "e3061909-1a7e-b60c-bc71-1845b79c4a11", "MONTH": "2021-09-01 00:00:00", "MONTHStr": "2023年2月", "C_COUNT": 70, "D_COUNT": 60},
// { "DEPARTMENT_ID": "e3061909-1a7e-b60c-bc71-1845b79c4a11", "MONTH": "2021-10-01 00:00:00", "MONTHStr": "2023年3月", "C_COUNT": 70, "D_COUNT": 60},
// { "DEPARTMENT_ID": "e3061909-1a7e-b60c-bc71-1845b79c4a11", "MONTH": "2021-11-01 00:00:00", "MONTHStr": "2023年4月", "C_COUNT": 70, "D_COUNT": 60},
// { "DEPARTMENT_ID": "e3061909-1a7e-b60c-bc71-1845b79c4a11", "MONTH": "2021-12-01 00:00:00", "MONTHStr": "2023年5月", "C_COUNT": 70, "D_COUNT": 60},
// {"DEPARTMENT_ID": "e3061909-1a7e-b60c-bc71-1845b79c4a11", "MONTH": "2021-09-01 00:00:00", "MONTHStr": "2023年6月", "C_COUNT": 70, "D_COUNT": 60},
// { "DEPARTMENT_ID": "e3061909-1a7e-b60c-bc71-1845b79c4a11", "MONTH": "2021-10-01 00:00:00", "MONTHStr": "2023年7月", "C_COUNT": 70, "D_COUNT": 60},
// { "DEPARTMENT_ID": "e3061909-1a7e-b60c-bc71-1845b79c4a11", "MONTH": "2021-11-01 00:00:00", "MONTHStr": "2023年8月", "C_COUNT": 70, "D_COUNT": 60},
// { "DEPARTMENT_ID": "e3061909-1a7e-b60c-bc71-1845b79c4a11", "MONTH": "2021-12-01 00:00:00", "MONTHStr": "2023年9月","C_COUNT": 70, "D_COUNT": 60},
// { "DEPARTMENT_ID": "e3061909-1a7e-b60c-bc71-1845b79c4a11", "MONTH": "2021-11-01 00:00:00", "MONTHStr": "2023年10月", "C_COUNT": 70, "D_COUNT": 60},
// { "DEPARTMENT_ID": "e3061909-1a7e-b60c-bc71-1845b79c4a11", "MONTH": "2021-12-01 00:00:00", "MONTHStr": "2023年11月", "C_COUNT": 70, "D_COUNT": 60 },
// { "DEPARTMENT_ID": "e3061909-1a7e-b60c-bc71-1845b79c4a11", "MONTH": "2022-01-01 00:00:00", "MONTHStr": "2023年12月", "C_COUNT": 70, "D_COUNT": 60 }], "TotalCount": 0, "ErrorMessage": null
// }
if (data) {
let month = [];
let company = [];
let department = [];
data.forEach(item => {
month.push(item.MONTHStr);
company.push(item.FINISH_RATE);
department.push(item.NORMAL_FINISH_RATE);
})
let myChart = echarts.init(document.getElementById('ksRun'));
myChart.setOption({
title: {
text: "任务及时完成率(近6个月)",
left: 'center',
top:'2%'
},
tooltip: {
trigger: 'axis',
formatter: function (params) {
let temp=''
params.forEach(t=>{
temp=temp+t.marker + t.seriesName +":"+t.value+"%"+'
';
})
return temp;
}
},
legend: {
// data: ['部门'],
data: ['完成率', '及时完成率'],
bottom: '5px'
},
grid: {
left: '3%',
right: '4%',
top: '12%',
containLabel: true
},
toolbox: {
feature: {
// saveAsImage: {}
}
},
xAxis: {
type: 'category',
boundaryGap: false,
data: month,
axisLine: {
show: false,
// lineStyle: {
// color: 'rgba(192, 192, 102)'
// }
},
axisTick: {
show: false
},
axisLabel: {
color: '#000',
rotate: 40,
formatter: function (value) { // 自定义文字超出部分 ...
if (value.length > 10) {
return `${value.slice(0, 10)}...`;
}
return value;
}
}
},
yAxis: {
axisLabel: {
formatter: function (val) {
return (val)+ '%';
}
},
},
series: [
{
name: '完成率',
type: 'line',
color: '#4b9bf3',
data: company,
smooth: true
},
{
name: '及时完成率',
type: 'line',
color: '#FCD149',
data: department,
smooth: true
},
]
})
}
}
getMould=(inputText)=>{
this.setState({loading:true
})
var orgId = this.props.login ? this.props.login.OrgId : '';
let json = initFilter(orgId,inputText,"","","",this.state.startTime,this.state.endTime);
this.props.dispatch({
type: 'app/getDataByPost',
payload: json,
url: 'BI/BIStatiscialAnalysisController/GetPersonAnalyze',
onComplete: (ret) => {
if (ret) {
this.setState({
retData:ret.groupData,
totalCount:ret.TotalCount,
finishCount:ret.doneCount,
overtimeCount:ret.timeOverCount,
unfinishCount:ret.unfinishCount,
dovertimeCount:ret.timeOverWaitCount,
loading:false
})
this.ksRun(ret.groupDataLine);
}
else
{
this.setState({
retData:[],
totalCount:0,
finishCount:0,
overtimeCount:0,
unfinishCount:0,
dovertimeCount:0,
loading:false
})
}
}
})
}
closeModal = () => { // 退出弹窗
this.clearData();
}
clearData = () => {
let newtmpData = { ...this.state.tmpData }
newtmpData["data"].id = '';
newtmpData["data"].homeReload = false;
newtmpData.formCode = '';
this.setState({
visible: false,
tmpData: newtmpData,
})
}
handleCancel = () => { // 退出弹窗
this.clearData();
}
handleSearch = (evt) => {
const { value } = evt.target
this.setState({ inputText: value ? value : this.props.login.user.NAME })
}
render() {
const { startTime, endTime,finishCount,overtimeCount,totalCount,unfinishCount,inputText,
weekColor,monthColor,threeMonthColor,sixMonthColor,yearColor,dovertimeCount
} = this.state;
let allFinishRate=(totalCount ===0||totalCount==undefined) ?0:((finishCount+overtimeCount)/totalCount * 100).toFixed(1);
let finishRate=(totalCount ===0||totalCount==undefined)?0:(finishCount/totalCount * 100).toFixed(1);
return