import { message } from "antd/lib/index";
import { Layout, Tabs, Steps, Button, Popconfirm, Row, Col, Icon, Form, Input, Select, Table, Drawer } from 'antd';
import React from 'react';
import { PlusOutlined, ArrowRightOutlined, SearchOutlined } from '@ant-design/icons';
import ReactToPrint from "react-to-print";
import styles from '../HI/StepForm.css';
import config from "../../../config";
import XLSX from 'xlsx';
import { connect } from 'dva';
const { Header, Footer, Sider, Content } = Layout;
const TabPane = Tabs.TabPane;
const { TextArea } = Input;
const { Step } = Steps;
import {
extend,
extendRule,
initFilter,
initQueryFilter,
getOnlyPropertyData,
extendInclude,
empty,
getDataFieldValue, guid, initFilterGroup, extendGroupRule,
getIsPC
} from "../../../utils/common";
import FormPage from '../../../components/FormPage'
class PFCommonApprove extends React.Component {
constructor(props) {
super(props)
this.state = {
title: '流程审核',
data: {},
approveCode: '',
isCurrent: false,
tmpData: {},
visible: false,
userData: [],
selectUserId: '',
appVisible: false,
comVisible: true,
btnDisplay: 'block',
stepDisplay: 'block',
isRequired: false,
isPC: getIsPC(),
BtnAgreeDisplay: 'none',
BtnRejectDisplay: 'none',
isOKLoad: false,
isRejectLoad: false,
REJECT_INTERFACE: ''
}
};
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);
}
}
compare = (val1, val2) => {
return val1.NUM - val2.NUM;
};
onchange = (e) => {
let tmpData = { ...this.state.data };
tmpData.CurrentNode.NODE_APPROVE_STATUS = e;
this.setState({
data: tmpData
})
}
selectChange = (e) => {
const jsonUser = initFilter(this.props.login.OrgId, '', '', 0, 1)
extendRule(jsonUser, "NAME", 1, e);
this.props.dispatch({
type: 'app/getDataByPost',
url: 'FM/User/OrderEntities',
payload: jsonUser,
onlyData: false,
onComplete: (ret) => {
this.setState({
userData: ret.Data
});
}
});
this.setState({
selectUserId: e
})
}
BtnClose = () => {
if (typeof this.props.data.onCancel != "undefined" && typeof this.props.data.onCancel == 'function')
this.props.data.onCancel();
}
onsubmit = () => {
this.props.form.validateFields((err, values) => {
// console.log(this.state.data)
//console.log('Received values of form: ', values);
if (err) {
return;
}
var newUrl = ''//新api判断
// switch (this.state.data.CALLBACK_INTERFACE) {
// case 'BS/BSSafeCheck/CheckPlanAuditEnd':
// case 'BS/BSSafeCheck/CheckAuditEnd':
// case 'BS/BSRiskSubmit/Notice':
// case 'BS/BSRiskSubmit/DealEnd':
// case 'BS/BSRiskSubmitDelayApply/DealEnd':
// case 'FO/FOCrucialLicenseJob/BackUpdate':
// case 'FO/FOCrucialLicenseJobOutsource/BackUpdate':
// case 'FO/FOJobEventRecord/BackUpdate':
// newUrl = this.state.data.CALLBACK_INTERFACE + 'New'
// break;
// case 'TL/TLBack/BackUpdate':
// case 'TL/TLBackRecord/BackUpdate':
// case 'DM/DMDeviceBasePurchase/BackUpdate':
// case 'DM/DMDeviceBasePurchase/BackUpdateUser':
// newUrl = this.state.data.CALLBACK_INTERFACE
// break;
// default:
// break;
// }
if (this.state.data.CALLBACK_INTERFACE && this.state.data.CALLBACK_INTERFACE.indexOf("New") > -1) {
newUrl = this.state.data.CALLBACK_INTERFACE
}
if (this.props.data && this.props.data.TASK_ORGID && this.props.data.TASK_ORGID.length > 0 && this.props.data.TASK_ORGID !== this.props.login.OrgId) {
this.state.data.Parameter22 = this.props.data.TASK_ORGID
}
if (newUrl.length > 0) {
this.props.dispatch({
type: 'app/getDataByPost',
url: newUrl,
payload: this.state.data,
onlyData: false,
onComplete: (re) => {
if (re && re.IsSuccessful) {
message.success("提交审批成功");
this.BtnClose();
} else {
this.setState({
isRequired: true,
isOKLoad: false,
isRejectLoad: false
})
message.error("提交审批失败");
}
}
})
} else {
this.props.dispatch({
type: 'app/getDataByPost',
url: 'PF/Approve/Submit',
payload: this.state.data,
onlyData: false,
onComplete: (re) => {
if (re && re.IsSuccessful) {
if (re.Data) {
if (re.Data === "FO/FOCrucialLicenseJob/BackUpdateNew") {
re.Data = "FO/FOCrucialLicenseJob/BackUpdate"
}
if (re.Data === "FO/FOJobEventRecord/BackUpdateNew") {
re.Data = "FO/FOJobEventRecord/BackUpdate"
}
//回调函数
this.props.dispatch({
type: 'app/getDataByGet',
url: re.Data + "?id=" + this.state.data.DATA_ID,
onlyData: false,
onComplete: (callbak) => {
if (callbak && callbak.IsSuccessful) {
message.success("提交审批成功");
this.BtnClose();
}
else {
//回调失败记录log
this.props.dispatch({
type: 'app/getDataByPost',
url: 'PF/Approve/AddLog',
payload: this.state.data,
onlyData: false,
onComplete: (ret) => {
if (ret && ret.IsSuccessful) {
}
}
})
this.setState({
isRequired: true,
isOKLoad: false,
isRejectLoad: false
})
message.error("提交审批成功,回调失败");
}
}
});
}
else {
// //回调失败记录log
// this.props.dispatch({
// type: 'app/getDataByPost',
// url: 'PF/Approve/AddLog',
// payload: this.state.data,
// onlyData: false,
// onComplete: (ret) => {
// if (ret && ret.IsSuccessful) {
// }
// }
// })
message.success("提交审批成功");
this.BtnClose();
}
} else {
this.setState({
isRequired: true,
isOKLoad: false,
isRejectLoad: false
})
message.error("提交审批失败");
}
}
})
}
});
}
onClick = (e) => {
let tmpData = { ...this.state.data };
tmpData.TaskID = this.props.data.TaskID
tmpData.CurrentNode.NODE_APPROVE_STATUS = 10;
this.setState({
data: tmpData,
isRequired: false,
isRejectLoad: false,
isOKLoad: true
}, () => {
this.onsubmit();
})
}
onComplaint = (e) => {
if (this.state.selectUserId === '') {
message.error("请选择转办人");
return;
}
const json = initFilter(this.props.login.OrgId, this.state.data.CurrentNode.ID, '', 0, 1, this.state.selectUserId)
this.props.dispatch({
type: 'app/getDataByPost',
url: 'FM/FMNotificationTask/Complaint',//PF/Approve/Complaint
payload: json,
onlyData: false,
onComplete: (re) => {
if (re && re.IsSuccessful) {
this.setState({
visible: false,
userData: [],
selectUserId: '',
});
message.success("转办成功");
} else {
message.error("转办失败");
}
}
})
}
showDrawer = () => {
const jsonUser = initFilter(this.props.login.OrgId, '', '', 0, 1)
this.props.dispatch({
type: 'app/getDataByPost',
url: 'FM/User/OrderEntities',
payload: jsonUser,
onlyData: false,
onComplete: (ret) => {
if (ret) {
this.setState({
userData: ret.Data,
});
}
}
});
this.setState({
visible: true,
appVisible: false,
});
};
showAppDrawer = () => {
this.setState({
visible: false,
appVisible: true,
});
}
onClose = () => {
this.setState({
visible: false,
appVisible: false,
});
};
onRejectConfirm = () => {
this.props.form.validateFields((err, values) => {
console.log(this.state.data)
//console.log('Received values of form: ', values);
if (err) {
this.setState({
isRejectLoad: false
})
return;
}
this.state.data.TaskID = this.props.data.TaskID
if (this.state.REJECT_INTERFACE && this.state.data) {
this.props.dispatch({
type: 'app/getDataByPost',
url: this.state.REJECT_INTERFACE,
payload: this.state.data,
onlyData: false,
onComplete: (callbak) => {
if (callbak && callbak.IsSuccessful) {
message.success("驳回成功");
this.BtnClose();
} else {
this.setState({
isRequired: true,
isOKLoad: false,
isRejectLoad: false
})
message.error("驳回失败");
}
}
});
}
else {
message.success("驳回接口未配置或者未获取到审批数据");
this.setState({
isRequired: true,
isOKLoad: false,
isRejectLoad: false
})
return;
}
});
}
onReject = () => {
// message.success("驳回功能完善中,暂无法使用");
// return;
let tmpData = { ...this.state.data };
tmpData.CurrentNode.NODE_APPROVE_STATUS = 20;
this.setState({
data: tmpData,
isRequired: true,
isOKLoad: false,
isRejectLoad: true
}, () => {
this.onRejectConfirm();
})
}
loadData(dataId) {
let that = this;
if (window.navigator.userAgent.indexOf("Windows") < 1) {
that.setState({
appVisible: false,
comVisible: false,
btnDisplay: 'block',
stepDisplay: 'none'
});
} else {
that.setState({
appVisible: false,
comVisible: true,
btnDisplay: 'none',
stepDisplay: 'block'
});
}
const json = initFilter(that.props.login.OrgId)
extendRule(json, 'ID', 1, dataId);
json.Parameter22 = that.props.data.TASK_ORGID
json.Parameter2 = that.props.data.TaskID
extendInclude(json, "Nav_ApproveDetails")
extendInclude(json, "Nav_ApproveDetails.Nav_ApproveUser")
that.props.dispatch({
type: 'app/getDataByPost',
url: 'PF/PFApprove/FullGet',
payload: json,
onlyData: false,
onComplete: (re) => {
if (re && re.IsSuccessful && re.Data && re.Data.Nav_ApproveDetails.length > 0) {
const newtmpData = {
data: {
id: re.Data.DATA_ID, isShow: true,
enums: that.props.app.enums,
TASK_ORGID: that.props.data?.TASK_ORGID
// loadDataDeal: this.loadDataDeal,
// btnDisplay : 'none'
},
formCode: re.Data.APPROVE_CODE,
}
re.Data.Nav_ApproveDetails.sort(that.compare);
let currentNodes = re.Data.Nav_ApproveDetails?.filter(v => v.IS_CURRENT == true);
let isCurrent = false;
if (currentNodes && currentNodes.length > 0) {
let currentUserNode = currentNodes.filter(v => v.APPROVE_USER_ID == that.props.login.userId);
if (currentUserNode != null) {
isCurrent = true;
re.Data.CurrentNode = currentUserNode[0];
} else {
re.Data.CurrentNode = currentNodes[0];
}
if (re.Data.CurrentNode != undefined) {
re.Data.CurrentNode.NODE_APPROVE_STATUS = 10;
}
}
that.setState({
//editData,
isCurrent,
tmpData: newtmpData,
title: re.Data.NAME,
data: re.Data,
BtnRejectDisplay: re.Data.REJECT_INTERFACE && newtmpData ? 'inline' : 'none',
REJECT_INTERFACE: re.Data.REJECT_INTERFACE ? re.Data.REJECT_INTERFACE : ''
});
if (that.props.data.tableKey === "2" || that.props.data.tableKey === undefined) {
that.setState({ BtnAgreeDisplay: 'none' })
} else {
that.setState({ BtnAgreeDisplay: 'inline' })
}
//如果审批模板有配置驳回接口,才显示驳回按钮
// if (re.Data.APPROVE_TEMP_ID) {
// const jsonReject = initFilter(that.props.login.OrgId)
// extendRule(jsonReject, 'ID', 1, re.Data.APPROVE_TEMP_ID);
// this.props.dispatch({
// type: 'app/getDataByPost',
// url: 'PF/ApproveTemp/Get',
// payload: jsonReject,
// onlyData: false,
// onComplete: (ret) => {
// if (ret && ret.IsSuccessful) {
// if (ret.Data && ret.Data.REJECT_INTERFACE) {
// that.setState({ BtnRejectDisplay: 'inline', REJECT_INTERFACE: ret.Data.REJECT_INTERFACE })
// } else {
// that.setState({ BtnRejectDisplay: 'none', REJECT_INTERFACE: '' })
// }
// }
// }
// })
// }
//如果状态为驳回,则修改为已阅,点开一次后列表不再显示
// if (re.Data.APPROVE_STATUS === 20) {
// this.props.dispatch({
// type: 'app/getDataByPost',
// url: 'PF/Approve/ChangeStatus',
// payload: re.Data,
// onlyData: false,
// onComplete: (ret) => {
// if (ret && ret.IsSuccessful) {
// message.success("驳回的表单已阅后将不再显示");
// }
// }
// });
// }
}
}
})
}
loadDataDeal = (a) => {
if (a == 1) {
this.setState({ BtnAgreeDisplay: 'inline' })
}
}
render() {
const enums = this.props.app ? this.props.app.enums : null;
// const headColumnConfig = this.getEditConfig()
//const columns = headColumnConfig ? headColumnConfig.columns : []
const { form, location, dispatch, match, loading } = this.props;
const { userData } = this.state;
const { getFieldDecorator, validateFields, validateFieldsAndScroll, setFieldsValue } = form;
const formItemLayout = {
// labelCol: { span: 2 },
// wrapperCol: { span: 20 },
};
const stepStyle = {
marginBottom: 60,
boxShadow: '0px -1px 0 0 #e8e8e8 inset',
};
const onChangeRemark = (e) => {
let tmpData = { ...this.state.data };
tmpData.CurrentNode.CONTEXT = e.target.value;
this.setState({
data: tmpData
});
}
const LayoutStyle = {
marginLeft: 200
}
return (
//
{/* */}
{this.state.data?.Nav_ApproveDetails?.map((n) => {
let status = 'wait'; let result = '';
if (n.NODE_APPROVE_STATUS == 10) {
status = 'finish'; result = '同意';
} else if (n.NODE_APPROVE_STATUS == 20) {
status = 'error'; result = '驳回';
}
if (n.IS_CURRENT) {
status = 'process';
}
return {"审批人:" + n.Nav_ApproveUser?.NAME}
{"审批时间:" + (n.NODE_APPROVE_TIME == "0001-01-01 00:00:00" ? '' : n.NODE_APPROVE_TIME)}
{"审批结论:" + result}
{"审批意见:" + (n.CONTEXT == undefined ? '' : n.CONTEXT)}
} status={status} />
})}
{/* */}
{/*
{this.state.data?.Nav_ApproveDetails?.map((n) => {
let status = 'wait';
if (n.NODE_APPROVE_STATUS == 10) {
status = 'finish';
} else if (n.NODE_APPROVE_STATUS == 20) {
status = 'error';
}
if (n.IS_CURRENT) {
status = 'process';
}
return
})}
*/}
{/* style={this.state.comVisible?LayoutStyle:null} */}
{/* */}
{/*
*/}
)
}
}
export default connect(({ login, app }) => ({ login, app }))(Form.create()(PFCommonApprove))