培训计划 编辑 查看
This commit is contained in:
parent
bcec039dd8
commit
701d64f20b
171
src/components/CustomPages/SE/SE071ShowPrint.js
Normal file
171
src/components/CustomPages/SE/SE071ShowPrint.js
Normal file
@ -0,0 +1,171 @@
|
||||
import { Button, Descriptions, Modal, Badge, Popconfirm, Row, Col, Form, Input, Select, Table } from 'antd';
|
||||
import React from 'react';
|
||||
import { initFilter, extendRule, extendInclude, setDataFieldValue, showApprove, guid, initQueryFilter, ShowDateTime, ShowPrintClose, GetFileModel, showFiles } 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/StepForm.css';
|
||||
import config from '../../../config.js';
|
||||
import FormPage from '../../FormPage'
|
||||
class SE071ShowPrint extends React.Component {
|
||||
constructor(props) {
|
||||
super(props);
|
||||
this.state = {
|
||||
data: null,
|
||||
btndisplay: 'none',
|
||||
isCheck: false, //是否待办 审批
|
||||
fileForm: {
|
||||
title: '',
|
||||
visible: 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);
|
||||
}
|
||||
}
|
||||
|
||||
onTableBtnExport() {
|
||||
let TableWrap = document.getElementById('table1');
|
||||
let Table = TableWrap.getElementsByTagName('table1')[0];
|
||||
const wb = XLSX.utils.table_to_book(Table);
|
||||
XLSX.writeFile(wb, this.props.record.Nav_Department.NAME + '.xlsx')
|
||||
|
||||
}
|
||||
|
||||
onClickApprove = (appVisible) => {
|
||||
const newtmpData = {
|
||||
data: { id: this.props.data.id, isShow: true, key: guid(), param: this.props.data.param, appVisible: appVisible, BtnAgreeDisplay: 'none' },
|
||||
formCode: 'PF123',
|
||||
}
|
||||
this.setState({
|
||||
tmpData: newtmpData,
|
||||
});
|
||||
}
|
||||
loadData = (id) => {
|
||||
var isCheck = (this.props.data.tableKey != undefined && this.props.data.tableKey == '1') ? true : false
|
||||
var orgId = this.props.login ? this.props.login.OrgId : '';
|
||||
let json = initFilter(orgId);
|
||||
extendRule(json, 'ID', 1, id);
|
||||
extendInclude(json, 'Nav_Department')
|
||||
extendInclude(json, 'Nav_User')
|
||||
extendInclude(json, 'Nav_Files.Nav_ImgFile.Nav_File')
|
||||
extendInclude(json, 'Nav_ListPlanDetail.Nav_Department')
|
||||
extendInclude(json, 'Nav_ListPlanDetail.Nav_ListDetailDepartment.Nav_Department')
|
||||
extendInclude(json, 'Nav_ListPlanDetail.Nav_TrainTypeEnum')
|
||||
this.props.dispatch({
|
||||
type: 'app/getDataByPost',
|
||||
payload: json,
|
||||
url: 'SE/SETrainPlan/GetSuit',
|
||||
onComplete: (ret) => {
|
||||
if (ret) {
|
||||
this.setState({
|
||||
data: ret,
|
||||
})
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
render() {
|
||||
const { data } = this.state;
|
||||
const enums = this.props.data.enums ? this.props.data.enums : this.props.app.enums;
|
||||
return <div>
|
||||
<div style={{ padding: '10px' }}>
|
||||
<table>
|
||||
<tr>
|
||||
<td><Button onClick={() => this.onClickApprove(true)} style={{ marginRight: '8px' }} icon='export'>审批详情</Button></td>
|
||||
<td><ReactToPrint trigger={() => <Button type={'default'} icon={'printer'} >打印</Button>} content={() => this.componentRef} /></td>
|
||||
<td><ExportToExcel fileName='年度培训计划' tableId={'tableId' + this.props.data.id} /></td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
<FormPage {...this.state.tmpData} />
|
||||
<div ref={el => (this.componentRef = el)} style={{ padding: '20px', paddingTop: '20px' }} id={'tableId' + this.props.data.id}>
|
||||
<h1 className={styles.showPrintHead}>年度培训计划</h1>
|
||||
{
|
||||
data ? <div>
|
||||
<Descriptions title='' size='middle' bordered>
|
||||
<Descriptions.Item label="计划年度">{data.YEAR}</Descriptions.Item>
|
||||
<Descriptions.Item label="发起时间">{data.LAUNCH_TIME}</Descriptions.Item>
|
||||
<Descriptions.Item label="发起部门">{data.Nav_Department.NAME}</Descriptions.Item>
|
||||
<Descriptions.Item label="发起人员">{data.Nav_User?.NAME}</Descriptions.Item>
|
||||
<Descriptions.Item label="计划名称">{data.PLAN_NAME}</Descriptions.Item>
|
||||
<Descriptions.Item label="附件">{showFiles(data.Nav_Files, config.picServerHost, this)}</Descriptions.Item>
|
||||
{
|
||||
data.TYPE == 5 ?
|
||||
<Descriptions.Item label="指导原则">{data.GUIDE_PRINCIPLE}</Descriptions.Item>
|
||||
: null
|
||||
}
|
||||
{
|
||||
data.TYPE == 5 ?
|
||||
<Descriptions.Item label="培训要求">{data.TRAIN_REQUIREMENT}</Descriptions.Item>
|
||||
: null
|
||||
}
|
||||
</Descriptions>
|
||||
</div> : null
|
||||
}
|
||||
{
|
||||
(data?.Nav_ListPlanDetail && data?.Nav_ListPlanDetail.length > 0) ?
|
||||
<table className={styles.PrintFormLight}>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td colSpan={10} className={styles.showPrintHead2}>年度培训计划详情</td>
|
||||
</tr>
|
||||
<tr className={styles.PrintFormLightTh}>
|
||||
<td>月份</td>
|
||||
<td>培训性质</td>
|
||||
<td>培训类型</td>
|
||||
<td>培训名称</td>
|
||||
<td>培训对象</td>
|
||||
<td>培训形式</td>
|
||||
<td>考核方式</td>
|
||||
<td>培训学时</td>
|
||||
<td>培训组织</td>
|
||||
{/* <td>培训老师</td> */}
|
||||
{
|
||||
data.TYPE != 5 ?
|
||||
<td>被培训组织</td>
|
||||
: null
|
||||
}
|
||||
</tr>
|
||||
{data?.Nav_ListPlanDetail?.map((item, i) => {
|
||||
return <tr>
|
||||
<td>{item.MONTH} </td>
|
||||
<td>{enums.TrainInOut.enums[item.IN_OUT]} </td>
|
||||
<td>{item.Nav_TrainTypeEnum.NAME} </td>
|
||||
<td>{item.NAME} </td>
|
||||
<td>{item.OBJECT} </td>
|
||||
<td>{enums.TrainType.enums[item.TRAINTYPE]} </td>
|
||||
<td>{enums.PlanCheckType.enums[item.CHECKTYPE]} </td>
|
||||
<td>{item.CLASSHOUR} </td>
|
||||
<td>{item.Nav_Department.NAME} </td>
|
||||
{
|
||||
data.TYPE != 5 ?
|
||||
<td>{item.Nav_ListDetailDepartment?.map((itemtype, j) => { return (j > 0 ? ',' : '') + itemtype.Nav_Department.NAME })}</td>
|
||||
: null
|
||||
}
|
||||
|
||||
</tr>
|
||||
})}
|
||||
</tbody>
|
||||
</table>
|
||||
: null
|
||||
}
|
||||
</div>
|
||||
{
|
||||
GetFileModel(Modal, FormPage, this, this.state.fileForm.visible)
|
||||
}
|
||||
</div>
|
||||
}
|
||||
}
|
||||
export default connect(({ login, app }) => ({ login, app }))(SE071ShowPrint)
|
||||
145
src/files/edit/SE071.js
Normal file
145
src/files/edit/SE071.js
Normal file
@ -0,0 +1,145 @@
|
||||
import { message } from "antd/lib/index";
|
||||
import { getPropertyData, extendInclude, extendRule, auditOptionShow, initFilter, guid } from "../../utils/common";
|
||||
// import { now } from "core-js/core/date";
|
||||
// import { connect } from 'dva';
|
||||
// import { forEach } from "core-js/core/array";
|
||||
/**
|
||||
* @return {string}
|
||||
*/
|
||||
// 编辑
|
||||
export default {
|
||||
onBeforeSaveHandleRecord(params) {
|
||||
params.record.TaskID = params.data.TaskID //TaskID传递消息表ID
|
||||
params.record.STATUS = params.customParams;
|
||||
// EXPIRY_DATE_EDIT
|
||||
// EXPIRY_START_DATE
|
||||
// EXPIRY_DATE
|
||||
// if (params.record.EXPIRY_DATE_EDIT) {
|
||||
// var dt = params.record.EXPIRY_DATE_EDIT.split(',')
|
||||
// params.record.EXPIRY_START_DATE = dt[0]
|
||||
// params.record.EXPIRY_DATE = dt[1]
|
||||
// }
|
||||
},
|
||||
onBeforeEdit: ({ isNew, dispatch, setRowFieldVisible, setStateData, stateData, getFieldValue, setFieldVisible, login, setFieldValueByBatch }) => {
|
||||
var TYPE = 10
|
||||
if (isNew) {
|
||||
setFieldVisible("AUDIT_OPINION", false)
|
||||
TYPE = (login.user.Nav_Department.DEPARTMENT_TYPE == 5 || login.user.Nav_Department.DEPARTMENT_STATUS == 2) ? 5 : 10
|
||||
var temps = []
|
||||
temps.push({ field: "YEAR", value: (new Date()).getFullYear() });
|
||||
temps.push({ field: "DEPARTMENT_ID", value: login.user.DEPARTMENT_ID });
|
||||
temps.push({ field: "Nav_Department.NAME", value: login.user.Nav_Department.NAME });
|
||||
temps.push({ field: "LAUNCH_USER_ID", value: login.user.ID });
|
||||
temps.push({ field: "Nav_User.NAME", value: login.user.NAME });
|
||||
temps.push({ field: "TYPE", value: TYPE });
|
||||
setFieldValueByBatch(temps);
|
||||
} else {
|
||||
TYPE = stateData.TYPE
|
||||
auditOptionShow(stateData, stateData.STATUS, 40, 'AUDIT_OPINION', stateData.ID, dispatch, setFieldVisible)
|
||||
}
|
||||
if (TYPE == 5) {
|
||||
setRowFieldVisible("T_SE_TRAIN_PLAN_DETAIL", { Nav_ListDetailDepartment: false })
|
||||
} else {
|
||||
setFieldVisible("GUIDE_PRINCIPLE", false)
|
||||
setFieldVisible("TRAIN_REQUIREMENT", false)
|
||||
if (isNew) {
|
||||
var year = getFieldValue("YEAR")
|
||||
if (year == null) {
|
||||
year = stateData.YEAR
|
||||
}
|
||||
if (year == null) {
|
||||
year = (new Date()).getFullYear()
|
||||
}
|
||||
//部门 新增 默认加载 公司培训计划信息
|
||||
let json = initFilter(stateData.ORG_ID, 'false', null, null, null, year);
|
||||
dispatch({
|
||||
type: 'app/getDataByPost',
|
||||
url: 'SE/SETrainPlan/GetIni',
|
||||
payload: json,
|
||||
onlyData: false,
|
||||
onComplete: (ret) => {
|
||||
if (!ret.Data.Nav_Department)
|
||||
ret.Data.Nav_Department = {}
|
||||
if (!ret.Data.Nav_User)
|
||||
ret.Data.Nav_User = {}
|
||||
ret.Data.Nav_Department.NAME = login.user.Nav_Department.NAME
|
||||
ret.Data.DEPARTMENT_ID = login.user.DEPARTMENT_ID
|
||||
ret.Data.Nav_User.NAME = login.user.NAME
|
||||
ret.Data.LAUNCH_USER_ID = login.user.ID
|
||||
setStateData(ret.Data);
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
},
|
||||
onSubChange: ({ record, colInfo, setDataState, stateData }) => {
|
||||
if (colInfo.FIELD_NAME == "IN_OUT" && record.IN_OUT == '8') {
|
||||
stateData.Nav_ListPlanDetail.forEach(e => {
|
||||
if (e.ID == record.ID) {
|
||||
e.TRAINTYPE = 80
|
||||
e.CHECKTYPE = 81
|
||||
}
|
||||
})
|
||||
setDataState({ ...stateData });
|
||||
}
|
||||
},
|
||||
btnCopy: ({ stateData, getSelectedRecords, setState }) => {
|
||||
let DetailCheck = getSelectedRecords();
|
||||
if (DetailCheck == null || DetailCheck.length < 1) {
|
||||
message.error("请选择需要复制的行!")
|
||||
} else {
|
||||
DetailCheck.forEach(e => {
|
||||
var add = JSON.parse(JSON.stringify(e))
|
||||
|
||||
add.ID = guid()
|
||||
add.ROW_NO = stateData.Nav_ListPlanDetail.length + 1
|
||||
stateData.Nav_ListPlanDetail.push(add)
|
||||
})
|
||||
setState({ data: stateData });
|
||||
}
|
||||
},
|
||||
//向下同步培训组织 单选
|
||||
btnSyncDep: ({ stateData, saveRowRecord }) => {
|
||||
var totalCount = stateData.Nav_ListPlanDetail.length
|
||||
if (totalCount < 2) {
|
||||
return
|
||||
}
|
||||
for (var i = 1; i < totalCount; i++) {
|
||||
//本行数据 如果为空 取上一行的 DEPARTMENT_ID Nav_Department
|
||||
if (stateData.Nav_ListPlanDetail[i].DEPARTMENT_ID == null || stateData.Nav_ListPlanDetail[i].DEPARTMENT_ID == undefined) {
|
||||
let iRow = { ...stateData.Nav_ListPlanDetail[i] };
|
||||
iRow.DEPARTMENT_ID = stateData.Nav_ListPlanDetail[i - 1].DEPARTMENT_ID
|
||||
iRow.Nav_Department = stateData.Nav_ListPlanDetail[i - 1].Nav_Department
|
||||
saveRowRecord({ record: iRow, editCode: "T_SE_TRAIN_PLAN_DETAIL" })
|
||||
}
|
||||
}
|
||||
},
|
||||
//向下同步被培训组织 多选
|
||||
btnSyncListDep: ({ stateData, saveRowRecord }) => {
|
||||
var totalCount = stateData.Nav_ListPlanDetail.length
|
||||
var listDetailDepartment = []
|
||||
for (var i = 0; i < totalCount; i++) {
|
||||
if (stateData.Nav_ListPlanDetail[i].Nav_ListDetailDepartment != null && stateData.Nav_ListPlanDetail[i].Nav_ListDetailDepartment.length > 0) {
|
||||
listDetailDepartment = stateData.Nav_ListPlanDetail[i].Nav_ListDetailDepartment //取被同步的数据 只要有数据就赋值
|
||||
} else if (listDetailDepartment != null && listDetailDepartment.length > 0) {
|
||||
let updateList = [];
|
||||
for (let j = 0; j < listDetailDepartment.length; j++) {
|
||||
let updateObj = { ...listDetailDepartment[j] };
|
||||
updateObj["ID"] = guid()
|
||||
updateObj["PLAN_DETAIL_ID"] = stateData.Nav_ListPlanDetail[i].ID
|
||||
updateList.push(updateObj);
|
||||
}
|
||||
let iRow = { ...stateData.Nav_ListPlanDetail[i] };
|
||||
iRow.Nav_ListDetailDepartment = updateList;
|
||||
saveRowRecord({ record: iRow, editCode: "T_SE_TRAIN_PLAN_DETAIL" })
|
||||
|
||||
for (var x = 0; x < totalCount; x++) {
|
||||
if (iRow.ID == stateData.Nav_ListPlanDetail[x].ID) {
|
||||
stateData.Nav_ListPlanDetail[x].Nav_ListDetailDepartment = updateList;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
}
|
||||
@ -139,6 +139,7 @@ const SE018PaperPage = createLoadableComponent(() => import('../components/Custo
|
||||
const SE019ShowPrint = createLoadableComponent(() => import('../components/CustomPages/SE/SE019ShowPrint'))
|
||||
const SE021ShowPrint = createLoadableComponent(() => import('../components/CustomPages/SE/SE021ShowPrint'))
|
||||
const SE061ShowPrint = createLoadableComponent(() => import('../components/CustomPages/SE/SE061ShowPrint'))
|
||||
const SE071ShowPrint = createLoadableComponent(() => import('../components/CustomPages/SE/SE071ShowPrint'))
|
||||
const SE061PaperPage = createLoadableComponent(() => import('../components/CustomPages/SE/SE061PaperPage'))
|
||||
const SE062ShowPrint = createLoadableComponent(() => import('../components/CustomPages/SE/SE062ShowPrint'))
|
||||
const SE063ShowPrint = createLoadableComponent(() => import('../components/CustomPages/SE/SE063ShowPrint'))
|
||||
@ -340,6 +341,7 @@ export default function (componentName, formId, formParam, data, formCode, formD
|
||||
SE021ShowPrint: <SE021ShowPrint formId={formId} formParam={formParam} data={data} formCode={formCode} />,
|
||||
SE061PaperPage: <SE061PaperPage formId={formId} formParam={formParam} data={data} formCode={formCode} />,
|
||||
SE061ShowPrint: <SE061ShowPrint formId={formId} formParam={formParam} data={data} formCode={formCode} />,
|
||||
SE071ShowPrint: <SE071ShowPrint formId={formId} formParam={formParam} data={data} formCode={formCode} />,
|
||||
SE062ShowPrint: <SE062ShowPrint formId={formId} formParam={formParam} data={data} formCode={formCode} />,
|
||||
SE063ShowPrint: <SE063ShowPrint formId={formId} formParam={formParam} data={data} formCode={formCode} />,
|
||||
SE051ShowPrint: <SE051ShowPrint formId={formId} formParam={formParam} data={data} formCode={formCode} />,
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user