diff --git a/src/components/CustomPages/BI/BI030FormRunAnalysis.js b/src/components/CustomPages/BI/BI030FormRunAnalysis.js new file mode 100644 index 0000000..e8e0f11 --- /dev/null +++ b/src/components/CustomPages/BI/BI030FormRunAnalysis.js @@ -0,0 +1,345 @@ +import React, { useState, useEffect, useRef, Component } from 'react' +import { connect } from 'dva' +import { initFilter, addRuleAndGroups, guid, extendInclude, extendRule, extendOrder, extend } from "../../../utils/common" +import { Table, Row, Col, Button, Select,DatePicker ,Form,Spin,message,Modal} from 'antd'; +import echarts from 'echarts'; +import moment from 'moment' +import FormPage from '../../../components/FormPage' +import { IFComponent } from '@woowalker/feui'; +import DropDownPagination from '../../common/DropDownPaginationEx' +import XLSX from 'xlsx'; +const { Option } = Select; +class BI030FormRunAnalysis extends React.Component { + constructor(props) { + super(props); + this.state = { + startTime:moment(this.getDate(), 'YYYY-MM-DD 00:00:00'),//moment(new Date()).add(-1, "month").format('YYYY-MM-DD 00:00:00'), + endTime:moment(this.getEndDate(), 'YYYY-MM-DD 23:59:59'), + mouldSelect:'', + visible:false, + pagination: {}, + tmpData:[], + departData:[], + retData:[], + columns:[ + { + width: "100px", + title: '组织', + dataIndex: 'MOUDLE_NAME', + key: 'MOUDLE_NAME', + }, + { + width: "80px", + title: '总任务数', + dataIndex: 'TOTAL_QTY', + key: 'TOTAL_QTY', + render: (text, record) => ( + + this.showEditModal(record,'')}>{record.TOTAL_QTY} + + ), + }, + { + width: "80px", + title: '正常已办', + dataIndex: 'FINISH_QTY', + key: 'FINISH_QTY', + render: (text, record) => ( + + this.showEditModal(record,1)}>{record.FINISH_QTY} + + ), + }, + { + width: "80px", + title: '超时已办', + dataIndex: 'OVER_FINISH_QTY', + key: 'OVER_FINISH_QTY', + render: (text, record) => ( + + this.showEditModal(record,2)}>{record.OVER_FINISH_QTY} + + ), + }, + { + width: "80px", + title: '未完成', + dataIndex: 'UNFINISH_QTY', + key: 'UNFINISH_QTY', + render: (text, record) => ( + + this.showEditModal(record,0)}>{record.UNFINISH_QTY} + + ), + }, + { + width: "80px", + title: '完成率', + dataIndex: 'FINISH_RATE', + key: 'FINISH_RATE', + }, + { + width: "80px", + title: '及时完成率', + dataIndex: 'NORMAL_FINISH_RATE', + key: 'NORMAL_FINISH_RATE', + }, + { + width: "100px", + title: '质量分析(班前会)', + dataIndex: 'REMARK', + key: 'REMARK', + } + ] + }; + }; + handleCancel = () => { // 退出弹窗 + let newtmpData = { ...this.state.tmpData } + newtmpData["data"]= ''; + newtmpData.formCode = ''; + this.setState({ + visible:false, + tmpData: [],//newtmpData + }) + } + showEditModal = (record,temp) => { + + const newtmpData = { + data: { + MOUDLE_NAME: record.MOUDLE_NAME, + FORM_NAME: temp, + startTime:moment(this.state.startTime).format('YYYY-MM-DD HH:mm:ss'), + endTime:moment(this.state.endTime).format('YYYY-MM-DD HH:mm:ss'), onCancel: this.handleCancel, noticeTitle: "任务明细", + homeReload: true + }, + formCode: 'PF139', + } + this.setState({ + noticeTitle: "任务明细", + tmpData: newtmpData, + currActivatedMenu: '' + }, () => this.setState({ + visible: true + })); + } + + componentDidMount() { + this.getBaseInfoData(); + }; + //获取数据 + getBaseInfoData = () => { + let retDataTemp=[] + const{retData,startTime,endTime}=this.state + let time=startTime + if(startTime === null) + { + message.error('请选择开始时间'); + } + let time2=endTime + if(endTime === null) + { + message.error('请选择结束时间'); + } + + { + time=moment(startTime).format('YYYY-MM-DD HH:mm:ss') + time2=moment(endTime).format('YYYY-MM-DD HH:mm:ss') + const json = initFilter(this.props.login.OrgId,this.state.mouldSelect,'','','',time,time2,this.state.mouldSelect) + //extendOrder(json, "NUM", 0); + this.props.dispatch({ + type: 'app/getDataByPost', + url: 'BI/BIStatiscialAnalysisController/GetFormRunDay',//BI/FormRunAnalysis/OrderEntities + payload: json, + onlyData: false, + onComplete: (ret) => { + if(ret && ret.Data) + { + + this.setState({retData :ret.Data}) + } + } + }) + } + + }; + startChange=(value)=>{ + this.setState({ + startTime:value + }) + }; + endChange=(value)=>{ + this.setState({ + endTime:value + }) + }; + handleChange=(value)=>{ + this.setState({ + mouldSelect: value + }) + } + onSelectDepartment=(departData,record)=>{ + if (departData && departData.data && departData.data.length > 0) { + this.setState({ + departData: { + ...this.state.departData, + // DEPARTMENT_ID: departData.data[0], + Nav_Department: { NAME: departData.record.NAME } + }, + DEPARTMENT_ID: departData.data[0], + }) + } + else { + this.setState({ + departData: { + ...this.state.departData, + Nav_Department: { NAME: null }, + }, + DEPARTMENT_ID: null, + }) + }; + } + getDate=()=>{ + let date = new Date() + let y = date.getFullYear() + let m = date.getMonth() + 1 + let d = date.getDate(); + // 当前日期 + let nowDate = y + "-" + (m < 10 ? "0" + m : m) + "-" + (d < 10 ? "0" + d : d); + + let pastDate = moment(nowDate).add(-1, "day").format('YYYY-MM-DD 00:00:00') + return pastDate; +} +getEndDate=()=>{ + let date = new Date() + let y = date.getFullYear() + let m = date.getMonth() + 1 + let d = date.getDate(); + // 当前日期 + let nowDate = y + "-" + (m < 10 ? "0" + m : m) + "-" + (d < 10 ? "0" + d : d); + let pastDate = moment(nowDate).add(-1, "day").add(23,'hour').add(59,'m').add(59,'s')//format('YYYY-MM-DD 23:59:59') + return pastDate; +} + +onTableBtnExport() { + console.log(this.state.retData) + if (this.state.retData.length == 0) { + message.warning("没有数据无需导出!"); + return; + } + //excel的表头 + const tHeader = ["模块","总任务数","正常已办","超时已办","未完成","完成率","及时完成率","质量分析(班前会)"]; + // 字段和table表格中对应 + const fitlerVal = ["MOUDLE_NAME","TOTAL_QTY","FINISH_QTY","OVER_FINISH_QTY","UNFINISH_QTY","FINISH_RATE","NORMAL_FINISH_RATE","REMARK"]; + const res = this.state.retData.map((v) => fitlerVal.map((j) => v[j])); + // const jsonWorkSheet = XLSX.utils.json_to_sheet(tHeader,res,"矿山安全生产标准化系统运行情况报表.xlsx"); + const jsonWorkSheet = XLSX.utils.json_to_sheet(res,tHeader); + jsonWorkSheet.A1.v='组织'; + jsonWorkSheet.B1.v='总任务数'; + jsonWorkSheet.C1.v='正常已办'; + jsonWorkSheet.D1.v='超时已办'; + jsonWorkSheet.E1.v='未完成'; + jsonWorkSheet.F1.v='完成率'; + jsonWorkSheet.G1.v='及时完成率'; + jsonWorkSheet.H1.v='质量分析(班前会)'; + const sheetName = "矿山安全生产标准化系统运行情况报表"; + const workBook = { + SheetNames: [sheetName], + Sheets: { + [sheetName]: jsonWorkSheet, + } + }; + // const workBook = XLSX.utils.table_to_book("矿山安全生产标准化系统运行情况报表",jsonWorkSheet); + return XLSX.writeFile(workBook, "矿山安全生产标准化系统运行情况报表.xlsx"); +} + + render() { + const formItemLayout = { + labelCol: { span: 6 }, + wrapperCol: { span: 18 }, + } + const {loading} = this.props; + + return ( +
+ + + + +

矿山安全生产标准化系统运行情况报表

+ + + + + + + + + + + + + + + + + + + + + + +
+ + + + + {/* +
数据统计截止到{this.state.modifyTime}
+
*/} + + + ) + } +} +export default connect(({ login, app,loading }) => ({ login, app,loading }))(BI030FormRunAnalysis) diff --git a/src/components/CustomPages/PF/PF139FormRunAnalysis.js b/src/components/CustomPages/PF/PF139FormRunAnalysis.js new file mode 100644 index 0000000..29e16f6 --- /dev/null +++ b/src/components/CustomPages/PF/PF139FormRunAnalysis.js @@ -0,0 +1,144 @@ +import { message } from "antd/lib/index"; +import { Layout,Descriptions, Tabs, Steps, Button, Popconfirm, Row, Col, Form, Input, Select, Table, Drawer ,Icon} from 'antd'; +import React from 'react'; +import { PlusOutlined } from '@ant-design/icons'; +import ReactToPrint from "react-to-print"; +import styles from '../HI/StepForm.css'; +import config from "../../../config"; +import XLSX from 'xlsx'; +import { connect } from 'dva'; +import moment from 'moment'; +const { Header, Footer, Sider, Content } = Layout; +const TabPane = Tabs.TabPane; +const { TextArea } = Input; +const { Step } = Steps; +import { + extend, + extendRule, + initFilter, + initQueryFilter, + getOnlyPropertyData, + extendInclude, + empty, + getDataFieldValue, guid, initFilterGroup, extendGroupRule +} from "../../../utils/common"; +import FormPage from '../../FormPage' +class PF139FormRunAnalysis extends React.Component { + constructor(props) { + super(props) + this.state = { + title: '任务明细', + data: {}, + columns:[ + { + width: "150px", + title: '任务名称', + dataIndex: 'NAME', + key: 'NAME', + // render:(value,record,index)=>{ + + // }, + }, + { + width: "80px", + title: '处理人', + dataIndex: 'CREATE_NAME', + key: 'CREATE_NAME' + }, + { + width: "80px", + title: '部门', + dataIndex: 'DEPARTMENT_NAME', + key: 'DEPARTMENT_NAME' + }, + { + width: "80px", + title: '开始时间', + dataIndex: 'TASK_STARTDT', + key: 'TASK_STARTDT' + }, + { + width: "80px", + title: '结束时间', + dataIndex: 'TASK_ENDDT', + key: 'TASK_ENDDT' + }, + { + width: "80px", + title: '实际处理时间', + dataIndex: 'TASK_DT', + key: 'TASK_DT' + }, + { + width: "80px", + title: '状态', + dataIndex: 'STATUS_NAME', + key: 'STATUS_NAME' + }, + ] + } + }; + componentDidMount() { + if (this.props.data?.MOUDLE_NAME)//this.props.data?.MOUDLE_NAME && + this.loadData(this.props.data?.MOUDLE_NAME,this.props.data?.FORM_NAME,this.props.data?.startTime,this.props.data?.endTime); + } + + componentWillReceiveProps(NextProps) { + if (NextProps.data?.MOUDLE_NAME &&this.props.data?.MOUDLE_NAME != NextProps.data?.MOUDLE_NAME) {//NextProps.data?.MOUDLE_NAME && this.props.data?.MOUDLE_NAME != NextProps.data?.MOUDLE_NAME&& + this.loadData(NextProps.data?.MOUDLE_NAME,this.props.data?.FORM_NAME,this.props.data?.startTime,this.props.data?.endTime); + } + } + + BtnClose = () => { + if (typeof this.props.data.onCancel != "undefined" && typeof this.props.data.onCancel == 'function') + this.props.data.onCancel(); + } + + onClick = () => { + const json = initFilter(null,this.props.data.TaskID); + this.props.dispatch({ + type: 'app/getDataByPost', + url: 'FM/FMNotificationTask/ChangeStatus', + payload: json, + onComplete: (re) => { + if (re) { + message.success("成功"); + this.BtnClose(); + } else { + message.error("失败"); + } + } + }) + } + loadData(MOUDLE_NAME,FORM_NAME,startTime,endTime) { + const json = initFilter(null,MOUDLE_NAME,'','','',startTime,endTime,FORM_NAME); + this.props.dispatch({ + type: 'app/getDataByPost', + url: 'BI/BIStatiscialAnalysisController/GetFormRunAnalyzeDay', + payload: json, + onComplete: (re) => { + if (re) { + this.setState({retData :re}) + } + } + }) + } + + render() { + + return ( +
+
+ + ) + } +} +export default connect(({ login, app }) => ({ login, app }))(Form.create()(PF139FormRunAnalysis)) \ No newline at end of file diff --git a/src/utils/customConfig.js b/src/utils/customConfig.js index 10cb3a8..0b86c4b 100644 --- a/src/utils/customConfig.js +++ b/src/utils/customConfig.js @@ -776,6 +776,14 @@ const BI020ApproveAnalysis = Loadable({ loader: () => import('../components/CustomPages/BI/BI020ApproveAnalysis'), loading: () =>
}) +const BI030FormRunAnalysis = Loadable({ + loader: () => import('../components/CustomPages/BI/BI030FormRunAnalysis'), + loading: () =>
+}) +const PF139FormRunAnalysis = Loadable({ + loader: () => import('../components/CustomPages/PF/PF139FormRunAnalysis'), + loading: () =>
+}) const BI014RiskPerformanceModel = Loadable({ loader: () => import('../components/CustomPages/BI/BI014RiskPerformanceModel'), loading: () =>
@@ -973,7 +981,8 @@ export default function (componentName, formId, formParam, data, formCode, formD PF136FormRunAnalysis: , BI009FormRunAnalysis: , FO025ShowPrint: , - + BI030FormRunAnalysis: , + PF139FormRunAnalysis: , BI020ApproveAnalysis: , BI014RiskPerformanceModel: , }[componentName]