2024-01-22 09:18:38 +08:00
import { Button , Descriptions , Popconfirm , Row , Col , Form , Input , Select , Table } from 'antd' ;
import React from 'react' ;
import { initFilter , extendRule , extendInclude , setDataFieldValue , guid , initQueryFilter } from "../../../utils/common" ;
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' ;
import { message } from "antd/lib/index" ;
import FormPage from '../../../components/FormPage'
class HM042ShowPrint extends React . Component {
constructor ( props ) {
super ( props ) ;
this . state = {
data : null ,
BtnSignDisplay : 'none' ,
isFinished : 'none' ,
isAudit : 'none' ,
tmpData : { } ,
DEALOPINION : '' ,
} ;
} ;
//审批意见 改变
DEALOPINIONCHANGE = ( val ) => {
this . state . DEALOPINION = val
}
componentDidMount ( ) {
if ( this . props . data ? . id )
this . loadData ( this . props . data ? . id ) ;
}
removeDuplicateObj ( arr ) {
let obj = { } ;
arr = arr . reduce ( ( newArr , next ) => {
obj [ next . CHARGE _USER _ID ] ? "" : ( obj [ next . CHARGE _USER _ID ] = true && newArr . push ( next ) ) ;
return newArr ;
} , [ ] ) ;
return arr ;
}
componentWillReceiveProps ( NextProps ) {
if ( NextProps . data ? . id && this . props . data ? . id != NextProps . data ? . id ) {
this . loadData ( NextProps . data ? . id ) ;
}
}
onChargeUserAgree ( agree ) {
this . props . dispatch ( {
type : 'app/getDataByPost' ,
url : 'HM/HMEvaluationPlan/ChargeUserAgree' ,
payload : {
ID : this . props . data . id ,
TaskID : this . props . data . TaskID ,
CHECK _STATUS : agree ,
AUDIT _OPINION : this . state . DEALOPINION
} ,
onComplete : ( ret ) => {
if ( ret ) {
message . success ( '处理完成!' ) ;
this . setState ( { isAudit : 'none' } )
this . BtnClose ( ) ;
}
}
} )
}
onPersonalAgree ( ) {
this . props . dispatch ( {
type : 'app/getDataByPost' ,
url : 'HM/HMEvaluationPlan/UserSignin' ,
payload : {
ID : this . props . data . id ,
TaskID : this . props . data . TaskID ,
} ,
onComplete : ( ret ) => {
if ( ret ) {
message . success ( '确认成功!' ) ;
this . setState ( { BtnSignDisplay : 'none' } )
this . BtnClose ( ) ;
}
}
} )
}
BtnClose = ( ) => {
if ( typeof this . props . data . onCancel != "undefined" && typeof this . props . data . onCancel == 'function' )
this . props . data . onCancel ( ) ;
}
2024-04-09 11:09:14 +08:00
2024-01-22 09:18:38 +08:00
loadData = ( dataId ) => {
let json = initFilter ( this . props . login . OrgId ) ;
extendRule ( json , 'ID' , 1 , dataId ) ;
extendInclude ( json , 'Nav_InitiatingDepartment' ) ;
extendInclude ( json , 'Nav_ReleaseUser' ) ;
extendInclude ( json , 'Nav_Details.Nav_ChargeUser' ) ;
2024-04-09 11:09:14 +08:00
extendInclude ( json , 'Nav_Details.Nav_Areas.Nav_Area' ) ;
extendInclude ( json , 'Nav_Details.Nav_Identifyings.Nav_Identifying' ) ;
2024-01-22 09:18:38 +08:00
extendInclude ( json , 'Nav_Files.Nav_ImgFile.Nav_File' ) ;
extendInclude ( json , 'Nav_GroupLeader.Nav_UserSignFiles.Nav_ImgFile.Nav_File' ) ;
extendInclude ( json , 'Nav_DeputyGroupLeader.Nav_UserSignFiles.Nav_ImgFile.Nav_File' ) ;
this . props . dispatch ( {
type : 'app/getDataByPost' ,
payload : json ,
url : 'HM/EvaluationPlan/Get' ,
onComplete : ( ret ) => {
if ( ret ) {
if ( this . props . data && this . props . data . loadDataDeal ) {
this . props . data . loadDataDeal ( 1 ) ;
}
this . onClickApprove ( false ) ;
if ( ret . STATUS >= 4 ) {
this . state . isFinished = "inline" ;
}
if ( ret . STATUS == 2 && this . props . data . TaskID != null && ret . DEPUTY _GROUP _LEADER _OPINION == 0 && ret . GROUP _LEADER _OPINION == 0 ) {
this . state . isAudit = "inline" ;
}
this . setState ( { data : ret } )
if ( ret . ID ) {
this . props . dispatch ( {
type : 'app/getDataByPost' ,
url : 'HM/HMEvaluationPlan/GetEvaluationPlan' ,
payload : {
ID : this . props . data . id ,
} ,
onComplete : ( result ) => {
if ( result != null && this . props . data . TaskID != null ) {
if ( result ) {
this . setState ( { isAudit : 'inline' } )
}
}
}
} )
this . props . dispatch ( {
type : 'app/getDataByPost' ,
url : 'HM/HMEvaluationPlan/GetUserDealStatus' ,
payload : {
ID : this . props . data . id ,
} ,
onComplete : ( result ) => {
if ( result != null && this . props . data . TaskID != null ) {
if ( result ) {
this . setState ( { BtnSignDisplay : 'inline' } )
}
}
}
} )
}
}
}
} ) ;
}
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" )
}
onClickApprove = ( appVisible ) => {
const newtmpData = {
data : { id : this . props . data . id , isShow : true , key : guid ( ) , appVisible : appVisible , BtnAgreeDisplay : 'inline' } ,
formCode : "PF123" ,
}
this . setState ( {
tmpData : newtmpData ,
} ) ;
}
2024-04-09 11:09:14 +08:00
joinArea ( data ) {
let ret = [ ] ;
for ( let it of data ) {
if ( it . Nav _Area && it . Nav _Area . NAME ) {
ret . push ( it . Nav _Area . NAME ) ;
}
}
return ret . join ( '、' ) ;
}
joinIdentifying ( data ) {
let ret = [ ] ;
for ( let it of data ) {
if ( it . Nav _Identifying && it . Nav _Identifying . NAME ) {
ret . push ( it . Nav _Identifying . NAME ) ;
}
}
return ret . join ( '、' ) ;
}
renderLevel ( level ) {
let str = '' ;
if ( level == undefined ) {
return str ;
}
if ( level . indexOf ( '0' ) >= 0 ) {
str += '部门 ' ;
}
if ( level . indexOf ( '1' ) >= 0 ) {
str += '车间 ' ;
}
if ( level . indexOf ( '2' ) >= 0 ) {
str += '班组 ' ;
}
if ( level . indexOf ( '3' ) >= 0 ) {
str += '公司 ' ;
}
return str ;
}
2024-01-22 09:18:38 +08:00
render ( ) {
const { data } = this . state ;
return < div >
< div style = { { padding : '10px' } } >
< Button onClick = { ( ) => this . onClickApprove ( true ) } icon = "export" > 审批详情 < / B u t t o n >
< ReactToPrint
trigger = { ( ) => < Button type = { 'default' } icon = { 'printer' } style = { { display : this . state . isFinished } } > 打印 < / B u t t o n > }
content = { ( ) => this . componentRef }
/ >
< Button onClick = { ( ) => this . onTableBtnExport ( ) } icon = "export" style = { { marginLeft : '8px' , display : this . state . isFinished } } > 导出 < / B u t t o n >
< Button type = { 'primary' } style = { { marginLeft : '8px' , display : this . state . BtnSignDisplay } } onClick = { ( ) => this . onPersonalAgree ( ) } icon = "check" > 确认 < / B u t t o n >
< / d i v >
< div ref = { el => ( this . componentRef = el ) } id = { 'tableId' + this . props . data . id } style = { { padding : '20px' } } >
< h1 style = { { textAlign : 'center' } } > 年度风险评价计划审核表 < / h 1 >
{
data ?
< div >
< Descriptions size = "middle" bordered >
< Descriptions . Item label = "评价年度" > { moment ( data . EVALUATION _DATE ) . format ( 'YYYY' ) } < / D e s c r i p t i o n s . I t e m >
< Descriptions . Item label = "文件名称" > { data . DOCUMENT _NAME } < / D e s c r i p t i o n s . I t e m >
< Descriptions . Item label = "发起时间" > { data . CREATE _TIME } < / D e s c r i p t i o n s . I t e m >
< Descriptions . Item label = "发起部门" span = { 1.5 } > { data . Nav _InitiatingDepartment ? data . Nav _InitiatingDepartment . NAME : '' } < / D e s c r i p t i o n s . I t e m >
< Descriptions . Item label = "发起人员" span = { 1.5 } > { data . Nav _ReleaseUser ? data . Nav _ReleaseUser . NAME : '' } < / D e s c r i p t i o n s . I t e m >
< Descriptions . Item label = "风险管理小组副组长" span = { 1.5 } > { data . Nav _DeputyGroupLeader ? data . Nav _DeputyGroupLeader . NAME : '' } < / D e s c r i p t i o n s . I t e m >
< Descriptions . Item label = "风险管理小组组长" span = { 1.5 } > { data . Nav _GroupLeader ? data . Nav _GroupLeader . NAME : '' } < / D e s c r i p t i o n s . I t e m >
< Descriptions . Item label = "风险管理小组成员" span = { 3 } > {
data . Nav _Details && data . Nav _Details . map ( ( item , i ) => {
if ( i == ( data . Nav _Details . length - 1 ) ) {
if ( item . DEAL _STATUS == 0 )
return < label style = { { color : 'red' } } title = '未签到' > { item . Nav _ChargeUser ? item . Nav _ChargeUser . NAME : '' } < / l a b e l >
else
return item . Nav _ChargeUser ? item . Nav _ChargeUser . NAME : ''
} else {
if ( item . DEAL _STATUS == 0 )
return < label style = { { color : 'red' } } title = '未签到' > { item . Nav _ChargeUser ? item . Nav _ChargeUser . NAME + ' ' : '' } < / l a b e l >
else
return item . Nav _ChargeUser ? item . Nav _ChargeUser . NAME + ' ' : ''
}
} )
} < / D e s c r i p t i o n s . I t e m >
< Descriptions . Item label = "内容要求" span = { 3 } > { data . EVALUATION _CONTENT } < / D e s c r i p t i o n s . I t e m >
< Descriptions . Item label = "附件" span = { 3 } > {
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 >
} )
}
< / D e s c r i p t i o n s . I t e m >
< Descriptions . Item label = "风险管理小组副组长意见" span = { 1.5 } > {
data . DEPUTY _GROUP _LEADER _OPINION != 0 ? this . props . app . enums . HMOpinionEnmu . enums [ data . DEPUTY _GROUP _LEADER _OPINION ] : "" }
{ data . DEPUTY _GROUP _LEADER _OPINION == 1 ? < img width = { '200px' } alt = { data . Nav _DeputyGroupLeader . NAME } src = { data . Nav _DeputyGroupLeader . Nav _UserSignFiles . length > 0 ? config . picServerHost + data . Nav _DeputyGroupLeader . Nav _UserSignFiles [ 0 ] . Nav _ImgFile ? . Nav _File . FILE _PATH : '' } / > : "" }
< / D e s c r i p t i o n s . I t e m >
< Descriptions . Item label = "风险管理小组组长意见" span = { 1.5 } > {
data . GROUP _LEADER _OPINION != 0 ? this . props . app . enums . HMOpinionEnmu . enums [ data . GROUP _LEADER _OPINION ] : "" }
{ data . GROUP _LEADER _OPINION == 1 ? < img width = { '200px' } alt = { data . Nav _GroupLeader . NAME } src = { data . Nav _GroupLeader . Nav _UserSignFiles . length > 0 ? config . picServerHost + data . Nav _GroupLeader . Nav _UserSignFiles [ 0 ] . Nav _ImgFile ? . Nav _File . FILE _PATH : '' } / > : "" }
< / D e s c r i p t i o n s . I t e m >
< / D e s c r i p t i o n s >
2024-04-09 11:09:14 +08:00
< table style = { { width : '100%' , textAlign : 'center' } } className = { styles . PrintForm1 } >
< tr >
< td className = { styles . fontBold } > 开始时间 < / t d >
< td className = { styles . fontBold } > 结束时间 < / t d >
< td className = { styles . fontBold } > 层级 < / t d >
< td className = { styles . fontBold } > 辨识区域 < / t d >
< td className = { styles . fontBold } > 类别 < / t d >
< td className = { styles . fontBold } > 辨识对象 < / t d >
< td className = { styles . fontBold } > 负责人 < / t d >
< td className = { styles . fontBold } > 备注 < / t d >
< / t r >
{
data . Nav _Details && data . Nav _Details . map ( ( item , i ) => {
return < tr >
< td > { moment ( item . START _TIME ) . format ( 'YYYY-MM-DD' ) } < / t d >
< td > { moment ( item . END _TIME ) . format ( 'YYYY-MM-DD' ) } < / t d >
< td > { this . renderLevel ( item . LEVEL ) } < / t d >
< td > { this . joinArea ( item . Nav _Areas ) } < / t d >
< td > { this . joinIdentifying ( item . Nav _Identifyings ) } < / t d >
< td > { this . props . app . enums . HMRiskTypeEnmu . enums [ item . RISK _TYPE ] } < / t d >
< td > { item . Nav _ChargeUser ? . NAME } < / t d >
< td > { item . REMARK } < / t d >
< / t r >
} )
}
< / t a b l e >
2024-01-22 09:18:38 +08:00
< FormPage { ... this . state . tmpData } / >
< table style = { { width : '90%' , lineHeight : '35px' } } >
< tbody >
< tr > < td colSpan = { 2 } > < br > < / b r > < / t d > < / t r >
< tr >
< th style = { { display : this . state . isAudit } } > 意见 : < / t h >
< td >
< Input . TextArea style = { { margin : '0 0 0 15px' , display : this . state . isAudit } } onChange = { ( evt ) => this . DEALOPINIONCHANGE ( evt . target . value ) } / >
< / t d >
< / t r >
< tr >
< th > < / t h >
< td >
< Button style = { { width : '120px' , height : '38px' , margin : '20px 0 20px 15px' , display : this . state . isAudit } } type = { 'primary' } icon = { 'check' } onClick = { ( ) => this . onChargeUserAgree ( 1 ) } > 同意 < / B u t t o n >
< Button style = { { width : '120px' , height : '38px' , margin : '20px 0 20px 30px' , backgroundColor : "#ED7D31" , display : this . state . isAudit } } type = "primary" htmlType = "submit" icon = "close" onClick = { ( ) => this . onChargeUserAgree ( 2 ) } > 驳回 < / B u t t o n >
< / t d >
< / t r >
< / t b o d y >
< / t a b l e >
< / d i v >
: null
}
< / d i v >
< / d i v >
}
}
export default connect ( ( { login , app } ) => ( { login , app } ) ) ( HM042ShowPrint )