298 lines
16 KiB
JavaScript
298 lines
16 KiB
JavaScript
import { Button, Descriptions, Badge, Popconfirm, Row, Col, Form, Input, Select, Table } from 'antd';
|
|
import React from 'react';
|
|
import { initFilter, extendRule, extendInclude, extendIgnoreDataRule, endTask, setDataFieldValue, guid, initQueryFilter } 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 '../HI/StepForm.css';
|
|
import config from "../../../config.js";
|
|
|
|
//整改责任人 审批 专用了 10-13
|
|
|
|
class BS042ActualCheck extends React.Component {
|
|
constructor(props) {
|
|
super(props);
|
|
this.state = {
|
|
data: null,
|
|
loginid: this.props.login.user.ID,
|
|
BtnAgreeDisplay: 'none',
|
|
rowcount: 0,
|
|
riskContentState: 15,
|
|
DEALOPINION: '',
|
|
isCheckerCheck: false,//是否 验收人 确认
|
|
isDealUserCheck: false,//是否 整改责任人 确认
|
|
isActualDealCheck: false,//整改落实人确定
|
|
isBtnLoad: 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);
|
|
}
|
|
}
|
|
|
|
BtnClose = () => {
|
|
if (typeof this.props.data.onCancel != "undefined" && typeof this.props.data.onCancel == 'function')
|
|
this.props.data.onCancel();
|
|
}
|
|
|
|
loadData = () => {
|
|
// let json = initFilter(this.props.login.OrgId);
|
|
// extendRule(json, 'ID', 1, this.props.data.id);
|
|
// extendInclude(json, 'Nav_ListRiskSubmitContent');
|
|
// extendInclude(json, 'Nav_Submit.Nav_Check');
|
|
// extendInclude(json, 'Nav_ListRiskSubmitContent');
|
|
// extendInclude(json, 'Nav_ListRiskSubmitContent.Nav_Question');
|
|
// extendInclude(json, 'Nav_ListRiskSubmitContent.Nav_ListRiskQuestionReason');
|
|
// extendInclude(json, 'Nav_ListRiskSubmitContent.Nav_ListRiskQuestionReason.Nav_RiskReason');
|
|
// extendInclude(json, 'Nav_ListRiskSubmitContent.Nav_User');
|
|
// extendInclude(json, 'Nav_ListRiskSubmitContent.Nav_Department');
|
|
// extendInclude(json, 'Nav_ListRiskSubmitContent.Nav_DepartmentDeal');
|
|
// extendInclude(json, 'Nav_ListRiskSubmitContent.Nav_UserDeal');
|
|
// extendInclude(json, 'Nav_ListRiskSubmitContent.Nav_UserCheck');
|
|
// extendInclude(json, 'Nav_ListRiskSubmitContent.Nav_UserActualDeal');
|
|
// this.props.dispatch({
|
|
// type: 'app/getDataByPost',
|
|
// payload: json,
|
|
// url: 'BS/RiskSubmitNoticePerson/Get',
|
|
// onComplete: (ret) => {
|
|
// if (ret) {
|
|
// this.setState({ //设置setState全局变量
|
|
// data: ret, //将ret对象赋值给data, data供页面调用
|
|
// rowcount: ret.Nav_ListRiskSubmitContent.length,
|
|
|
|
// riskContentState: ret.Nav_ListRiskSubmitContent[0].RiskContentState,
|
|
// isCheckerCheck: (this.state.loginid == ret.Nav_ListRiskSubmitContent[0].CHECK_USER_ID && ret.Nav_ListRiskSubmitContent[0].RiskContentState == 15) ? true : false,
|
|
// isDealUserCheck: (this.state.loginid == ret.Nav_ListRiskSubmitContent[0].DEAL_USER_ID && ret.Nav_ListRiskSubmitContent[0].RiskContentState == 17) ? true : false,
|
|
// isActualDealCheck: (this.state.loginid == ret.Nav_ListRiskSubmitContent[0].ACTUAL_DEAL_USER_ID && ret.Nav_ListRiskSubmitContent[0].RiskContentState == 32) ? true : false
|
|
// })
|
|
// }
|
|
// }
|
|
// });
|
|
|
|
|
|
//整改责任人 审批 专用了
|
|
let json = initFilter(this.props.login.OrgId);
|
|
extendRule(json, 'ID', 1, this.props.data.id);
|
|
if (this.props.data.tableKey != null && this.props.data.tableKey == '1') {
|
|
extendRule(json, 'RiskContentState', 1, 32);//整改落实人确认
|
|
}
|
|
extendInclude(json, 'Nav_ListRiskSubmitContent.Nav_Department');
|
|
extendIgnoreDataRule(json)
|
|
// Nav_ListRiskSubmitContent
|
|
this.props.dispatch({
|
|
type: 'app/getDataByPost',
|
|
payload: json,
|
|
url: 'BS/BSRiskSubmitNoticePerson/GetDetailCheck',
|
|
onComplete: (ret) => {
|
|
if (ret) {
|
|
this.setState({ //设置setState全局变量
|
|
data: ret, //将ret对象赋值给data, data供页面调用
|
|
rowcount: ret.Nav_ListRiskSubmitContent.length,
|
|
riskContentState: ret.Nav_ListRiskSubmitContent[0].RiskContentState,
|
|
isCheckerCheck: (this.state.loginid == ret.Nav_ListRiskSubmitContent[0].CHECK_USER_ID && ret.Nav_ListRiskSubmitContent[0].RiskContentState == 15) ? true : false,
|
|
isDealUserCheck: (this.state.loginid == ret.Nav_ListRiskSubmitContent[0].DEAL_USER_ID && ret.Nav_ListRiskSubmitContent[0].RiskContentState == 17) ? true : false,
|
|
isActualDealCheck: (this.state.loginid == ret.Nav_ListRiskSubmitContent[0].ACTUAL_DEAL_USER_ID && ret.Nav_ListRiskSubmitContent[0].RiskContentState == 32) ? true : false,
|
|
isBtnLoad: false
|
|
})
|
|
}
|
|
}
|
|
});
|
|
|
|
//结束任务 修改为 整改责任人 和验收人 都要点击 确认 确认完成后 整改责任人 修改验收人
|
|
// endTask(this.props.login.OrgId, this.props.data.TaskID, this.props.dispatch);
|
|
|
|
}
|
|
|
|
onTableBtnExport() {
|
|
let TableWrap = document.getElementById('tableId' + this.props.data.id);
|
|
let Table = TableWrap.getElementsByTagName('table')[0];
|
|
const wb = XLSX.utils.table_to_book(Table);
|
|
XLSX.writeFile(wb, "隐患整改通知.xlsx")
|
|
}
|
|
//审批意见 改变
|
|
DEALOPINIONCHANGE = (val) => {
|
|
this.state.DEALOPINION = val
|
|
}
|
|
sureCheck = (val) => {
|
|
if (val == 1 || val == 2) {
|
|
// Parameter4 审批结果 1同意 2驳回
|
|
// Parameter3 驳回理由
|
|
if (val == 2 && (this.state.DEALOPINION == undefined || this.state.DEALOPINION == null || this.state.DEALOPINION == '')) {
|
|
// message.success('请填写驳回意见!')
|
|
message.error('请填写驳回意见!')
|
|
return false;
|
|
}
|
|
|
|
let json = initFilter(this.props.login.OrgId, this.props.data.id, null, null, null, this.props.data.TaskID, this.state.rowcount, this.state.DEALOPINION, val);
|
|
this.props.dispatch({
|
|
type: 'app/getDataByPost',
|
|
payload: json,
|
|
url: 'BS/BSRiskSubmit/UserCheckAndSend',
|
|
onComplete: (ret) => {
|
|
this.BtnClose()
|
|
}
|
|
});
|
|
} else {
|
|
if (val == 20 && (this.state.DEALOPINION == undefined || this.state.DEALOPINION == null || this.state.DEALOPINION == '')) {
|
|
// message.success('请填写驳回意见!')
|
|
message.error('请填写驳回意见!')
|
|
return false;
|
|
}
|
|
|
|
let json = initFilter(this.props.login.OrgId, this.props.data.id, null, null, null, this.props.data.TaskID, val, this.state.DEALOPINION);
|
|
this.props.dispatch({
|
|
type: 'app/getDataByPost',
|
|
payload: json,
|
|
url: 'BS/BSRiskSubmit/CheckerCheck',
|
|
onComplete: (ret) => {
|
|
this.BtnClose()
|
|
}
|
|
});
|
|
}
|
|
}
|
|
|
|
sureCheckActualDeal = () => {
|
|
this.setState({ //设置setState全局变量
|
|
isBtnLoad: true
|
|
})
|
|
|
|
let json = initFilter(this.props.login.OrgId, this.props.data.id, null, null, null, this.props.data.TaskID);
|
|
// extendRule(json, 'ID', 1, this.props.data.id);
|
|
// extendRule(json, "Parameter1", 1, this.props.data.TaskID)
|
|
this.props.dispatch({
|
|
type: 'app/getDataByPost',
|
|
payload: json,
|
|
url: 'BS/BSRiskSubmit/UpdateActualDealRecord',
|
|
onComplete: (ret) => {
|
|
this.BtnClose()
|
|
}
|
|
});
|
|
}
|
|
|
|
render() {
|
|
const { data, riskContentState, isDealUserCheck, isCheckerCheck, isActualDealCheck, isBtnLoad } = this.state;
|
|
return <div>
|
|
<div style={{ padding: '10px' }}>
|
|
<table>
|
|
<tbody>
|
|
<tr>
|
|
<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>
|
|
{
|
|
//整改落实人确定
|
|
isActualDealCheck ? <td><Button type={'primary'} style={{ margin: "0 0 0 10px" }} loading={isBtnLoad} icon={'save'} onClick={() => this.sureCheckActualDeal()} >确认</Button> </td> : null
|
|
}
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
|
|
{/* 检查表制定 */}
|
|
<div ref={el => (this.componentRef = el)} style={{ padding: '20px', paddingTop: '20px' }} id={'tableId' + this.props.data.id}>
|
|
<h1 style={{ textAlign: 'center', margin: '15px' }}>隐患整改通知</h1>
|
|
{
|
|
//, paddingLeft: '50px'
|
|
data ? <div>
|
|
<Descriptions title="" size="middle" bordered>
|
|
<Descriptions.Item label="发起时间">{data.CREATE_TIME}</Descriptions.Item>
|
|
<Descriptions.Item label="发起部门">{data.Nav_User?.Nav_Department?.NAME}</Descriptions.Item>
|
|
<Descriptions.Item label="发起人">{data.Nav_User?.NAME}</Descriptions.Item>
|
|
<Descriptions.Item label="编码">{data.CODE}</Descriptions.Item>
|
|
<Descriptions.Item label="附件">{
|
|
data.Nav_Files && data.Nav_Files.map((item, i) => {
|
|
return <a width={'20%'} title={item.Nav_ImgFile.FILE_NAME} target='_blank' href={config.picServerHost + item.Nav_ImgFile.Nav_File.FILE_PATH} >{item.Nav_ImgFile.FILE_NAME} </a>
|
|
})
|
|
}</Descriptions.Item>
|
|
</Descriptions>
|
|
</div> : null
|
|
}
|
|
|
|
{
|
|
// data ? <table style={{ width: '100%', marginTop: '15px', textAlign: 'center', borderTop: '1px solid #333', borderLeft: '1px solid #333' }} className={styles.PrintForm}>
|
|
// <tbody>
|
|
// <tr>
|
|
|
|
data ? <table className={styles.PrintFormLight}>
|
|
<tbody>
|
|
<tr className={styles.PrintFormLightTh}>
|
|
{/* <td>名称</td> */}
|
|
<td>检查问题</td>
|
|
<td style={{ minWidth: '80px' }}>隐患等级</td>
|
|
<td>整改建议与措施</td>
|
|
<td style={{ minWidth: '110px' }}>隐患地点</td>
|
|
<td style={{ minWidth: '110px' }}>备注</td>
|
|
<td style={{ minWidth: '100px' }}>整改期限</td>
|
|
<td style={{ minWidth: '100px' }}>系统整改期限</td>
|
|
<td style={{ minWidth: '110px' }}>整改实施单位</td>
|
|
<td style={{ minWidth: '90px' }}>整改责任人</td>
|
|
<td style={{ minWidth: '70px' }}>验收人</td>
|
|
{(isActualDealCheck || data.Nav_ListRiskSubmitContent[0].Nav_UserActualDeal != null) ? <td style={{ minWidth: '90px' }}>整改落实人</td> : null}
|
|
|
|
</tr>
|
|
{data.Nav_ListRiskSubmitContent.map((item, i) => {
|
|
return <tr>
|
|
{/* <td>{item.NAME}</td> */}
|
|
{/* <td>{((item.ISBACK != null && item.ISBACK) ? "(返)" : "") + item?.Nav_Question?.DESCREPTION}</td> */}
|
|
<td>{((item.ISBACK != null && item.ISBACK) ? "(返)" : "") + item.DESCREPTION}</td>
|
|
{/* <td>{((item.ISBACK != null && item.ISBACK) ? "(返)" : "") + item.Nav_Question?.DESCREPTION}</td> */}
|
|
<td>{this.props.app.enums.BSQuestionLevelEnum.enums[item.QUESTION_LEVEL]}</td>
|
|
<td>{item.DEMAND}</td>
|
|
<td>{item.ADDRESS}</td>
|
|
<td>{item.REMARK}</td>
|
|
<td>{new Date(item.LastDateUser).Format("yyyy-MM-dd")}</td>
|
|
<td>{new Date(item.LastDateSystem).Format("yyyy-MM-dd")}</td>
|
|
<td> {item.Nav_DepartmentDeal == null ? '' : item.Nav_DepartmentDeal.NAME}</td>
|
|
{/* <td> {item.Nav_UserDeal == null ? '' : item.Nav_UserDeal.NAME} </td>
|
|
<td> {item.Nav_UserCheck == null ? '' : item.Nav_UserCheck.NAME} </td> */}
|
|
|
|
<td>{item.ISDEALUSERCHECK ? item.Nav_UserDeal?.NAME : (<a className={styles.red} > {item.Nav_UserDeal?.NAME} </a>)} </td>
|
|
<td>{item.ISCHECKERCHECK ? item.Nav_UserCheck?.NAME : (<a className={styles.red} > {item.Nav_UserCheck?.NAME} </a>)} </td>
|
|
|
|
{/* <td>{isActualDealCheck ? item.Nav_UserActualDeal?.NAME : (<a className={styles.red} > {item.Nav_UserActualDeal?.NAME} </a>)} </td> */}
|
|
{(isActualDealCheck || data.Nav_ListRiskSubmitContent[0].Nav_UserActualDeal != null) ? (isActualDealCheck ? <td>{<a className={styles.red} > {item.Nav_UserActualDeal?.NAME} </a>}</td> : <td>{item.Nav_UserActualDeal?.NAME}</td>) : null}
|
|
</tr>
|
|
})}
|
|
|
|
</tbody>
|
|
</table> : null
|
|
}
|
|
|
|
{
|
|
// 验收人验收
|
|
// (riskContentState == 15 || riskContentState == 17) ?
|
|
((isCheckerCheck || isDealUserCheck) && !isActualDealCheck) ?
|
|
<table style={{ width: '100%', margin: '0,0,0,0', lineHeight: '35px' }}>
|
|
<tbody>
|
|
<tr><td colSpan={2}><br></br><hr></hr></td></tr>
|
|
<tr>
|
|
<th style={{ float: 'right' }} >意见:</th>
|
|
<td>
|
|
<Input.TextArea style={{ width: '96%', margin: '0 0 0 15px' }} onChange={(evt) => this.DEALOPINIONCHANGE(evt.target.value)} />
|
|
</td>
|
|
</tr>
|
|
<tr>
|
|
<th></th>
|
|
<td >
|
|
<Button className={styles.agreedUser} type={'primary'} icon={'check'} onClick={() => this.sureCheck(riskContentState == 15 ? 10 : 1)} >同意</Button>
|
|
<Button className={styles.rejectedUser} type={'primary'} icon={'close'} onClick={() => this.sureCheck(riskContentState == 15 ? 20 : 2)} >驳回</Button>
|
|
</td>
|
|
</tr>
|
|
</tbody>
|
|
</table> : null
|
|
}
|
|
|
|
</div>
|
|
</div>
|
|
}
|
|
|
|
}
|
|
export default connect(({ login, app }) => ({ login, app }))(BS042ActualCheck)
|