2025-08-25 10:08:30 +08:00
import { message } from "antd/lib/index" ;
import { Button , Input , Modal , Select , Table , notification } from 'antd' ;
const { TextArea } = Input ;
import React from 'react' ;
import { initFilter , extendRule , extendInclude , showFiles , GetFileModel } 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 FormPage from '../../../components/FormPage'
class FO005ShowPrint extends React . Component {
constructor ( props ) {
super ( props ) ;
this . state = {
data : null ,
isFinished : 'none' ,
isAudit : 'none' ,
isSignin : 'none' ,
DEALOPINION : '' ,
isMobile : false ,
fileForm : {
title : "" ,
visible : false ,
} ,
} ;
} ;
componentDidMount ( ) {
if ( window . navigator . userAgent . indexOf ( "Windows" ) < 1 ) {
this . setState ( { isMobile : true } )
}
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 ) ;
}
}
//审批意见 改变
DEALOPINIONCHANGE = ( val ) => {
this . state . DEALOPINION = val
}
onChange = ( value ) => {
this . setState ( {
auditOpinion : value
} )
}
BtnClose = ( ) => {
if ( typeof this . props . data . onCancel != "undefined" && typeof this . props . data . onCancel == 'function' )
this . props . data . onCancel ( ) ;
}
loadData = ( dataId ) => {
let json = initFilter ( this . props . login . OrgId ) ;
2025-12-22 16:45:33 +08:00
json . Parameter22 = this . props . data . ORG _ID _HV ;
2025-08-25 10:08:30 +08:00
extendRule ( json , 'ID' , 1 , dataId ) ;
extendInclude ( json , 'Nav_Users.Nav_User' ) ;
extendInclude ( json , 'Nav_Team' ) ;
extendInclude ( json , 'Nav_ChargeUser' ) ;
extendInclude ( json , 'Nav_Class' ) ;
extendInclude ( json , 'Nav_Files.Nav_ImgFile' ) ;
extendInclude ( json , 'Nav_DepartmentPost' ) ;
json . IgnoreDataRule = true ;
this . props . dispatch ( {
type : 'app/getDataByPost' ,
payload : json ,
url : 'FO/CurrentClassRecord/Get' ,
onComplete : ( ret ) => {
if ( ret ) {
this . setState ( { data : ret } )
if ( ret . SHIFT _STATUS == 4 ) {
this . setState ( { isFinished : 'inline' } )
}
if ( this . props . data . tableKey == "2" || this . props . data . tableKey == undefined ) {
return
}
let isAllOK = true ;
for ( let i = 0 ; i < ret . Nav _Users . length ; i ++ ) {
if ( ret . Nav _Users [ i ] . USER _SHIFT _STATUS == 0 ) {
isAllOK = false ;
}
}
if ( ! isAllOK && this . props . data . TaskID != null ) {
this . setState ( { isSignin : 'inline' } )
}
if ( isAllOK && this . props . data . tableKey == "1" ) {
this . setState ( { isAudit : 'table-row' } )
}
} else { message . error ( '数据加载获取失败,请联系管理员排查!' ) ; }
}
} ) ;
}
onChargeUserAgree ( agree ) {
this . props . dispatch ( {
type : 'app/getDataByPost' ,
url : 'FO/FOCurrentClassRecord/ChargeUserAgree' ,
payload : {
ID : this . props . data . id ,
TaskID : this . props . data . TaskID ,
CODE : agree ,
AUDIT _OPINION : this . state . DEALOPINION ,
DEPARTMENT _ID : this . state . data . DEPARTMENT _ID ,
CLASS _ID : this . state . data . CLASS _ID ,
} ,
onComplete : ( ret ) => {
if ( ret ) {
message . success ( '处理完成!' ) ;
this . setState ( { isAudit : 'none' } )
this . BtnClose ( ) ;
}
}
} )
}
onTableBtnSignin ( ) {
this . props . dispatch ( {
type : 'app/getDataByPost' ,
url : 'FO/FOCurrentClassRecord/UserSignin' ,
payload : {
ID : this . props . data . id ,
TaskID : this . props . data . TaskID ,
} ,
onComplete : ( ret ) => {
if ( ret ) {
message . success ( '签到成功!' ) ;
this . setState ( { isSignin : 'none' } )
this . BtnClose ( ) ;
}
}
} )
}
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 , this . state . data . Nav _Team ? . NAME + ".xlsx" )
}
render ( ) {
const { data , isMobile } = this . state ;
return < div >
< div style = { { marginTop : '10px' } } >
< ReactToPrint
trigger = { ( ) => < Button type = { 'default' } icon = { 'printer' } style = { { marginLeft : '20px' , display : this . state . isFinished } } > 打印 < / B u t t o n > }
content = { ( ) => this . componentRef }
pageStyle = ".printDIV { padding:0 40px;} img{width :120px}"
/ >
< Button style = { { marginLeft : '20px' , display : this . state . isFinished } } onClick = { ( ) => this . onTableBtnExport ( ) } icon = "export" > 导出 < / B u t t o n >
< Button style = { { marginLeft : isMobile ? '0' : '20px' , display : this . state . isSignin } } onClick = { ( ) => this . onTableBtnSignin ( ) } icon = "check" > 签到 < / B u t t o n >
< / d i v >
< FormPage { ... this . state . tmpData } / >
{ /* 岗位当班工作记录表 */ }
< div ref = { el => ( this . componentRef = el ) } style = { { padding : isMobile ? '0px 0px 20px 0px' : '20px' } } id = { 'tableId' + this . props . data . id } >
< h1 style = { { textAlign : 'center' } } > 岗位当班工作记录表 < / h 1 >
{
data ?
< div >
< table style = { { width : '100%' , textAlign : 'center' , borderTop : '1px solid #333' , borderLeft : '1px solid #333' } } className = { isMobile ? styles . description : styles . PrintForm } >
< tbody >
< tr >
< td colSpan = { 2 } rowSpan = { 1 } className = { styles . fontBold } > 记录日期 < / t d >
< td colSpan = { 3 } rowSpan = { 1 } > { data . RECORD _DATE } < / t d >
< td colSpan = { 2 } rowSpan = { 1 } className = { styles . fontBold } > 当班班次 < / t d >
< td colSpan = { 3 } rowSpan = { 1 } > { data . Nav _Class ? data . Nav _Class . NAME : "" } < / t d >
< td colSpan = { 2 } rowSpan = { 1 } className = { styles . fontBold } > 岗位 < / t d >
< td colSpan = { 3 } rowSpan = { 1 } > { data . Nav _DepartmentPost . NAME } < / t d >
< td colSpan = { 2 } rowSpan = { 1 } className = { styles . fontBold } > 当班人员 < / t d >
< td colSpan = { 3 } rowSpan = { 1 } >
{
data . Nav _Users && data . Nav _Users . map ( ( item , i ) => {
if ( i == ( data . Nav _Users . length - 1 ) ) {
if ( item . USER _SHIFT _STATUS == 0 )
return < label style = { { color : 'red' } } title = '未签到' > { item . Nav _User . NAME } < / l a b e l >
else
return item . Nav _User . NAME
} else {
if ( item . USER _SHIFT _STATUS == 0 )
return < label style = { { color : 'red' } } title = '未签到' > { item . Nav _User . NAME + ' ' } < / l a b e l >
else
return item . Nav _User . NAME + ' '
}
} )
}
< / t d >
< / t r >
< tr >
< td colSpan = { 2 } rowSpan = { 1 } className = { styles . fontBold } > 本班运行情况 < / t d >
< td colSpan = { 2 } rowSpan = { 1 } > { data . SHIFT _STATUS > 0 ? data . CURRENT _CLASS _STATUS == 0 ? '正常' : '不正常' : null } < / t d >
< td colSpan = { 2 } rowSpan = { 1 } className = { styles . fontBold } > 存在问题 < / t d >
< td colSpan = { 6 } rowSpan = { 1 } > { data . SHIFT _STATUS > 0 ? data . CURRENT _CLASS _STATUS == 0 ? '无' : data . CURRENT _CLASS _QUESTION : null } < / t d >
< td colSpan = { 2 } rowSpan = { 1 } className = { styles . fontBold } > 处理情况 < / t d >
< td colSpan = { 6 } rowSpan = { 1 } > { data . SHIFT _STATUS > 0 ? data . CURRENT _CLASS _STATUS == 0 ? '无' : data . CURRENT _CLASS _MEASURE : null } < / t d >
< / t r >
< tr >
< td colSpan = { 2 } rowSpan = { 1 } className = { styles . fontBold } > 设备运行状况 < / t d >
< td colSpan = { 2 } rowSpan = { 1 } > { data . SHIFT _STATUS > 0 ? data . DEVICE _STATUS == 0 ? '正常' : '不正常' : null } < / t d >
< td colSpan = { 2 } rowSpan = { 1 } className = { styles . fontBold } > 存在问题 < / t d >
< td colSpan = { 6 } rowSpan = { 1 } > { data . SHIFT _STATUS > 0 ? data . DEVICE _STATUS == 0 ? '无' : data . DEVICE _QUESTION : null } < / t d >
< td colSpan = { 2 } rowSpan = { 1 } className = { styles . fontBold } > 处理情况 < / t d >
< td colSpan = { 6 } rowSpan = { 1 } > { data . SHIFT _STATUS > 0 ? data . DEVICE _STATUS == 0 ? '无' : data . DEVICE _MEASURE : null } < / t d >
< / t r >
< tr >
< td colSpan = { 2 } rowSpan = { 1 } className = { styles . fontBold } > 现场环境情况 < / t d >
< td colSpan = { 2 } rowSpan = { 1 } > { data . SHIFT _STATUS > 0 ? data . ENVIRONMENT _STATUS == 0 ? '正常' : '不正常' : null } < / t d >
< td colSpan = { 2 } rowSpan = { 1 } className = { styles . fontBold } > 存在问题 < / t d >
< td colSpan = { 6 } rowSpan = { 1 } > { data . SHIFT _STATUS > 0 ? data . ENVIRONMENT _STATUS == 0 ? '无' : data . ENVIRONMENT _QUESTION : null } < / t d >
< td colSpan = { 2 } rowSpan = { 1 } className = { styles . fontBold } > 处理情况 < / t d >
< td colSpan = { 6 } rowSpan = { 1 } > { data . SHIFT _STATUS > 0 ? data . ENVIRONMENT _STATUS == 0 ? '无' : data . ENVIRONMENT _MEASURE : null } < / t d >
< / t r >
< tr >
< td colSpan = { 2 } rowSpan = { 1 } className = { styles . fontBold } > 劳保用品使用情况 < / t d >
< td colSpan = { 2 } rowSpan = { 1 } > { data . SHIFT _STATUS > 0 ? data . SUPPLIES _STATUS == 0 ? '正常' : '不正常' : null } < / t d >
{ / * < t d c o l S p a n = { 2 } r o w S p a n = { 1 } c l a s s N a m e = { s t y l e s . f o n t B o l d } > 是 否 佩 戴 < / t d >
< td colSpan = { 3 } rowSpan = { 1 } > { data . SHIFT _STATUS > 0 ? data . SUPPLIES _USED == 0 ? '否' : '是' : null } < /td> */ }
< td colSpan = { 2 } rowSpan = { 1 } className = { styles . fontBold } > 存在问题 < / t d >
< td colSpan = { 6 } rowSpan = { 1 } > { data . SHIFT _STATUS > 0 ? data . SUPPLIES _STATUS == 0 ? '无' : data . SUPPLIES _QUESTION : null } < / t d >
< td colSpan = { 2 } rowSpan = { 1 } className = { styles . fontBold } > 处理情况 < / t d >
< td colSpan = { 6 } rowSpan = { 1 } > { data . SHIFT _STATUS > 0 ? data . SUPPLIES _STATUS == 0 ? '无' : data . SUPPLIES _MEASURE : null } < / t d >
< / t r >
< tr >
< td colSpan = { 2 } rowSpan = { 1 } className = { styles . fontBold } > 设备工具材料使用存放情况 < / t d >
< td colSpan = { 8 } rowSpan = { 1 } > { data . DEVICE _STORAGE } < / t d >
< td colSpan = { 2 } rowSpan = { 1 } className = { styles . fontBold } > 附件 < / t d >
< td colSpan = { 8 } rowSpan = { 1 } > {
showFiles ( data ? . Nav _Files , config . picServerHost , this )
} < / t d >
< / t r >
< tr >
< td colSpan = { 2 } rowSpan = { 1 } className = { styles . fontBold } > 当班人员活动签名 < / t d >
< td colSpan = { 18 } rowSpan = { 1 } > {
data . Nav _Users && data . Nav _Users . map ( ( item , i ) => {
if ( item . USER _SHIFT _STATUS == 1 ) {
if ( item . Nav _User != null && item . Nav _User . FILE _PATH != null && item . Nav _User . FILE _PATH . length > 0 )
return < img width = { '150px' } alt = { item . Nav _User . NAME } src = { config . picServerHost + item . Nav _User . FILE _PATH } / >
else
return < img width = { '150px' } title = { item . Nav _User . NAME } / >
}
} )
} < / t d >
< / t r >
< tr >
< td colSpan = { 2 } rowSpan = { 1 } className = { styles . fontBold } > 班长签名 < / t d >
< td colSpan = { 18 } rowSpan = { 1 } > {
data . SHIFT _STATUS == 4 ? < img width = { '150px' } alt = { data . Nav _ChargeUser . NAME } src = { config . picServerHost + data . Nav _ChargeUser ? . FILE _PATH } / > : null
} < / t d >
< / t r >
< / t b o d y >
< / t a b l e >
< table style = { { width : '100%' , margin : '0,0,0,0' , lineHeight : '35px' } } >
< tbody >
< tr > < td colSpan = { 2 } > < br > < / b r > < h r s t y l e = { { d i s p l a y : t h i s . s t a t e . i s A u d i t } } > < / h r > < / t d > < / t r >
< tr >
< th style = { { width : '90px' , display : this . state . isAudit } } > 意见 : < / t h >
< td >
< Input . TextArea style = { { width : isMobile ? '330px' : '' , 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 > : n u l l
}
< / d i v >
{
GetFileModel ( Modal , FormPage , this , this . state . fileForm . visible )
}
< / d i v >
}
}
export default connect ( ( { login } ) => ( { login } ) ) ( FO005ShowPrint )