import { message } from "antd/lib/index"; import { Button, Modal, Row, Col, Form, Input, Select, Table } from 'antd'; import React from 'react'; import { initFilter, extendRule, extendInclude, setDataFieldValue, guid, showFiles, GetFileModel } from "../../../utils/common"; import ReactToPrint from "react-to-print"; import styles from '../../CustomPages/HI/StepForm.css'; import XLSX from 'xlsx'; import { connect } from 'dva'; import moment from 'moment'; import config from "../../../config"; import FormPage from '../../../components/FormPage' const { Option } = Select; class SE013ShowPrint extends React.Component { constructor(props) { super(props); this.state = { data: null, canSign: false, overTimeSign: false, trainData: { value: 1, reason: '' }, fileForm: { title: "", visible: false, }, }; }; componentDidMount() { this.loadData(); } 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); json.Parameter22=this.props.data.ORG_ID_HV; extendRule(json, 'ID', 1, this.props.data.id); extendInclude(json, 'Nav_LaunchDepartment'); extendInclude(json, 'Nav_LaunchUser'); extendInclude(json, 'Nav_TrainType'); extendInclude(json, 'Nav_RecordUser'); // extendInclude(json, 'Nav_TrainCheckType'); extendInclude(json, 'Nav_TrainContentList'); extendInclude(json, 'Nav_TrainContentList.Nav_Point'); extendInclude(json, 'Nav_TrainUserList'); extendInclude(json, 'Nav_TrainUserList.Nav_User'); extendInclude(json, 'Nav_Files.Nav_ImgFile'); json.IgnoreDataRule = true; this.props.dispatch({ type: 'app/getDataByPost', payload: json, url: 'SE/TrainNotify/Get', onComplete: (ret) => { if (ret) { let canSign = this.props.data.tableKey == "1" && ret.Nav_TrainUserList.find(it => it.USER_ID == this.props.login.user.ID) ? true : false let overTimeSign = ret.STATUS == 3 && ret.Nav_TrainUserList.find(it => it.USER_ID == this.props.login.user.ID && it.IS_LEAVE === 0) && this.props.data.tableKey == "1" ? true : false this.setState({ data: ret, canSign: canSign, overTimeSign: overTimeSign }) } } }); } 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") } onSelectChange = (v) => { this.state.trainData.value = v } onTableBtnTrain() { if (this.state.trainData.value == 2 && !this.state.trainData.reason) { message.error('选择请假时必须录入请假理由'); return; } let json = { USER_ID: this.props.login.userId, ORG_ID: this.props.login.OrgId, NOTIFY_ID: this.props.data.id, LEAVE_REASON: this.state.trainData.reason, IS_LEAVE: this.state.trainData.value, TaskID: this.props.data.TaskID, }; this.props.dispatch({ type: 'app/getDataByPost', url: 'SE/SETrainNotify/TrainPersonStatus', payload: json, onComplete: (ret) => { if (ret) { message.success('提交成功!'); this.BtnClose(); } } }) } onTableBtnAgree() { this.props.dispatch({ type: 'app/getDataByPost', url: 'SE/SETrainNotify/overTimeSign', payload: { ID: this.props.data.id, TaskID: this.props.data.TaskID, USER_ID: this.props.login.userId, NOTIFY_ID: this.props.data.id, }, onComplete: (ret) => { if (ret) { message.success('确认成功!'); this.setState({ BtnAgreeDisplay: 'none' }) this.BtnClose(); } } }) } returnModel(level) { let str = ''; if (level == undefined) { return str; } if (level.indexOf('1') >= 0) { str += '讲授法 '; } if (level.indexOf('2') >= 0) { str += '视听法 '; } if (level.indexOf('3') >= 0) { str += '研讨法 '; } if (level.indexOf('4') >= 0) { str += '演示法 '; } return str; } render() { const { data } = this.state; const onChangeReason = (e) => { this.state.trainData.reason = e.target.value; } const formItemLayout = { labelCol: { span: 2 }, wrapperCol: { span: 22 }, }; const enums = this.props.data.enums ? this.props.data.enums : this.props.app.enums; return
} content={() => this.componentRef} /> {this.state.canSign && ( <> )} {this.state.overTimeSign && ( <> )}
{/* 培训通知 */}
(this.componentRef = el)} id={'tableId' + this.props.data.id} style={{ padding: '20px' }}>

培训通知

{ data ? {/* */} {/* */} { data.Nav_TrainUserList.map((item, index) => { return }) }
培训名称 {data.NAME}
通知编号 {data.CODE} 发起时间 {data.LAUNCH_TIME} 发起部门 {data.Nav_LaunchDepartment ? data.Nav_LaunchDepartment.NAME : ''}
发起人员 {data.Nav_LaunchUser ? data.Nav_LaunchUser.NAME : ''} 培训类型 {data.Nav_TrainType ? data.Nav_TrainType.NAME : ''} 培训级别 {this.props.app.enums.FMDepartmentType.enums[data.LEVEL]}
培训时间 {data.TRAIN_START_TIME}~{data.TRAIN_END_TIME} 培训地点 {data.TRAIN_ADDR} 培训学时 {data.HOURS}
培训老师 {data.TRAIN_TEACHER} 培训形式 {enums.TrainType.enums[data.TRAINTYPE]}{this.returnModel(data.TRAIN_MODEL)}考核方式 {data.CHECKTYPE && enums.PlanCheckType.enums[data.CHECKTYPE]}{data.Nav_TrainCheckType ? data.Nav_TrainCheckType.NAME : ''}
是否需要培训效果评估 {enums.SETrainNeedSuvey.enums[data.NEED_EVALUATION]} 是否触发培训记录 {data.CREATE_NOTIFY_RECORD == true ? '是' : '否'}
培训内容 { data.Nav_TrainContentList ? data.Nav_TrainContentList.map(t => { return
  • {t.Nav_Point.NAME}
  • }) : '' }
    培训安排及要求 {data.TRAIN_PLAN}
    培训记录人 {data.Nav_RecordUser ? data.Nav_RecordUser.NAME : ""}
    附件 { showFiles(data.Nav_Files, config.picServerHost, this) }
    序号 部门/车间 工号 姓名 岗位 参加/请假
    {index + 1} {item.DEPARTMENT_NAME} {item.Nav_User.CODE} {item.Nav_User.NAME} {item.POST_NAME} {item.IS_LEAVE == 1 ? '参加' : (item.IS_LEAVE == 2 ? '请假' + "-" + item.LEAVE_REASON : '未完成')}
    : null }
    { GetFileModel(Modal, FormPage, this, this.state.fileForm.visible) }
    } } export default connect(({ login, app }) => ({ login, app }))(SE013ShowPrint)