import React, { Component } from 'react'; import { connect } from 'dva'; import { Input, Button, Form, DatePicker, InputNumber, Modal, Drawer } from 'antd'; import moment from 'moment'; import $perModal from '../../../utils/modal/perModal'; // import Drawer from 'react-motion-drawer'; import PSelect from '../../../components/Pro/PSelect'; import './less/devices.less'; import * as api from '../../../services/api'; import PartmentButton from '../../../components/PartmentButton'; const FormItem = Form.Item; const { TextArea } = Input; @connect(state => ({ profile: state.profile })) @Form.create() export default class CheckInOutDrawer extends Component { constructor(props, context) { super(props, context); this.state = { lostState: 'no', open: this.props.visible, //出入库 comEquipId: 0, comEquipList: { equipNo: '', //设备编号 equipName: '', //设备名称 equipType: '', //设备类型 totalNum: '', //总库存 curNum: '' //当前库存 }, perId: '', //人员id checkedkeys: '', getDevInfo: true, visibleModal: false //提示框状态 }; } onChangeRadio = e => { this.setState({ lostState: e.target.value }); }; componentWillReceiveProps(nextProps) { this.setState({ open: nextProps.visible }); this.setState( { comEquipId: nextProps.comEquipId }, () => { if (this.state.comEquipId !== 0 && this.state.getDevInfo && nextProps.visible) { api .enterpriseEquipComEquipGetComEquipById({ comEquipId: nextProps.comEquipId }) .then(data => { this.setState({ comEquipList: data.data, getDevInfo: false }); }); } } ); } //表单提交 handleAddDeviceSubmit = e => { e.preventDefault(); this.props.form.validateFields((err, values) => { if (!err) { // values.perIdStr=values.perIdStr[0]; // values.perIdStr = this.state.perId; values.operaDate = values['operaDate'].format('YYYY-MM-DD HH:mm'); values.comEquipId = this.state.comEquipId; delete values.storage; delete values.equipName; delete values.equipNo; delete values.equipType; // delete values.perId; Reflect.deleteProperty(values, 'name'); api.comEquipInOutAddComEquipInOut({ ...values }).then( () => { this.props.tableUpdate(); this.setState({ open: false, getDevInfo: true }); }, err1 => { console.log(err1); } ); } }); }; //保证数量小于实际库存 checkNumber = (rule, value, callback) => { const stockType = this.props.form.getFieldValue('inOutStockType'); const curNum = this.state.comEquipList.curNum; const totalNum = this.state.comEquipList.totalNum; const outNum = totalNum - curNum; if (stockType === undefined) { callback('请先选择出入库类型!'); } else if (stockType === '2' && value > outNum) { callback('设备入库数量不能大于实际出库数量!'); } else if (stockType === '1' && value > curNum) { callback('设备出库数量不能大于实际库存数量!'); } else if (stockType === '4' && value > totalNum) { callback('设备损耗数量不能大于库存总数量!'); } else if (value && !/^[1-9]\d*$/.test(value)) { callback('输入格式不正确!'); } else { callback(); } }; //抽屉视图处理 changeDrawer = () => { this.setState({ open: true }); }; handleOperationDate = (value) => { if(!value) { this.props.form.setFieldsValue({ operaDate: moment(new Date()) }); } } hideDrawer = () => { // this.setState({ open: false, getDevInfo: true}); const values = this.props.form.getFieldsValue(); if(values.operaDate){ const operaValue = values['operaDate']; values.operaDate = operaValue.format('YYYY-MM-DD'); } const updateDate = values.inOutStockType || values.perId || values.operaDate || values.remark; if(this.state.lostState === 'no'){ if(updateDate || values.operaNum) { this.setState({ visibleModal: true, }); } else { this.handleModalOk(); } } else if(updateDate || values.storageNumber || values.loseNumber || values.loseRemark){ this.setState({ visibleModal: true, }); } else { this.handleModalOk(); } }; handleModalOk = () => { this.setState({ open:false, getDevInfo: true, visibleModal:false }); } handleModalCancel = () =>{ this.setState({ visibleModal: false }); } render() { const formItemLayout = { labelCol: { xs: { span: 24 }, sm: { span: 7 } }, wrapperCol: { xs: { span: 24 }, sm: { span: 17 }, md: { span: 17 } } }; const { getFieldDecorator, setFieldsValue } = this.props.form; const lostView = this.state.lostState === 'no' ? ( {getFieldDecorator('operaNum', { rules: [ { required: true, message: '数量不能为空!' }, { validator: this.checkNumber } ] })()} ) : (
{getFieldDecorator('storageNumber', { rules: [ { required: false } ] })()} {getFieldDecorator('loseNumber', { rules: [ { required: false } ] })()} {getFieldDecorator('loseRemark')(