mh_jy_safe_web/src/components/CustomPages/AE/AE010ShowPrint.js
2025-08-25 10:08:30 +08:00

331 lines
17 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import { Checkbox, message, Radio } from "antd/lib/index";
import { Button, Descriptions, Modal, Popconfirm, Row, Col, Form, Input, Select, Table } from 'antd';
import React from 'react';
import { initFilter, extendRule, extendInclude, extendIgnoreDataRule, setDataFieldValue, guid, GetFileModel, showFiles, showApprove, ShowDateTime } from "../../../utils/common";
import { ExportToExcel } from '@woowalker/feui'
import styles from '../HI/StepForm.css';
import ReactToPrint from "react-to-print";
import moment from 'moment';
import config from "../../../config.js";
import XLSX from 'xlsx';
import { connect } from 'dva';
import FormPage from '../../FormPage'
class AE010ShowPrint extends React.Component {
constructor(props) {
super(props);
this.state = {
data: null,
item: null,
btndisplay: 'none',
ALLTOTAL: 0,
ALLUSE: 0,
ALLLEFT: 0,
fileData: [],
fileForm: {
title: "",
visible: false,
},
}
}
componentDidMount() {
if (this.props.data?.id)
this.loadData(this.props.data?.id);
}
componentWillReceiveProps(NextProps) {
if (NextProps.data?.id && this.props.data?.id != NextProps.data?.id) {
this.loadData(NextProps.data?.id);
}
}
onTableBtnExport() {
// let TableWrap = document.getElementById('table1' + this.props.record.ID);
let TableWrap = document.getElementById('table1');
let Table = TableWrap.getElementsByTagName('table1')[0];
const wb = XLSX.utils.table_to_book(Table);
XLSX.writeFile(wb, this.props.record.Nav_Department.NAME + ".xlsx")
}
onClickApprove = (appVisible) => {
const newtmpData = {
data: { id: this.props.data.id, isShow: true, key: guid(), param: this.props.data.param, appVisible: appVisible, BtnAgreeDisplay: 'none' },
formCode: "PF123",
}
this.setState({
tmpData: newtmpData,
});
}
//审批意见 改变
NOTJOINREASONCHANGE = (val) => {
this.state.NOTJOINREASON = val
}
//加载数据(传过来的参数都在props里面包括登录信息)
loadData = (id) => {
var orgId = this.props.login ? this.props.login.OrgId : ''; //登录后有存储登录信息
let json = initFilter(orgId);
extendRule(json, 'ID', 1, id); //ID=‘’,字段,等于,条件值, 1代表=2代表不等于3小于4小于等于5大于6大于等于7以开始的Like,8以结束的Like9包含
extendInclude(json, 'Nav_AccidentEventReport.Nav_ListAccidentListKind.Nav_AccidentKind');
extendInclude(json, 'Nav_AccidentEventReport.Nav_AccidentType');
extendInclude(json, 'Nav_ListSurveyDamageObject.Nav_DamageObject');
extendInclude(json, 'Nav_RiskSubmit');
extendInclude(json, 'Nav_FilesP.Nav_ImgFile');
extendInclude(json, 'Nav_FilesSurvey.Nav_ImgFile');
extendInclude(json, 'Nav_Approve.Nav_ApproveDetails.Nav_ApproveUser');
extendIgnoreDataRule(json)
// extendInclude(json, 'Nav_ListReason.Nav_ListReasonType.Nav_ReasonType');
// extendInclude(json, 'Nav_ListForensics');
// extendInclude(json, 'Nav_ListEquipmentLoss');
// extendInclude(json, 'Nav_ListCasualties.Nav_User');
// extendInclude(json, 'Nav_ListAdmPunishment.Nav_Department');
// extendInclude(json, 'Nav_ListAdmPunishment.Nav_User');
this.props.dispatch({
type: 'app/getDataByPost',
payload: json,
url: 'AE/AEAccidentEventSurveyResult/GetAE010',
onComplete: (ret) => { //返回查询结果ret
this.setState({ //设置setState全局变量
data: ret, //将ret对象赋值给data, data供页面调用
})
}
});
}
//渲染页面
render() {
const { data, ALLTOTAL, ALLUSE, ALLLEFT } = this.state;
const enums = this.props.data.enums ? this.props.data.enums : this.props.app.enums;
return <div>
<div style={{ padding: '10px' }}>
<table>
<tr>
<td><Button onClick={() => this.onClickApprove(true)} style={{ marginRight: '8px' }} icon="export">审批详情</Button></td>
<td><ReactToPrint trigger={() => <Button type={'default'} icon={'printer'} >打印</Button>} content={() => this.componentRef} pageStyle={"#tableId" + this.props.data.id + " { padding:0 40px;} img{width :120px}"} /></td>
<td><ExportToExcel fileName='事故事件调查结果' tableId={'tableId' + this.props.data.id} /></td>
</tr>
</table>
</div>
<FormPage {...this.state.tmpData} />
{/* 安全检查 */}
<div ref={el => (this.componentRef = el)} style={{ padding: '20px', paddingTop: '20px' }} id={'tableId' + this.props.data.id}>
<h1 className={styles.showPrintHead}>事故事件调查结果</h1>
{
data ? <div>
<Descriptions title="" size="middle" bordered>
<Descriptions.Item label="事故事件编号">{data.Nav_AccidentEventReport.CODE}</Descriptions.Item>
<Descriptions.Item label="事故事件名称">{data.Nav_AccidentEventReport.NAME}</Descriptions.Item>
<Descriptions.Item label="事故事件时间">{ShowDateTime(data.Nav_AccidentEventReport.ACCIDENT_TIME)}</Descriptions.Item>
<Descriptions.Item label="事故事件地点">{data.Nav_AccidentEventReport.ACCIDENT_PLACE}</Descriptions.Item>
<Descriptions.Item label="事故事件种类">{
data.Nav_AccidentEventReport?.Nav_ListAccidentListKind?.map((item, i) => {
return (i > 0 ? "" : "") + item.Nav_AccidentKind.NAME
})
}</Descriptions.Item>
<Descriptions.Item label="事故事件类型">{data.Nav_AccidentEventReport.Nav_AccidentType.NAME}</Descriptions.Item>
<Descriptions.Item label="事故事件等级">{enums.AEAccidentLevel.enums[data.Nav_AccidentEventReport.ACCIDENT_LEVEL]}</Descriptions.Item>
<Descriptions.Item label="致害物">{
data.Nav_ListSurveyDamageObject?.map((item, i) => {
return (i > 0 ? "" : "") + item.Nav_DamageObject.NAME
})
}</Descriptions.Item>
<Descriptions.Item label="事故伤亡人数">{data.CASUALTY_COUNT}</Descriptions.Item>
<Descriptions.Item label="直接经济损失(元)">{data.ECONOMIC_LOSSES}</Descriptions.Item>
<Descriptions.Item label="事故事件经过" style={{ maxWith: "300px" }}>{data.ACCIDENT_COURSE}</Descriptions.Item>
<Descriptions.Item label="限制结案时间">{ShowDateTime(data.SYSTEMMAXTIME)}</Descriptions.Item>
<Descriptions.Item label="实际结案时间">{ShowDateTime(data.TIME)}</Descriptions.Item>
<Descriptions.Item label="调查报告附件">{
showFiles(data.Nav_FilesSurvey, config.picServerHost, this)
}</Descriptions.Item>
<Descriptions.Item label="公示文件附件">{
showFiles(data.Nav_FilesP, config.picServerHost, this)
}</Descriptions.Item>
<Descriptions.Item label="隐患上报表单">{data.Nav_RiskSubmit?.CODE}</Descriptions.Item>
<Descriptions.Item label="审批意见">{
showApprove(data.Nav_Approve?.Nav_ApproveDetails, this.props.app.enums.NodeApproveStatus.enums, config.picServerHost)
}</Descriptions.Item>
</Descriptions>
</div> : null
}
{
data?.Nav_ListReason ?
<table className={styles.PrintFormLight}>
<tbody>
<tr>
<td colSpan={4} className={styles.showPrintHead2} >事故事件原因</td>
</tr>
<tr className={styles.PrintFormLightTh}>
<td>序号</td>
<td>直接/间接原因</td>
<td>原因类别</td>
<td>原因分析</td>
</tr>
{data.Nav_ListReason != null && data.Nav_ListReason.length > 0 ?
data.Nav_ListReason?.map((item, i) => {
return <tr>
<td>{i + 1}</td>
<td>{enums.AEReasonModel.enums[item.REASON_MODEL]} </td>
<td>{item.Nav_ListReasonType?.map((itemtype, j) => {
return (j > 0 ? "" : "") + itemtype.Nav_ReasonType.NAME
})}</td>
<td>{item.REASON_ANALYZE} </td>
</tr>
})
: <tr> <td colSpan={4} >查无数据</td> </tr>
}
</tbody>
</table>
: null
}
{
data?.Nav_ListForensics ?
<table className={styles.PrintFormLight}>
<tbody>
<tr>
<td colSpan={4} className={styles.showPrintHead2}>调查取证资料</td>
</tr>
<tr className={styles.PrintFormLightTh}>
<td>序号</td>
<td>证据来源</td>
<td>证据描述</td>
<td>附件证据</td>
</tr>
{
data.Nav_ListForensics != null && data.Nav_ListForensics.length > 0 ?
data.Nav_ListForensics.map((item, i) => {
return <tr>
<td>{i + 1}</td>
<td>{enums.AEEvidenceSource.enums[item.EVIDENCE_SOURCE]} </td>
<td>{item.EVIDENCE_DESC} </td>
<td>{
showFiles(data.Nav_FilesSurvey, config.picServerHost, this)
} </td>
</tr>
})
: <tr> <td colSpan={4} >查无数据</td> </tr>
}
</tbody>
</table>
: null
}
{
data?.Nav_ListEquipmentLoss ?
<table className={styles.PrintFormLight}>
<tbody>
<tr>
<td colSpan={6} className={styles.showPrintHead2}>设备设施损失信息</td>
</tr>
<tr className={styles.PrintFormLightTh}>
<td>序号</td>
<td>设备/设施名称</td>
<td>规格型号</td>
<td>责任人员</td>
<td>损失情况</td>
</tr>
{
data.Nav_ListEquipmentLoss != null && data.Nav_ListEquipmentLoss.length > 0 ?
data.Nav_ListEquipmentLoss?.map((item, i) => {
return <tr>
<td>{i + 1}</td>
<td>{item.MACHINE_NAME} </td>
<td>{item.SPEC} </td>
<td>{item.USER_NAME} </td>
<td>{item.LOSS_CONDITION} </td>
</tr>
}) : <tr> <td colSpan={5} >查无数据</td> </tr>
}
</tbody>
</table>
: null
}
{
data?.Nav_ListCasualties ?
<table className={styles.PrintFormLight}>
<tbody>
<tr>
<td colSpan={4} className={styles.showPrintHead2}>人员伤亡信息</td>
</tr>
<tr className={styles.PrintFormLightTh}>
<td>序号</td>
<td>姓名</td>
<td>受伤时间</td>
<td>受伤部位</td>
</tr>
{
data.Nav_ListCasualties != null && data.Nav_ListCasualties.length > 0 ?
data.Nav_ListCasualties.map((item, i) => {
return <tr>
<td>{i + 1}</td>
<td>{item?.Nav_User?.NAME} </td>
<td>{ShowDateTime(item.INJURED_TIME)} </td>
<td>{item.INJURED_AREA} </td>
</tr>
})
: <tr> <td colSpan={4} >查无数据</td> </tr>
}
</tbody>
</table>
: null
}
{
data?.Nav_ListAdmPunishment ?
<table className={styles.PrintFormLight}>
<tbody>
<tr>
<td colSpan={5} className={styles.showPrintHead2}>行政处罚信息
</td>
</tr>
<tr className={styles.PrintFormLightTh}>
<td>序号</td>
<td>责任部门</td>
<td>处理人</td>
<td>处罚结果</td>
<td>处罚原因</td>
</tr>
{
data.Nav_ListAdmPunishment != null && data.Nav_ListAdmPunishment.length > 0 ?
data.Nav_ListAdmPunishment.map((item, i) => {
return <tr>
<td>{i + 1}</td>
<td>{item.Nav_Department?.NAME} </td>
<td>{item.Nav_User?.NAME} </td>
<td>{item.PUNISHMENT_RESULT} </td>
<td>{item.PUNISHMENT_REASON} </td>
</tr>
})
: <tr> <td colSpan={5} >查无数据</td> </tr>
}
</tbody>
</table>
: null
}
{/* Nav_ListReason C39635C3-160C-41FB-BB5C-C1D550B31702
Nav_ListForensics FE38AFF4-9EE6-4FB5-9545-E2A98F848E66
Nav_ListEquipmentLoss 0B1E8368-5793-48DA-B36E-F8D7E0B0729C
Nav_ListCasualties B5C28E0D-4BE8-404D-8B58-76A9DAE9B61E
Nav_ListAdmPunishment D289ED37-D479-43CF-9528-EC87FAE25735 */}
</div>
{
GetFileModel(Modal, FormPage, this, this.state.fileForm.visible)
}
</div>
}
}
export default connect(({ login, app }) => ({ login, app }))(AE010ShowPrint)