mh_jy_safe_web/src/components/CustomPages/SK/SK006ShowOperateLog.js

606 lines
43 KiB
JavaScript
Raw Normal View History

2025-09-21 15:18:07 +08:00
import { Button, Descriptions, Badge, Popconfirm, Row, Col, Form, Input, Select, Table } from 'antd';
import React from 'react';
import { initFilter, extendRule, extendInclude, setDataFieldValue, showApprove, guid, ShowDateTime } from '../../../utils/common';
import ReactToPrint from 'react-to-print';
import { ExportToExcel } from '@woowalker/feui'
import XLSX from 'xlsx';
import { connect } from 'dva';
import moment from 'moment';
import { message } from 'antd/lib/index';
import styles from '../../../components/CustomPages/HI/OperateLog.css';
import config from '../../../config.js';
class SK006ShowOperateLog extends React.Component {
constructor(props) {
super(props);
this.state = {
data: null,
riskCount: 1,
riskHeight: 50,
opEnd: null
// dateFirst: [
// [{ OPERATEPOINT: 10 }, { OPERATEPOINT: 20 }, { OPERATEPOINT: 30 }, { OPERATEPOINT: 40 }],
// [{ OPERATEPOINT: 48 }, { OPERATEPOINT: 50 }, { OPERATEPOINT: 60 }, { OPERATEPOINT: 70 }, { OPERATEPOINT: 80 }],
// [{ OPERATEPOINT: 130 }],
// [
// [{ OPERATEPOINT: 140 }, { OPERATEPOINT: 150 }, { OPERATEPOINT: 160 }, { OPERATEPOINT: 180 }, { OPERATEPOINT: 190 }, { OPERATEPOINT: 200 }, { OPERATEPOINT: 210 }, { OPERATEPOINT: 220 }]
// ]
// ]
}
}
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);
}
}
loadData = (id) => {
var orgId = this.props.login ? this.props.login.OrgId : '';
let json = initFilter(orgId, id);
this.props.dispatch({
type: 'app/getDataByPost',
payload: json,
url: 'SK/SKSecurityInspectionNotice/SKOrderEntities',
onComplete: (ret) => {
if (ret) {
let riskCount = 1
riskCount = ret.length - 3
var isEnd = false
var opEnd = null
if (ret[ret.length - 1].length == 1 && ret[ret.length - 1][0].OPERATEPOINT == 220) {
isEnd = true
riskCount = riskCount - 1
opEnd = ret[ret.length - 1][0]
}
let dataRiskMore = []
if (riskCount > 0) {
var countOpeate = ret.length
if (isEnd) countOpeate--
for (let i = 4; i < countOpeate; i++) {
dataRiskMore.push(ret[i])
}
}
if (riskCount == 0) riskCount = 1
let riskHeight = 65 * riskCount
this.setState({
data: ret,
dataRiskMore: dataRiskMore,
riskCount: riskCount,
opEnd: opEnd,
riskHeight: riskHeight
})
}
}
});
}
render() {
const { data, riskCount, dataRiskMore, opEnd, riskHeight } = this.state;
const enums = this.props.data.enums ? this.props.data.enums : this.props.app.enums;
return <div style={{ textAlign: 'center', margin: "30px 0 0 50px" }}>
<table style={{ marginBottom: "50px" }} >
<tbody >
{/* <tr>
<td style={{ width: "150px", textAlign: "center" }}>
<div className={styles.rectangle} id="step0"></div>
</td>
<td colSpan={10}>
</td>
</tr> */}
{/* 检查任务 */}
<tr>
<td style={{ width: "150px", textAlign: "center" }}>
<div className={styles.step} id="ste1">安全检查通知</div>
<div className={styles.rectangle} id="step1"></div>
</td>
<td colSpan={10} style={{ paddingLeft: "30px" }}>
<div className={styles.flowchartx} >
{
data && data[0]?.map((item, index) => {
let resultdiv = []
for (let i = 0; i < 2; i++) {
if (i == 0) {
resultdiv.push(
item.OPERTETIME ?
(
//有操作
item.ISINTTIME ?
(//按时完成 绿色
<div>
<div className={styles.stepx} id="step01">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
<div id="step02" className={styles.discribeSpan}>
<span className={styles.discribeSpanUser}> 用户{item.USRTNAME}</span>
<span className={styles.discribeSpanTime}> 时间{ShowDateTime(item.OPERTETIME, "MM-dd HH:mm")}</span>
</div>
</div>
)
:
( //超时完成 橙色
<div>
<div className={styles.stepxOutTime} id="step01">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
<div id="step02" className={styles.discribeSpan}>
<span className={styles.discribeSpanUser}> 用户{item.USRTNAME}</span>
<span className={styles.discribeSpanTime}> 时间{ShowDateTime(item.OPERTETIME, "MM-dd HH:mm")}</span>
</div>
</div>)
)
:
(
//没有操作 灰色
item.USRTNAME ? (
//有用户信息 写入用户
<div>
<div className={styles.stepxEnable} id="step01">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
<div id="step02" className={styles.discribeSpan}>
<span className={styles.discribeSpanUser}> 用户{item.USRTNAME}</span>
<span className={styles.discribeSpanTime}> 时间</span>
</div>
</div>
) : (
//没有用户信息
<div>
<div className={styles.stepxEnable} id="step01">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
</div>
)
)
)
} else if (index != data[0].length - 1) {
resultdiv.push(
<div className={styles.linex}></div>
)
}
}
return resultdiv
})
}
</div>
</td>
</tr>
{/* 检查任务 */}
{/* 检查记录 */}
<tr>
<td style={{ width: "150px", textAlign: "center" }}>
<div className={styles.step} id="ste2">安全检查记录</div>
<div className={styles.rectangle} id="step2"></div>
</td>
<td colSpan={10} style={{ paddingLeft: "30px" }}>
<div className={styles.flowchartx} >
{
data && data[1]?.map((item, index) => {
let resultdiv = []
for (let i = 0; i < 2; i++) {
if (i == 0) {
resultdiv.push(
item.OPERTETIME ?
(
//有操作
item.ISINTTIME ?
(//按时完成 绿色
<div>
<div className={styles.stepx} id="step20">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
<div id="step21" className={styles.discribeSpan}>
<span className={styles.discribeSpanUser}> 用户{item.USRTNAME}</span>
<span className={styles.discribeSpanTime}> 时间{ShowDateTime(item.OPERTETIME, "MM-dd HH:mm")}</span>
</div>
</div>
)
:
( //超时完成 橙色
<div>
<div className={styles.stepxOutTime} id="step20">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
<div id="step21" className={styles.discribeSpan}>
<span className={styles.discribeSpanUser}> 用户{item.USRTNAME}</span>
<span className={styles.discribeSpanTime}> 时间{ShowDateTime(item.OPERTETIME, "MM-dd HH:mm")}</span>
</div>
</div>)
)
:
(
//没有操作 灰色
item.USRTNAME ? (
//有用户信息 写入用户
<div>
<div className={styles.stepxEnable} id="step20">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
<div id="step21" className={styles.discribeSpan}>
<span className={styles.discribeSpanUser}> 用户{item.USRTNAME}</span>
<span className={styles.discribeSpanTime}> 时间</span>
</div>
</div>
) : (
//没有用户信息
<div>
<div className={styles.stepxEnable} id="step20">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
</div>
)
)
)
} else if (index != data[1].length - 1) {
resultdiv.push(
<div className={styles.linex}></div>
)
}
}
return resultdiv
})
}
</div>
</td>
</tr>
{/* 检查记录 */}
{/* 检查记录汇总 */}
<tr>
<td style={{ width: "150px", textAlign: "center" }}>
<div className={styles.step} id="ste3">安全检查记录汇总</div>
<div className={styles.rectangle} id="step3"></div>
</td>
<td colSpan={10} style={{ paddingLeft: "30px" }}>
<div className={styles.flowchartx} >
{
data && data[2]?.map((item, index) => {
let resultdiv = []
for (let i = 0; i < 2; i++) {
if (i == 0) {
resultdiv.push(
item.OPERTETIME ?
(
//有操作
item.ISINTTIME ?
(//按时完成 绿色
<div>
<div className={styles.stepx} id="step30">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
<div id="step31" className={styles.discribeSpan}>
<span className={styles.discribeSpanUser}> 用户{item.USRTNAME}</span>
<span className={styles.discribeSpanTime}> 时间{ShowDateTime(item.OPERTETIME, "MM-dd HH:mm")}</span>
</div>
</div>
)
:
( //超时完成 橙色
<div>
<div className={styles.stepxOutTime} id="step30">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
<div id="step31" className={styles.discribeSpan}>
<span className={styles.discribeSpanUser}> 用户{item.USRTNAME}</span>
<span className={styles.discribeSpanTime}> 时间{ShowDateTime(item.OPERTETIME, "MM-dd HH:mm")}</span>
</div>
</div>)
)
:
(
//没有操作 灰色
item.USRTNAME ? (
//有用户信息 写入用户
<div>
<div className={styles.stepxEnable} id="step30">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
<div id="step31" className={styles.discribeSpan}>
<span className={styles.discribeSpanUser}> 用户{item.USRTNAME}</span>
<span className={styles.discribeSpanTime}> 时间</span>
</div>
</div>
) : (
//没有用户信息
<div>
<div className={styles.stepxEnable} id="step30">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
</div>
)
)
)
} else if (index != data[2].length - 1) {
resultdiv.push(
<div className={styles.linex}></div>
)
}
}
return resultdiv
})
}
</div>
</td>
</tr>
{/* 检查记录汇总 */}
{/* 隐患上报 */}
<tr>
<td style={{ width: "150px", textAlign: "center" }}>
<div className={styles.step} id="ste4">隐患上报</div>
<div className={styles.rectangle} id="step4"></div>
</td>
<td colSpan={10} style={{ paddingLeft: "30px" }}>
<div className={styles.flowchartx} >
{
data && data[3]?.map((item, index) => {
let resultdiv = []
for (let i = 0; i < 2; i++) {
if (i == 0) {
resultdiv.push(
item.OPERTETIME ?
(
//有操作
item.ISINTTIME ?
(//按时完成 绿色
<div>
<div className={styles.stepx} id="step40">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
<div id="step41" className={styles.discribeSpan}>
<span className={styles.discribeSpanUser}> 用户{item.USRTNAME}</span>
<span className={styles.discribeSpanTime}> 时间{ShowDateTime(item.OPERTETIME, "MM-dd HH:mm")}</span>
</div>
</div>
)
:
( //超时完成 橙色
<div>
<div className={styles.stepxOutTime} id="step40">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
<div id="step41" className={styles.discribeSpan}>
<span className={styles.discribeSpanUser}> 用户{item.USRTNAME}</span>
<span className={styles.discribeSpanTime}> 时间{ShowDateTime(item.OPERTETIME, "MM-dd HH:mm")}</span>
</div>
</div>)
)
:
(
//没有操作 灰色
item.USRTNAME ? (
//有用户信息 写入用户
<div>
<div className={styles.stepxEnable} id="step40">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
<div id="step41" className={styles.discribeSpan}>
<span className={styles.discribeSpanUser}> 用户{item.USRTNAME}</span>
<span className={styles.discribeSpanTime}> 时间</span>
</div>
</div>
) : (
//没有用户信息
<div>
<div className={styles.stepxEnable} id="step40">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
</div>
)
)
)
} else if (index != data[3].length - 1) {
resultdiv.push(
<div className={styles.linex}></div>
)
}
}
return resultdiv
})
}
</div>
</td>
</tr>
{/* 隐患上报 */}
{/* 隐患确认单 */}
<tr>
<td style={{ width: "150px", textAlign: "center" }}>
<div className={styles.step} id="ste5">隐患确认单</div>
<div className={styles.rectangle} id="step5"></div>
</td>
<td colSpan={10} style={{ paddingLeft: "30px" }}>
<div className={styles.flowchartx} >
{
data && data[4]?.map((item, index) => {
let resultdiv = []
for (let i = 0; i < 2; i++) {
if (i == 0) {
resultdiv.push(
item.OPERTETIME ?
(
//有操作
item.ISINTTIME ?
(//按时完成 绿色
<div>
<div className={styles.stepx} id="step50">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
<div id="step51" className={styles.discribeSpan}>
<span className={styles.discribeSpanUser}> 用户{item.USRTNAME}</span>
<span className={styles.discribeSpanTime}> 时间{ShowDateTime(item.OPERTETIME, "MM-dd HH:mm")}</span>
</div>
</div>
)
:
( //超时完成 橙色
<div>
<div className={styles.stepxOutTime} id="step50">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
<div id="step51" className={styles.discribeSpan}>
<span className={styles.discribeSpanUser}> 用户{item.USRTNAME}</span>
<span className={styles.discribeSpanTime}> 时间{ShowDateTime(item.OPERTETIME, "MM-dd HH:mm")}</span>
</div>
</div>)
)
:
(
//没有操作 灰色
item.USRTNAME ? (
//有用户信息 写入用户
<div>
<div className={styles.stepxEnable} id="step50">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
<div id="step51" className={styles.discribeSpan}>
<span className={styles.discribeSpanUser}> 用户{item.USRTNAME}</span>
<span className={styles.discribeSpanTime}> 时间</span>
</div>
</div>
) : (
//没有用户信息
<div>
<div className={styles.stepxEnable} id="step50">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
</div>
)
)
)
} else if (index != data[4].length - 1) {
resultdiv.push(
<div className={styles.linex}></div>
)
}
}
return resultdiv
})
}
</div>
</td>
</tr>
{/* 隐患确认单 */}
{/* 隐患整改通知 */}
<tr>
<td style={{ width: "150px", textAlign: "center" }}>
<div className={styles.step} id="ste6">隐患整改通知</div>
<div className={styles.rectangle} id="step6"></div>
</td>
<td colSpan={10} style={{ paddingLeft: "30px" }}>
<div className={styles.flowchartx} >
{
data && data[5]?.map((item, index) => {
let resultdiv = []
for (let i = 0; i < 2; i++) {
if (i == 0) {
resultdiv.push(
item.OPERTETIME ?
(
//有操作
item.ISINTTIME ?
(//按时完成 绿色
<div>
<div className={styles.stepx} id="step60">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
<div id="step61" className={styles.discribeSpan}>
<span className={styles.discribeSpanUser}> 用户{item.USRTNAME}</span>
<span className={styles.discribeSpanTime}> 时间{ShowDateTime(item.OPERTETIME, "MM-dd HH:mm")}</span>
</div>
</div>
)
:
( //超时完成 橙色
<div>
<div className={styles.stepxOutTime} id="step60">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
<div id="step61" className={styles.discribeSpan}>
<span className={styles.discribeSpanUser}> 用户{item.USRTNAME}</span>
<span className={styles.discribeSpanTime}> 时间{ShowDateTime(item.OPERTETIME, "MM-dd HH:mm")}</span>
</div>
</div>)
)
:
(
//没有操作 灰色
item.USRTNAME ? (
//有用户信息 写入用户
<div>
<div className={styles.stepxEnable} id="step60">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
<div id="step61" className={styles.discribeSpan}>
<span className={styles.discribeSpanUser}> 用户{item.USRTNAME}</span>
<span className={styles.discribeSpanTime}> 时间</span>
</div>
</div>
) : (
//没有用户信息
<div>
<div className={styles.stepxEnable} id="step60">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
</div>
)
)
)
} else if (index != data[5].length - 1) {
resultdiv.push(
<div className={styles.linex}></div>
)
}
}
return resultdiv
})
}
</div>
</td>
</tr>
{/* 隐患整改通知 */}
{/* 隐患整改记录 */}
<tr>
<td style={{ width: "150px", textAlign: "center" }}>
<div className={styles.step} id="ste7">隐患整改记录</div>
{/* <div className={styles.rectangle} id="step7"></div> */}
</td>
<td colSpan={10} style={{ paddingLeft: "30px" }}>
<div className={styles.flowchartx} >
{
data && data[6]?.map((item, index) => {
let resultdiv = []
for (let i = 0; i < 2; i++) {
if (i == 0) {
resultdiv.push(
item.OPERTETIME ?
(
//有操作
item.ISINTTIME ?
(//按时完成 绿色
<div>
<div className={styles.stepx} id="step70">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
<div id="step71" className={styles.discribeSpan}>
<span className={styles.discribeSpanUser}> 用户{item.USRTNAME}</span>
<span className={styles.discribeSpanTime}> 时间{ShowDateTime(item.OPERTETIME, "MM-dd HH:mm")}</span>
</div>
</div>
)
:
( //超时完成 橙色
<div>
<div className={styles.stepxOutTime} id="step70">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
<div id="step71" className={styles.discribeSpan}>
<span className={styles.discribeSpanUser}> 用户{item.USRTNAME}</span>
<span className={styles.discribeSpanTime}> 时间{ShowDateTime(item.OPERTETIME, "MM-dd HH:mm")}</span>
</div>
</div>)
)
:
(
//没有操作 灰色
item.USRTNAME ? (
//有用户信息 写入用户
<div>
<div className={styles.stepxEnable} id="step70">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
<div id="step71" className={styles.discribeSpan}>
<span className={styles.discribeSpanUser}> 用户{item.USRTNAME}</span>
<span className={styles.discribeSpanTime}> 时间</span>
</div>
</div>
) : (
//没有用户信息
<div>
<div className={styles.stepxEnable} id="step70">{enums.SKOPERATEPOINT_Enums.enums[item.OPERATEPOINT]}</div>
</div>
)
)
)
} else if (index != data[6].length - 1) {
resultdiv.push(
<div className={styles.linex}></div>
)
}
}
return resultdiv
})
}
</div>
</td>
</tr>
{/* 隐患整改记录 */}
</tbody>
</table>
</div>
}
}
export default connect(({ login, app }) => ({ login, app }))(SK006ShowOperateLog)